四表五链 | iptables

内容概要

  • 四表五链
  • iptables

四表五链

四表:filter 负责过滤功能
     nat    网络地址转换
     mangle 负责修改数据包内容
     raw    负责数据包跟踪

五链:PREROUTING  主机外报文进入位置
     INPUT       报文进入本机用户空间位置
     OUTPUT      报文从本机用户空间出去的位置
     FORWARD     报文经过路由发觉不是本机决定转发不知道从哪个网卡出去
     POSTROUTING 报文经过路由被转发出去

流入本机:A ---> PREROUTING ---> INPUT ---> B
流出本机:A ---> OUTPUT ---> POSTROUTING ---> B
经过本机:A ---> OUTPUT ---> POSTROUTING | --->    
        PREROUTING ---> FORWARD ---> POSTROUTING -
        --> C ---> PREROUTING ---> INPUT ---> B

filter:INPUT FORWARD OUTPUT
nat:PREROUTING INPUT OUTPUT POSTROUTING
raw:PREROUTING OUTPUT
mangle:PREROUTING INPUT FORWARD OUTPUT 
        POSTROUTING

iptables

格式:iptables -t 表名 选项 链名称 条件 动作
              -t 指定操作的表
              -L 列出当前规则
              -v 显示数据包和大小
              -n 不反解地址
              -A 追加一条规则到链中
              -I 插入一条规则到顶部
              -F 清空
              -Z 清空计数器

              -D 删除链中的规则
              -R 修改
              -S 列出所有的规则
              -N 创建一个自定义链
              -X 删除一个自定义链
              -P 指定链的默认策略

查询本机端口占用命令:netstat -nutlp

iptables动作

1.ACCEPT 将数据包放行,处理完不比对其他规则,跳到下一个规则链
2.REJECT 阻拦数据包,传送数据包通知对方
3.DROP   丢弃包,处理完不比对其他规则,中断过滤程序
4.REDIRECT 将包导入另一个端口,处理完比对其他规则

1.-s 源地址 发送请求的地址
2.-d 目标地址 访问的地址
3.--sport 源端口 发送请求的端口
4.--dport 目标端口 访问的端口

iptables基本条件匹配

1.TCP
2.UDP
3.ICMP
4.ALL

动作

1.-i 进来的网卡
2.-o 出去的网卡
3.-m 指定的模块
4.-j 转发动作
5.-p 指定协议

iptables模块

指定模块:-m
1.连续匹配多个端口multiport--dports 指定多个端口(不同端口之间以逗号分割,连续的端 口使用冒号分割)

2.指定一段连续ip地址范围iprange
  --src-range from[-to]	源地址范围
  --dst-range from[-to]	目标地址范围

3.匹配指定字符串string
  --string pattern 指定要匹配的字符串
  --algo {bm|kmp} 匹配的查询算法

4.根据时间匹配报文time
  --timestart hh:mm[:ss] 开始时间
  --timestop hh:mm[:ss] 结束时间
  --monthdays day[,day...] 指定一个月的某一天
  --weekdays day[,day...] 指定周 还是  周天

5.禁ping,默认本机无法ping别人,别人无法ping自己
  --icmp-type {type[/code]|typename}
    echo-request  (8) 请求 
    echo-reply    (0) 回应

6.限制链接数,并发连接connlimit
   --connlimit-upto n	如果现有连接数小于或等于n  则匹配
   --connlimit-above n 如果现有连接数大于n 则匹配

7.针对 报文速率 进行限制。 秒、分钟、小时、天
  --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.只允许192.168.15.71能够通过22端口链接,其他的不行
iptables -t filter -A INPUT -p TCP -s 192.168.15.71 -d 198.168.15.81 --dport 22 -j ACCEPT
iptables -t filter -A INPUT -p TCP -j DROP

3.要求192.168.15.71对外部不可见
iptables -t filter -A INPUT -p TCP -d 192.168.15.71 -j DROP

4.要求将22,80,443以及30000-50000之间所有的端口向外暴露,其他端口拒绝
iptables -t filter -A INPUT -p TCP -m multiport --dports 22,80,443,30000:50000 -j ACCEPT
iptables -f filter -A INPUT -p TCP -j DROP

5.要求访问数据包中包含HelloWorld的数据不允许通过
iptables -t filter -A INPUT -p TCP -m string --string "HelloWorld" --algo kmp -j DROP

6.7.要求限制速率在500k/s左右
iptables -t filter -A OUTPUT -p -TCP -m limit --limit 300/s -j ACCEPT
iptables -t filter -A OUTPUT -p TCP -j DROP

image

posted @ 2022-01-11 22:04  一览如画  阅读(347)  评论(0)    收藏  举报