目录
- 一. SSH服务
- 1.1 SSH基础
- 1.1.1什么是SSH服务器?
- 1.1.2SSH优点
- 1.1.3常见的ssh协议
- 二. 服务端配置文件常用选项
- 2.1设置白名单
- 2.2设置黑名单
- 三. SSH服务的两种验证方式
- 3.1 公钥与私钥的关系
- 四. ssh客户端程序
- 4.1ssh远程登录
- 4.2 scp 远程复制
- 4.3 sftp 安全的ftp
- 五. 配置密钥对验证
- 5.1免交互验证:
- 5.2 在已有的密钥密码验证下实现免交互
- 六. TCP Wrappers 访问控制 (TCP封套)
- 6.1 TCP Wrappers保护机制的两种实现方式
- 6.2 TCP Wrappers 访问策略
- 6.3 基本原则
一. SSH服务
1.1 SSH基础
1.1.1什么是SSH服务器?
SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能;
SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令;
SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。
SSH客户端<--------------网络---------------->SSH服务端
1.1.2SSH优点
数据传输是加密的,可以防止信息泄漏
数据传输是压缩的,可以提高传输速度
1.1.3常见的ssh协议
客户端: Linux Client: ssh, scp, sftp,slogin Windows Client:xshell, MobaXterm,putty, securecrt, sshsecureshellclient
OpenSSH 是实现SSH协议的开源软件项目,适用于各种UNIX、 Linux 操作系统。
Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动。
执行"systemctl start sshd"命令即可启动sshd 服务
sshd 服务默认使用的是TCP的22端口,安全协议版本sshv2,出来2之外还有1(有漏洞)
sshd服务的默认配置文件是/etc/ssh/ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于前者是针对客户端的配置文件,后者则是针对服务端的配置文件
。
服务名称 : sshd
服务端主程序: /usr/sbin/sshd
服务端配置文件 : /etc/ssh/sshd_config
客户端配置文件: /etc/ssh/ssh_config
二. 服务端配置文件常用选项
2.1设置白名单
AllowUsers zhangsan lisi@192.168.137.101 仅允许zhangsan,lisi在此用户上登录,且lisi只能在此主机下远程登录
2.2设置黑名单
DenyUsers zhangsan lisi@192.168.137.101禁止zhangsan和lisi在此主机上远程登陆且lisi只禁止在101上登录
三. SSH服务的两种验证方式
- 密码验证:对服务器中本地系统用户登录名称,密码进行验证,简单,但可能会被暴力破解
- 密钥对验证:要求提供相匹配的密钥才能进行验证通过,通常先在客户端中创建一对密钥文件(公钥和私钥),然后将公钥文件放到服务器中指定位置,远程登录时,系统会使用公钥和私钥进行加密/解密关联验证,增加安全性,且可以免密交互登录。
3.1 公钥与私钥的关系
- 公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密
- 不能根据一个密钥来推算另一个密钥
- 公钥对外公开,私钥只有私钥持有人才知道
当密码验证和密钥验证同时开启时,服务器会优先使用密钥对验证
vim /etc/ssh/sshd_config 配置文件
PasswordAuthentication yes 启用密码验证
PubkeyAuthentication yes 启用密钥对验证
AuthorizedkeysFile .ssh/authorized_keys 指定公钥库文件
四. ssh客户端程序
4.1ssh远程登录
ssh [选项] 用户@ip
-p指定端口号
当用户第一次远程登陆时,必须接受服务器发来的ECDSA密钥验证,接收的密钥信息存放到~/.ssh/known_hosts文件中,验证成功后,即登陆目标服务器命令环境中了
4.2 scp 远程复制
下行复制:
scp root@192.168.137.101:/etc/passwd /root/passwd.txt
将远程主机中的/etc/passwd文件复制到本机中
上行复制:
scp -r /etc/ssh/ root@192.168.137.102:/opt
将本机中的/etc/ssh目录复制到远程主机中
此复制若对方主机有同名文件则会自动覆盖
补充:
4.3 sftp 安全的ftp
由于使用了加密/ 解密技术,所以传输效率比普通的FTP低,但是安全性更高
五. 配置密钥对验证
- 在客户端创建密钥对,在自己的家目录中.ssh目录中生成私钥和公钥
ssh -keygen -t rsa
- ssh -copy-id -p 端口号 -i id-rsa.pub 用户@ip地址
注意生成的.ssh权限要700 authorized _keys 权限为600
5.1免交互验证:
就是在创建密钥对时不设置密钥对密码
5.2 在已有的密钥密码验证下实现免交互
ssh - agent bash 设置一个代理(只在当前环境中)
ssh - add 在输入密钥密码
但此操作只能在当前会话中有效,重启则失效
六. TCP Wrappers 访问控制 (TCP封套)
将tcp服务程序包裹起来,代为监听tcp服务程序的端口,增加了一个安全检测过程,外来的连接请求必须通过这层安全检测,获得许可后才能进访问真正的服务程序
6.1 TCP Wrappers保护机制的两种实现方式
- 直接使用tcpd程序对其他的服务进行保护,需要允许tcpd程序
- 其他网络服务程序调用libwrap.so * 链接库,不用运行tcpd程序,此方法更加有效
使用 lld 命令查看程序的libwrap.so 链接库
lld $(which sshd)
6.2 TCP Wrappers 访问策略
为各种网络服务程序,针对访问服务的客户端地址进行访问控制,对应的策略文件为/etc/hosts.allow和/etc/hosts.deny分别来设置允许和拒绝访问
格式:《服务程序列表》:《客户端地址列表》
客户端地址列表允许使用通配符 * ?
6.3 基本原则
先检查/etc/hosts.allow 文件,密钥则检查/etc/hosts.deny 文件,若都没有相匹配的策略,则全部允许访问
例如:
如果我只希望从ip地址为12.0.0.1主机或位于192.168.137.101的主机访问ssh服务,其他的拒绝
vim /etc/hosts.allow
sshd:12.0.0.1,192.168.137.101
vim /etc/hosts.deny
sshd:ALL
在192.168.137.102中设置白名单和黑名单