防火墙工具之iptables
1. 安全技术和防火墙
1.1 防火墙概述
- 拥有两种配置模式
- 运行时配置
- 永久配置
1.2 安全技术
入侵检测系统(Intrusion Detection Systems):不阻断任何网络访问,类似于监控,记录不追责
入侵防御系统(Intrusion Detection Systems):分析数据包,在判定为攻击行为后立即予以阻断,主动有效的保护网络的安全,一般采用在线部署方式
防火墙:隔离功能,对进出网络或主机的数据包基于一定规则检查,过滤数据包
1.3 防火墙分类
按保护范围划分:
- 主机防火墙:服务范围为当前一台主机
- 网络防火墙:服务范围为防火墙一侧的局域网
按实现方式划分:
- 硬件防火墙:在专用硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现,如:华为, 山石hillstone,天融信,启明星辰,绿盟,深信服,PaloAlto , fortinet, Cisco, Checkpoint, NetScreen(Juniper2004年40亿美元收购)等
- 软件防火墙:运行于通用硬件平台之上的防火墙的应用软件,Windows 防火墙 ISA --> Forefront
按网络协议划分:
- 网络层防火墙:OSI模型下四层,又称为包过滤防火墙
- 应用层防火墙/代理服务器:proxy 代理网关,OSI模型七层
包过滤防火墙(4层)
网络层对数据包进行选择,选择的依据是系统内设置的过滤逻辑,被称为访问控制列表(ACL),通过检查数据流中每个数据的源地址,目的地址,所用端口号和协议状态等因素,或他们的组合来确定是否 允许该数据包通过
优点:对用户来说透明,处理速度快且易于维护
缺点:无法检查应用层数据,如病毒等
应用层防火墙(7层)
应用层防火墙/代理服务型防火墙,也称为代理服务器(Proxy Server)
将所有跨越防火墙的网络通信链路分为两段
内外网用户的访问都是通过代理服务器上的"链接"来实现优点:在应用层对数据进行检查,比较安全
缺点:增加防火墙的负载
提示:现实生产环境中所使用的防火墙一般都是二者结合体,即先检查网络数据,通过之后再送到应用层去检查
1.4 防火墙基本认识
-
Netfilter(网络过滤)
- 真防火墙
- 位于Linux内核中的包过滤功能体系
- 称为Linux防火墙的"内核态"
-
Firewalld/Iptables(防火墙工具)
-
Linux防火墙是由Netfilter组件提供的
-
调用Netfilter函数
-
CentOS 7默认的管理防火墙规则的工具(Firewalld)
-
称为Linux防火墙的"用户态"
-
1.5 防火墙工具介绍Firewalld和Iptables
1.5.1 iptables的表、链结构
4表5链
表中有链,链中有规则
-
规则链
- 规则的作用:对数据包进行过滤或处理
- 链的作用:容纳各种防火墙规则
- 链的分类依据:处理数据包的不同时机
-
默认包括5种规则链
- INPUT:处理入站数据包
- OUTPUT:处理出本站数据包
- FORWARD:处理转发数据包
- POSTROUTING链:在进行路由选择后处理数据包
- PREROUTING链:在进行路由选择前处理数据包
-
规则表
- 表的作用:容纳各种规则链
- 表的划分依据:防火墙规则的作用相似
-
默认包括4个规则表
- raw表:确定是否对该数据包进行状态跟踪,不作任何处理
- mangle表:为数据包设置标记
- nat表:修改数据包中的源、目标IP地址或端口,地址转换【不常用但重要】
- filter表:确定是否放行该数据包(过滤) ,默认filter表 【常用】
1.5.2 默认的表、链结构示意图
- 规则表之间的顺序
- raw—>mangle—>nat—>filter
- 规则链之间的顺序
- 入站:PREROUTING—>INPUT
- 出站:OUTPUT—>POSTROUTING
- 转发:PREROUTING—>FORWARD—>POSTROUTING
- 规则链内的匹配顺序
- 按顺序依次检查,匹配即停止(LOG策略例外)
- 若找不到相匹配的规则,则按该链的默认策略处理
1.6 实际操作
CentOS7默认使用firewalld防火墙,没有安装iptables,若想使用iptables防火墙。必须先关闭firewalld防火墙,再安装iptables
前期准备工作
systemctl stop firewalld.service
systemctl disable --now firewalld.service
##开机不自启 并且立即关闭
systemctl enable --now firewalld.service
##开机自启 并且 立即开启
yum -y install iptables iptables-services
systemctl start iptables.service
systemctl enable iptables.service
无论查看,添加,删除,只有filter 表可以省略
查看
iptables [ -t filter或者nat ] -vnL
-v 显示详细
-n 数字形式显示
-L 查看规则列表
- 前期关闭所有设备的防火墙和selinux
- 设备一需要下载httpd服务并启动
[root@localhost ~]#systemctl stop firewalld.service
[root@localhost ~]#setenforce 0
#给第二台设备添加网卡并设置成仅主机模式
#将第三台设备网卡设置成仅主机模式
1.6.1 SNAT(让内网可以访问外网)