tcp的22号端口
本章结构 SSH远程管理1.配置OpenSSH服务端
2.是用SSH客户端程序
3.密钥对验证的SSH体系
TCP Wrappers访问控制1.TCP Wrappers概述
2.TCP Wrappers访问策略
OpenSSH服务器
SSH(Secure Shell)协议1,是一种安全通道协议
2,对通信数据进行了加密处理,用于远程管理
OpenSSH服务名称:sshd
服务端主程序:/usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd_config
服务监听选项端口号,协议版本,监听IP地址
禁用反向解析
用户登录控制禁用root用户,空密码用户
限制登录验证时间,重试次数
AllowUsers,DenyUsers
登录验证方式1,密码验证:核对用户名,密码是否匹配
2,密钥对验证:核对客户的私钥,服务端公钥是否匹配
构建密钥对验证的SSH体系 整体实现过程
在客户机中创建密钥对
1.ssh-keygen命令
2.可用的加密算法:RSA, ECDSA或DSA
将公钥文件上传至服务器任何方式均可(FTP, Email,SCP,HTTP。。。。)
在服务器中导入公钥文本1,将公钥文本添加至目标用户的公钥库
2,默认公钥位置:~/.ssh/authorized_keys
客户端使用密钥对验证登录1,验证用户:服务端的用户lisi
2,验证密码:客户端的用户zhangsan的私钥短语
第二步和第三步可以采用另外一种方法
ssh-copy-id -i 公钥文件 user@host
验证密码后,会将公钥自动添加到目标主机user宿主目录下的.ssh/authorized_keys文件结尾
[zhangsan@localhost ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub lisi@172.16.16.22TCP Wrappers概述 保护原理 保护机制的实现方式
1,通过tcpd程序对其他服务程序进行包装
2,由其他服务程序调用libwarp.so.*链接库
访问控制策略的配置文件/etc/hosts.allow
/etc/hosts.deny
策略格式:服务程序列表:客户端地址列表
服务程序列表
多个服务以逗号分隔,ALL表示所有服务
客户端地址列表
多个地址以逗号分隔,ALL表示所有地址
允许使用通配符?和*
网段地址,如192.168.4.或者192.168.4.0/255.255.255.0
区域地址,如benet.com
策略的应用顺序 检查hosts.allow,找到匹配则允许访问
再检查hosts.deny,找到则拒绝访问
若两个文件中均无匹配策略,则默认允许访问
实验环境:
允许用户wzadm从任意地址登录,采用密钥对验证
允许用户jacky从主机192.168.3.110登录
禁止其他所有用户远程登录
全部用centos7进行实验
所有机器都要关闭防火墙
systemctl stop firewalld setenforce 0网关服务器
IP配置
cd /etc/sysconfig/network-scripts/ vim ifcfg-ens33 TYPE=Ethernet BOOTPROTO=static NAME=ens33 DEVICE=ens33 onBOOT=yes IPADDR=192.168.152.100 NETMASK=255.255.255.0 vim ifcfg-ens37 TYPE=Ethernet BOOTPROTO=static NAME=ens33 DEVICE=ens33 onBOOT=yes IPADDR=192.168.152.100 NETMASK=255.255.255.0
开启路由转发
vim /etc/sysctl.conf net.ipv4.ip_forward = 1 添加这一行进行路由转发内网的测试机
cd /etc/sysconfig/network-scripts/ vim ifcfg-ens33 TYPE=Ethernet BOOTPROTO=static NAME=ens33 DEVICE=ens33 onBOOT=yes IPADDR=192.168.152.110 NETMASK=255.255.255.0 GATEWAY=192.168.152.100
再客户机创建密钥对
ssh-keygen -t ecdsa (算法)
//指定私钥位置
//设置私钥短语
//确认所设置的短语
##以上敲了这条命令是默认下一步
###生成公钥的文件上传到服务器
scp ~/.ssh/id-ecdsa.pub root@192.168.152.110
web网站(ssh)
vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet BOOTPROTO=static NAME=ens33 DEVICE=ens33 onBOOT=yes IPADDR=192.168.152.110 NETMASK=255.255.255.0 GATEWAY=192.168.152.100 DNS=202.96.134.133
创建用户和配置密码
useradd wzadm passwd wzadm 更改用户 wzadm 的密码 。 新的 密码: 无效的密码: 密码未通过字典检查 - 过于简单化/系统化 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。 useradd jacky passwd jacky 更改用户 jacky 的密码 。 新的 密码: 无效的密码: 密码未通过字典检查 - 过于简单化/系统化 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。
在服务器中导入公钥文本
mkdir /home/wzadm/.ssh cat /tmp/id_ecdsa.pub >> /home/wzadm/.ssh/authorized_keys tail -1 /home/wzadm/.ssh/authorized_keys ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMLthxysLY71wfqf/Q0ufq5mQi4A3KcEzrc7FAXNfpC1COCi/nFdVqMu7VnGdcg2NNQ2oNSyrx6n6rjG1+rrti0= root@localhost.localdomain ll /home/wzadm/.ssh/authorized_keys -rw-r--r--. 1 root root 188 2月 16 09:21 /home/wzadm/.ssh/authorized_keys
进行测试
外网测试机
TYPE=Ethernet BOOTPROTO=static NAME=ens33 DEVICE=ens33 onBOOT=yes IPADDR=218.29.30.218 NETMASK=255.255.255.0 GATEWAY=218.29.30.31
进行ssh登录
ssh wzadm@192.168.152.110 [root@localhost ~]# ifconfig ens33 ens33: flags=4163mtu 1500 inet 192.168.152.110 netmask 255.255.255.0 broadcast 192.168.152.255 ether 00:0c:29:e1:a0:b6 txqueuelen 1000 (Ethernet) RX packets 19008 bytes 1457987 (1.3 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 5809 bytes 617077 (602.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
修改TCP Wrappers
修改配置文件允许访问
vim /etc/hosts.allow sshd:192.168.152.120
拒绝访问
vim /etc/hosts.deny sshd:ALL
测试
在内网里面尝试登录
ssh jacky@192.168.152.110 jacky@192.168.152.110'S password: 输入密码 Last login: Web Feb 16 09:26:29 2022 from 192.168.152.128 ifconfig ens33 ens33: flags=4163mtu 1500 inet 192.168.152.110 netmask 255.255.255.0 broadcast 192.168.152.255 ether 00:0c:29:e1:a0:b6 txqueuelen 1000 (Ethernet) RX packets 19008 bytes 1457987 (1.3 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 5809 bytes 617077 (602.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
从外网进行访问
ssh jacky@192.168.152.110 ssh_exchange_identification:read:Connection reset by peer
访问失败
实验完成



