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
-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
摘要:典型的配置中心产品,包括如上文提到的阿里云早期称为,携程,百度的,或者,等。而最近,作为一款配置中心产品,阿里云应用配置管理简称发布了一项加密配置功能,就旨在让用户更加安全的在配置中心存放配置。这在阿里云的安全体系中,通过的角色授权来实现。 摘要: 如果您现在正开始着手准备解决自己的生产数据泄露问题,那么您可能需要看下这篇文档,了解如何可以从配置着手来改善下您目前的情况。 您是否在您的...
摘要:新特性配置中心服务增强针对非应用提供服务获取配置,提供同步异步两种请求方式,原生支持的方式获取配置数据并实时感知配置变更。现已开放源代码,开箱即用。 v1.5.0 新特性 1、配置中心Agent服务增强:针对非Java应用提供Agent服务获取配置,提供同步、异步两种Http请求方式,原生支持 long-polling(Http) 的方式获取配置数据、并实时感知配置变更。同时,强化请...
摘要:新特性配置中心服务增强针对非应用提供服务获取配置,提供同步异步两种请求方式,原生支持的方式获取配置数据并实时感知配置变更。现已开放源代码,开箱即用。 v1.5.0 新特性 1、配置中心Agent服务增强:针对非Java应用提供Agent服务获取配置,提供同步、异步两种Http请求方式,原生支持 long-polling(Http) 的方式获取配置数据、并实时感知配置变更。同时,强化请...
摘要:节点逻辑优化,配置中心取消冗余的操作初始化时逻辑调整,优化断线重连特性端初始化逻辑调整,取消对状态的强依赖,连接失败也允许启动,此时使用镜像配置文件修复配置监听首次无效的问题,监听前先一次该配置新增无框架接入配置中心示例项目。 Release Notes 1、ZK节点watch逻辑优化,配置中心取消冗余的watch操作; 2、ZK初始化时unlock逻辑调整,优化断线重连特性; 3、...
摘要:近期,我写了很多计算机网络系列文章,适合备考人员查阅,先将各文章整理如下衷心建议您收藏,慢慢查阅一基础入门知识计算机网络基础计算机网络误区源目和源目变化问题计算机网络误区中和原理详解计算机网络误区为什么我的包发不出去计 ...
阅读 1281·2024-02-01 10:43
阅读 368·2024-01-31 14:58
阅读 432·2024-01-31 14:54
阅读 814·2024-01-29 17:11
阅读 2201·2024-01-25 14:55
阅读 1481·2023-06-02 13:36
阅读 2080·2023-05-23 10:26
阅读 469·2023-05-23 10:25