防火墙
一、防火墙
防火墙概念
防火墙:防火墙技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术
- 物理分类:硬件防火墙和软件防火墙
- 逻辑分类:网络防火墙和主机防火墙
二、iptables
1、netfilter
在linux系统中是通过iptables来控制位于内核空间的netfilter框架来构成防火墙
在centos7中查看防火墙状态sudo systemctl status firewalld
在centos6中查看防火墙状态service iptables status
如果出错则可能是没有安装rpm -aq iptables
要下载yum install iptables;yum unstall iptables-service
netfilter
- 为包过滤防火墙
- 是防火墙安全框架
- 位于内核空间
- iptables是管理工具
2、iptables 四表五链详述
在数据包进入内核空间时,会通过防火墙,为了保证安全,防火墙上会有各种规则来过滤掉不安全的数据包,而这些用来过滤和检查的称之为链也可以理解为关卡,在关卡上面有很多规则称为表
五个链分别为:
- PREROUTING
- INPUT
- FORWARD
- OUTPUT
- POSTROUTING
四表
表 | 说明 |
---|---|
filter表 | 负责过滤功能,防火墙;内核模块:iptables_filter |
nat表 | network address translation,网络地址转换功能;内核模块:iptable_nat |
mangle表 | 拆解报文,做出修改,并重新封装 的功能;iptable_mangle |
raw表 | 关闭nat表上启用的连接追踪机制;iptable_raw |
3、四表和五链的关系
链 | 表 |
---|---|
PREROUTING | raw表,mangle表,nat表 |
INPUT | mangle表,filter表,(centos7中还有nat表,centos6中没有 |
FORWARD | mangle表,filter表 |
OUTPUT | raw表,mangle表,nat表,filter表 |
POSTROUTING | mangle表,nat表 |
- 在同一个链上的表也有优先级 raw 》mange》nat》filter
三、iptable的用法
1、基本用法
- 常见防火墙操作
设置开机启用防火墙:`systemctl enable firewalld.service`
设置开机禁用防火墙:`systemctl disable firewalld.service`
启动防火墙:`systemctl start firewalld`
关闭防火墙:`systemctl stop firewalld`
重启防火墙:`systemctl restart firewalld`
检查防火墙状态:`systemctl status firewalld`
iptable -nvL 查看规则
iptables -F 清除规则
iptables - save > /tmp/iptable 保存配置
iptables-restore < /tmp/iptable 恢复配置
对于防火墙来说一般是匹配条件+动作 iptable -t 表 - A/I/R链 +规则 +动作
常见动作
动作 | 含义 |
---|---|
ACCEPT | 允许数据包通过 |
DROP | 直接丢弃数据包,不给任何回应信息,这时候客户端会感觉自己的请求泥牛入海了,过了超时时间才会有反应。 |
REJECT | 拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息 |
SNAT | 源地址转换,解决内网用户用同一个公网地址上网的问题 |
MASQUERADE | 是SNAT的一种特殊形式,适用于动态的、临时会变的ip上 |
DNAT | 目标地址转换 |
REDIRECT | 在本机做端口映射 |
LOG | 在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则,也就是说除了记录以外不对数据包做任何其他操作,仍然让下一条规则去匹配 |
基本操作
常用操作 | 命令说明 |
---|---|
-A | 在指定链尾部添加规则 |
-D | 删除匹配的规则 |
-R | 替换匹配的规则 |
-I | 在指定位置插入规则(例:iptables -I INPUT 1 --dport 80 -j ACCEPT(将规则插入到filter表INPUT链中的第一位上) |
-L/S | 列出指定链或所有链的规则 |
-F | 删除指定链或所有链的规则 |
-N | 创建用户自定义链[例:iptables -N allowed] |
-X | 删除指定的用户自定义链 |
-P | 为指定链设置默认规则策略,对自定义链不起作用 |
-Z | 将指定链或所有链的计数器清零 |
-E | 更改自定义链的名称[例:iptables -E allowed disallowed] |
-n | ip地址和端口号以数字方式显示[例:iptables -nL] |
常见规则匹配
常用规则匹配器 | 说明 |
---|---|
-ptcp/udp/icmp/all | 匹配协议,all会匹配所有协议 |
-s addr[/mask] | 匹配源地址 |
-d addr[/mask] | 匹配目标地址–sportport1[:port2]匹配源端口(可指定连续的端口) |
–d portport1[:port2] | 匹配目的端口(可指定连续的端口) |
-o interface | 匹配出口网卡,只适用FORWARD、POSTROUTING、OUTPUT(例:iptables -AFORWARD -o eth0) |
-i interface | 匹配入口网卡,只使用PREROUTING、INPUT、FORWARD。 |
–icmp-type | 匹配icmp类型(使用iptables -p icmp -h可查看可用的ICMP类型) |
–tcp-flags mask comp | 匹配TCP标记,mask表示检查范围,comp表示匹配mask中的哪些标记。(例:iptables-A FORWARD -p tcp --tcp-flags ALL SYN,ACK -j ACCEPT 表示匹配SYN和ACK标记的数据包) |
2、注意事项
- 自定义的链若要想删除就要先将链里面的规则和匹配删除完,才可-X删除
- 一般来说添加新规则要在头部添加
- 若想用netfilter防火墙,最好先将自己的防火墙关闭启用netfilter防火墙
systemed stop firewalld
- 在加的链中是一个一个匹配,匹配到第一条后就不会匹配第二条
- 对于LOG动作,要用-I在链里面第一条添加,但依旧会匹配后面的规则
四、扩展模块
1、iprange扩展模块
用来匹配一段连续的ip地