我们需要学习到:封端口,封ip,实现nat功能,如共享上网,端口映射,ip映射

常见的硬件防火墙种类:

1、三层路由:H3c 华为 思科

2、防火墙:深信服

常见的软件防火墙种类:

1、iptables,被写到内核中,以后服务docker 工作在4层

2、firewalld centos7操作系统

3、nftalbes centos8操作系统

4、ufw ubuntu操作系统

云服务器的防火墙:

安全组(封ip 端口 处理不了七层) 阿里云的

waf防火墙 应用防火墙处理7层攻击 sql注入

基本组成:

4表(table):存放链的容器,防火墙最大概念 filter nat mangle raw

raw:对数据包进行状态跟踪,策略只能加在PRERUTING和OUTPUT

mangle:为数据包设置标记,在任何链中可以做(优先级)

filter:控制数据包是否允许进出及转发,ip,端口 在INPUT OUTPUT 

nat:控制数据包中地址转换,转发 在PEREROUTING、POSTROUTING、FORWARD

MPLS与防火墙 防火墙放行ospf_linux

5链(chain):存放规则的容器

INPUT(入站数据过滤) :处理来自外部的数据

OUTPUT(出站数据过滤):处理向外发送的数据。

FORWARD(转发数据过滤):将数据转发到本机的其他网卡设备上。

PREROUTING(路由前过滤) :– 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址,通常用于DNAT。

POSTROUTING(路由后过滤): – 处理即将离开本机的数据包。它会转换数据包中的源IP地址,通常用于SNAT。

规则(policy):准许/拒绝规则,各种防火墙规则 生效顺序从第一条开始匹配

注意事项

MPLS与防火墙 防火墙放行ospf_网络_02

基本语法

查看规则:iptables -t filter -L

MPLS与防火墙 防火墙放行ospf_网络_03

iptables -t [表名] 选项 [链名] [条件] [-j 控制类型],如:

iptables -t filter -A INPUT -j DROP -p tcp --dport 8080 (目的地址8080)

iptables -t filter -A INPUT -s 192.168.0.11 -j DROP

iptables -t filter -I INPUT -p icmp -j REJECT 阻止ping测试

修改规则时需要使用-R参数

iptables -t filter -R INPUT 3(规则的编号) -s 192.168.0.12 -j DROP

iptables -t filter -A OUTPUT -j DROP -p tcp --d 192.168.0.144 往目的地址得包都被丢弃了

删除规则

MPLS与防火墙 防火墙放行ospf_linux_04

iptables -D INPUT 6 -s 194.168.1.5 -j ACCEPT

iptables -D INPUT 6

指定条数在INPUT后加数字 也可以用iptables -i 直接插在第一个

默认策略:

MPLS与防火墙 防火墙放行ospf_MPLS与防火墙_05

nat表:工作在网络层

iptables -t nat -A PREROUTING -p tcp --dport 7788 -j DNAT(对目的地址进行转换) --to 192.168.0.11:7799

iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.11 --dport 7799 -j SNAT(对源地址进行转换) --to 192.168.0.12

伪装:iptables -t nat -A POST -s 192.168.0.11 -o ens37 -j MASQUERADE

意义是:将从网卡出去的流量伪装成网卡ip,其实就是源地址转换

iptables -t nat -A PEREROUTING -d 200.0.0.1 -dport 22 -j DNAT --to 192.168.0.11:22 最终ssh登录的不是本机,因为在pere链上已经转换

2. 设置默认的 chain 策略

iptables -P INPUT DROP

iptables -P FORWARD DROP

iptables -P OUTPUT DROP

删除所有现有规则

iptables -F

Linux防火墙过滤框架

MPLS与防火墙 防火墙放行ospf_网络_06

iptables-save命令

iptables-save 命令用来批量导出 Linux 防火墙规则,语法介绍如下:

保存在默认文件夹中(保存防火墙规则): iptables-save > /etc/sysconfig/iptables

iptables-restore 命令可以批量导入Linux防火墙规则,同时也需要结合重定向输入来指定备份文件的位置。命令如下:

iptables-restore < 文件名称 但是文件必须是save保存出来的

匹配条件

MPLS与防火墙 防火墙放行ospf_ip_07

MPLS与防火墙 防火墙放行ospf_ip_08

连续的端口可以用冒号连接,不连续的就要调用显式模块了

MPLS与防火墙 防火墙放行ospf_linux_09

本机可以访问其他主机的tcp服务:如果全允许太多了

iptables -A INPUT -p tcp -m state --state ESTABLISHED(已建立连接) -j ACCRPT

iptables 的四种状态

NEW状态:主机连接目标主机,在目标主机上看到的第一个想要连接的包
ESTABLISHED状态:主机已与目标主机进行通信,判断标准只要目标主机回应了第一个包,就进入该状态。
RELATED状态:主机已与目标主机进行通信,目标主机发起新的链接方式,例如ftp
INVALID状态:无效的封包,例如数据破损的封包状态

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
第二条规则的含义其实是:调用状态模块,匹配当状态为RELATED和ESTABLISHED的所有数据包通过,换句话说就是允许所有已经建立的连接,表现为本机可以ping其他主机,但是其他主机无法ping本机,只接受自己发出去的响应包,这是万能的一句话,允许所有自己发出去的包进来。后面跟具体规则
第三条规则的含义其实是:依据第二条来的,所有不满足第二条规则的,都会被拒绝,而且会给主机返回一个host-prohibited的消息。需要注意的则是,所有位于第三条规则之下的规则都无法生效,位于该规则之上的都会生效
 

小练习: 假设内网主机为192.168.1.2 外网为200.0.0.2 防火墙两个网卡 192.168.1.1 和200.0.0.1,先把默认策略调成DROP        

MPLS与防火墙 防火墙放行ospf_安全_10

1、iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -i ens33 -j ACCEPT

iptables -A INPUT -s 192.168.1.0/24  -p icmp --icmp-type 8 -i ens33 -j ACCEPT

2、iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT 意思是无论tcp,udp,icmp,已建立连接或无连接只要是响应包的都允许   

3、iptables -t nat -A POST -s 192.168.1.0/24 -o ens37 -j MASQUERADE/-j SNAT --to 200.0.0.1

6、iptables -A FORWARD -s 192.168.1.2 -j DROP