安装:

安装:yum install iptables*

  • 关闭防火墙firewalld:systemctl disable —now firewalld
  • 启动:systemctl start iptables (拓展:查看端口 netstat -nutlp)
  • 查看状态是否成功:[root@m01 ~]# systemctl status iptables
  • 查看表的命令:iptables -L -v -n
  • 格式:iptables -t 表名 选项 链名称 条件 动作

iptables安装使用加模块 - 图1

  • 参数常用
    • 1、-t ——————— 指定的表
    • 2、-L ——————— 列出当前规则
    • 3、-v ——————— 显示数据包和数据包大小
    • 4、-n ——————— 不反解 地址(默认反解为anywhere加上n 0.0.0.0/0)
    • 5、-A ——-append——- 追加一条到链中
    • 6、-I ———insert—- 插入一条规则,插入到顶部
    • 7、-Z ——-zero——- 清空计数器()
    • 8、-F ——-flush—— 清除
    • 以下不常用
      • -D ————delete———— 删除链中的规则
      • -R ————replace———- 修改
      • -S ————list-rules ——- 列出所有的规则
      • -N ———- new-chain —- 创建一个自定义的链
      • -X ———- delete-chain - 删除一个自定义链
      • -P ———-policy————- 指定链的默认策略

iptables安装使用加模块 - 图2

iptables动作

  • ACCEPT: 将数据包放行,进行完此动作后,将不再比对其他规则,直接跳往下一个链(放行)
  • REJECT: 阻拦该数据包,并传送数据包通知对方
  • DRO : 丢弃包不予处理,进行此动作后,将不比对其他规则,直接中断过滤程序
  • REDIRECT:将包重新导向另一个端口,进行完此处理动作后,会继续比对其他规则

    iptables匹配

    tcp(http) udp ICMP(ping) ALL “”” 查看端口 netstat -nutlp “””

    -s -d 源地址、目标地址

  • 源地址: 发送请求地址

    • 目标地址: 访问地址

      —spor源端口、—dport目标端口

  • 源端口: 发送请求的端口

    • 目标端口: 访问的端口

      -i 、-o、-m、-j 、动作

  • -i : 进来网卡

    • -o :出去网卡
    • -m :指定模块
    • -j :动作
    • -p :指定协议

      模块

  • 1、#连续匹配多个端口模块(multiport)

    • —dports :指定多个端口,不用端口逗号分隔,连续端口冒号:连接
  • 2、# 指定一段连续ip地址范围(iprange)
    • —src-range from[-to] : 源地址范围
    • —dst-range from[-to] : 目标地址范围
  • 3、# 匹配指定字符串(string)
    • —string pattern #指定要匹配的字符串
    • —alog{bm|kmb} # 匹配查询算法
  • 4、# time 模块(UTC时间)
    • —timestart hh:mm[:ss] # 开始时间
    • —timestop hh:mm[:ss] # 结束时间
    • —monthdays day[,day…] # 指定一个月的某一天
    • —weekdays day[,day…] # 指定周 还是 周天
  • 5、# icmp模块
    • —icmp-type {type[/code]|typename}
    • echo-request (8) # 请求(我可以ping别人,别人休想ping我)
    • echo-reply (0) # 回应(别人可以ping我,我休想ping别人)
  • 6、# connlimit(模块控制并发数)
    • —connlimit-upto n # 如果现有连接数小于或等于 n 则 匹配
    • —connlimit-above n # 如果现有连接数大于n 则匹配
  • 7、# limit(模块针对 报文速率 进行限制。 秒、分钟、小时、天)
    • —limit rate[/second|/minute|/hour|/day] # 报文数量
    • —limit-burst number # 报文数量(默认:5)

      案例:

      1、只允许 22 端口可以访问,其他端口无法访问。

      iptables -t filter -A INPUT -p TCP —dport 22 -j ACCEPT
      iptables -t filter -A INPUT -p TCP -j DROP

      2、只允许22、80、443端口可以访问,其他端口无法访问。

      iptables -t filter -A INPUT -p TCP —dport 22 -j ACCEPT
      iptables -t filter -A INPUT -p TCP —dport 80 -j ACCEPT
      iptables -t filter -A INPUT -p TCP —dport 443 -j ACCEPT
      iptables -t filter -A INPUT -p TCP -j DROP

      3、要求使用192.168.15.81能够通过22端口连接,但是其他不行

      iptables -t filter -A INPUT -p TCP -d 192.168.15.81 —dport 22 -j ACCEPT
      iptables -t filter -A INPUT -p TCP -j DROP

      4、只允许192.168.15.71能够通过22端口连接,其他的不行

      iptables -t filter -A INPUT -p TCP -s 192.168.15.71 -d 192.168.15.81 —dport 22 -j ACCEPT
      iptables -t filter -A INPUt -p TCP -j DROP

      5、要求192.168.15.71对外不可见

      iptables -t filter -A INPUT -p TCP -d 192.168.15.71 -j DROP

      6、 要求使用eth0 网卡的所有请求全部拒绝

      iptables -t filter -A INPUT -p TCP -i etho -j DROP

      7、使用172.16.1.71登陆进来的窗口,不允许访问百度

      iptables -t filter -A INPUT -p TCP eth1 -j DROP

      8、要求访问服务器8080端口转发至80端口

      iptables -t nat -A PREROUTING -p TCP —dport 8080 -j REDIRECT —to-port 80

      9、要求只允许Windows通过ssh连接到192.168.15.81 其他的拒绝

      iptables -t filter -A INPUT -p TCP -s 192.168.15.1 -d 192.168.15.81 —dport 22 -j ACCEPT
      iptables -t filter -A INPUT -p TCP —dport 22 -j DROP

      模块案例

      1、要去将22.80,443 以及30000-50000之间的所有端口向外暴漏,其他端口拒绝

      iptables -t filter -A INPUT -p TCP -m multiport —dports 22,80,443,30000:50000 -j ACCEPT
      iptables -t filter -A INPUT -p TCP -j DROP

      2、要求访问数据包中包含Hellworld 的数据不允许通过

      iptables -t filter -A INPUt -p TCP -m string —string “Hellworld” —alog kmp -j DROP

      3、要求将192.168.15.1-192.168.15.10 之间的所有IP能够连接192.168.15.81,其他拒绝

      iptables -t filter -A INPUT -p TCP -m iprange —src-range 192.168.15.1-192.168.15.10 -j ACCEPT
      iptables -t filter -A INPUT -p TCP -j DROP

      4、要求每天12 到 13 时之间不允许访问

      iptables -t filter -A INPUT -p TCP -m time —timestart 4:00 —timestop 5:00 -j DROP
      (utc时转北京时 减去八 )
      5、要求别人不能 ping本机 ,但是本机可以ping别人
      iptables -t filter -A INPUT -p icmp -m icmp —icmp-type “echo-request” -j DROP
      6、要求主机连接最多两个
      iptables -t filter -A INPUT -p TCP —dport 22 -m connlimit —connlimit-above 2 -j DROP
      7、要求限制速率在500k/s 左右
      iptables -t filter -A INPUt -p TCP -m limit 333/s -j ACCEPT
      iptables -t filter -A INPUT -p TCP -j DROP