在Ubuntu系统中,iptables
是一个用于配置Linux内核防火墙的命令行工具。你可以编写脚本来自动化iptables
规则的添加、删除和修改。以下是一些基本步骤和示例,帮助你开始使用iptables
脚本。
首先,创建一个新的脚本文件,例如setup_iptables.sh
:
#!/bin/bash
# 清除现有规则
iptables -F
iptables -X
# 设置默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# 允许本地回环接口的流量
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许SSH连接
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许HTTP和HTTPS连接
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 允许特定IP地址访问
iptables -A INPUT -s 192.168.1.100 -j ACCEPT
# 保存规则
iptables-save > /etc/iptables/rules.v4
# 重启iptables服务以应用新规则
systemctl restart netfilter-persistent
在终端中运行以下命令,赋予脚本执行权限:
chmod +x setup_iptables.sh
运行脚本来应用iptables规则:
sudo ./setup_iptables.sh
你可以使用以下命令查看当前的iptables规则:
sudo iptables -L -v -n
在Ubuntu中,iptables
规则默认不会持久化。为了确保重启后规则仍然有效,你需要安装并配置netfilter-persistent
服务:
sudo apt-get update
sudo apt-get install netfilter-persistent
在安装过程中,系统会提示你是否保存当前的iptables规则。选择“是”以保存规则。
如果你遇到问题,可以启用iptables的调试和日志功能来帮助诊断问题。例如:
iptables -I INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH attempt: "
这将记录所有尝试连接到SSH端口的流量。
通过这些步骤,你可以创建和管理Ubuntu系统上的iptables
规则,并确保它们在系统重启后仍然有效。