Linux系统使用iptables配置端口白名单

  1. 查看规则列表
sudo iptables -L INPUT -n -v
  1. 提取使用中的端口
# TCP
ss -tuln | awk '/LISTEN/ {print $5}' | cut -d: -f2 | grep -E '^[0-9]+$' | sort -u > /tmp/open_tcp_ports.txt
# UDP
ss -uln | awk '/UNCONN/ {print $5}' | cut -d: -f2 | grep -E '^[0-9]+$' | sort -u > /tmp/open_udp_ports.txt
  1. 校验文件内容
cat /tmp/open_tcp_ports.txt
cat /tmp/open_udp_ports.txt

注意,如果是远程连接,一定要确认文件中有22端口,否则后续操作直接断连!!!

  1. 清空所有原有规则
# 清空过滤表所有规则
sudo iptables -F
# 删除自定义链
sudo iptables -X
# 清空 nat 表
sudo iptables -t nat -F
sudo iptables -t nat -X
  1. 放行本地回环
sudo iptables -A INPUT -i lo -j ACCEPT
  1. 放行已建立的连接
sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  1. 循环放行所有本机监听的 TCP、UDP 端口
# TCP
sudo bash -c 'while read port; do iptables -A INPUT -p tcp --dport "$port" -j ACCEPT; done < /tmp/open_tcp_ports.txt'
# UDP
sudo bash -c 'while read port; do iptables -A INPUT -p udp --dport "$port" -j ACCEPT; done < /tmp/open_udp_ports.txt'
  1. 设置规则
# 入站流量:没有匹配上面放行规则的端口,直接丢弃
sudo iptables -P INPUT DROP
# 转发流量默认丢弃(服务器无路由转发可保持)
sudo iptables -P FORWARD DROP
# 本机出站全部允许(服务器主动访问外网不受限)
sudo iptables -P OUTPUT ACCEPT
  1. 验证
sudo iptables -L INPUT -n --line-numbers
  1. 持久化
service iptables save

其他命令:

# 确认22端口已放行(有输出说明已放行,无输出说明已禁用)
sudo iptables -L INPUT -n | grep 22

# 手动放行22端口
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 清空所有规则,开放全部端口
iptables -F
iptables -P INPUT ACCEPT
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容