一、OpenSSH服务器 ===>yum -y install openssh
目录
SSH(Secure SHell)协议
是一种安全通道协议
对通信数据进行了加密处理,用于远程管理 ===>对称密钥跟非对称密钥
OpenSHH**
服务名称:sshd
服务端主程序:/usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd_config
密钥
对称密钥:加密和解密用同一个密钥.
例如:AES、DES、3DES
加密速度快但是不安全
非对称密钥:加密和解密使用不同密钥.分为公钥和私钥.不可以从其中一种密钥推导出另一个密钥
例如: rsa
加密速度慢但是安全
Hash===>哈希算法 用来验证数据完整性
私钥:验证身份,保密的
公钥:所有人都知道,公开的
服务监听选项
端口号、协议版本、监听IP地址
禁用反向解析
[root@localhost ~]# vi /etc/ssh/sshd_config #修改配置文件
......
Port 22 #端口22
ListenAddress 172.16.16.22 #监听地址 172.16.16.22
Protocal 2 #协议 2
UseDNS no #不使用DNS
[root@localhost ~]#ssh root@192.168.1.10 -p 10010 #修改端口号后验证,-p后接改的端口号
用户登录控制
- 禁用root用户、空密码用户
- 闲置登录验证时间、重试次数
- AllowUsers、DenyUsers
[root@localhost ~]# vi /etc/ssh/sshd_config #修改配置文件
LoginGraceTime 2m #会话时间 2分钟
PermitRootLogin no #不允许root用户登录
MaxAuthTries 6 #最大的验证尝试次数为6次---默认是三次
PermitEmptyPasswords no #不允许空密码登录
......
AllowUsers qiezi@192.168.10.10 #AllowUsers不要与DenyUsers同时用{加了@IP ---只允许你从固定的终端登录}
登录验证方式
- 密码验证:核对用户名、密码是否匹配
- 密钥对验证:核对客户的私钥、服务端公钥是否匹配
[root@localhost ~]# vi /etc/ssh/sshd_config
......
PasswordAuthentication yes #私钥开启
PubkeyAuthentication yes #公钥开启
AuthorizedKeysFile .ssh/authorized_keys #指定公钥库位置,用ls -a验证
二、使用SSH客户端程序
- ssh命令—远程安全登录
ssh user@host (端口选项-p) - scp命令—远程安全复制
格式一、 scp user@host:file1 file24
格式二、scp file user@host:file2 - sftp命令—安全FTP上下载
sftp user@host
get ===>下载
put ===>上传
bye ===>退出
三、构建密钥对验证的SSH体系
整体实现过程
第一步:创建密钥对 ===>由客户端的用户zhangsan再本地创建密钥对
公钥文件:id_rsa
公钥文件:id_rsa.pub
第二步:上传公钥文件id_rsa.pub
第三步:导入公钥信息 ===>导入到服务端用户lisi的公钥数据库
公钥库文件:~/.ssh/authorized_keys
第四步:使用密钥对验证方式 ===>以服务端的用户lisi的身份进行登录
1.在客户机中创建密钥对
ssh-keygen命令
可用的加密算法:RSA、ECDSA或DSA
[zhangsan@localhost ~]$ ssh-keygen -t ecdsa #-t 指定密钥类型
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/zhangsan/.ssh/id_ecdsa):
Created directiry '/home/zhangsan/.ssh'.
Enter same passphrase again: #设置密钥短语
Your identification has been saved in /home/zhangsan/.ssh/id_ecdsa. #私钥文件位置
Your public key has been saved in /home/zhangsan/.ssh/id_ecdsa.pub. #公钥文件位置
......
2.将公钥文件上传至服务器
任何方式均可(FTP、Email、SCP、HTTP…)
[zhangsan@localhost ~]# scp ~/.ssh/id_ecdsa.pub root@172.16.16.22:/tmp #安全性复制
3.在服务器中导入公钥文本
将公钥文本添加至目标用户的公钥库
默认公钥库位置:~/.ssh/authorized_keys
[root@localhost ~]# mkdir /home/lisi/.ssh/
[root@localhost ~]# cat /tmp/id_ecdsa.pub >> /home/lisi/.ssh/authorized_keys
[root@localhost ~]# tail -1 /home/lisi/.ssh/authorized_keys
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOBYobmq32SjDwcnTiazunm2xaTrq/dJhrGcTEEGsr8/VqLgKPb8ySB4zExG417TOI3FluCnWKfBBsPQQhtaxU8= zhangsan@zhaobin
(mailto:zhangsan@localhost)
4.客户端使用密钥对验证登录
验证用户:服务端的用户lisi
验证密码:客户端的用户zhangsan的私钥短语
[zhangsan@zhaobin root]$ ssh lisi@20.0.0.50
Enter passphrase for key '/home/zhangsan/.ssh/id_ecdsa': ===>输入私钥
Last failed login: Thu Jul 9 12:04:15 CST 2020 from 20.0.0.60 on ssh:notty
There were 2 failed login attempts since the last successful login.
Last login: Thu Jul 9 12:02:06 2020 from 20.0.0.60
[lisi@localhost ~]$ whoani
lisi
#第二步和第三步可以采用另外一种方法
ssh-copy-id -i 公钥文件 user@host
验证密码后,会将公钥自动添加到目标主机user宿主目录下的.ssh/authorized_keys文件结尾
[zhangsan@localhost ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub lisi@172.16.16.22
TCP Wrappers概述
保护原理
在服务器向外提供的tcp服务商包装一层安全检测机制。外来连接请求首先通过这个安全检测,获得安全认证后才可被系统服务接受。
保护机制的实现方式
方式1:通过rcpd程序对其他服务程序进行包装
方式2:由其他服务器调用libwrap.so.*链接库
访问控制策略的配置文件===>两个文件可以同时存在
/etc/hosts.allow
/etc/hosts.deny
四、TCP Wrappers策略应用
保护原理
在服务器向外提供的tcp服务商包装一层安全检测机制。外来连接请求首先通过这个安全检测,获得安全认证后才可被系统服务接受。
保护机制的实现方式
方式1:通过rcpd程序对其他服务程序进行包装
方式2:由其他服务器调用libwrap.so.*链接库
访问控制策略的配置文件===>两个文件可以同时存在
/etc/hosts.allow
/etc/hosts.deny
TCP Wrappers策略应用
设置访问控制策略
策略格式:服务程序列表:客户端地址列表
服务程序列表
多个服务以逗号分隔,ALL表示所有服务
TCP Wrappers策略的应用顺序
1、检查hosts.allow,找到匹配则允许访问
2、再检查hosts.deny,找到则拒绝访问
3、若两个文件中均无匹配策略,则默认允许访问
策略应用示例
- 仅允许从以下地址访问sshd服务
主机61.63.65.67
网段192.168.2.0/24 - 禁止其他所有地址访问受保护的服务
[root@localhost ~]# vi /etc/hosts.allow #允许访问 相当于白名单
sshd:61.63.65.67,192.168.2.* #允许61.63.65.67 跟192.168.2网段的用户访问
[root@localhost ~]# vi /etc/hosts.deny #拒绝访问 相当于黑名单
sshd:ALL #拒绝其他所有