目录
防火墙
安全技术
划分方式
iptables
构成
四表
优先级
五链
iptables的规则
匹配顺序
iptables的命令格式
管理选项
匹配条件
控制类型
隐藏扩展模块
注意事项
隔离功能,一般部署在网络边缘或者主机边缘,在工作中防火墙的主要作用决定哪些数据可以被外网访问以及哪些数据可以进入内网访问
软件防火墙:360 卡巴斯基 金山毒霸 iptables firewalld
硬件防火墙:路由器 交换机 三层交换机
防水墙:waterwall 防止信息泄漏
1、入侵检测系统:检测数威胁,病查,木马,不会阻断网络访问,事后提供报警和监督。类似于监控。看着你,但是不干预。出了事以后再来找你。
2、入侵防御系统]一旦检测出威胁,会立即予以阻断,主动的方式保护网络安全。透明模式模式工作的。一般都是用在线部罢的方式(所有数据进出的必经之路。)
现在市面上大部分的防火墙都是上述二者的结合体。
1.保护范围
主机防火墙
服务范围就是当前自己的主机
网络防火墙
必经之路
2.实现方式
硬件防火墙
既有专业的硬件来实现防火墙功能,又有软件来进行配合
软件防火墙
依靠代码实现判断
3.网络协议
网络层
包过滤防火墙
应用层(代理服务器)
设置数据的进出
linux防火墙
firewalld centos7专门自带的
iptables 包过滤防火墙
selinux 自带的安全工具
集成在一个内核中:netfilter组件
包过滤防火墙,工作在网络层,针对数据包进行过滤和限制
iptables属于用户态,netfilter属于内核态
过滤数据包: ip地址、端口、协议都可以在iptables中进行配置,可以限制,也可以放行
iptables的构成和工作机制
iptables的组成部分
四表五链组成(selinux也是一个表,不在讨论范围中)
raw
连接跟踪机制,可以加快封包穿过防火墙的速度,数据包跟踪
mangle
数据标记
nat
地址转换表
filter
过滤规则表,可以根据规则来定义或者过滤符合条件的数据包,默认表
security----raw>---->mangle---->nat---->filter
INPUT
处理数据包进入本机的规则
OUTPUT
处理数据包发出的规则,一般不做处理
PREROUTING
处理数据包进入的规则 结合地址转换使用
POSTROUTING
处理数据包离开本机之后的规则 结合地址转换使用
FORWARD
处理数据转发规则
表里面有链,链里面有规则,规则就是自定义的对于数据包的控制命令
1.根据表的优先级匹配,在表中从上到下进行检查,找到匹配规则后立即停止,不再向下继续查找,如果匹配不到规则就按照链的默认规则进行处理
2.报文流向
流入本机
prerouting---->INPUT---->用户进程(httpd服务)
流出本机
httpd---->响应---->OUTPUT---->postrouting---->用户
转发
数据包进来,肯定不是同一网段,路由转发---->forward---->数据包出去,不允许转发,数据包直接丢弃。
yum -y install iptables iptables-services
iptabless [ -t 表名 ](不指定默认就是filter表) 管理选项 [链名][匹配条件][-j 控制类型]
-A 在链的末尾追加一条,添加
-I 在链中插入一条新的规则,可以指定序号。后面跟上的数字,表示序号
-P 修改默认链的策略
-D 删除
-R 修改、替换规则
-L 查看链中的规则 vnL一起使用
-v 显示详细信息
-n 把规则以数字形式进行展示
-F 清空链中的所有规则,慎用
-p 指定匹配数据包的协议类型
-s 指定匹配数据包的源ip地址
-d 指定匹配数据包的目的ip地址
-i 指定数据包进入本机的网络接口
-o 指定数据包离开本机的网络接口
--sport 指定源端口号
--dport 指定目的端口号
ACCEPT 允许数据包通过
DROP 拒绝,直接丢弃数据包,不给出任何回应信息
REJECT 拒绝,会给响应信息
SNAT 修改数据包的源ip地址
DNAT 修改数据包得目的ip地址
例
iptables -t filter -A INPUT -p icmp -j REJECT
iptables -vnL --line-number 显示序号
通用匹配
网络协议 端口 ip地址
-m可以用明确的形式指出类型:多端口、mac地址、ip地址、数据包的的状态。
-m multiport 指定多端口,端口号用逗号隔开
-m multiport --dport
-m multiport --sport
IP范围
-m iprange --src-range 源ip地的范围
-m iprange --dst-range 目的地范围
mac地址
-m mac --mac-source
-p 指定协议时,tcp udp 指明了是什么协议,就不需要再用 -m指明扩展模块
指定多端口可以用冒号也可用-m隐藏模块实现
1.写在命令行当中的都是临时配置
2.把规则配置在服务的文件当中形成永久生效
iptables-save > /opt/test.bak 导出配置
iptables-restore < /opt/test.bak 导入配置
/etc/sysconfig/iptables 默认配置文件
导入配置也是临时设置,永久生效要写入配置文件当中
IP地址,且写在协议,端口写在协议后
指定多个IP地址用逗号隔开
多个端口用冒号隔开,小的端口号在前,大的端口号在后
修改规则一般不用
在生产中,iptables所有的链的默认规则都是DROP
iptables -N custom
没有指定表,就默认在filter表中添加一个自定义链
2.怎么给自定义链改名
iptables -E custom aaaa custom为原链名,aaaa为新链名
3.iptables -I INPUT -p icmp -j aaaa 创建在自定义链当中的规则需要添加到默认链中才能使用
自定义链的规则被,默认链使用,要现在默认链当中删除,再把自定义链当中的规则删除,最后才能把自定义链删除
iptables -X aaaa
SNAT和DNAT
SNAT 源地址转换
DNAT 目的地址转换
内网到外网使用源地址转换,反之用目地地址转换
/etc/sysctl.conf
修改配置,可以修改内核参数,永久生效
例:
iptables -t nat -A PREROUTING - d 11.0.0.11 - i ens36 -p tcp -dport 80 - j DNAT --to 192.168.233.10:80
所有外部来的访问IP地址都变成11.0.0.11来访问内网,目标端口为80,协议是tcp协议的流量转发到192.168.233.10:80的端口
外部客户端可以通过11.0.0.11:80来访问内部服务器192.168.233.10:80的http服务