防火墙的结构

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


内网访问外网    开启

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