/etc/hosts.allow控制可以访问本机的IP地址,/etc/hosts.deny控制禁止访问本机的IP。如果两个文件的配置有冲突,以/etc/hosts.deny为准。下面是一个/etc/hosts.allow的示例:
ALL:127.0.0.1 #允许本机访问本机所有服务进程smbd:192.168.0.0/255.255.255.0 #允许192.168.0.网段的IP访问smbd服务
ALL关键字匹配所有情况,EXCEPT匹配除了某些项之外的情况,PARANOID匹配你想控制的IP地址和它的域名不匹配时(域名伪装)的情况。
今天用来禁止一些恶意的ip地址登陆到服务器。因为远程登陆需要sshd进程,所以:
修改步骤如下:
1:修改“/etc/hosts.allow”文件,在最下面添加一行:
sshd:192.168.100.0/255.255.255.0 #允许局域网内所有机器访问服务器上的sshd进程
sshd:60.28.160.244 #允许外网的60.28.160.244访问这个服务器上的sshd进程
2:修改“/etc/hosts.deny”文件,在最后一行添加:
sshd:all #禁止所有
注: 1):修改前,请先修改“/etc/hosts.allow”文件,并且修改完毕之后切勿立即退出,应该做登陆测试
2):文件修改后,立即生效,但是对于已经运行的程序则不生效。
1、登录主机,如果是普通账户先切换至root账号
su root
2、编缉/etc/hosts.allow文件
vi /etc/hosts.allow
允许内容 | 书写格式(改成自自需要的IP或IP段) |
ssh允许单个ip | sshd:192.168.220.1 |
ssh允许ip段 | sshd:192.168.220. |
telnet允许单个ip | in.telnetd:192.168.220.1 |
telnet允许ip段 | in.telnetd:192.168.221. |
以ssh允许192.168.220.1和telnet允许192.168.220网段为例,具体在/etc/hosts.allow加入内容如下:
3、编辑/etc/hosts.deny文件
vi /etc/hosts.deny
在文件中加入:
sshd:ALLin.telnetd:ALL
具体在/etc/hosts.deny加入内容如下:
4、保存文件退出编缉后,重启ssh服务和telnet服务【可选】
service sshd restart service xinetd restart
说明:
1.一个IP请求连入,linux的检查策略是先看/etc/hosts.allow中是否允许,如果允许直接放行;如果没有,则再看/etc/hosts.deny中是否禁止,如果禁止那么就禁止连入。
2.实验发现对/etc/hosts.allow和/etc/hosts.deny的配置不用重启就立即生效,但不管重启不重启当前已有会话都不会受影响;也就是说对之前已经连入的,即便IP已配置为禁止登录会话仍不会强制断开。不过不知是否所有linux都一样,由此第四步标为可选。
3.网上发现有些教程写成不是sshd而是in.sshd不是in.telnetd而是telnetd的,个人觉得应该是独立启的不用加in.托管于xinetd的需要加in.
参考:
https://blog.csdn.net/u013634961/article/details/39855543
https://www.cnblogs.com/lsdb/p/7095288.html