linux iptables 防火墙修复漏洞案例

linux iptables 防火墙修复漏洞案例

hadoop漏洞修复

项目上hadoop集群用了3台服务器,最近好多端口都被扫描出来,说未授权访问,现在能想到的最简单的方法就是添加防火墙

规则分析

注意,如果运行了docker,就不要用centos7自带的firewalld了,否则会和docker启动的iptables冲突,导致docker出现问题,只能关闭firewalld后,systemctl restart docker 重启docker重置iptables规则

服务器上跑了docker,执行iptables -L发现有一些docker启动得到规则了,执行systemctl status iptables 却发现iptables并未启动,为什么呢?因为iptables 本质上是 Linux 内核自带的防火墙机制(通过内核模块实现),只要内核启用了 netfilter 框架,iptables 规则就可以被创建和生效,与 iptables.service 这个系统服务是否存在无关。

也就是说,systemctl status iptables 是我们安装了iptables.services这个模块来帮我们与iptables交互,实际上还是内核模块来实现的

添加规则

iptables-restore.service 是一个自定义服务器的命令,可以指定防火墙规则加载

# 备份之前的规则
sudo iptables-save > /etc/iptables_backup_$(date +%F).rules

# 允许已建立的连接(避免清理后断开当前 SSH 连接)
sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# 允许本地回环(集群内部进程通信可能依赖)
sudo iptables -A INPUT -i lo -j ACCEPT
# 清空 INPUT 链其他规则(如果需要)
sudo iptables -F INPUT

# 定义集群 IP 列表(方便后续维护)
CLUSTER_IPS="10.212.3.89 10.212.3.90 10.212.3.91"
# 定义需要限制的端口列表
PORTS="50070 8480 8088 8080 10000"

# 循环添加规则:允许集群内 IP 访问目标端口
for ip in $CLUSTER_IPS; do
  for port in $PORTS; do
    # 插入到 INPUT 链开头,优先匹配
    sudo iptables -I INPUT -p tcp --dport $port -s $ip -j ACCEPT
  done
done

# 拒绝所有其他 IP 访问这些端口(放在允许规则之后)
for port in $PORTS; do
  sudo iptables -A INPUT -p tcp --dport $port -j DROP
done

添加完规则后验证下

# 查看 INPUT 链中目标端口的规则
sudo iptables -L INPUT --line-numbers | grep -E "50070|8480|8088|8080|10000"

规则持久化

# 1. 保存当前规则到文件
sudo iptables-save > /etc/iptables_hadoop.rules

# 2. 创建自定义 systemd 服务
sudo tee /etc/systemd/system/iptables-hadoop.service <<EOF
[Unit]
Description=Restore Hadoop iptables rules
After=network.target

[Service]
Type=oneshot
ExecStart=/sbin/iptables-restore /etc/iptables_hadoop.rules

[Install]
WantedBy=multi-user.target
EOF

# 3. 启用并启动服务
sudo systemctl enable --now iptables-hadoop.service

node exporter metrics未授权漏洞处理

规则添加

#备份原先的
iptables-save > /etc/iptables_backup_$(date +%F).rules
# 允许已建立的连接(避免清理后断开当前 SSH 连接)
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#允许 10.212.1.47 访问 exporter 端口
iptables -A INPUT -p tcp --dport 19100 -s 10.212.1.47 -j ACCEPT
#拒接其他Ip
iptables -A INPUT -p tcp --dport 19100 -j DROP

规则持久化

# 1. 保存当前规则到文件
iptables-save > /etc/iptables_exporter.rules

# 2. 创建自定义 systemd 服务
tee /etc/systemd/system/iptables-exporter.service <<EOF
[Unit]
Description=Restore exporter iptables rules
After=network.target

[Service]
Type=oneshot
ExecStart=/sbin/iptables-restore /etc/iptables_exporter.rules

[Install]
WantedBy=multi-user.target
EOF

# 3. 启用并启动服务
sudo systemctl enable --now iptables-exporter.service
posted @ 2025-10-10 11:06  liwenchao1995  阅读(8)  评论(0)    收藏  举报