skip to content
The Life of Leung

iptables config

/ 3 min read

Updated:
Table of Contents

更新系统

Terminal window
apt update && apt upgrade -y

在Ubuntu中安装iptables防火墙和持久化软件包

Terminal window
apt install iptables -y
apt install iptables-persistent -y

安装完成后,iptables 文件夹将包含两个文件,分别用于 IPv4 和 IPv6 规则:

  • /etc/iptables/rules.v4
  • /etc/iptables/rules.v6

检查 iptables 的当前状态

Terminal window
iptables -L

设置防火墙

允许本地主机流量

Terminal window
iptables -A INPUT -i lo -j ACCEPT

允许特定端口上的流量

Terminal window
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

选项的使用方式如下:

  • -p:检查指定的协议(tcp)
  • —dport:指定目标端口
  • -j jump:执行该操作

通过 IP 地址控制流量

Terminal window
# 接受来自特定 IP 地址的流量
iptables -A INPUT -s 127.0.0.1 -j ACCEPT
# 屏蔽来自特定 IP 地址的流量
iptables -A INPUT -s 127.0.0.1 -j DROP
# 拒绝来自某个 IP 地址范围的流量
iptables -A INPUT -m iprange --src-range 192.168.10.10-192.168.10.100 -j REJECT
* -m:匹配指定的选项
* -iprange:启用 iprange 扩展模块,这样防火墙才能识别“一段连续的 IP”
* \-\-src-range:指定 IP 地址范围
* -j REJECT: Jump(跳转)到操作动作。REJECT 表示拒绝。
小贴士: 它和 DROP 不同。DROP 是直接丢弃数据包不理会,而 REJECT 会给发送者回一个“拒绝访问”的消息,告诉对方你被拦住了。

删除不需要的流量

Terminal window
# 普通规则(链中的一个关卡,按顺序执行,可以灵活放置在任何位置)
iptables -A INPUT -j DROP
* 注意:输入此命令前确保 SSH 访问正常,否则将会阻止所有访问,包括当前的SSH访问。

删除规则

Terminal window
# 默认策略(链的最后防线,只有当所有规则都不匹配时才生效,只能设置 ACCEPT 或 DROP)
iptables -P INPUT DROP
# 列出所有规则
iptables -L -n --line-numbers
# 删除的防火墙规则所在的行,例如删除第3行
sudo iptables -D INPUT 3

保存更改

Terminal window
netfilter-persistent save
* 下次系统启动时,iptables将自动重新加载防火墙规则