iptables 防火墙 附实验:三台虚拟机模拟内网连接外网
防火墙:
firewalld 隔离功能
病毒防护:
入侵检测系统: 在互联网访问的过程中,不阻断任何网络访问,也不会定位网络的威胁。提供警告和事后的监督,类似于监控。
入侵防御系统: 透明工作模式,在判定为攻击行为或者是病毒威胁时,主动的隔断。
防水墙:
防止内部信息泄露的产品,网络,外设接口等等全访问的实现监控。
防火墙的隔离规则:
对进出网络或者主机的数据包基于一定的规则进行检查,匹配规则的则放行,不匹配的就会隔离在主机之外。
网络边缘或者是主机边缘。
主机防火墙
网络防火墙
linux系统主机自带防火墙:
iptables: centos7以前是系统的默认防火墙
firewalld: centos7的默认防火墙
ufw: ubuntu的防火墙,自带的,默认就没有规则。
iptables:
属于用户态防火墙,通过表匹配链→规则对数据包的方行或者拒绝进行匹配。
表是自带的
链是已有的
规则是人工配置,规则一旦配置,立即生效,不需要重启
表: 四表
raw表: 用来控制数据包的状态跟踪,决定是否跳过后续的处理流程
mangle表: 用于修改数据包的头部信息
nat表: 网络地址转换,改变数据包的源地址和目的地址,用于内网和外网之间通信
filter表:用来过滤数据包的,可以控制数据包的进出,以及接受或者拒绝数据包
表的优先级:
raw—>mangle—>nat—>filter(不指定表名时,默认就是filter)
锁:五链
INPUT:处理数据包进入本机的规则
OUTPUT:处理本机发出的或者是其他请求响应的数据包的规则,一般不做限制。
FORWARD:处理数据包转发到其他主机的规则
PREROUTING:处理数据包进入本机之前的规则(地址转换)
POSTROUTING:处理数据离开本机之后的规则(地址转换)
规则内的匹配顺序:
自上而下按照顺序依次进行检查,找到了匹配的规则即停止
链内没有规则,就会按照默认的策略进行处理
iptables 表名(默认就是filter表) 管理选项 链名 匹配的条件 控制类型
管理选项:
以下是提取的文字:
A:在指定链的末尾添加一条规则
在指定链中插入一条新的规则,根据序号来进行插入
P:指定链的默认规则(慎用,没有特殊需求不要修改)
-D:删除链里的规则,根据规则的序号进行删除
R:修改规则
-L:查看规则
-n:数字化的展示规则的字段
-v:查看详细信息
--line-number:查看规则带有编号
-F:清除链中的所有规则
-X:清空自定义链的规则
-p:匹配数据包的协议
S: 匹配数据包的源地址
d: 匹配数据包的目的地址
i: 指定数据包进入本机的网络接口
0: 数据包离开本机使用的网络接口
-sport: 指定源端口
-dport: 指定目的端口
控制类型:
ACCEPT: 允许数据包通过
DROP: 直接丢弃数据包。没有任何回显信息
REJECT: 拒绝数据包通过,但是会有一个回显信息
SNAT: 修改数据包的源地址
DNAT: 修改数据包的目的地址
linux抓包命令:
tcpdump tcp -i ens33 -t -s0 -c 10 and dst port 80 and src net 192.168.233.0/24 -w /opt/Target.cap
tcpdump 开头
tcp: 协议 icmp udp
-i ens33 指定设备名称 从哪个设备经过的数据包
-t 不显示时间戳
-s0: 默认抓包的长度是68字节,s0就是抓取完整的数据包
-c 10: 抓取多个数据包
and dst port 目标端口 80 和80端口相关的数据包
and src net 源ip是192.168.233.0/24这个网段的ip地址。
-w 抓包的结果保存到指定的文件当中去
.cap tcpdump只是抓取数据包的内容,但是linux系统不能查看抓包的数据包,所以用.cap为结尾是为了给抓包工具分析
cpdump -i ens33 -s0 -w /opt/ens33.cap
iptables和
firewalld 是centos自带的,而且是firewalld是默认的
ufw是ubuntu自带的,使用的就是iptables
firewalld:
firewalld是根据区域来进行配置不同的规则,和硬件防火墙很相似
区域:
- trusted 信任区,所有的流量都可以进入
- public 公共区域,默认区,只允许系统默认的规则(ssh和icmp协议),其他的流量传入全部拒绝
- external 外部区域,只允许系统默认的规则(ssh和icmp协议),其他的流量传入全部拒绝,经过此区域的流量可以将ipv4的地址进行伪装
- home 家庭区域,只允许系统默认的规则(ssh和icmp协议),其他的流量传入全部拒绝
- internal 内部区域 只允许系统默认的规则(ssh和icmp协议,dhcpv6协议),其他的流量传入全部拒绝
- work 工作区域 只允许系统默认的规则(ssh和icmp协议,dhcpv6协议),其他的流量传入全部拒绝
- block 限制区 拒绝所有流量的传入
- drop 丢弃区域 拒绝所有流量的传入,没有回显信息
- DMZ 非军事区域 只允许系统默认的规则(ssh协议),其他的流量传入全部拒绝
实验:三台服务器模拟内网连接外网
test1 192.168.233.11 内网 192.168.233.254
test2 192.168.233.12 网关服务器 ens33 ens37
test3 192.168.233.13 外网 12.0.0.10 12.0.0.254
配置网络
修改如图所示,注意这里第二个网卡不一定是ens37根据自身,实际情况而定,后面因为刷新netplan apply以后xshell就登不上去了,所以修改只能在虚拟机里修改
2.sysctl.conf:linux系统的内核的接口文件,修改配置内核的参数使之永久生效
如果有没安装nginx的,apt安装一下,然后restart重启
用Ubuntu2模拟访问一下,看成不成功
访问233.11
访问233.13
修改第一台虚拟机配置文件
修改第三台虚拟机配置文件
点击工具,选择第一行,发送输入到所有会话,同时编辑
配置链接从内网到服务器
配置链接从服务器到外网
可以看到这里已经将ip转译为12.0.0.10