资讯专栏INFORMATION COLUMN

iptables-iptables配置

社区管理员 / 178人阅读

Iptables是大多数发型版本中支持的防火墙

iptables是个前端其真正的后端是linux的netfilter框架,一些发行版略有区别,centos8中则使用nftables来代替

在linuxn内核中的五个钩子(hook),iptable中还可以自定义链,自定义只能被默认链引用才能使用

  • INPUT 发送到用户空间的钩子

  • OUTPUT 从用户空间发发出的钩子

  • PREROUTING 路由前的钩子

  • FORWARD 转发的钩子

  • POSTROUTING 路由后的钩子

一些相近功能规则的组

  • filter表:负责过滤功能,内核模块:iptables_filter

  • nat表:网络地址转换功能;内核模块:iptable_nat

  • mangle表:拆解报文,做出修改并重新封装的功能;内核模块:iptable_mangle

  • raw表:关闭nat表上启用的连接追踪机制;iptable_raw

链表关系

image.png

image.png

查看规则

image.png

命令说明
  • -L 列出规则,L后面可也接受指定链

  • -v 可以查看更多的信息

  • -n 不对地址做名称反解 直接显示原来的IP地址

  • -t 执行表名,默认为filter

  • –line-numbers 显示规则序列号,缩写为–line

  • -x 精确数值

返回说明
  • 红色部分:

    • chain:链名,括号里的policy默认策略这里是drop

    • packets:默认策略匹配到的包的数量

    • bytes:当前链默认策略匹配到的所有包的大小总和

  • 绿色部分:

    • bytes:对应匹配到的报文包的大小总和

    • target:规则对应的target,往往表示规则对应的”动作”,即规则匹配成功后需要采取的措施

    • prot:表示规则对应的协议,是否只针对某些协议应用此规则

    • opt:表示规则对应的选项

    • in:表示数据包由哪个接口(网卡)流入

    • out:表示数据包由哪个接口(网卡)流出

    • source:表示规则对应的源头IP或网段

    • destination:表示规则对应的目标IP或网段

  • 黄色部分:规则序列号

查看所有规则

查看所有链所有表的规则

iptables --line-numbers -nvL
查看指定规则

查看指定表,默认链

# iptables --line-numbers -nvL -t <表>iptables --line-numbers -nvL -t nat

查看INPUT链的nat表

# iptables --line-numbers -nvL <链> -t <表># iptables --line-numbers -nv -L <链> -t <表>iptables --line-numbers -nv -L INPUT -t nat

查看INPUT链的nat表的序列号是3的规则

# iptables --line-numbers -nvL <链> 3-t <表># iptables --line-numbers -nv -L <链> 3 -t <表>iptables --line-numbers -nv -L INPUT 3 -t nat

增加规则

iptables是自上而下匹配规则的所以顺序很重要
-A 尾部增加
-I 头部增加 后面加上序列号则是指定序列号位置

尾部增加规则

在 filter表INPUT链中尾部增加一条丢弃从192.168.1.1发送过来数据的规则

# iptables -t <表名> -A <链名> <匹配条件> -j <动作>
iptables -t filter -A INPUT -s 192.168.1.1 -j DROP
头部增加规则

在 filter表INPUT链中头部增加一条丢弃从192.168.1.2发送过来数据的规则

# iptables -t <表名> -I <链名> <匹配条件> -j <动作>iptables -t filter -I INPUT -s 192.168.1.2 -j DROP
指定位置增加规则

在 filter表INPUT链中指定位置增加一条丢弃从192.168.1.3发送过来数据的规则

# iptables -t <表名> -I <链名> <规则序号>  <匹配条件> -j <动作>iptables -t filter -I INPUT  3 -s 192.168.1.2 -j DROP

修改规则

将序列号为2的规则的动作修改为accept

# iptables -t <表名> -R <链名> <规则序号> <原本的匹配条件> -j <动作>iptables -t filter -R INPUT 2 -s 192.168.1.146 -j ACCEPT
修改默认规则

将INPUT链默认策略设置为DROP,注意不要在生产环境执行此规则会断网

# iptables -t <表> -P <链> <动作># iptables  -P <链> <动作> 表可省略iptables -t filter -P INPUT DROP

删除规则

按照规则序号删除规则
# iptables -t <表名> -D <链名> <规则序号>
iptables -t filter -D INPUT 3
按照具体的匹配条件与动作删除规则
# iptables -t <表名> -D <链名> <匹配条件> -j <动作>
iptables -t filter -D INPUT -s 192.168.1.2 -j DROP
删除所有规则

谨慎操作!!!

清除filter表

# iptables -t <表名> -F
iptables -t filter -F

处理动作

处理动作在iptables中被称为target,动作也可以分为基本动作和扩展动作默认动作如下

  • ACCEPT:允许数据包通过

  • DROP:丢弃数据包,客户端会等待

  • REJECT:拒绝数据包通过,客户端会立即发现拒绝

  • SNAT:源地址转换

  • DNAT:目标地址转换

  • MASQUERADE:是SNAT的一种特殊形式,适用于动态的、临时会变的ip上

  • REDIRECT:在本机做端口映射

  • LOG:在/var/log/messages文件中记录日志信息,然后传给下一条

日志

日志模块一般用于调试

# 开启日志iptables -A INPUT -j LOG# 设置日志级别iptables -A INPUT -s 192.168.1.0/24 -j LOG --log-level 7# 在日志加上前缀iptables -A INPUT -s 192.168.1.0/24 -j LOG --log-prefix "iptables log: "

条件匹配

如果有多个规则,则规则之间是关系

源地址匹配

-s 用于匹配报文的源地址,可以同时指定多个源地址,每个IP之间用逗号隔开,也可以指定为一个网段。

# 丢弃从192.168.1.1和192.168.1.2发送过来的数据iptables -t filter -I INPUT -s 192.168.1.1,192.168.1.2 -j DROP# 允许从192.168.1.0/24发送过来的数据iptables -t filter -I INPUT -s 192.168.1.0/24 -j ACCEPT# 允许除了192.168.1.0/24发送过来的数据iptables -t filter -I INPUT ! -s 192.168.1.0/24 -j ACCEPT
目的地址匹配

-d 用于匹配报文的目标地址,和源地址匹配一样可以同时指定多个目标地址,每个IP之间用逗号隔开,也可以指定为一个网段。

# 丢弃发送到192.168.1.1和192.168.1.2的数据iptables -t filter -I OUTPUT -s 192.168.1.1,192.168.1.2 -j DROP# 允许发送数据到192.168.1.0/24iptables -t filter -I INPUT -s 192.168.1.0/24 -j ACCEPT# 允许发送除了192.168.1.0/24数据iptables -t filter -I INPUT ! -s 192.168.1.0/24 -j ACCEPT
端口匹配

-p 匹配报文的协议类型,可以匹配的协议类型tcp、udp、icmp等

# 允许发送数据到192.168.1.1的tcp协议iptables -t filter -I INPUT -p tcp -s 192.168.1.1 -j ACCEPT# 允许发送数据到192.168.1.1的udp协议iptables -t filter -I INPUT ! -p udp -s 192.168.1.1 -j ACCEPT
网卡流入匹配

-i 匹配报文是从哪个网卡接口流入本机的,由于匹配条件只是用于匹配报文流入的网卡,所以在OUTPUT链与POSTROUTING链中不能使用此选项。

#iptables -t filter -I INPUT -p icmp -i enp0s3 -j DROP#iptables -t filter -I INPUT -p icmp ! -i enp0s3 -j DROP
网卡流出匹配

-o 匹配报文将要从哪个网卡接口流出本机,于匹配条件只是用于匹配报文流出的网卡,所以在INPUT链与PREROUTING链中不能使用此选项。

# 丢弃从enp0s3网卡流出的icmp协议iptables -t filter -I OUTPUT -p icmp -o enp0s3 -j DROP# 丢弃除enp0s3网卡流出的icmp协议iptables -t filter -I OUTPUT -p icmp ! -o enp0s3 -j DROP

自定义链

在规则比较多时方便管理规则,自定义链需要被默认链引用才能生效

创建自定义链

创建一个filter表名字叫TEST的链

# iptables -t <表> -N <链名>iptables -t filter -N TEST
引用自定义链

引用的时候只需要将动作使用自定义链名
在默认链INPUT中插入一条目标端口是80协议是tcp动作是自定义链TEST的规则

iptables -t filter -I INPUT -p tcp --dport 80 -j TEST
重命名自定义链

将TEST自定义链改为TEST2

# iptables -E <原自定义链名> <目标自定义链名>iptables -E TEST TEST2
删除自定义链

删除TEST2的自定义链名

# iptables -X <自定义链名>iptables -X TEST2

扩展模块

iptables支持使用扩展模块来进行功能的扩展

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/127880.html

相关文章

  • 如何在阿里云上安全的存放您的配置

    ...露问题,那么您可能需要看下这篇文档,了解如何可以从配置着手来改善下您目前的情况。 您是否在您的应用部署环境里遇到过以下情节 将敏感信息(如数据库连接串,含密码,下同)存放到生产环境的服务器上的配置文件里。将敏...

    cucumber 评论0 收藏0
  • XXL-CONF v1.5.0 发布,分布式配置中心

    v1.5.0 新特性 1、配置中心Agent服务增强:针对非Java应用提供Agent服务获取配置,提供同步、异步两种Http请求方式,原生支持 long-polling(Http) 的方式获取配置数据、并实时感知配置变更。同时,强化请求权限校验; 2、配置...

    flybywind 评论0 收藏0
  • XXL-CONF v1.5.0 发布,分布式配置中心

    v1.5.0 新特性 1、配置中心Agent服务增强:针对非Java应用提供Agent服务获取配置,提供同步、异步两种Http请求方式,原生支持 long-polling(Http) 的方式获取配置数据、并实时感知配置变更。同时,强化请求权限校验; 2、配置...

    idisfkj 评论0 收藏0
  • XXL-CONF v1.5.2 发布,分布式配置管理平台

    Release Notes 1、ZK节点watch逻辑优化,配置中心取消冗余的watch操作; 2、ZK初始化时unlock逻辑调整,优化断线重连特性; 3、Client端ZK初始化逻辑调整,取消对ZK状态的强依赖,连接失败也允许启动,此时使用镜像配置文件; 4、...

    xiaokai 评论0 收藏0
  • 计算机网络(HCIP、HCIE)系列文章大合集

    ...学习ARP表项吗? DHCP系列 DHCP技术原理详解 DHCP中继原理和配置(含常见配置配置误区)(配置实例) PPPoE系类 一文看懂PPP协议——PPP协议简介 一文看懂PPPoE协议——PPPoE协议简介 PPPOE配置实例(配置实例) 二、HCIP难度 STP系列 ST...

    gitmilk 评论0 收藏0

发表评论

0条评论

社区管理员

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<