iptables 配置

目录

1. 基本概念
2. 配置步骤
3. 管理
4. 配置文件

1. 基本概念

  • 五个基本规则链条:
    1. PREROUTING(路由前)
    2. INPUT(数据包流入口)
    3. FORWARD(转发关卡)
    4. OUTPUT(数据包出口)
    5. POSTOUTING(路由后)
    
  • 规则表
    1. raw 表:    是否跟踪              OUTPUT,PREROUTING
    2. mangle 表: 修改报文原数据         PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
    3. nat 表:    定义地址转换           PREROUTING,OUTPUT,POSTROUTING
    4. filter 表: 定义允许或者不允许      INPUT,FORWARD,OUTPUT
    
  • iptables 命令中常见的控制类型:
    1. ACCEPT:   允许通过
    2. LOG:      记录日志信息,然后传给下一条规则继续匹配
    3. REJECT:   拒绝通过,必要时会给出提示
    4. DROP:     直接丢弃,不给出任何回应
    
  • iptables 命令:
    # iptables [-t table] command match -j target
    
  • iptables 的基本参数:
     参数            作用
    command
      -P            设置默认策略: iptables -P INPUT (DROP|ACCEPT)
      -F            清空规则链
      -L            查看规则链
      -A            在规则链的末尾加入新规则
      -D num        删除某一条规则
    match
      -s            匹配来源地址 IP/MASK,加叹号"!"表示除这个 IP 外。
      -d            匹配目标地址
      -i 网卡名称    匹配从这块网卡流入的数据
      -o 网卡名称    匹配从这块网卡流出的数据
      -p            匹配协议,如 tcp,udp,icmp
      --dport num   匹配目标端口号
      --sport num   匹配来源端口号
    

返回目录

2. 配置步骤

1. 关闭 firewall
  # systemctl stop firewalld.service       ## 停止 firewall
  # systemctl disable firewalld.service    ## 禁止 firewall 开机启动
  # systemctl mask --now firewalld         ## 在不完全卸载的情况下,彻底禁用,可防止自启动
  # systemctl list-unit-files | grep mask  ## 查看被 mask 的服务

2. 安装 iptables 防火墙
  # yum install iptables-services          ## 安装

filter 表:

3. 清空已有规则
  # iptables -F
  # iptables -X
  # iptables -Z

4. 设置默认访问规则
  # iptables -P INPUT DROP                 ## 默认为丢弃
  # iptables -P FORWARD DROP               ## 默认为丢弃
  # iptables -P OUTPUT ACCEPT              ## 默认为通过

5. 配置允许 SSH 登录端口进入
  # iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  # iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

6. 允许所有的 ping 操作
  # iptables -A INPUT -p icmp -j ACCEPT
  # iptables -A OUTPUT -p icmp -j ACCEPT

7. 允许本机 IO 通信
  # iptables -A INPUT -i lo -p all -j ACCEPT
  # iptables -A OUTPUT -o lo -p all -j ACCEPT

8. 开放特定的端口
  # iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  # iptables -A INPUT -p tcp --dport 443 -j ACCEPT    

9. 开启转发功能
  # iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
  # iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT

10. 丢弃坏的 TCP 包
  # iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP

11. 处理 IP 碎片数量,防止攻击,允许每秒100个
  # iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT

12. 设置 ICMP 包过滤,允许每秒1个包,限制触发条件是10个包
  # iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT

nat 表:

13. 清空nat表
  # iptables -F -t nat
  # iptables -X -t nat
  # iptables -Z -t nat

14. 添加规则
  。。。

15. 允许所有已经建立的和相关的连接(必须配置否则 httpd 无法连接)
  # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  # iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

16. drop 非法连接
  # iptables -A INPUT -m state --state INVALID -j DROP
  # iptables -A OUTPUT -m state --state INVALID -j DROP
  # iptables -A FORWARD -m state --state INVALID -j DROP

17. 保存配置
  # service iptables save    (# /etc/rc.d/init.d/iptables save)
  # systemctl reload iptables	        ## 重新加载配置

18. 重启
  # systemctl restart iptables

19. 设置开机自启动
  # systemctl enable iptables

返回目录

3. 管理

1. 查看本机 iptables 配置情况
  # iptables -L -n     	                ## 查看本机 iptables 设置情况
  # iptables -L INPUT	                ## 查看 filter 表中 INPUT 链的规则
  # iptables -D INPT 5 	                ## 删除 filter 表中 INPUT 链的第5条规则

2. 查看本机 nat 配置情况
  # iptables -t nat -L

3. 打开 iptables 配置文件
  # vi /etc/sysconfig/iptables

4. 查看端口监听状态
  # netstat -tulpn | less

返回目录

4. 配置文件

# vi /etc/sysconfig/iptables

 1 # Generated by iptables-save v1.4.21 on Thu Aug  9 09:44:27 2018
 2 *filter
 3 :INPUT DROP [0:0]
 4 :FORWARD DROP [0:0]
 5 :OUTPUT ACCEPT [2071:305437]
 6 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 7 -A INPUT -p icmp -j ACCEPT
 8 -A INPUT -i lo -j ACCEPT
 9 # -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
10 -A INPUT -p tcp -m state --state NEW -m tcp --dport 7777 -j ACCEPT
11 -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
12 -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
17 -A INPUT -p tcp -m state --state New -m tcp --dport 2121 -j ACCEPT
18 -A INPUT -p udp -m state --state NEW -m udp --dport 4444 -j ACCEPT
19 -A INPUT -j REJECT --reject-with icmp-host-prohibited
20 -A INPUT -p icmp -j ACCEPT
21 -A FORWARD -j REJECT --reject-with icmp-host-prohibited
26 -A OUTPUT -p tcp -m tcp --sport 4444 -j DROP

返回目录

参考链接-CentOS7 下 iptables 配置过程

posted @ 2021-09-11 16:12  xiaobo0602  阅读(2732)  评论(0编辑  收藏  举报