Linux 下 iptables 防火墙配置

目录

 

  1. iptables 命令及参数介绍
  2. 配置 Filter 表防火墙
  3. 配置 NAT 表防火墙

 

1. iptables 命令及参数介绍

 

iptables 常用命令:

 

  • iptables -A 将一个规则添加到链末尾
  • iptables -D 将指定的链中删除规则
  • iptables -F 将指定的链中删除所有规则
  • iptables -I 将在指定链的指定编号位置插入一个规则
  • iptables -L 列出指定链中所有规则
  • iptables -t nat -L 列出所有 NAT 链中所有规则
  • iptables -N 建立用户定义链
  • iptables -X 删除用户定义链
  • iptables -P 修改链的默认设置,如将 iptables -P INPUT DROP (将 INPUT 链设置为 DROP)

 

常见设置参数介绍:

 

  • --dport 指定目标 TCP/IP 端口 如 –dport 80
  • --sport 指定源 TCP/IP 端口 如 –sport 80
  • -p tcp 指定协议为 tcp
  • -p icmp 指定协议为 ICMP
  • -p udp 指定协议为 UDP
  • -j DROP 拒绝
  • -j ACCEPT 允许
  • -j REJECT 拒绝并向发出消息的计算机发一个消息
  • -j LOG 在 / var/log/messages 中登记分组匹配的记录
  • -m mac –mac 绑定 MAC 地址
  • -m limit –limit 1/s 1/m 设置时间策列
  • -s 10.10.0.0 或 10.10.0.0/16 指定源地址或地址段
  • -d 10.10.0.0 或 10.10.0.0/16 指定目标地址或地址段
  • -s ! 10.10.0.0 指定源地址以外的

 

iptables 配置文件

 

配置文件位置: /etc/sysconfig/iptables

 

iptables 服务命令

 

-- 启动服务
# /etc/init.d/iptables start 
# service iptables start

-- 停止服务
# /etc/init.d/iptables stop
# service iptables stop

-- 重启服务
# /etc/init.d/iptables restart
# service iptables restart

-- 保存设置
# /etc/init.d/iptables save
# service iptables save

 

2. 配置 Filter 表防火墙

 

  1. 查看 iptables 的配置信息

 

# iptables -L -n

 

  1. 清除原有防火墙规则

 

  • 清除预设表 filter 中的所有规则链的规则

 

# iptables -F 

 

  • 清除预设表 filter 中使用者自定链中的规则

 

# iptables -X

 

  • 保存防火墙设置

 

# /etc/init.d/iptables save
或
# service iptables save

 

  1. 设定预设规则

 

-- 请求接入包丢弃
[root@home ~]# iptables -p INPUT DROP
-- 接受响应数据包
[root@home ~]# iptables -p OUTPUT ACCEPT
-- 转发数据包丢弃 
[root@home ~]# iptables -p FORWARD DROP

 

  1. 添加防火墙规则

 

首先添加 INPUT 链, INPUT 链的默认规则是 DROP, 所以我们就写需要 ACCETP(通过) 的链。

 

  • 开启 SSH 服务端口

 

[root@tp ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@tp ~]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT 

 

注: 如果在预设设置把 OUTPUT 设置成 DROP 策略的话,就需要设置 OUTPUT 规则,否则无法进行 SSH 连接。

 

  • 开启 Web 服务端口

 

[root@tp ~]# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT

 

  • 开启邮件服务的 25、110 端口

 

[root@tp ~]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT

 

  • 开启 FTP 服务的 21 端口

 

[root@tp ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT

 

  • 开启 DNS 服务的 53 端口

 

[root@tp ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT

 

  • 设置 icmp 服务

 

[root@tp ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)
[root@tp ~]# iptables -A INPUT -p icmp -j ACCEPT    (INPUT设置成DROP的话)

 

  • 允许 loopback

 

不然会导致 DNS 无法正常关闭等问题

 

[root@tp ~]# IPTABLES -A INPUT -i lo -p all -j ACCEPT 
(如果是INPUT DROP)
[root@tp ~]# IPTABLES -A OUTPUT -o lo -p all -j ACCEPT
(如果是OUTPUT DROP)

 

  • 减少不安全的端口连接

 

[root@tp ~]# iptables -A OUTPUT -p tcp --sport 31337 -j DROP
[root@tp ~]# iptables -A OUTPUT -p tcp --dport 31337 -j DROP

 

说明:有些特洛伊木马会扫描端口 31337 到 31340(即黑客语言中的 elite 端口) 上的服务。既然合法服务都不使用这些非标准端口来通信, 阻塞这些端口能够有效地减少你的网络上可能被感染的机器和它们的远程主服务器进行独立通信的机会。此外,其他端口也一样, 像: 31335、27444、27665、20034 NetBus、9704、137-139(smb),2049(NFS) 端口也应被禁止。

 

  • 只允许某台主机或某个网段进行 SSH 连接

 

只允许 192.168.0.3 的机器进行 SSH 连接

 

[root@tp ~]# iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT

 

如果允许或限制一段 IP 地址可用192.168.0.0/24表示 192.168.0.1-255 端的所有 IP, 24 表示子网掩码数。

 

[root@tp ~]# iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT

 

注意:指定某个主机或者某个网段进行 SSH 连接,需要在 iptables 配置文件中的-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
删除,因为它表示所有地址都可以登陆.

 

如果只允许除了 192.168.0.3 的主机外都能进行 SSH 连接

 

[root@tp ~]# iptables -A INPUT -s ! 192.168.0.3 -p tcp --dport 22 -j ACCEPT

 

  • 开启转发功能

 

在做 NAT 网络配置时, FORWARD 默认规则是 DROP 时, 必须开启数据包转发功能

 

[root@tp ~]# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@tp ~]# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT

 

  • 丢弃坏的 TCP 包

 

[root@tp ~]#iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP

 

  • 处理 IP 碎片数量,防止 DDOS 攻击,允许每秒 100 个

 

[root@tp ~]#iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT

 

  • 设置 ICMP 包过滤, 允许每秒 1 个包, 限制触发条件是 10 个包

 

[root@tp ~]#iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT

 

  • DROP 非法连接

 

[root@tp ~]# iptables -A INPUT   -m state --state INVALID -j DROP
[root@tp ~]# iptables -A OUTPUT  -m state --state INVALID -j DROP
[root@tp ~]# iptables -A FORWARD -m state --state INVALID -j DROP

 

  • 允许所有已经建立的和相关的连接

 

[root@tp ~]# iptables-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@tp ~]# iptables-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@tp ~]# /etc/rc.d/init.d/iptables save

 

3. 配置 NAT 表防火墙

 

  1. 查看本机关于 NAT 的设置情况

 

[root@tp rc.d]# iptables -t nat -L

 

  1. 清除 NAT 规则

 

[root@tp ~]# iptables -F -t nat
[root@tp ~]# iptables -X -t nat
[root@tp ~]# iptables -Z -t nat

 

  1. 添加规则

 

添加基本的 NAT 地址转换,添加规则时,我们只添加 DROP 链,因为默认链全是 ACCEPT。

 

  • 防止外网用内网 IP 欺骗

 

[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP

 

  • 禁止与 211.101.46.253 的所有连接

 

[root@tp ~]# iptables -t nat -A PREROUTING -d 211.101.46.253 -j DROP

 

  • 禁用 FTP(21) 端口

 

[root@tp ~]# iptables -t nat -A PREROUTING -p tcp --dport 21 -j DROP

 

只禁用 211.101.46.253 地址的 FTP 连接, 其他连接可以进行。

 

[root@tp ~]# iptables -t nat -A PREROUTING -p tcp --dport 21 -d 211.101.46.253 -j DROP
posted @ 2022-04-03 23:43  游走De提莫  阅读(1944)  评论(0编辑  收藏  举报