@TOC
一、SSH远程管理
1.1、OpenSSH服务器
■SSH (Secure Shell)协议
- 是一种安全通道协议
- 对通信数据进行了加密处理,用于远程管理
■OpenSSH
- 服务名称: sshd
- 服务端主程序: /usr/sbin/sshd
- 服务端配置文件: /etc/ssh/sshd_ _config
■服务监听选项
- 端口号、协议版本、监听IP地址
- 禁用反向解析
[root@localhost ~]# vi /etc/ssh/sshd_ config
......
Port 22
ListenAddress 172.16.16.22 ###监听端口要填管理平面IP地址;分为管理平面,数据平面
Protocol 2
UseDNS no
实例:
进入 vi /etc/ssh/sshd_config
服务监听选项
Port 22 ########端口打开
#AddressFamily any
ListenAddress 20.0.0.27 ######配监听地址
#ListenAddress ::
禁用DNS反向解析
■用户登录控制
- 禁用root用户、空密码用户
- 限制登录验证时间、重试次数
- AllowUsers、DenyUsers
[root@localhost ~]# vi /etc/ssh/sshd_ config
LoginGrace Time 1m ########登陆验证时间为2分钟
PermitRootL ogin no ####禁止root用户登录
MaxAuthTries 2 ##最大重试次数为2
PermitEmptyPasswords no ###AllowUsers不要与DenyUsers同时用
.......
AllowUsers jerry admin@61 .23.24.25
用户登录控制
①这里验证最大重试登录次数,如果连续两次登录密码失败就会出现如下情况。这就是登录不了。
②验证禁止root用户登录
③验证登录验证时间,1分钟到了,自动退出了
④验证禁止空密码用户登录
新建一个用户tom,然后不设置密码
进入远程登录界面,输入用户名tom,直接登录
无法登陆
每次改完配置文件之后,要重启服务生效
方法一:
systemctl restart sshd
方法二:
service sshd reload
■登录验证方式
- 密码验证:核对用户名、密码是否匹配
- 密钥对验证:核对客户的私钥、服务端公钥是否匹配
[root@localhost ~]# vi /etc/ssh/sshd_ config
......
PasswordAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_ keys
启用密码验证、密钥对验证、指定公钥库位置
1.2、使用SSH客户端程序
■ssh命令——远程安全登录
- ssh user@host
■scp命令——远程安全复制
- 格式1: scp user@host:file1 file2
- 格式2: scp file1 user@host:file2
■sftp命令——安全FTP上下载
- sftp user@host
不指定路径就在对方家目录
1.3、密钥对验证的SSH体系
1.3.1、整体实现过程
- 由客户端的用户zhangsan本地创建密钥对
私钥文件:id_rsa
公钥文件:id_rsa.pub - 上传公钥文件id_rsa.pub
- 导入到服务器用户lisi的公钥数据库
公钥数据库文件:~/.ssh/authorized_keys - 以服务端的用户lisi的身份进行登录,使用秘钥对验证
1.3.2、在客户机中创建密钥对
■在客户机中创建密钥对
- ssh-keygen命令
- 可用的加密算法: RSA、ECDSA或DSA
[zhangsan@localhost ~]$ ssh-keygen -t ecdsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/zhangsan/ .ssh/id_ ecdsa):
Created directory '/home/zhangsan/ .ssh'.
Enter passphrase (empty for no passphrase):
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. ###公钥文件位置
1.3.3、将公钥文件上传至服务器
■将公钥文件上传至服务器
- 任何方式均可(FTP、 Email、 SCP、 HTTP…)
[zhangsan@localhost ~]$ scp ~/.ssh/id_ ecdsa.pub root@172.16.16.22:/tmp
1.3.4、在服务器中导入公钥文本
■在服务器中导入公钥文本
- 将公钥文本添加至目标用户的公钥库
- 默认公钥库位置: ~/.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
AAAAE2VjZHNhLXNoY TItbmlzdHAyNT YAAAAIbmlzdHAyNTYAAABBBLJSnBhscY
BfnnHxSYAJEBD4sNkTLMF7itcFGM33RdeXU89QNQkMnCrCJHzAIZURrzpXG6M
p62mz9gRXUnARk8s=zhangsan@localhost
1.3.5、客户端使用密钥对验证登录
■客户端使用密钥对验证登录
- 验证用户:服务端的用户lisi
- 验证密码:客户端的用户zhangsan的私钥短语
[zhangsan@localhost ~]$ ssh lisi@172.16.16.22
[lisi@localhost ~]$ whoami
lisi
1.3.6、第2步和第3步可以采用另外一种方法
■第2步和第3步可以采用另外一种方法
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访问控制
2.1、TCP Wrappers概述
2.1.1、保护机制的实现方式
■保护机制的实现方式
- 方式1:通过tcpd程序对其他服务程序进行包装
- 方式2:由其他服务程序调用libwrap.so.*链接库
2.1.2、访问控制策略的配置文件
■访问控制策略的配置文件
- /etc/hosts.allow
- /etc/hosts.deny
2.2、TCP Wrappers访问策略
2.2.1、设置访问控制策略
■设置访问控制策略
- 策略格式:服务程序列表:客户端地址
- 服务程序列表
◆多个服务以逗号分隔,ALL表示所有服务列表 - 客户端地址列表
◆多个地址以逗号分隔,ALL表示所有地址
◆允许使用通配符?和*
◆网段地址,如192.168.4.或者192.168.4.0/255.255.255.0
◆区域地址,如.benet.com
2.2.2、策略的应用顺序
■策略的应用顺序
- 检查hosts. allow,找到匹配则允许访问
- 再检查hosts.deny,找到则拒绝访问
- 若两个文件中均无匹配策略, 则默认允许访问
2.2.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.*
[root@localhost ~]# vi /etc/hosts.deny
sshd:ALL
访问策略应用顺序实验:
1、测试的IP地址为 20.0.0.5
2、输入的是20.0.0.2的IP,找不到20.0.0.5的IP,
所以 20.0.0.5 不允许访问
3、输入的ALL,代表所有IP,找到则拒绝访问,因为代表所有,所以可以找到20.0.0.5,也拒绝访问。
所以 20.0.0.5登录不上