本文目录导读:

Linux iptables 批量添加规则
基本脚本模板
#!/bin/bash
# 批量添加iptables规则脚本
# 保存为 add_rules.sh
# 定义规则数组
RULES=(
"-A INPUT -p tcp --dport 80 -j ACCEPT"
"-A INPUT -p tcp --dport 443 -j ACCEPT"
"-A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT"
"-A INPUT -s 10.0.0.0/8 -j DROP"
"-A OUTPUT -p tcp --dport 53 -j ACCEPT"
)
# 批量添加规则
for RULE in "${RULES[@]}"
do
echo "添加规则: iptables $RULE"
iptables $RULE
done
# 保存规则
iptables-save > /etc/iptables/rules.v4
从文件读取规则
#!/bin/bash
# 规则文件格式: 每行一条规则
# rules.txt内容:
# -A INPUT -p tcp --dport 80 -j ACCEPT
# -A INPUT -p tcp --dport 443 -j ACCEPT
RULE_FILE="rules.txt"
if [ ! -f "$RULE_FILE" ]; then
echo "规则文件 $RULE_FILE 不存在"
exit 1
fi
while IFS= read -r RULE
do
if [ -n "$RULE" ] && [[ ! "$RULE" =~ ^# ]]; then
echo "添加规则: iptables $RULE"
iptables $RULE
fi
done < "$RULE_FILE"
iptables-save > /etc/iptables/rules.v4
Linux firewalld 批量添加规则
#!/bin/bash
# 批量添加firewalld规则
# 开启服务
SERVICES=("http" "https" "ssh")
for SERVICE in "${SERVICES[@]}"
do
firewall-cmd --permanent --add-service=$SERVICE
done
# 添加端口
PORTS=("8080/tcp" "3306/tcp" "5432/tcp")
for PORT in "${PORTS[@]}"
do
firewall-cmd --permanent --add-port=$PORT
done
# 添加源地址规则
SOURCES=("192.168.1.0/24" "10.0.0.0/8")
for SOURCE in "${SOURCES[@]}"
do
firewall-cmd --permanent --add-source=$SOURCE
done
# 重新加载生效
firewall-cmd --reload
Windows PowerShell 防火墙脚本
# Windows防火墙批量添加规则脚本
# 定义规则数组
$rules = @(
@{
Name = "允许HTTP"
Protocol = "TCP"
LocalPort = 80
Action = "Allow"
},
@{
Name = "允许HTTPS"
Protocol = "TCP"
LocalPort = 443
Action = "Allow"
},
@{
Name = "允许内部SSH"
Protocol = "TCP"
LocalPort = 22
RemoteAddress = "192.168.1.0/24"
Action = "Allow"
}
)
# 批量添加规则
foreach ($rule in $rules) {
$params = @{
Name = $rule.Name
DisplayName = $rule.Name
Protocol = $rule.Protocol
LocalPort = $rule.LocalPort
Action = $rule.Action
Direction = "Inbound"
Enabled = "True"
Profile = "Any"
}
if ($rule.RemoteAddress) {
$params.RemoteAddress = $rule.RemoteAddress
}
try {
New-NetFirewallRule @params
Write-Host "添加规则: $($rule.Name)"
}
catch {
Write-Host "添加规则失败: $($rule.Name) - $_"
}
}
Cisco IOS 批量配置脚本
#!/bin/bash
# Cisco IOS 防火墙规则批量配置
# SSH到交换机执行命令
DEVICE="192.168.1.1"
USER="admin"
PASS="password"
# 规则列表
RULES=(
"access-list 100 permit tcp any any eq 80"
"access-list 100 permit tcp any any eq 443"
"access-list 100 permit tcp 192.168.1.0 0.0.0.255 any eq 22"
"access-list 100 deny ip any any log"
)
# 生成配置命令
{
echo "configure terminal"
for RULE in "${RULES[@]}"
do
echo "$RULE"
done
echo "interface GigabitEthernet0/1"
echo "ip access-group 100 in"
echo "end"
echo "write memory"
} | sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no $USER@$DEVICE
高级功能脚本
带备份和回滚功能
#!/bin/bash
# 带备份功能的防火墙规则批量添加脚本
BACKUP_DIR="/tmp/firewall_backup_$(date +%Y%m%d_%H%M%S)"
mkdir -p $BACKUP_DIR
# 备份当前规则
echo "备份当前规则..."
iptables-save > "$BACKUP_DIR/rules.backup"
# 添加新规则
echo "添加新规则..."
RULES=("$@")
SUCCESS=0
FAILED=0
for RULE in "${RULES[@]}"
do
if iptables $RULE; then
echo "✓ 成功: $RULE"
((SUCCESS++))
else
echo "✗ 失败: $RULE"
((FAILED++))
echo "错误规则: $RULE" >> "$BACKUP_DIR/failed_rules.log"
fi
done
# 提示回滚方法
echo "===================="
echo "规则添加完成"
echo "成功: $SUCCESS, 失败: $FAILED"
echo "备份位置: $BACKUP_DIR/rules.backup"
echo "回滚命令: iptables-restore < $BACKUP_DIR/rules.backup"
使用配置文件
# rules.yaml 配置文件示例
rules:
- action: "ACCEPT"
protocol: "tcp"
port: 80
comment: "HTTP"
- action: "ACCEPT"
protocol: "tcp"
port: 443
comment: "HTTPS"
- action: "ACCEPT"
protocol: "tcp"
port: 22
source: "192.168.1.0/24"
comment: "内部SSH"
- action: "DROP"
protocol: "tcp"
port: 3306
source: "0.0.0.0/0"
comment: "阻止外部Mysql"
#!/bin/bash
# 读取YAML配置添加规则 (需要yq工具)
RULES_FILE="rules.yaml"
# 解析YAML并添加规则
yq e '.rules[]' $RULES_FILE | while IFS= read -r RULE
do
# 构建iptables命令
CMD="iptables -A INPUT"
ACTION=$(yq e ".rules[] | select(.comment==\"$RULE.comment\") | .action" $RULES_FILE)
PROTO=$(yq e ".rules[] | select(.comment==\"$RULE.comment\") | .protocol" $RULES_FILE)
PORT=$(yq e ".rules[] | select(.comment==\"$RULE.comment\") | .port" $RULES_FILE)
SOURCE=$(yq e ".rules[] | select(.comment==\"$RULE.comment\") | .source" $RULES_FILE)
CMD="$CMD -p $PROTO --dport $PORT"
[ -n "$SOURCE" ] && CMD="$CMD -s $SOURCE"
CMD="$CMD -j $ACTION"
echo "执行: $CMD"
eval $CMD
done
使用建议
- 测试环境先测试:在测试环境验证脚本
- 备份当前规则:添加前备份现有规则
- 逐步添加:不要一次性添加太多规则
- 错误处理:添加错误恢复机制
- 日志记录:记录添加的规则和执行结果
- 权限控制:使用适当的用户权限执行
根据你的具体需求选择合适的脚本模板,并调整相应的规则内容。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播