Linux限制远程登录IP
1、引言
在 Linux 环境下,网络安全性是一个至关重要的议题。对于系统管理员来说,了解如何查看和限制 IP 地址的访问是维护系统安全的关键步骤。本文将介绍几种在 Linux 系统中查看 IP 限制的有效方法,并提供实践指南,帮助您更好地保护您的服务器不受恶意访问的影响。
2、IP地址限制概念
IP限制是一种网络安全措施,它允许系统管理员控制对服务器或网络服务的访问。通过限制特定的 IP 地址或 IP 地址范围,管理员可以防止未授权的访问、DDoS 攻击和其他恶意活动。IP地址限制的重要性在于它为系统提供了一个第一层的防御机制,有助于确保只有合法用户能够访问敏感数据和资源。
3、系统环境介绍
系统环境:RedHat 8.0
主要配置文件:/etc/hosts.allow、/etc/hosts.deny、/etc/ssh/sshd_config、iptables
4、IP地址限制方式
在 Linux 环境中,限制IP地址的方式有多种,通常通过以下3种方式来实现:
- 通过 hosts.allow 和 hosts.deny 两个文件控制远程访问的IP地址或IP段;
- 通过 /etc/ssh/sshd_config 文件控制远程访问的IP地址或IP端;
- 通过防火墙规则来控制能够访问本机的IP地址或IP段
5、编辑配置文件及测试
5.1、hosts.allow和hosts.deny
这两个文件是tcpd服务器的配置文件,tcpd服务器可以控制外部IP对本机服务的访问,/etc/hosts.allow控制可以访问本机的IP地址,/etc/hosts.deny控制禁止访问本机的IP。如果两个文件的配置有冲突,以/etc/hosts.deny为准。格式如下:
服务名:IP地址或IP地址段:当规则匹配时可选的命令操作,
以允许地址和地址段192.168.5.94、192.168.5.0/24远程访问ssh为例:
sshd:192.168.5.94:allow
sshd:192.168.5.0/24:allow
5.1.1、编辑hosts.allow和hosts.deny配置文件
执行命令: vim /etc/hosts.allow ,新增配置文件内容如下:
1 # 2 # hosts.allow This file contains access rules which are used to 3 # allow or deny connections to network services that 4 # either use the tcp_wrappers library or that have been 5 # started through a tcp_wrappers-enabled xinetd. 6 # 7 # See 'man 5 hosts_options' and 'man 5 hosts_access' 8 # for information on rule syntax. 9 # See 'man tcpd' for information on tcp_wrappers 10 # 11 sshd:192.168.5.94:allow #允许192.168.5.94主机访问SSH服务
执行命令: vim /etc/hosts.deny ,新增配置文件内容如下:
1 # 2 # hosts.deny This file contains access rules which are used to 3 # deny connections to network services that either use 4 # the tcp_wrappers library or that have been 5 # started through a tcp_wrappers-enabled xinetd. 6 # 7 # The rules in this file can also be set up in 8 # /etc/hosts.allow with a 'deny' option instead. 9 # 10 # See 'man 5 hosts_options' and 'man 5 hosts_access' 11 # for information on rule syntax. 12 # See 'man tcpd' for information on tcp_wrappers 13 # 14 sshd:192.168.5.0/24:deny #拒绝192.168.5.0段的IP访问SSH服务
5.1.2、测试
在主机192.168.5.94上进行ssh登录测试:

在主机192.168.5.95上进行登录测试:

测试发现配置未生效,网上搜寻大佬给出的解释和解决问题方法如下:
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登陆,配置生效。
5.2、/etc/ssh/sshd_config
格式:用户名@IP或IP段,用户名*表示全部用户
AllowUsers *@127.0.0.1或AllowUsers *@192.168.1.0/24
DenyUsers *@127.0.0.1或DenyUsers *@192.168.1.0/24
5.2.1、编辑sshd_config配置文件
执行命令: vim /etc/ssh/sshd_config ,在文件末尾新增内容:
AllowUsers root@192.168.5.94
DenyUsers root@192.168.5.0/24
格式:用户名@IP或IP段,用户名*表示全部用户
使用命令: systemctl restart sshd.service ,重启sshd服务
1 [root@RedHat8 ~]# cat /etc/ssh/sshd_config 2 3 4 # Example of overriding settings on a per-user basis 5 #Match User anoncvs 6 # X11Forwarding no 7 # AllowTcpForwarding no 8 # PermitTTY no 9 # ForceCommand cvs server 10 AllowUsers root@192.168.5.94 #允许192.168.5.94主机的root用户远程 11 DenyUsers root@192.168.5.0/24 #拒绝192.168.5.0段IP主机的root用户远程
5.2.2、测试
测试一:
在主机192.168.5.94上进行ssh登录测试:

在主机192.168.5.95上进行登录测试:

测试发现2台主机都无法登录
测试二:
将文件末尾内容调整为以下顺序
AllowUsers root@192.168.5.0/24
DenyUsers root@192.168.5.95
在主机192.168.5.94上使用root账户进行测试:

在主机192.168.5.95上使用root账户进行测试:

测试三:
将文件末尾内容调整为:
AllowUsers root@192.168.5.94
在主机192.168.5.94上使用root账户进行测试:

在主机192.168.5.95上使用root账户进行测试:

测试四:
将文件末尾内容调整为:
DenyUsers root@192.168.5.95
在主机192.168.5.94上使用root账户进行测试:

在主机192.168.5.95上使用root账户进行测试:

测试结论:通过配置sshd_config文件内容能够有效限制IP地址和IP地址段,执行顺序为:先执行DenyUsers,再执行AllowUsers(建议将DenyUsers语句放在AllowUsers语句上面),如果配置中只添加AllowUsers语句,若没有匹配到该规则,则拒绝其他所有访问;如果配置中只添加DenyUsers语句,若没有匹配到规则,则允许其他所有访问;默认不配置是允许所有访问。
5.3、iptables
iptables是Linux系统中最古老和最强大的防火墙工具之一。它允许管理员创建复杂的规则来控制网络流量,包括对IP地址及端口的限制。iptables工作在内核层面,可以对进入和离开系统的数据包进行过滤。规则格式如下:
1 # 禁止指定IP访问 2 iptables -A INPUT -p tcp -s IP -j DROP 3 # 禁止指定IP访问端口 4 iptables -A INPUT -p tcp -s IP --dport port -j DROP 5 # 允许指定IP访问指定端口 6 iptables -A INPUT -s IP -p tcp --dport port -j ACCEPT
5.3.1、设置iptables规则
执行命令: iptables -A INPUT -p tcp -s 192.168.5.95 -j DROP ,禁止指定IP访问
使用: iptables -L ,查看防火墙规则情况

5.3.2、测试
在主机192.168.5.94上使用root账户进行测试:

在主机192.168.5.95上使用root账户进行测试:

测试结论:未使用iptables进行限制的主机能够正常访问并连接登录,通过iptables进行限制的主机无法建立连接,并提示ssh连接超时。

浙公网安备 33010602011771号