1、Hosts.allow和host.deny说明
两个文件是控制远程访问设置的,通过设置这个文件可以允许或者拒绝某个ip或者ip段的客户访问linux的某项服务。如果请求访问的主机名或IP不包含在/etc/hosts.allow中,那么tcpd进程就检查/etc/hosts.deny。看请求访问的主机名或 IP有没有包含在hosts.deny文件中。如果包含,那么访问就被拒绝;如果既不包含在/etc/hosts.allow中,又不包含在/etc /hosts.deny中,那么此访问也被允许。在CentOS Stream或其他现代的Linux发行版中,你可能会发现传统的hosts.deny和hosts.allow文件已经不存在或不被使用。这是因为随着时间的推移,系统的安全策略和网络管理工具已经发生了演变,许多系统管理员和发行版维护者选择使用更现代、更灵活的工具来管理访问控制。
2、文件的格式为::[:
3、配置拒绝访问
vim /etc /hosts.deny
in.telnetd:.python.org
vsftpd:192.168.0.
sshd:192.168.0.0/255.255.255.0
第一行vpser.net表示,禁止python.org这个域里的主机允许访问TELNET服务,注意前面的那个点(.)。
第二行表示,禁止192.168.0这个网段的用户允许访问FTP服务,注意0后面的点(.)。
第三行表示,禁止192.168.0这个网段的用户允许访问SSH服务,注意这里不能写为192.168.0.0/24。在CISCO路由器种这两中写法是等同的
4、配置充许访问
以ssh允许192.168.220.1和telnet允许192.168.220网段为例:
vim /etc/hosts.allow
保存文件退出编缉后,重启ssh服务和telnet服务【可选】
5、补充说明
- 一个IP请求连入,linux的检查策略是先看/etc/hosts.allow中是否允许,如果允许直接放行;如果没有,则再看/etc/hosts.deny中是否禁止,如果禁止那么就禁止连入。
- 实验发现对/etc/hosts.allow和/etc/hosts.deny的配置不用重启就立即生效,但不管重启不重启当前已有会话都不会受影响;也就是说对之前已经连入的,即便IP已配置为禁止登录会话仍不会强制断开。
6、异常现象说明
通过配置hosts.allow、hosts.deny,控制SSH限制固定IP登陆
按照以往的方法,分别在hosts.allow、hosts.deny加入以下配置
# more /etc/hosts.allow
sshd:192.168.1.20
# more /etc/hosts.deny
sshd:all
保存后测试,发现配置无效,其他IP还是可以登陆成功。
6.2、解决方法如下
hosts.allow和hosts.deny属于tcp_Wrappers防火墙的配置文件,而用tcp_Wrappers防火墙控制某一服务访问策略的前提是,该服务支持tcp_Wrappers防火墙,即该服务应用了libwrapped库文件。
6.2.1查看ssh是否应用libwrapped库文件
# ldd /usr/sbin/sshd |grep libwrap.so.0
没有显示,表示此服务器上安装的SSH没有应用libwrapped库文件,也就不能用tcp_Wrappers防火墙控制访问策略。(一般情况下服务器默认安装的SSH都是支持libwrapped库文件)
6.2.2最终解决方法是重新安装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)
6.2.3再测试SSH登陆,配置生效