在Debian系统中,使用iptables编写自定义脚本可以帮助你自动化地配置防火墙规则。以下是一个简单的示例,展示了如何编写一个自定义的iptables脚本。
创建脚本文件:
首先,创建一个新的脚本文件。例如,创建一个名为setup_iptables.sh
的文件:
nano setup_iptables.sh
添加脚本内容: 在脚本文件中添加以下内容。这个示例脚本将设置一些基本的防火墙规则,包括允许SSH、HTTP和HTTPS流量,并拒绝所有其他流量。
#!/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 conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate 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
# 允许ICMP echo请求(ping)
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
# 记录所有被拒绝的连接
iptables -A INPUT -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
# 保存规则
iptables-save > /etc/iptables/rules.v4
赋予脚本执行权限: 保存并关闭文件后,赋予脚本执行权限:
chmod +x setup_iptables.sh
运行脚本: 运行脚本来应用防火墙规则:
sudo ./setup_iptables.sh
持久化规则:
为了确保重启后规则仍然有效,可以将规则保存到/etc/iptables/rules.v4
文件中,并在系统启动时自动加载这些规则。你可以使用iptables-persistent
包来实现这一点。
安装iptables-persistent
:
sudo apt-get update
sudo apt-get install iptables-persistent
在安装过程中,选择“是”以保存当前规则,并选择“否”以避免在启动时提示配置IPv6规则。
通过以上步骤,你就可以创建一个自定义的iptables脚本,并在Debian系统中应用这些规则。根据你的具体需求,可以进一步修改和扩展脚本中的规则。