1. 使用 iptables 配置
开放指定端口
以下示例展示如何开放 TCP 80 和 443 端口(常用的 HTTP 和 HTTPS 端口):
# 开放 TCP 80 端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 开放 TCP 443 端口
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
设置白名单(允许特定 IP 访问指定端口)
假设只允许 IP 192.168.1.100 访问 TCP 3306(MySQL 端口):
# 允许特定 IP 访问 TCP 3306
iptables -A INPUT -p tcp --dport 3306 -s 192.168.1.100 -j ACCEPT
# 拒绝其他所有对 TCP 3306 的访问
iptables -A INPUT -p tcp --dport 3306 -j DROP
保存规则
不同的 Linux 发行版保存规则的方法可能略有不同:
# 保存 iptables 规则(适用于 CentOS 7 及以下版本)
service iptables save
# 保存到配置文件中(适用于 Ubuntu)
iptables-save > /etc/iptables/rules.v4
2. 使用 firewalld 配置
firewalld 提供了更高级别的防火墙配置方法,推荐在 CentOS 7 和更新版本上使用。
开放指定端口
假设要开放 TCP 80 和 443 端口:
# 开放 TCP 80 和 443 端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
# 重新加载防火墙规则
firewall-cmd --reload
设置白名单(允许特定 IP 访问指定端口)
假设只允许 IP 192.168.1.100 访问 TCP 3306 端口:
# 添加一个新的 rich-rule,只允许特定 IP 访问
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="3306" accept'
# 拒绝其他所有对 3306 端口的访问(非必须,firewalld 默认已拒绝)
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port protocol="tcp" port="3306" drop'
# 重新加载防火墙规则
firewall-cmd --reload
查看和验证规则
-
查看当前生效的所有规则:firewall-cmd --list-all
-
验证某个端口是否被开放:firewall-cmd --query-port=80/tcp
注意事项
-
优先级问题:
- 在
iptables中,规则是从上到下匹配的,先匹配到的规则优先。 - 在
firewalld中,rich-rule规则会覆盖普通规则。
- 在
-
永久性保存:
- 对于
iptables,保存规则需要执行iptables-save。 - 对于
firewalld,必须添加--permanent,否则规则在重启后失效。
- 对于
-
测试规则时谨慎:
- 在远程服务器上修改防火墙规则时,小心避免断开连接。
- 建议在修改前开启一个新的 SSH 会话,以防规则出错锁定自己。
-
清空规则(调试时使用):
iptables:清空所有规则iptables -F
firewalld:重置所有规则
firewall-cmd --reload
通过以上步骤,你可以灵活地配置开放端口或限制特定 IP 的访问权限。
359




被折叠的 条评论
为什么被折叠?



