iptables

  • 介绍

    • 用来设置一些防火墙规则
    • netfilter 位于内核,真正干活的
    • iptables 配置工具,利用 netfiletr 工作
  • 参数

    • -j 指定处理动作,如 ACCEPT,REJECT,DROP,REDIRECT 等

      • ACCEPT:直接放行
      • REJECT:拒绝,并返回通知包,可以使用 --reject-with 指定通知
        • ICMP port-unreachable
        • ICMP echo-reply
        • tcp-reset(这个数据包会要求对方关闭联机)
      • DROP:拒绝,直接丢弃包
      • REDIRECT:转发端口,–to-ports 指定端口
        shell iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
    • chain 上 rule 增删改查

      在删除,修改的时候可以使用行号,可以使用 --line-numbers 查看,当然也可以数一数  
      
      • -A 在 chain 上添加 rule
      • -D 删除 chain 上的 rule
      • -F 清空 chain 上的规则
      • -R 修改 chain 上的 rule
      • -I 在 chain 上插入 rule
      • -L 查看 chain 上的规则,不指定 chain,就列出所有 chain 规则
    • chain 增删改查

      • -N 新建 chain
      • -X 删除 chain
      • -P 设置 chain 默认策略,默认为 ACCEPT
      • -E 修改 chain 名称
    • 匹配规则

      • -p 指定协议,如 TCP,UDP,all 表示所有,! TCP 表示除 TCP 之外
      • -i -o 进入,输出的网卡名称
      • -s -d 指定来源 ip ,目标 ip
      • –sport --dport 来源 port,目标 port,用在 -p 之后
      • -m 使用模块规则来匹配,可以使用 owner, mac, multiport 等模块
        • -m mac --mac-source 使用来源 mac 地址来匹配
          shell iptables -A INPUT -m mac --mac-source 00:00:00:00:00:01 -j ACCEPT

        • -m multiport 散列匹配端口

          • -m multiport --source-port 指定多个散列的来源端口
          • -m multiport --destination-port 指定多个散列的目标端口
          • -m multiport --port 指定多个端口,要求来源和目标使用相同端口
            iptables -A INPUT -p tcp -m multiport --source-port 22,53,80,110 -j ACCEPT
            
        • -m owner 匹配特定的用户,组,进程,session 的 id

          • -m owner --uid-owner 匹配用户 ID
          • -m owner --gid-owner 匹配组 ID
          • -m owner --pid-owner 匹配进程 ID
          • -m owner --sid-owner 匹配连接的 session ID
            # 防止 uid=500(root) 的用户输出数据
            iptables -A OUTPUT -m owner --uid-owner 500
            
        • -m state 匹配连接的状态

           有 4 种状态  
          
          • ESTABLISHED:数据包属于某个已经建立的联机
          • INVALID:数据包的联机编号(Session ID)无法辨识或编号不正确
          • NEW:数据包尝试创建新的连接
          • RELATED:数据包是属于某个已经建立的联机,所建立的新联机
    • 输出格式

      • -v 详细输出,包括网卡,bytes 等信息,默认是省略的
      • -n 不进行 DNS,原始输出
      • –line-numbers 输出规则的行号,方便 -I,-D 等操作
  • 例子🌰

    • 查看当前策略

      • -t 指定表,表不能一起查看,只能查看特定的表,默认查看 filter 表
      • -v -n 显示详细信息,不进行 dns,加快速度
        sudo iptables -vL -t nat -n
        sudo iptables -vL -t filter
        
    • 禁止所有端口,不允许外部访问,只允许本地访问

      • sudo iptables -A INPUT -p tcp ! -s localhost -j DROP
        
  • 其他相关命令

    • iptables-restore 从 iptables-save 的文件从回复读取
    • iptables-save 将当前策略序列化,用于存储
    • iptables-apply
  • 一些知识

    • ubuntu 使用 iptables

      • 默认有 iptables
      • 默认没有 iptables 配置文件,使用 iptables-save > /etc/network/iptables.up.rules 创建
      • iptables-apply 使 iptables 规则生效,默认文件就是 /etc/network/iptables.up.rules,可以使用 -w 指定
      • iptables 重启后自动清空,修改配置文件 /etc/network/interfaces 进行配置,使其开机生效
        • 添加配置:pre-up iptables-restore < /etc/network/iptables.up.rules
    • 连接慢,iptables -L 卡顿

      • 原因
        • 禁用全部服务,只允许默写端口,如 443,可能导致收到 sshd 时,会尝试反向解析,但是只能发出,无法收到 DNS 的回复,所以一直尝试
      • 解决
        • 为 iptables 添加 state 规则,允许所有 ESTABLISHED 数据包
          • state ESTABLISHED:只要发送端或接收端只要有一方已经成功建立了连接,那么我们就认为这个状态是 ESTABLISHED
           iptables -A INPUT -p udp -m state --state ESTABLISHED -j ACCEPT
          
    • table,chain 和 rule

      • table

         5 张表(表不能删除新增)  
        
        • nat 用于网络地址转换 NAT
        • filter 默认 ,最常用,一般 rule 都定义在这张表上
        • mangle
        • raw
        • security
      • chain

         默认 5 条链,可以进行修改  
        
        • PREROUTING
        • INPUT
        • FORWARD
        • OUTPUT
        • POSTOUTING
      • rule

        • rule 定义在 chain 上,chain 又在某些 table 上,所以,如果要查看某个 chain 的 rule,必须要指定 chain 所关联的 table 才行,例如 nat chain 上的规则,必须要到表 PREROUTING 才能看到
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cctga

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值