iptables 常用防火墙
iptables 是 Linux 操作系统中最常用的防火墙工具。
1. 什么是 iptables? 🤔
iptables 是 Linux 操作系统中最常用的防火墙工具,它用于过滤和管理网络流量。iptables 基于规则集来控制进出 Linux 系统的网络流量。它能够根据 IP 地址、端口、协议等条件过滤数据包,并为系统提供强大的安全性保护。🚀
特点 | 描述 |
---|---|
高度可定制 | 允许根据不同的网络需求和安全策略来定制规则。 |
性能高效 | 直接操作内核的网络栈,具有极低的性能开销。 |
强大的规则支持 | 支持多种协议(TCP、UDP、ICMP 等)和各种网络层过滤。 |
2. 安装 iptables 📥
2.1 安装 iptables
在大多数 Linux 发行版中,iptables 通常是预装的。如果没有安装,你可以使用以下命令安装它:
在 Ubuntu 或 Debian 系统上:
sudo apt update
sudo apt install iptables
在 CentOS 或 RHEL 系统上:
sudo yum install iptables
2.2 检查 iptables 状态
安装完成后,你可以通过以下命令检查 iptables 服务的状态:
sudo systemctl status iptables
如果没有安装或未启用,你可以启动 iptables 服务:
sudo systemctl start iptables
3. 配置 iptables 防火墙 ⚙️
3.1 基本命令格式
iptables 的命令格式如下:
sudo iptables -A <CHAIN> -p <PROTOCOL> --dport <PORT> -j <ACTION>
- -A: 添加规则(Append)。
- -p: 指定协议,如
tcp
、udp
或icmp
。 - --dport: 目标端口。
- -j: 指定动作(如 ACCEPT、DROP、REJECT 等)。
3.2 配置常见的防火墙 规则
3.2.1 允许 SSH 访问
默认情况下,Linux 防火墙会阻止所有传入的连接。要允许 SSH(端口 22)的连接,可以使用以下命令:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
3.2.2 允许 HTTP 和 HTTPS 访问
要允许 HTTP(端口 80)和 HTTPS(端口 443)的访问:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
3.2.3 拒绝 ICMP(Ping)请求
为了增强系统的安全性,可能需要禁用 Ping 请求(ICMP)。可以使用以下命令拒绝所有传入的 ICMP 请求:
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT
3.2.4 允许来自特定 IP 地址的流量
如果你希望只允许来自特定 IP 地址的访问,可以使用:
sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT
3.2.5 默认拒绝所有流量
为了提高安全性,建议设置默认规则为拒绝所有传入连接:
sudo iptables -P INPUT DROP
这将阻止所有未明确允许的流量。
3.3 配置规则链
iptables 使用规则链(Chain)来组织不同的规则。常见的规则链有:
- INPUT:处理进入系统的流量。
- OUTPUT:处理从系统发出的流量。
- FORWARD:处理转发流量。
你可以通过以下命令查看当前规则:
sudo iptables -L
如果想要删除某条规则,可以使用以下命令:
sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT
4. 保存和恢复 iptables 规则 🔧
4.1 保存规则
在系统重启后,iptables 配置会丢失。因此,必须保存规则:
在 Ubuntu 或 Debian 系统上:
sudo iptables-save > /etc/iptables/rules.v4
在 CentOS 或 RHEL 系统上:
sudo service iptables save
4.2 恢复规则
如果你需要恢复保存的规则,可以使用以下命令:
在 Ubuntu 或 Debian 系统上:
sudo iptables-restore < /etc/iptables/rules.v4