iptables
或firewalld
来限制IP端口。使用iptables
命令:iptables -A INPUT -p tcp --dport 80 -s 192.168.1.1 -j REJECT
,这将拒绝来自IP地址192.168.1.1的TCP端口80的访问。在CentOS中,限制IP访问指定端口可以通过配置防火墙和修改特定配置文件来实现,以下是详细步骤:
一、使用firewalld限制IP访问端口
1. 查看防火墙状态
需要查看当前防火墙的状态,确保其正在运行:
systemctl status firewalld
如果防火墙未运行,可以启动它并设置为开机自启:
systemctl start firewalld systemctl enable firewalld
2. 开放或移除端口
假设要允许特定IP访问某个端口(例如9999):
添加端口9999到防火墙规则中 firewall-cmd --zone=public --add-port=9999/tcp --permanent 移除端口9999从防火墙规则中 firewall-cmd --zone=public --remove-port=9999/tcp --permanent
3. 限制特定IP访问端口
只允许特定IP访问某个端口,可以使用以下命令:
只允许192.168.1.100访问端口9999 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="9999" accept' 拒绝特定IP访问端口9999 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="9999" reject'
完成上述操作后,记得重新加载防火墙配置以使更改生效:
firewall-cmd --reload
二、使用iptables限制IP访问端口
1. 安装iptables
CentOS7默认没有安装iptables,可以手动安装:
yum install -y iptables-services
2. 配置iptables规则
假设要允许特定IP访问某个端口(例如6379),并拒绝其他所有IP的访问:
允许192.168.1.100访问6379端口 iptables -I INPUT -p tcp -s 192.168.1.100 --dport 6379 -j ACCEPT 拒绝其他所有IP访问6379端口 iptables -I INPUT -p tcp --dport 6379 -j REJECT
保存规则以确保重启后仍然有效:
service iptables save
三、通过配置文件限制IP访问SSH端口
1. 编辑hosts.allow文件
只允许特定IP地址或网段访问SSH服务:
vim /etc/hosts.allow
添加以下内容:
sshd:192.168.1.100 : allow sshd:192.168.1.0/24 : allow
2. 编辑hosts.deny文件
拒绝所有其他IP地址访问SSH服务:
vim /etc/hosts.deny
添加以下内容:
sshd:ALL : deny
保存文件后,重启SSH服务使配置生效:
systemctl restart sshd
方法 | 命令 | 描述 |
检查防火墙状态 | systemctl status firewalld | 查看防火墙是否运行 |
启动防火墙 | systemctl start firewalld | 启动防火墙服务 |
设置防火墙开机自启 | systemctl enable firewalld | 设置防火墙开机自启动 |
开放端口 | firewall-cmd --zone=public --add-port=[端口]/tcp --permanent | 开放指定端口 |
移除端口 | firewall-cmd --zone=public --remove-port=[端口]/tcp --permanent | 移除指定端口 |
限制特定IP访问端口 | firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="[IP]" port protocol="tcp" port="[端口]" accept' | 允许特定IP访问指定端口 |
拒绝特定IP访问端口 | firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="[IP]" port protocol="tcp" port="[端口]" reject' | 拒绝特定IP访问指定端口 |
安装iptables | yum install -y iptables-services | 安装iptables服务 |
配置iptables规则 | iptables -I INPUT -p tcp -s [IP] --dport [端口] -j ACCEPT | 配置iptables规则 |
保存iptables规则 | service iptables save | 保存iptables规则 |
编辑hosts.allow文件 | vim /etc/hosts.allow | 编辑hosts.allow文件 |
编辑hosts.deny文件 | vim /etc/hosts.deny | 编辑hosts.deny文件 |
重启SSH服务 | systemctl restart sshd | 重启SSH服务 |
五、相关问题与解答
问题1:如何在CentOS中使用firewalld限制特定IP访问多个端口?
答:可以使用firewall-cmd
命令添加多个富规则来限制特定IP访问多个端口,允许特定IP访问端口80和443:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="80" accept' firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="443" accept' firewall-cmd --reload
问题2:如何更改CentOS中的默认SSH端口并通过防火墙限制访问?
答:更改SSH服务的默认端口(假设更改为2222),然后通过防火墙限制对该端口的访问,编辑/etc/ssh/sshd_config
文件,将Port
改为2222:
Port 2222
通过防火墙允许特定IP访问新端口:
firewall-cmd --permanent --add-port=2222/tcp firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="2222" accept' firewall-cmd --reload
小伙伴们,上文介绍了“centos限制ip端口”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/42392.html<