十一、Shell脚本:防火墙

一、Linux防火墙基础
●iptables的表、链结构
●数据包控制的匹配流程
二、编写防火墙规则
●基本语法、控制类型
●添加、查看、删除规则
●规则的匹配条件

1.1、Linux包过滤防火墙概述
(1)netfilter
●位于Linux内核中的包过滤功能体系
●称为Linux防火墙的“内核态”
(2)iptables
●位于/sbin/iptables,用来管理防火墙规则的工具
●称为Linux防火墙的“用户态”
—上述2种称呼都可以表示Linux防火墙

1.2、Linux包过滤防火墙概述
包过滤的工作层次
●主要是网络层,针对IP数据包
●体现在对包内的IP地址、端口等信息的处理上
在这里插入图片描述
1.3、iptables的表、链结构
(1)规则链
●规则的作用:对数据包进行过滤或处理
●链的作用:容纳各种防火墙规则
●链的分类依据:处理数据包的不同时机
(2)默认包括5种规则链
●INPUT:处理入站数据包
●OUTPUT:处理出站数据包
●FORWARD:处理转发数据包
●POSTROUTING链:在进行路由选择后处理数据包
●PREROUTING链:在进行路由选择前处理数据包

1.4、iptables的表、链结构
(1)规则表
●表的作用:容纳各种规则链
●表的划分依据:防火墙规则的作用相似
(2)默认包括4个规则表
● raw表:确定是否对该数据包进行状态跟踪
● mangle表:为数据包设置标记
● nat表:修改数据包中的源、目标IP地址或端口
● filter表:确定是否放行该数据包(过滤)

1.5、iptables的表、链结构
(1)默认的表、链结构示意图
在这里插入图片描述
1.6、数据包过滤的匹配流程
规则表之间的顺序
●faw→mangle→nat→filter
规则链之间的顺序
●入站:PREROUTING→INPUT
●出站: OUTPUT→POSTROUTING
●转发:PREROUTING→FORWARD→POSTROUTING
规则链内的匹配顺序
●按顺序依次检查,匹配即停止(LOG策略例外)
●若找不到相匹配的规则,则按该链的默认策略处理(默认规则是放通)

1.7、数据包过滤的匹配流程
(1)匹配流程示意图
在这里插入图片描述
1.8、iptables安装

systemctl stop firewalld.service  关闭firewalld防火墙
systemctl disable firewalld.service  开机禁用防火墙
yum -y install iptables iptables-services  安装iptables防火墙
systemctl start iptables.service  设置iptables开机启动
systemctl enable iptables.service

1.9、iptables的基本语法
(1)语法构成
● iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
(2)注意事项
●不指定表名时,默认指filter表
●不指定链名时,默认指表内的所有链
●除非设置链的默认策略,否则必须指定匹配条件
●选项、链名、控制类型使用大写字母,其余均为小写
(3)数据包的常见控制类型
●ACCEPT:允许通过
●DROP:直接丢弃,不给出任何回应
●REJECT:拒绝通过,必要时会给出提示
● LOG:记录日志信息,然后传给下一条规则继续匹配
(4)选项类型

选项类型
-A  在指定链末尾追加一条       iptables -A INPUT
-I  工在指定链中插入一条新的,未指定序号默认作为第一条    iptables -I INPUT
-P  指定默认规则             iptables -P  OUTPUT ACCEPT
-D  删除                   iptables -t nat -D   INPUT
-R  修改、替换某一条规则      iptables -t nat -R INPUT
-L  查看                     iptables -t nat -L
-n  所有字段以数字形式显示(比如任意ip地址是0.0.0.8而不是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 POSTROUTING1
查看
[root@localhost ~]#  iptables -t filter -L   查看filter表里规则
[root@localhost ~]#  iptables -t filter -S
[root@localhost ~]#  iptables -t filter -S INPUT   查看input链规则
[root@localhost ~]#  iptables -t filter -S INPUT 3   查看input链第三条规则
[root@localhost ~]#  iptables -t filter -L --line-number   查看规则代编号显示
[root@localhost ~]#  iptables -t filter -L -n      以数字形式显示
[root@localhost ~]#  iptables -t filter -L -V      看详情
[root@localhost ~]#  iptables -vnL     数字形式查看详情固定用法
[root@localhost ~]#  iptables -F        清空链中所有规则 
[root@localhost ~]#  iptables -X         清空自定义链的规则,不影响其他链
[root@localhost ~]#  iptables -Z        清空链的计数器(匹配到的数据包的大小和总和)
删除
iptables -A INPUT -J REJECT   链末加入一条规则拒绝通过
iptables -D INPUT -J REJECT   删除reject这一条规则
iptables -D INPUT -J 3        通过编号删除3号这一行
iptables -P INPUT DROP        指定默认规则不加J

修改
iptables -R INPUT 1 -J DROP  修改需要加编号改成DROP
示例禁止某个主机ping自己
iptables -A INPUT -p icmp -s 192.168.245.211 -j DROP    -s后面加源
禁止远程连接自己
iptables -A INPUT -p tcp -s 192.168.245.211 -j DROP
禁止自己连接某个主机
iptables -A OUTPUT -p tcp -d 192.168.245.211 -j DROP   -d后面加目标
禁止源网段访问目标地址
iptables -A FORWARD -p tcp -s 192.168.245.0/24 -d 192.168.245.211 -j DROP   
禁止某个地址从ens33进入
iptables - A INPUT - i ens33 - s 192.168.245.211 - j DROP
只允许icmp协议通过
iptables - A INPUT ! -p icmp - j DROP   !取反的意思
禁止dpt80端口访问
iptables - A INPUT -p tcp --dport 80 - s 192.168.245.211- j DROP

示例自己可用ping某个地址,某个地址禁止ping自己
iptables - A INPUT -p icmp --icmp- type echo request -s 192.168.245.211 - j DROP
(Echo-Request:代码为8Echo-Reply:代码为8
多端口状态
iptables -A INPUT -p tcp -m multiport --dport 80,22,23 -s 192.168.245.211 -j DROP 禁用多个端口
iptables -A INPUT -p tcp -m multiport --dport 2080 -s 192.168.245.211 -j DROP 禁用20-80之间的所有多个端口
多ip状态
iptables -A OUTPUT -p icmp -m iprange --dst- range 192.168.245.2-192.168.245.211 -j DROP
禁止mac地址
iptables -A INPUT -p icmp -m mac --mac- source 00:0c:29:f4:bf:17 -j DROP

状态匹配:
编写iptables规则时使用“-m state --state连接状态”的形式
常用的连接状态:
NEW:想要新建立联机的封包状态
ESTABLISHED:己经联机成功的联机妆态
RELATED:表示这个封包是与我们主机发送出去的封包有关,可能是响应封包或者是联机成功之后的传送封包!这个状态很常被设怎,因法
INVALID:无效的封包,例如数据破损的封包状态

iptables - A INPUT -m state -- state ESTABLISHED,RELATED - j ACCEPT
写进配置文件
iptables- save > /etc/sysconfig/iptablesl

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值