iptables防火墙

一、iptables的表,链结构

1.规则表

表的作用:容纳各种规则链
划分依据:按照功能划分

raw :主要用来决定是否对数据进行状态跟踪。其中包含:OUTPUT、PREROUTING。
mangle:对数据包进行标记。包含:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD。
nat:用来修改IP地址和端口号。包含:PREROUTING、POSTROUTING、OUTPUT。
filter:对数据包进行过滤。包含:INPUT、FORWARD、OUTPUT。

规则表的顺序:raw— mangle—nat—filter

2.规则链

规则的作用:对数据包进行过滤
链的作用:容纳各种防火墙规则
链的分类依据:处理数据包不同时机

INPUT:处理入站数据包
OUTPUT:处理出站数据包
FORWARD:处理转发数据包
PREROUTING:在路由前处理数据包
POSTROUTING:在路由后处理数据包

规则链的顺序

(1)入站数据流向
首先PREROUTING进行处理(是否修改数据包地址)
其次进行路由选择(判断数据包去处)
最后目标地址是防火墙本机,有INPUT进行处理(是否允许转发)

(2)转发数据流向
首先被PREROUTING进行处理,由路由进行选择。
其次目标地址是外部地址,传递给FORWARD(允许拦截转发,丢弃)
最后交给POSTROUTING(是否修改数据包地址)

(3)出站数据流向
首先进行路由选择,确定路径
其次由OUTPUT处理
最后经POSTROUTING处理(是否修改数据包)

二、iptables防火墙规则

iptables   [-t  表名]    管理选项    [链名]    [匹配条件]   [ -j  控制类型]

备注:
表名,链名:iptables的表和链,默认式使用filter。
管理选项:插入,增加,删除
匹配条件:要处理的数据包特征
控制类型:允许ACCEPT,拒绝REJECT,丢弃DROP

[root@localhost ~]# iptables -t filter -I INPUT -p icmp -j REJECT

语法解读:在filter表中INPUT链中添加(-I)一个规则,即拒绝(REJECT)ICMP的数据包

常用选项:

  • -A   增加
  • -D   删除
  • -I     插入
  • -R   修改,替换
  • -L   列出
  • -F  清空
  • -P   指定链的默认策略
  • -n   以数字方式显示结果
  • -v    详细信息
  • -line numbers 显示列表顺序号  

1.添加

[root@localhost ~]# iptables -A INPUT -p tcp -j ACCEPT   (在INPUT末尾追加)
[root@localhost ~]# iptables -I INPUT 2 -p icmp -j ACCEPT  (在第二行添加)
[root@localhost ~]# iptables -I INPUT -p udp -j ACCEPT    (默认第一行添加)

2.删除

[root@localhost ~]# iptables -F INPUT  (清空)
[root@localhost ~]# iptables -D INPUT 10  (删除第10条规则)

三、规则匹配条件

匹配条件设置包括三大类:通用匹配,隐含匹配,显示匹配

1.通用匹配

(1)匹配协议

在iptables中使用 “-p” 协议名的形式指定,检查网络数据包使用的协议

[root@localhost ~]# iptables -I INPUT -p tcp -j ACCEPT
(2)地址匹配

使用“-s”源地址或者 “-d”目标地址。

[root@localhost ~]# iptables -A FORWARD -s 192.168.10.102 -j ACCEPT
(接受192.168.10.102的转发)
[root@localhost ~]# iptables -A FORWARD -s 192.168.10.0/24 -j REJECT
(拒绝192.168.10.0网段的转发)
(3)网络接口匹配

使用“-i”(--in-interface)和“-o”(--out-interface)接口的形式

[root@localhost ~]# iptables -A INPUT -i ens-33 -s192.168.10.0/24 -j REJECT
[root@localhost ~]# iptables -A INPUT -i ens-33 -s192.168.10.0/24 -j DROP

 2.隐含匹配

(1)端口匹配

使用 “--sport”源端口和 “--dsport目标端口”,对UDP和TCP检查

[root@localhost ~]# iptables -A FORWARD -s 192.168.10.0/24 -p udp --dport 53 -j REJECT
[root@localhost ~]# iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
 (2)ICMP类型匹配

使用 “--icmp-type”检查数据包,用数字或字符串表示Echo-Request请求,代码为8;Echo-Repy回显代码为0;Destination-Unreachable目标不可达代码为3,

3.显示匹配

以-m模块名称调用

(1)多端口匹配

-m multiport  --sport”源端口和“-m multiport  --dport”目标端口

[root@localhost ~]# iptables -A INPUT -p tcp -m multiport --dport 25,80,110 -j ACCEPT  
(开放25,80,110端口)
(2)IP地址匹配

-m iprange --src-range IP范围”检查源地址,“-m iprange --drc-range  IP 范围”目标地址

[root@localhost ~]# iptables -A FORWARD -p tcp -m iprange --src-range 192.168.10.100-192.168.10.105 -j DROP
(禁止转发192.168.10.100-192.168.10.105数据包)
(3)MAC地址匹配

-m mac --mac-source MAC地址

(4)状态匹配

-m state --state 连接状态”检查数据包连接状态。
常见状态:
NEW(任何连接无关)
ESTABLISHED(已建立连接)
RELATED(已有连接的相关性)
 

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-09 22:12:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-09 22:12:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-09 22:12:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-09 22:12:02       20 阅读

热门阅读

  1. Flutter 常见报错记录

    2024-06-09 22:12:02       13 阅读
  2. 解决更新Android Studio后下载Gradle超时

    2024-06-09 22:12:02       11 阅读
  3. 给自己Linux搞个『回收站』,防止文件误删除

    2024-06-09 22:12:02       12 阅读
  4. 前端通用样式调整方法(整理版)

    2024-06-09 22:12:02       9 阅读
  5. web 前端开发培训:深入探索与实战应用

    2024-06-09 22:12:02       14 阅读
  6. 线程+线程池+锁

    2024-06-09 22:12:02       11 阅读
  7. 多维vector定义

    2024-06-09 22:12:02       10 阅读
  8. 计算各聚类中心

    2024-06-09 22:12:02       8 阅读