防火墙的结构
DMZ(非军事区):允许外网随时访问
Linux的防火墙:
ipfawdn ---> ipchains ---> iptables
iptables
7.0以前默认开启的是iptables
7.0以后默认开启的是firewall
Linux中防火墙都属于包过滤防火墙,对经过的数据包中的IP地址、协议、Port、标记位进行审核
实验拓扑图:客户端A:202.0.0.1 ------ Re0:202.0.0.2;Re1:192.168.10.1 ------- B:192.168.10.2
实验:
1、安装软件包
iptables.xxxx.xxxx.rpm
iptables-services.xxxx.xxxx.rpm
2、启动服务
systemctl mask firewalld
systemctl unmask iptables
systemctl restart iptables
systemctl enable iptables
iptables通过规则集实现保护功能,规则集称为链,每个接口都可以设置这三种链:
INPUT链:通信目标为本设备时,审核相应接口的INPUT链 A ping R
FORWARD链:路由器实现转发功能,审核发送方近口的FORWARD链
OUTPUT链:当通信发起方为本设备时,审核相应接口的OUTPUT链 R ping A
内网 防火墙限制
【限制ip】
iptables -L 查看所有链的规则集
iptables -F 清空所有链的规则集
iptables -P INPUT DROP(拒绝) 修改链的默认规则(policy) ACCEPT(接受)
按添加规则顺序,进行判断通信是否可行 (审核规则按照顺序审核)
制定规则指定网卡
-A 制定规则链
-I 指定插入位置
-D 指定删除位置
-i 指定网卡 (eno16777736)
-j 指定操作规则 (DROP拒绝)(ACCEPT接受)
-s 指定发送方ip地址
-d 指定接受方ip地址
制定规则指定网卡 -I 指定插入位置 -A 制定规则链 -D 指定删除位置 -i 指定网卡 -j 指定操作 -d 指定接受方ip地址
iptables -I FORWARD 1 -i eno16777736 -s 202.0.0.1 -d 192.168.10.2 -j ACCEPT 在指定位置插入规则
iptables -D FORWARD 3 删除指定位置的规则
telnet ip 远程连接控制
【协议和端口】
-p 指定协议 tcp udp icmp 拒绝所有外网的tcp通信
--dport 指定目的端口
--sport 指定发送端口
iptables -A FORWARD -i eno16777736 -p tcp -j DROP 拒绝所有tcp通信
iptables -A FORWARD -i eno16777736 -p tcp --dport 23 -j DROP 只拒绝23号端口
iptables -A FORWARD -i eno16777736 -p tcp -d 192.168.10.2 --dport 23 -j DROP 只拒绝10.2上的23号端口
iptables -A FORWARD -i eno16777736 -p udp --sport 53 -j DROP 使客户端无法获得DNS解析
设置A到B不可以ping通 B到A通
【标记位】icmp
拒绝外网所有的主动连接,但是外网的回复信息能收到
C ---> S syn 请求
S ---> C syn,ack 回复
C ---> S ack 回复
iptables -A FORWARD -i eno16777736 -p tcp --syn -j DROP
【icmp:内置命令ping、tracert】请求(requset 8) 回复(relay 0)
iptables -A FORWARD -i eno16777736 -p icmp --icmp-type 8 -j DROP
内网访问外网 开启 <NAT网络地址转换(内访外)POSTROUTING链>
iptables -t nat -A POSTROUTING -o eno16777736 -s 192.168.1.197 -j SNAT --to-source 36.111.136.8
-t nat 指定规则
-o 指定外网卡
--to-source 外网卡IP
iptables -L -t nat 查看nat链规则
iptables -F -t nat 清空nat链规则
实验验证:
客户端和服务器端 netstat -n 查看通信端口
外网访问内网 开启 <端口映射(外访内)PREROUTING>
iptables -t nat -A PREROUTING -i eno16777736 -d 202.0.0.2 -p tcp --dport 2300 -j DNAT --to-destination 192.168.10.2:23
实验验证:
内网上:telent 202.0.0.2 2300
netstat -n
iptables -t nat -vnL 查看
iptables -t nat -D PREROUTING 1 删除
上述命令重启iptables服务将失效,永久生效将命令写入配置文件
vim /etc/rc.d/rc.local
iptables -F
iptables -F -t nat
书写相应的防火墙规则
保存退出
给该文件增加执行权限
chmod a+x /etc/rc.d/rc.local