一、防火墙概述
- 目标:
- 防火墙:封端口,封ip
- 实现NAT功能
- 共享上网
- 端口映射(端口转发),ip映射
二、防火墙
2.1防火墙种类及使用说明
- 硬件:整个企业入口
- 三层路由:H3C 华为 Cisco(思科)
- 防火墙:深信服,奇安信,绿盟…..
- 软件:开源软件 网站内部 封ip 封端口
- iptables 写入到Linux内核中 以后服务docker工作在4层(大部分)
- firewalld C7 底层也是iptables
- nfttables C8 C9
- ufw(ubuntu firewall)Ubuntu
- 云防火墙(公有云):
- 阿里云:
- 安全组(封ip,封端口)
- NAT网关(共享上网,端口映射)
- wat应用防火墙
- DDOS高防
- 阿里云:
- waf防火墙(应用防火墙,处理7层的攻击)SQL注入,等攻击
- 书写规则(描述攻击过程,关键提示,关键操作)
企业选型建议:
中小企业:使用公有云,安全组,waf防火墙,态势感知。
访问量巨大:使用硬件防火墙,waf防火墙,硬件防火墙+云服务器
2.2必须熟悉的名词
- 容器:瓶子 罐子 存放东西
- 表(table): 存放链的容器,防火墙最大概念
- 链(chain): 存放规则的容器
- 规则(policy): 准许或拒绝规则,未来书写的防火墙条件就是各种防火墙规则
他们像套娃一样,一层套一层
| Netfilter | 表(tables) | 链(chains) | 规则(Policy) |
| 一栋楼 | 楼里的房子 | 房子里的柜子 | 柜子里的衣服,拜访规则 |
2.3iptables 执行过程
- 工作流程小结:
- 防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的
- 如果匹配成功规则,即明确表示是拒绝(DROP)还是接受(ACCEPT),数据包就不再向下匹配新的规则
- 如果规则中没有明确表明阻止还是通过的,也就是没有匹配规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过
- 防火墙的默认规则是所有规则都匹配完才会匹配的

2.4表与链
2.4.1简介
- 表(table)是对功能的分类,防火墙功能(filter表),共享上网,端口转发(nat表)
- 链对数据流进行处理,需要不同的链(数据流入(INPUT),数据流出(POUTPUT))
- iptables是4表伍链
- 4表:filter表(默认)nat表 raw表 mangle表
- 伍链:INPUT OUYPUT FORWARD PREROUTUNG POSTROUTING
pre…之前
pre…之后
2.4.2每个表说明
1)filter表
- 是iptables默认的表,filter表示过滤
- 实现防火墙功能:(对数据包的filter过滤)屏蔽或准许,端口,ip
| filter表 | 强调:主要和自身相关,真正负责主机防火墙功能的(过滤流入流出主机的数据包)filter表示iptables默认使用的表,这个表定义了三个链(chains)企业工作场景:主机防火墙 |
| INOPUT | 负责过滤所有目标地址是本机地址的数据包 通俗来说:就是过滤进入主机的数据包(能否让数据包进入服务器) |
| FORWARD | 路过:负责转发流经主机的数据包。 起转发的作用,和NAT关系很大,后面会详细介绍LVS NAT模式,net.ipv4.ip_forward=0 |
| OUTPUT | 处理所有源地址是本机地址的数据包 通俗来讲:就是处理从主机发出的数据包 |
2)nat表
- 实现nat功能
- 实现共享上网(内网服务器上外网)
- 端口映射和ip映射

#防火墙相关模块 加载到内核中
#写入到开机自启动.
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
#永久
chmod +x /etc/rc.d/rc.local
cat >>/etc/rc.local<<EOF
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
EOF
#检查是否加载防火墙iptables 模块
[root@m01 ~]# lsmod |egrep ‘filter|nat|ipt’
#写入到开机自启动.
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
#永久
chmod +x /etc/rc.d/rc.local
cat >>/etc/rc.local<<EOF
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
EOF
#检查是否加载防火墙iptables 模块
[root@m01 ~]# lsmod |egrep ‘filter|nat|ipt’


2.5环境准备及命令
iptables iptables启动或关闭的命令







2.5.2 iptables 命令参数
- 指定表或链的指令

- 描述什么类型的数据

- 指定是准许还是拒绝


2.6 配置fulter表规则
- 正式配置之前 先备份,清空规则

2.6.1 禁止访问22端口

- -t 用于指定表,不写默认就是fulter表
- 删除规则 -D

2.6.2 封ip,屏蔽某个ip
- 发出DDOS攻击,某个/几个ip对网站发出请求(大量)

2.6.3 禁止网段连入 (禁止10.0.0.0/24网段访问 22端口)
nc ncat netcat
nc -lk
telnet


2.6.4 只允许指定网段连入(允许172.16.1.0网段)
实现阿里云白名单功能:默认是拒绝 开放端口 网段
allow 10.0.0.0/24;
deny all;
- 修改默认规则
- 然后添加规则准许10.0.0.0/24访问22
- 准许172.16.1.0/24访问所有
- 准许任何人访问80,443



2.6.5 匹配ICMP类型 禁止ping
方案01:防火墙实现
方案02:linux内核参数
- ICMP internet控制报文协议 ping
- 整个网站核心
通过防火墙规则 控制是否可以ping


通过内核参数 控制禁止被ping

2.6.6 指定多个端口


2.6.7 匹配网络状态(TCP/IP连接状态)

2.6.8 限制并发及速率

web01进行ping测试