折腾 Linux 机器时经常遇到烦人且偏僻的问题,解决起来比较麻烦,在此记录。
1. 配置 SSH 白名单
第一种方法
在 ssh 设置中修改。修改/etc/ssh/sshd_config
文件,在末尾加入
allowusers root@192.168.1.1
(其中192.168.1.1
换为客户端ip)
也可将放行的 ip 换为任意的 cidr 块,如下
allowusers root@192.168.1.0/24 # 放行 192.168.1.*
allowusers root@172.16.0.0/12 # 放行 172.16.0.1 - 172.31.255.254
最后重启 ssh 服务:systemctl restart sshd.service
更多的 cidr 块转换,可使用 cidr计算器
第二种方法
修改host.allow
和host.deny
。按照如下方法:
# /etc/hosts.allow
sshd:192.168.1.1
# /etc/hosts.deny
sshd:all
最后重启 ssh 服务:systemctl restart sshd.service
此种方法可能不支持部分 cidr 段,会在 ssh 服务重启后报错,以自身使用情况为准。
host.allow和host.deny不生效
在部分机器上设置此种端口限制后不生效,非白名单内 ip 仍能通过 ssh 连接,解决方法如下:
hosts.allow和hosts.deny属于tcp_Wrappers防火墙的配置文件,而用tcp_Wrappers防火墙控制某一服务访问策略的前提是,该服务支持tcp_Wrappers防火墙,即该服务应用了libwrapped库文件。
查看某服务(如ssh)是否应用了libwrapped库文件的方法是:
ldd /usr/sbin/sshd |grep libwrap.so.0
没有显示,表示此服务器上安装的SSH没有应用libwrapped库文件,也就不能用tcp_Wrappers防火墙控制访问策略。(一般情况下服务器默认安装的SSH都是支持libwrapped库文件,这台服务器不清楚为什么不支持)
最终解决方法是重新安装SSH。
yum -y remove openssh
yum -y install openssh
yum -y install openssh-server
安装完成后再次查看是否应用了libwrapped库文件,显示支持。
ldd /usr/sbin/sshd |grep libwrap.so.0
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f3fb7f09000)
再测试SSH登陆,配置生效。
注意事项
务必看清 ssh 放通的用户是否正确,如放通git
用户则需写成git@xxx
而非root@xxx
,若不慎写错,可能得花许多时间找这个问题…