文章目录
- 一、SSH的介绍及其相关知识点
- 1.简介
- 2.SSH的优点
- 3.SSH的密钥登录
- 二、SSH的运用
- 1.存放ssh服务端的配置文件
- 2.白名单&黑名单
- 3.存放ssh客户端的配置文件
- 三、ssh密钥登录操作
- 1.密码验证
- 2.秘钥对验证
- 3.ssh远程登录
- SCP 远程复制
- SFTP获取服务端的文件
- 四、秘钥对的创建
- 操作步骤
- TCP_Wrappers的运用
- CP_wapper的工作原理
- CP_wapper的基本原则
- TCP_Wrappers的运用
- 实例
- 总结
一、SSH的介绍及其相关知识点
1.简介
SSH 为 Secure shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登陆会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
SSH 启用的端口为:TCP22号端口
telnet启用的端口为:TCP23号端口
2.SSH的优点
SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。S S H最初是U N I X系统上的一个程序,后来又迅速扩展到其他操作平台。S S H在正确使用时可弥补网络中的漏洞。客户端包含ssh程序以及像scp(远程拷贝)、slogin(远程登陆)、sftp(安全文件传输)等其他的应用程序。
- 数据传输的过程是加密的,具有安全稳定的特点
- 数据传输的方式是压缩的,可以提高传输速度
3.SSH的密钥登录
什么是秘钥?
密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥。而ssh密钥就是一种非对称性的密钥。
ssh 远程访问控制中不仅仅可以使用用户密码登录,还可以通过 密钥进行登录。而密钥登录的产生是通过客户端与服务端进行一系列的操作过程产生的。
密钥登录的过程:
- ssh客户端通过ssh-keygen生成自己的公钥和私钥,将公钥发送给ssh服务端,并且放在指定的位置。
2.公钥发送完毕后。ssh客户端再向ssh 服务端进行登录请求。
3.ssh服务端收到ssh客户端的登录请求后,ssh服务端用对应的公钥加密一些随机数返回给ssh客户端。
4.ssh客户端收加密的随机数后使用私钥对其进行解密,再将解密的结果发送给ssh服务端进行验证。
- ssh服务端接收到ssh客户端发送过来的解密数据,将其与原数据进行比对,保持一致则允许用户进行登录
二、SSH的运用
1.存放ssh服务端的配置文件
/etc/ssh/sshd_config
vim /etc/ssh/sshd_config
常用选项配置
#Port 22
#ListenAddress 0.0.0.0
常用配置项:
#LoginGraceTime 2m 登录验证时间为两分钟
#PermitRootLogin yes 允许root用户登录(安全考虑,这里可以设置为no,禁止root用户登录)
#MaxAuthTries 6 最大重试的次数为6
PasswordAuthentication yes 允许空密码用户登录
UseDNS no 禁止DNS反向解析,提高服务器的响应速度
2.白名单&黑名单
AllowUsers zhangsan lisi wangwu@192.168.80.128 允许张三李四王五在192.168.80.128地址登录
DenyUser zhangsan lisi wangwu@192.168.80.128 不允许张三李四王五在192.168.80.128地址登录
- 白名单&黑名单权限大于root!!!!
3.存放ssh客户端的配置文件
/etc/ssh/ssh_config (该配置基本默认保持不变,就可以了)
[root@localhost7 ~]# ssh 192.168.73.110
exit 退出当前用户
[root@localhost7 ~]# ssh -p 22 zhangsan@192.168.73.110
三、ssh密钥登录操作
1.密码验证
对服务器中本地系统用户的登录名称、密码进行验证。简便,但可能会被暴力破解
2.秘钥对验证
要求挑供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证。能增强安全性,且可以免交互登录。
公钥和私钥的关系:
- 公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密。
- 不能根据一个密钥来推算出另一个秘钥。
- 公钥对外公开,私钥只有私钥的持有人才知道。
vim /etc/ssh/sshd config #启用密码验证
Passwordnuthentication yesPubkeyAuthentication yesAuthorizedKeysFile #启用密销对验证
.ssh/authorized keys #指定公钥库文件
- 默认开启密码验证(需要绝对安全的话需要关掉密码验证)
3.ssh远程登录
使用 ssH 客户端程序
1.ssh 远程登录
ssh [选顶] zhangsan@192.168.80.10
1.当用户第一次登求SS日服务器时,必须接受服务器发来的BCDSA秘钥(根据提示输入"yes")后才能继续验证。
2.接收的密信息将保存到~/.ssh/knowihosts 文件中。
3.密码验证成功以后,即可登录目标服务器的命今行环境中了
防止钓鱼主机
-p: 指定非默认的端口号,缺省时默认使用 22端口ssh -p 2345 zhangsan@192.168.80.10
SCP 远程复制
scp传输文件
下行复制
scp root@192.168.80.11:/etc/passwd /root/passwd10.txt #将远程主机中的 /etc/passwd文件复制到本机
上行复制
scp -r /etc/ssh/ root@192.168.80.10:/opt #将本机的/etc/ssh 目录复制到远程主机a
#注意:有同名文件直接覆盖
- scp [-r 目录] 文件 [用户]@服务端IP:保存路径(如果端口号修改过,就用-P进行指定)
[root@localhost6 opt]# scp shiyan.zip root@192.168.73.111:/opt
scp获取服务端的文件
- scp [-P] [用户]@服务端IP:保存路径 本地路径
[root@localhost6 opt]# scp root@192.168.73.111:/opt/shiyan.zip /opt
SFTP获取服务端的文件
sftp 安全ETP
由于使用了加密/解密技术,所以传输效率比普通的ETP要低,但安全性更高。操作语法sftp与ftp几乎一样。
sftp zhangsan@192.168.80.10
Connecting to 192.168.80.10...
tsengyia@172.16.16.22's password: #输入密码
sftp> ls文件名
sftp> get文件名 # 下载文件到ftp目录
sftp> put #.上传文件到ftp目录
sftp> quit #退出
四、秘钥对的创建
1.在客户端创建密钥对
通过ssh-keygen工具为当前用户创建密钥对文件。可用的加密算法为RSA、ECDSA或DSA等(ssh-keygen命令的"-t"选项用于指定算法类型)。
useradd admin
echo “123123" passwd --stdin admin
su - admin
操作步骤
1.在客户端中创建密钥
[root@localhost6 ~]# ssh-keygen -t rsa
[zhangsan@localhost ~]$ cd /home/zhangsan/.ssh
[zhangsan@localhost .ssh]$ ls
2.把公钥文件导入到ssh服务端
方法一:手动导公钥进服务器
[zhangsan@localhost .ssh]$ scp id_rsa.pub root@192.168.73.111:/opt
切换到服务端,安置公钥
cd /opt/
ls
vim /root/.ssh/authorized_keys
末行模式
:!cat /opt/id_rsa.pub
方法二:自动导公钥入服务器(简便 好用!!!!)
[root@localhost2 ~]# ssh-copy-id -i 公钥文件 用户@服务端ip
//使用命令自动传送公钥文件,会自动生成authorized_keys文件
[root@localhost1 ~]#cd .ssh
[root@localhost1 .ssh]#ssh-copy-id -i id_dsa.pub root@192.168.116.20
//查看一下
[root@localhost2 ~]#cd .ssh
[root@localhost2 .ssh]#ls
authorized_keys known_hosts
[root@localhost2 .ssh]#cat authorized_keys
ssh-dss AAAAB3NzaC1kc3MAAACBAI9yxdO7V/W/ATYiSoKz4MbWZDRpE902lBpH0i5dmghNwWAxqV0DRMjetyvUc+R466NdXmp7N32ARuj+wEMNZ73g3FdurzkhwRmGi8RhR9obYkL3cqS34dmQvAWAlYmNYfqIg8Z2nv9KLwCrsnKfJDevlgmjpyj+Bxzx0smpIq/TAAAAFQDUYT4psdnG+JAUJfUhTCBz5AivsQAAAIAVLo/baTi/Z/xDod4N+bLwDYylsGKyWUuB8pTsMz/IPBH6KWPMWB62H9cO4rXhX2VQsKQXFBv77gqhpqzCB0iqQvc1DOHNXIp33tRlOvLntTYR02jduFnMtw9XyKjpIRaQmON3JY97liYL9zqP4Dd2RwSbPvSAhCPgWWL6lEX7awAAAIB8ad42MTdKzRVhZ3wu6KBmvn0LmeiX0NO5WQcPoOfwSqH7hCbhV2Dy+BfM3OklL6I3HesTajtuyLy6UBL83ayrvl8AXO0y7NCPOuZCm59YYXF8SE7pQz7JZBFyA9jTm9Ba4W0rrwHo3x1OkYXFd5LQowO71k/KKuWGQMGssR8Uiw== root@localhost1
TCP_Wrappers的运用
CP_wapper的工作原理
TCP_Wrappers有一个TCP的守护进程叫作tcpd。以ssh为例,每当有ssh的连接请求时,tcpd即会截获请求,先读取系统管理员所设置的访问控制文件,符合要求,则会把这次连接原封不动的转给真正的ssh进程,由ssh完成后续工作;如果这次连接发起的ip不符合访问控制文件中的设置,则会中断连接请求,拒绝提供ssh服务。
CP_wapper的基本原则
首先检查/etc/hosts.allow文件,如果找到相匹配的策略,则允许访问;否则继续检查/etc/hosts.deny文件,如果找到相匹配的策略,则拒绝访问;如果检查上述两个文件都找不到相匹配的策略,则允许访问。
- "允许所有,拒绝个别”
只需在/etc/hosts.deny文件中添加相应的拒绝策略 - "允许个别,拒绝所有”
除了在/etc/hosts.allow中添加允许策略之外,还需要在/etc/hosts.deny文件中设置"ALL:ALI"的拒绝策略。
TCP_Wrappers的运用
/etc/hosts.allow 设置允许访问 tcp 服务程序的策略(白名单)
/etc/hosts.deny 设置禁止访问 tcp 服务程序的策略 (黑名单)
实例
假设引用只允许IP地址为192.168.73.110的用户访问sshd服务,其他地址被拒绝。
白名单设置:
vim /etc/hosts.allow
sshd:192.168.73.110
如果不确定该服务是否符合TCP_wapper的标准:
[root@localhost ~]# ldd $(which sshd)|grep wrap
黑名单设置:
vim /etc/hosts.deny
sshd:ALL
保存后,立即生效
总结
telnet 明文传辅 tcp 23
ssh 密文传输 tcp 22
软件包openssh
服务名sshd
服务端配置文件 /etc/ssh/sshd config
重要的配智项: Port ListenAddress
PermitRootLogin
UseDNs
DenvUsers
AllowUsers
PasswordAuthentication
PubkevAuthentication
客户端命令
ssh -p 端口 用户@IP
scp -P 端口 [-r] 本机文件/目录 用户@IP:绝对路径 #上行复制
scp -P 端口 [-r]户@IP:绝对路径 本机文件/目录 #下行复制
sftp -P 端口 用户@IP
get put cd ls
ssh 密钥对配置
客户端 ssh的发起端 : ssh-keygen -t rsa/ecdsa 创建密钥对,在自己家目录的.ssh目录中生成 私钥和公钥文件 (xxx.pub)目标主机用户
ssh-copy-id -i 公钥文件 目标主机用户@目标主机IP/主机名
服务端 被ssh连接 在指定用户家目录的.ssh目录中生成公钥认证文件 authorized_keys
从此 客户端使用 ssh-[p 端口] 用户@IP 使用密钥对进行验证
ssh 密钥对面交互登录
1.ssh-keygen -t rsa/ecdsa 一路回车 不设置密码
ssh-copy-id -i 公钥文件 目标主机用户@目标主机IP/主机名
2.创建ssh会话代理(只能在当前会话有效)
ssh-agent bash
ssh-add
TCP Wrappers 对支持TCP Wrappers的服务程序进行访问控制,要么允许放行,要么拒绝丢弃
判断是否支持
ldd $(which 程序名) sshd vsftpd telnet ipop3 imap httpd
程序文件路径 libwrap .so.*
访问策略
先看 /etc/hosts.allow 有则放通
再看 /etc/hosts.deny 有则拒绝
如果都没有则放通所有
格式:
程序列表:
客户端列表 sshd,vsftpd:IP1,IP2,IP3,...