通常我们会对提供对外服务的服务器进行远程ssh限制。这就涉及到了hosts.allow、hosts.deny两个文件。
hosts.allow、hosts.deny两个文件是控制远程访问设置的,通过它可以允许或者拒绝某个ip或者ip段的用户访问linux的某项服务。它们的配置也十分简单
more /etc/hosts.allow sshd:192.168.x.x sshd:192.12.31.2 more /etc/hosts.deny sshd:all
- sshd:192.168.x.x:允许192.168网段访通过ssh远程访问
- sshd:192.12.31.2:允许192.12.31.2通过ssh远程访问
- sshd:all拒绝所有ssh远程访问
- 当hosts.allow和 host.deny相冲突时,以hosts.allow设置为准
当然hosts.allow及hosts.deny的配置还远远不止这些,比如可以配置all:172.31.174.3
表示接受所有来自于172.31.174.3的请求
在修改hosts.allow及hosts.deny的配置后保存,可能会发现刚才修改的配置并没有生效,其他IP依旧可以登录。不要纠结,这可能跟你的tcp_Wrappers防火墙有关。
仔细阅读hosts.allow及hosts.deny的注释信息,你会发现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
yum -y remove openssh yum -y install openssh openssh-server
安装完成后再次查看是否应用了libwrapped库文件,后显示表示应用。
ldd /usr/sbin/sshd |grep libwrap.so.0 libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f3fb7f09000)
重新测试ssh登录,发现配置生效