iptables 是 Linux 系统中用于配置内核防火墙的一个命令行工具。通过 iptables,你可以定义规则来允许或拒绝网络流量。以下是一些基本的步骤和示例,帮助你开始配置 iptables 防火墙规则。
首先,你可以查看当前的 iptables 规则,以确保没有冲突的规则存在。
sudo iptables -L -n -v
如果你是从头开始配置,或者需要重置现有的规则,可以使用以下命令清空所有规则:
sudo iptables -F
sudo iptables -X
你可以为不同的链(如 INPUT、OUTPUT 和 FORWARD)设置默认策略。例如,设置为拒绝所有进入的流量,但允许所有出去的流量:
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD DROP
确保本地回环接口(lo)的流量被允许:
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
允许已建立的连接和相关的数据包通过:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
如果你需要通过SSH远程管理服务器,允许SSH连接(默认端口22):
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
如果你需要允许Web流量,允许HTTP(端口80)和HTTPS(端口443)连接:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
如果你只想允许特定IP地址访问你的服务器,可以使用以下命令:
sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT
iptables 规则在系统重启后会丢失,因此你需要保存规则。不同的Linux发行版可能有不同的方法来保存 iptables 规则。
在Debian/Ubuntu系统上:
sudo iptables-save > /etc/iptables/rules.v4
在Red Hat/CentOS系统上:
sudo service iptables save
或者使用 firewall-cmd 工具(适用于firewalld):
sudo firewall-cmd --runtime-to-permanent
如果你已经保存了规则,可以在系统启动时自动加载它们。例如,在Debian/Ubuntu系统上:
sudo iptables-restore < /etc/iptables/rules.v4
在Red Hat/CentOS系统上:
sudo systemctl enable iptables
通过以上步骤,你可以开始配置 iptables 防火墙规则。根据你的具体需求,可以进一步调整和扩展这些规则。