
Linux防火墙主要通过iptables或更现代的firewalld进行配置。不同发行版默认工具可能不同,比如CentOS 7及以上使用firewalld,而一些旧版本或Debian系列仍常用iptables。下面分别介绍两种主流方式的配置方法与规则设置。
firewalld是动态管理防火墙的服务,支持区域(zone)概念,便于按网络环境切换策略。
1. 启动并启用firewalld服务:sudo systemctl start firewalld2. 查看当前状态和默认区域:
sudo systemctl enable firewalld
sudo firewall-cmd --state3. 添加端口放行规则(如开放80端口):
sudo firewall-cmd --get-default-zone
sudo firewall-cmd --permanent --add-port=80/tcp4. 开放特定服务(如http、https):
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --add-service=http5. 更改默认区域或为网卡指定区域:
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --set-default-zone=public6. 查看已添加规则:
sudo firewall-cmd --zone=internal --change-interface=eth0
sudo firewall-cmd --list-all
iptables是传统包过滤工具,规则直接操作内核Netfilter模块。
1. 查看当前规则:sudo iptables -L -n -v2. 清空规则(慎用):
sudo iptables -F3. 允许本地回环通信:
sudo iptables -A INPUT -i lo -j ACCEPT4. 放行已建立的连接:
sudo iptables -A OUTPUT -o lo -j ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT5. 开放指定端口(如22、80):
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT6. 拒绝其他所有入站连接:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -j DROP7. 保存规则(CentOS/RHEL):
sudo service iptables saveDebian/Ubuntu需安装iptables-persistent:
sudo apt install iptables-persistent
sudo netfilter-persistent save
配置防火墙时需注意以下几点,避免锁死服务器。