【服务器安全】利用hosts.allow和hosts.deny限制IP登陆分解、iptables拒绝所有ip访问22端口,开通白名单
本文最后更新于 2024-05-16,
若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益, 请联系我 删除。
本站只有Telegram群组为唯一交流群组, 点击加入
文章内容有误?申请成为本站文章修订者或作者? 向站长提出申请
其实限制IP登陆用防火墙和这没有区别,只是有些没有使用防火墙的服务器,用该方法,就更方便一些。
有2个文件,一个是配置允许规则(/etc/hosts.allow),一个是配置拒绝规则(/etc/hosts.deny)。
设置/etc/hosts.allow允许规则
方法一:vim /etc/hosts.allow
在最后面添加规则即可
方法二:echo "规则" >> /etc/hosts.allow
添加单条规则
[root@compute1 ~]# echo "sshd:192.168.0.:allow" >>/etc/hosts.allow
(此规则为允许192.168.0.段的IP访问SSH服务)
添加多条
多个IP用逗号隔开即可:
[root@compute1 ~]# echo "sshd:192.168.0.,10.233.0.1,10.0.1.:allow" >>/etc/hosts.allow
注:10.10..
和**10.10.0.*
**:都是放开一个段的格式
这些规则设置完毕后是默认生效的,如果没有立即生效,可以重启xinetd服务:systemctl restart xinetd
设置/etc/hosts.deny拒绝规则
如果我们只是想拒绝某些ip登陆,其他都允许,则在/etc/hosts.deny中添加需要拒绝的IP或IP段即可,添加规则和/etc/hosts/allow一样。
但一般情况使用更多的是,只允许某些IP或IP段能登陆,其他都拒绝,则我们在allow中设置好允许登陆的IP,然后deny中直接all(拒绝所有)即可。 因为规则是以allow优先的,即使重复了,也是以allow为准。
拒绝所有
设置拒绝所有之前,务必先配置好allow中的规则,否则自己也登陆不了了,只能通过后台弄,稍显麻烦。
[root@compute1 ~]# echo "sshd:all:deny" >>/etc/hosts.deny
这些规则设置完毕后是默认生效的,如果没有立即生效,可以重启xinetd服务:systemctl restart xinetd
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都是支持libwrapped库文件,这台服务器不清楚为什么不支持)
- 我这有台主机就不支持【BClinux8.2】,如下,2个服务和正常的对比,白色的为正常的。
- 方式1
- 方式2
解决方法【linux官方下载rpm包地址】
最极端的方式重新安装SSH。慎用
yum -y remove openssh && yum -y install openssh && yum -y install openssh-server && yum -y install openssh-client
#安装完成后再次查看是否应用了libwrapped库文件,显示支持。
# ldd /usr/sbin/sshd |grep libwrap.so.0
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f3fb7f09000)
你可以根据你的系统,自行百度 : 安装 tcp_Wrappers
方法
提供一个官方下载rpm包的地址,官方的,很全。
https://centos.pkgs.org/
iptables拒绝所有ip访问22端口,开通白名单
临时生效
只允许1.2.3.4上使用ssh远程登录,其他IP禁止使用ssh,注意顺序,要先允许在拒绝
iptables -A INPUT -s 1.2.3.4 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP