安全技术
- 入侵检测系统:特点是不阻断网络访问,通过量化、定位的方式来锁定内外网络的危险情况,提供告警服务和事后监督为主。这种系统没有任何主动行为。
- 入侵防御系统:以透明模式工作,会对数据包进行分析,检查是否有木马、病毒或者服务攻击等,进行准确的分析判断。判定之后立刻阻断。会主动地有效地保护网络安全,是所有数据进入指定网络的必经之路。
- 防火墙就是入侵防御系统,主要作用就是:隔离,工作在网络或者主机的边缘。对进出网络或者主机的数据包基于一定规则进行检查。而且在匹配到某规则时,根据定义的规则做出相应的处理动作。只有允许策略的数据包才能通过。
防火墙
- 按保护范围分:
- 主机防火墙:只能保护当前一台主机
- 网络防火墙:可以保护整个防火墙一侧的局域网
- 按网络协议分:
- 网络层防火墙:比如 iptables firewalld 这样的包过滤防火墙,对数据包进行过滤
- 应用层防火墙
iptables
- 属于用户态防火墙
- 何为用户态?
用户态区别于内核态,是面向使用者的,使用者只需要考虑如何使用,如何配置策略即可
内核态处于代码层,一般由开发人员进行开发
- 何为用户态?
- iptables的规则配置后立即生效,无需重启(重启会读取配置文件,反而会还原)
- centos7之前默认使用iptables,之后默认使用firewalld,两者不能同时使用,所以centos7想要使用iptables需要关闭firewalld
- iptables由四表五链组成
- 四表:
- row表:控制数据包的状态跟踪。可以决定是否跳过后续的处理。(说白了就是决定关闭还是启用数据包的跟踪机制,加快数据包穿越防火墙的速度)
- mangle表:修改数据包的头部信息,主要是修改数据包的标记位规则。
- nat表:地址转换表,用于网络地址转换,可以改变数据包的源IP地址和目的IP地址。
- filter表:iptables的默认表,也就是包过滤表,用于过滤数据包,可以控制数据包的进出,以及是否接受或者拒绝数据包
- 五链:
- INPUT链:数据包进入本机的规则
- OUTPUT链:数据包出本机的规则,因为默认规则能进就能出,所以一般不配置出表
- PREROUTING链:数据包进入本机之前,是否要做地址转换
- POSTROUTING链:数据包离开本机之前,是否要做地址转换
- FORWARD链:是否允许数据包通过本机进行转发
- 四个表包含五个链,每个链都有自己的规则,规则就是人工配置的规则,我们配置规则就是在链里面配置。
- 数据包进入本机之后,匹配表的先后顺序如下:row > mangle > nat > filter
- 四表:
- iptables命令格式:
iptables -t 表名 管理选项 链名 匹配条件 -j 控制类型- 不加-t 表名,默认就是filter表
- 不加链名就是所有链,一般都会指定
- 管理选项:
- -A:在指定链的末尾追加一行
- -I:(大写的i),在指定链的指定序号处插入一条规则,不指定序号默认插在第一条
- -P:指定默认策略
- -D:删除规则
- -R:修改或者替换规则(太麻烦一般不用)
- -L:查看
- v:显示详细信息
- n:所有字段以数字显示
- -F:清空链当中的所有规则(慎用)
- -X:清空自定义链的规则
- 匹配条件:
- -p:指定匹配数据包的协议类型
- -s:指定匹配数据包的源IP地址
- -d:指定匹配数据包的目的IP地址
- -i:指定数据包进入本机的网络接口
- -o:指定数据包离开本机使用的网络接口
- --sport:指定源端口
- --dport:指定目的端口
- 控制类型:
- ACCEPT:允许数据包通过
- DROP:直接丢弃数据包,不给予任何回应信息
- REJECT:拒绝数据包通过,会给予一个响应信息
- SNAT:修改数据包的源地址
- DNAT:修改数据包的目的地址
- 常用命令
- iptables -vnL --line-numbers
显示目前的规则 - iptables -t filter -A INPUT -p icmp -j REJECT
拒绝所有主机访问本机,包括本机 - iptables -t filter -I INPUT 1 -p icmp -j ACCEPT
在filter表中插入一个序号为1的规则,接受所有主机的访问- 关于序号:自上而下按顺序进行检查,找到适用的规则就立刻停止,比如说同时有一条拒绝所有主机访问和接受所有主机访问的规则,谁的序号在前(位置在上面),谁就是有效规则
- 关于序号:自上而下按顺序进行检查,找到适用的规则就立刻停止,比如说同时有一条拒绝所有主机访问和接受所有主机访问的规则,谁的序号在前(位置在上面),谁就是有效规则
- iptables -A INPUT -s ip地址 -p icmp -j REJECT
拒绝指定ip地址的主机访问本机
指定网段的话就用 192.168.188.0/24 的格式
指定多个IP要使用 ,(逗号)隔开
指定多个端口时,要使用 :(冒号)隔开,而且小的端口要写前面,比如:
iptables -I INPUT 1 -s 192.168.188.0/24 -p tcp --dport 22:80 -j REJECT - iptables -t filter -I INPUT 1 -s ip地址 -p tcp --dport 80 -j REJECT
拒绝目标ip地址的主机通过tcp协议访问本机的80端口 - iptables -D INPUT 1
删除INPUT表中序号为1的命令 - iptables -R INPUT 1 -s 192.168.188.10 -p tcp --dport 80 -j ACCEPT
修改,-s -p -j之类的必须写全了,不如删了重新创建一个 - iptables -P INPUT DROP
将INPUT链的默认规则修改为DROP,即全部丢弃,没事千万别用这个
- iptables -vnL --line-numbers
- 显示匹配:用-m扩展模块的形式指出类型、多端口、MAC地址、IP范围
- 多端口格式:iptables -A INPUT -p tcp -m multiport --dport 80,21,22,53 -j REJECT
用逗号(,)隔开并且不需要按从小到大写 - 匹配IP范围:源IP用-m iprange --src-range,目的IP用-m iprange --dst-range
iptables -A INPUT -p tcp -m iprange --src-range 192.168.188.20-192.168.188.40 --dport 80 -j REJECT - MAC地址匹配,比较少用
-m mac --mac-destination mac地址 -j DROP
源地址用 --mac-source
- 多端口格式:iptables -A INPUT -p tcp -m multiport --dport 80,21,22,53 -j REJECT
- -i 指定入口设备(网络接口、网卡)示例
iptables -A INPUT -s 192.168.188.11,192.168.188.13 -i ens33 -j DROP - iptables的备份:(导入配置文件之前一定要备份)
iptables-save > /opt/iptables.bak(指定文件备份位置)
iptables-restore < /opt/iptables.bak(读取备份文件,注意这种方式只能是临时修改,配置文件并没有更改,一旦restart服务就又还原了)
如果想要改变配置文件,直接覆盖就行,但注意导入配置文件之前一定要备份:
cat /opt/iptables.bak > /etc/sysconfig/iptables
自定义链
-
自定义链添加:iptables -N custom(链名) 创建链
-
自定义链改名:iptables -E custom(原来名称) tsh(新名称) 自定义链改名
-
创建自定义链规则:iptables -t filter -I tsh -p icmp -j REJECT 创建自定义规则, iptables的链中添加一条对应到自定义链中才能生效
-
iptabales创建对应链规则然后跳转自定义链web:iptables -t filter -I INPUT -p icmp -j custom
-
删除自定义规则链:先删除iptables INPUT链中的对应关系,然后删除自定义链中的规则。 iptables -D INPUT 1 iptables -D tsh 1
-
然后再用 iptables -X tsh 删除这个链