目录
点击展开目录
更新系统
apt update && apt upgrade -y
在Ubuntu中安装iptables防火墙和持久化软件包
apt install iptables -y
apt install iptables-persistent -y
安装完成后,iptables 文件夹将包含两个文件,分别用于 IPv4 和 IPv6 规则:
- /etc/iptables/rules.v4
- /etc/iptables/rules.v6
检查 iptables 的当前状态
iptables -L
设置防火墙
允许本地主机流量
iptables -A INPUT -i lo -j ACCEPT
允许特定端口上的流量
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 地址控制流量
# 接受来自特定 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 会给发送者回一个“拒绝访问”的消息,告诉对方你被拦住了。
删除不需要的流量
# 普通规则(链中的一个关卡,按顺序执行,可以灵活放置在任何位置)
iptables -A INPUT -j DROP
* 注意:输入此命令前确保 SSH 访问正常,否则将会阻止所有访问,包括当前的SSH访问。
删除规则
# 默认策略(链的最后防线,只有当所有规则都不匹配时才生效,只能设置 ACCEPT 或 DROP)
iptables -P INPUT DROP
# 列出所有规则
iptables -L -n --line-numbers
# 删除的防火墙规则所在的行,例如删除第3行
sudo iptables -D INPUT 3
保存更改
netfilter-persistent save
* 下次系统启动时,iptables将自动重新加载防火墙规则