一、概述
1.1相关概念
入侵监测系统
在互联网访问的过程中,不阻断任何网络访问,也不会定位网络的威胁,提供告警和事后的监督,类似于监控。
入侵防御系统
透明工作模式,在判定为攻击行为或者是病毒威胁时,主动的隔断。
防火墙
隔离功能,工作在网络或主机边缘。对进出网络或者主机的数据包(网络层)基于一定的规则进行检查,匹配规则的则放行,不匹配的就会隔离在主机之外。
防水墙
防止内部信息泄露的产品,网络、外设接口等等全方位的实现监控。
1.2防火墙种类
按照部署位置分类
- 网络层防火墙:通常部署在网络边界,检查和过滤进出网络的流量
- 主机防火墙:安装在主机上,用于保护单个主机或设备
- 云防火墙:专门设计用于云环境的防火墙解决方案,保护云端应用和数据的安全
linux系统主机自带防火墙
- iptables:centos7以前是系统的默认防火墙
- firewalld:centos7的默认防火墙
- ufw:ubuntu的防火墙,自带的,默认就没有规则
二、iptables
2.1四表五链
表名 | 作用 |
raw表 | 用来控制数据包的状态跟踪,决定是否跳过后续的处理流程 |
mangle表 | 用于修改数据包的头部信息 |
nat表 | 网络地址转换,改变数据包的源地址和目的地址,用于内网和外网之间通信 |
filter表 | 用来过滤数据包,可以控制数据包的进出,以及是否接受或者拒绝数据包 |
优先级:raw>mangle>nat>filter
链名 | 作用 |
INPUT | 处理数据包进入本机的规则 |
OUTPUT | 处理本机发出的或者其他请求响应的数据包的规则,一般不做限制 |
FORWARD | 处理数据包转发到其他主机的规则 |
PREROUTING | 处理数据包进入本机之前的规则(地址转换) |
POSTROUTING | 处理数据包离开本机之后的规则(地址转换) |
规则内的匹配顺序:
1、自上而下按照顺序依次进行检查,找到了匹配的规则即停止。
2、链内没有规则,就会按照链的默认策略进行处理
2.2iptables语法结构
iptables -t 指定表名(默认就是filter)管理选项 链名 匹配的条件 -j 控制类型
-
管理选项
选型 | 说明 |
-A | 在指定的链的末尾添加一条规则 |
-I | 在指定链中插入一条新的规则,根据序号来进行插入 |
-P | 指定链的默认规则(慎用,没有特殊需求不要修改) |
-D | 删除链里的规则,根据规则的序号进行删除 |
-R | 修改,替换某一条规则 |
-L | 查看规则 |
-n | 数字化的展示规则的手段 |
-v | 查看详细信息 |
--line-number | 查看规则时带有编号 |
-F | 清除链中的所有规则 |
-X | 清空自定义链的规则 |
-
匹配条件
选项 | 说明 |
-p | 匹配数据包的协议 |
-s | 匹配数据包的源地址 |
-d | 匹配数据包的目的地址 |
-i | 指定数据包进入本机的网络接口 |
-o | 指定数据包离开本机的网络接口 |
--sport | 指定源端口 |
--dport | 指定目的端口 |
-
控制类型
选项 | 说明 |
ACCEPT | 允许数据包通过 |
DROP | 直接丢弃数据包,没有任何回显信息 |
REJECT | 拒绝数据包通过,但是会有一个回显信息 |
SNAT | 修改数据包的源地址 |
DNAT | 修改数据包的目的地址 |
2.3实例
查看规则
iptables -vnL
iptables -vnL --line-number
添加规则
iptables -A INPUT -p icmp -j REJECT
#在filter表中插入一个规则到INPUT链,匹配的协议是icmp,拒绝其他主机ping本机,甚至自己也无法ping通自己
iptables -I INPUT 1 -p icmp -j ACCEPT
#在INPUT链内第一条规则前添加一个规则,匹配的协议是icmp,允许所有主机ping本机
iptables -t filter -A INPUT -s 192.168.206.20,192.168.206.31 -p icmp -j DROP
#拒绝多个源ip
iptables -t filter -A INPUT -s 192.168.206.30 -p tcp --dport 80 -j REJECT
#拒绝192.168.206.30访问本机的tcp80目的端口
iptables -t filter -A OUTPUT -s 192.168.206.20 -p tcp --sport 22 -j REJECT
#禁止本机的tcp22源端口出去
iptables -A INPUT -i ens33 -s 192.168.206.0/24 -j REJECT
#禁止206这个网段从ens33这个设备进入本机
iptables -A INPUT -s 192.168.206.0/24 -p tcp --dport 80 -j REJECT
#禁止192.168.206.0/24网段访问nginx的服务
一次性匹配多个端口
iptables -A INPUT -s 192.168.206.30 -p tcp --dport 22:80 -j REJECT
#同时匹配两个端口,但是小的端口要在前,否则会报错
iptables -A INPUT -s 192.168.206.30 -p tcp -m multiport --dport 80,22,3306 -j REJECT
#一次性指定多个端口,用逗号隔开即可
删除规则
iptables -vnL --line-number#先看要删除的规则的序号
iptables -D 链名 对应序号
iptables -F #清空所有规则
修改规则
iptables -R INPUT 1 -p tcp -j ACCEPT #修改INPUT链第一条规则
iptables -P INPUT DROP #制定链的默认规则为拒绝所有,生产当中的默认策略都是DROP
2.4-m 扩展模块
-
扩展多端口
-m multiport --dport 源端口列表
-m multiport --sport 目的端口列表
-
mac地址
#操作不太方便,用的比较少
-m mac --mac-source
-m mac --mac-destination
iptables -A INPUT -p icmp -m mac --mac-source 00:0c:29:4b:2d:00 -j REJECT
-
ip范围
-m iprange --src-range 源ip地址的范围
-m iprange --dst-range 目的ip地址范围
iptables -A INPUT -p tcp -m iprange --src-range 192.168.206.20-192.168.206.30 --dport 80 -j REJECT
#源ip地址从192.168.206的20到30
2.5永久策略
只要不写入配置文件,都是临时策略,只要关机/重启就会消失
以Ubuntu为例,centos也是一样,只是配置文件是/etc/sysconfig/iptables
iptables-save >> /etc/iptables/rules.v4 #直接把策略保存到配置文件(永久)
iptables-restore < /opt/iptables.bak #不是把策略保存到配置文件,而是直接导入到配置当中(临时)
-
centos
yum -y install iptables-services
systemctl restart iptables #可以对服务进行控制
/etc/sysconfig/iptables #iptables的配置文件
-
ubuntu
apt -y install iptables-persistent
/etc/iptables/rules.v4 #iptables的配置文件
通信的要素
通信的五大要素
协议 源ip 目的ip 源端口 目的端口
通信的四大要素
源ip 目的ip 源端口 目的端口
通信的三大要素
协议 ip 端口
端口:就是对应的应用在主机上的唯一标识