iptables
是 Linux 系统中用于配置内核防火墙的一个命令行工具。它允许系统管理员定义规则,这些规则决定了数据包是否被接受、拒绝或丢弃。以下是一些基本的 iptables
使用方法:
-
查看规则:
- 查看所有链的规则:
iptables -L
- 查看特定链的规则:
iptables -L INPUT
(查看 INPUT 链的规则) - 查看特定链的规则并显示行号:
iptables -L INPUT --line-numbers
- 查看所有链的规则:
-
清空规则:
- 清空所有链的规则:
iptables -F
- 清空特定链的规则:
iptables -F INPUT
- 清空所有链的规则:
-
允许规则:
- 允许特定 IP 访问:
iptables -A INPUT -s 192.168.1.100 -j ACCEPT
- 允许特定端口(例如 SSH 端口 22):
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
- 允许已建立的连接:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- 允许特定 IP 访问:
-
拒绝规则:
- 拒绝特定 IP 访问:
iptables -A INPUT -s 192.168.1.100 -j DROP
- 拒绝特定端口:
iptables -A INPUT -p tcp --dport 22 -j DROP
- 拒绝特定 IP 访问:
-
保存规则:
- 保存规则到文件:
iptables-save > /etc/iptables/rules.v4
- 从文件恢复规则:
iptables-restore < /etc/iptables/rules.v4
- 保存规则到文件:
-
默认策略:
- 设置默认策略为拒绝所有流量:
iptables -P INPUT DROP
- 设置默认策略为接受所有流量:
iptables -P INPUT ACCEPT
- 设置默认策略为拒绝所有流量:
-
删除规则:
- 删除特定规则(需要行号):
iptables -D INPUT 3
- 删除特定规则(根据规则内容):
iptables -D INPUT -s 192.168.1.100 -j DROP
- 删除特定规则(需要行号):
-
插入规则:
- 在特定位置插入规则(需要行号):
iptables -I INPUT 1 -s 192.168.1.100 -j ACCEPT
- 在特定位置插入规则(需要行号):
-
修改规则:
- 修改特定规则(需要行号):
iptables -R INPUT 3 -s 192.168.1.100 -j DROP
- 修改特定规则(需要行号):
示例
假设你想允许来自特定 IP 地址的 SSH 连接,并拒绝所有其他 IP 地址的 SSH 连接,可以这样做:
# 允许特定 IP 的 SSH 连接 iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT # 拒绝所有其他 IP 的 SSH 连接 iptables -A INPUT -p tcp --dport 22 -j DROP
注意事项
- 修改
iptables
规则时要小心,错误的规则可能导致系统无法访问。 - 在生产环境中,建议先在测试环境中验证规则的正确性。
- 使用
iptables
时,最好使用-I
和-D
选项来插入和删除规则,而不是-A
和-R
,以避免意外覆盖现有规则。
通过这些基本命令,你可以开始配置和管理 Linux 系统的防火墙规则。