iptables防火墙
2021/6/15 7:24:14
本文主要是介绍iptables防火墙,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
- 一、概述
- 二、四表五链
- 一、规则表
- 默认包括4个规则表
- 二、规则链
- 默认包括5种规则链
- 三、数据包过滤的匹配流程
- 一、规则表之间的顺序
- 二、规则链之间的顺序
- 三、规则链内的匹配顺序
- 四、iptables安装
- 五、基本语法
- 格式
- 一、选项
- 二、控制条件
- 三、控制类型
- 四、查看filter表
- 五、防火墙规则的保存
- 五、实操
一、概述
1、防火墙分为两类:硬件防火墙+软件防火墙
Linux的防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制。属于典型的包过滤防火墙。linux系统的防火墙体系基于内核编码实现,具有非常稳定的性能和极高的效率,因此获得广泛的应用。
2、在很多安全技术资料中,netfilter和iptables都用来指linux防火墙,区别如下:
netfilter:指的是linux内核中实现包过滤防火墙的内部结构,不以程序或文件的形式存在,属于“内核态”(真正工作的)又称内核空间的防火墙功能体系。
iptables:指的是用来管理linux防火墙的命令程序,通常位于/sbin/iptables目录下,属于“用户态”(管理的,是一种软件、服务)又称用户空间的防火墙管理体系。
二、四表五链
一、规则表
1、表的作用:容纳各种规则链
2、表的划分依据:防火墙规则的作用相似
默认包括4个规则表
raw表:确定是否对该数据包进行状态跟踪
mangle表:为数据包设置标记
nat表:修改数据包中的源、目标IP地址或端口
filter表:确定是否放行该数据包(过滤)
二、规则链
1、规则的作用:对数据包进行过滤或处理
2、链的作用:容纳各种防火墙规则
3、链的分类依据:处理数据包的不同时机
默认包括5种规则链
INPUT:处理入站数据包
OUTPUT:处理出站数据包
FORWARD:处理转发数据包
POSTROUTING链:在进行路由选择后处理数据包(nat表)
PREROUTING链:在进行路由选择前处理数据包(nat表)
三、数据包过滤的匹配流程
一、规则表之间的顺序
raw→mangle→nat→filter
二、规则链之间的顺序
1、入站: PREROUTING→INPUT
2、出站: OUTPUT→POSTROUTING
3、转发: PREROUTING→FORWARD→POSTROUTING
三、规则链内的匹配顺序
1、按顺序依次检查,匹配即停止(LOG策略例外)
2、若找不到相匹配的规则,则按该链的默认策略(默认策略是放通)处理
四、iptables安装
1、关闭firewalld防火墙
[root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# systemctl disable firewalld.service
2、安装iptables防火墙
[root@localhost ~]# yum -Y install iptables iptables-services
3、设置iptables开机启动
[root@localhost ~]# systemctl start iptables.service [root@localhost ~]# systemctl enable iptables.service
五、基本语法
格式
iptables -t表名 选项 链名 条件 -j控制类型 例:iptables -t filter -I INPUT -p icmp -j REJECT #阻止ping测试 注意事项 1、不指定表名时,默认指filter表 2、不指定链名时,默认指表内的所有链 3、除非设置链的默认策略,否则必须指定匹配条件 4、选项、链名、控制类型使用大写字母,其余均为小写
一、选项
-A 在指定链末尾追加一条 #例:iptables -A INPUT -I 在指定链中插入一条新的,未指定序号默认作为第一条 #例:iptables -I INPUT -P 指定默认规则 #例:iptables -P OUTPUT ACCEPT -D 删除 #例:iptables -t nat -D INPUT -R 修改、替换某--条规则 #例:iptables -R INPUT 1 -j BROP #修改第一个规则 -L 查看 #例:iptables -t nat -L -n 所有字段以数字形式显示( 比如任意ip地址是0.0.0.0而不是anywhere,比如显示协议端口号而不是服务名) #例:iptables -L -n, iptables -nL, iptables -vnL -v 查看时显示更详细信息,常跟-L一起使用 --line-number 规则带编号 #例:iptables -t nat -L -n --line-number /iptables -t nat -L --line- number -F 清除链中所有规则 #例:iptables -F -X 清空自定义链的规则,不影响其他链 #例:iptables -X -Z 清空链的计数:器(匹配到的数据包的大小和总和) #例iptables -Z -S 查看链的所有规则或者某个链的规则/某个具体规则后面跟编号 #例:iptables -t nat -S、 iptables -t nat -S POSTROUTING 1
二、控制条件
-p 指定那个协议 在centos6中: tcp,udp,udplite,icmp,esp,ah,sctp centos7中: tcp,udp,udplite,icmp,icmpv6,esp,ah,sctp,mh 当不适用-p时,默认匹配所有的协议,相当于-p all 例:iptables -A INPUT ! -p icmp -j DROP #仅允许icmp协议访问 -s 指定单个IP地址或多个(多个IP地址用逗号隔开),也可以是网段 网络接口匹配 -i 指定进站网络接口 -o 指定出站网络接口
隐含匹配(端口匹配,icmp匹配) --sport 指定源端口。 --dport 指定目标端口。针对的协议为tcp或udp。多个端口的情况下连续的端口号用':'隔开,也可以用':'指定端口号的范围。不连续的端口号用','隔开。 --icmp 编写icmp类型匹配规则时使用'--icmp-type icmp类型代码'的形式,针对icmp协议。 icmp类型:Echo-Request,代码为8 Echo-Reply,代码为0
显示匹配:这种匹配需要额外的内核模块提供支持,必须手动以‘-m 模块名称’的形式调用相应的模块。可以多端口匹配,ip范围匹配,mac地址匹配,状态匹配。 多端口匹配:‘-m multiport --dports(也可以写dport) 端口列表’‘-m multiport --sports(也可以写sport) 端口列表’ 例:iptables -A INPUT -p tcp -m multiport --dports 25,80,110,143 -j ACCEPT #允许开放25,80,110,143端口,一遍访问邮件和网站服务 IP范围匹配:'-m iprange --src-range 源ip范围''-m iprange --dst-range 目标ip范围' 例:iptables -A INPUT -p icmp -m iprange --src-range 192.168.238.1-192.168.238.100 -j REJECT #拒绝192.168.238.1-192.168.238.100网段的ip访问本机 mac地址匹配:‘-m mac --mac-source MAC地址’ 例:iptables -A INPUT -m mac --mac-source 00:0c:29:52:c0:ae -j DROP #拒绝MAC地址为00:0c:29:52:c0:ae主机访问 状态匹配:编写iptables规则时使用“-m state --state 连接状态(可以写多个用逗号隔开)”的形式 常用的连接状态: NEW:想要新建立联机的封包状态。 ESTABLISHED: 已经联机成功的联机状态。 RELATED:表示这个封包是与我们主机发送出去的封包有关,可能是响应封包或者是联机成功之后的传送封包。 INVALID: 无效的封包,例如数据破损的封包状态。 例:iptables -I INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT #允许响应请求的连接放行
三、控制类型
ACCEPT:允许通过 DROP:直接丢弃,不给出任何回应 REJECT:拒绝通过,必要时会给出提示 LOG:记录日志信息,然后传给下一条规则继续匹配
四、查看filter表
[root@localhost ~]# iptables -vnL #查看filter表中所有规则并显示详情 Chain OUTPUT (policy ACCEPT 2620 packets, 247K bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT udp -- * virbr0 0.0.0.0/0 0.0.0.0/0 udp dpt:68 iptables各字段解读: pkts:对应规则匹配到的报文的个数。 bytes :对应匹配到的报文包的大小总和。 target:规则对应的target,往往表示规则对应的“动作",即规则匹配成功后需要采取的措施。 prot:表示规则对应的协议,是否只针对某些协议应用此规则。 opt:表示规则对应的选项。 in:表示数据包由哪个接口(网卡)流入,我们可以设置通过哪块网卡流入的报文需要匹配当前规则。 out:表示数据包由哪个接口(网卡)流出,我们可以设置通过哪块网卡流出的报文需要匹配当前规则。 source:表示规则对应的源头地址,可以是一个IP,也可以是一个网段。 destination:表示规则对应的目标地址。可以是一个IP,也可以是一个网段。 packages:匹配到的包数量 bytes:匹配到的总字节数
五、防火墙规则的保存
[root@localhost ~]# iptables-save #查看当前规则 /etc/sysconfig/iptables#默认存放路径 [root@localhost ~]# iptables-save > /etc/sysconfig/iptables #保存到默认配置文件下次重启不会丢失 [root@localhost ~]# systemctl stop iptables.service #停止iptables服务会清空所有规则
五、实操
1、本机可以ping通192.168.238.150,但目标机ping不通本机
[ root@localhost ~] # iptables -A INPUT -p icmp --icmp-type echo request -S 192.168.245.211 -j DROP
这篇关于iptables防火墙的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?
- 2024-05-30java excel上传--poi
- 2024-05-30安装笔记本应用商店的pycharm,再安排pandas等模块,说是没有打包工具?
- 2024-05-29java11新特性
- 2024-05-29哪些无用敏捷指标正在破坏敏捷转型?
- 2024-05-29鸿蒙原生应用再新丁!新华社 入局鸿蒙
- 2024-05-29设计模式 之 迭代器模式(Iterator)