一、防火墙
1、防火墙的分类:
-
硬件防火墙:由厂商设计好的主机硬件,其操作系统主要以提供数据包数据的过滤机制为主,并去掉不必要的功能
-
软件防火墙:保护系统网络安全的一套软件(或称为机制),如Netfilter(数据包过滤机制)
2、防火墙无法完成的任务
-
防火墙并不能杀毒或清除木马程序(假设主机开放了www服务,防火墙的设置是一定要将www服务的port开放给client端的。假设www服务器软件有漏洞,或者请求www服务的数据包本身就是病毒的一部分时,防火墙是阻止不了的)
-
防火墙无法阻止来自内部LAN的攻击(防火墙对于内部的规则设置通常比较少,所以就很容易造成内部员工对于网络无用或滥用的情况)
3、Netfilter(数据包过滤)
定义:
- netfilter 是一个工作在 Linux 内核的网络数据包处理框架,用于分析进入主机的网络数据包,将数据包的头部数据(硬件地址,软件地址,TCP、UDP、ICMP等)提取出来进行分析,以决定该连接为放行或拒绝的机制,主要用于分析OSI七层协议的2、3、4层。
内容:
-
拒绝让Internet的数据包进入主机的某些端口
-
拒绝某些来源IP的数据包进入
-
拒绝让带有某些特殊标志(flag)的数据包进入,如:带有SYN的主动连接标志
-
分析MAC地址决定是否连接
二、iptables
1、iptables
- 早期的 Linux 系统中,默认使用 iptables 防火墙来管理服务和配置防火墙,虽然新型的 firewalld 防火墙管理服务已经被投入使用多年,但iptables 在当前生产环境中还继续使用 ,具有顽强的生命力
2、iptables流量处理动作
-
当规则链匹配后应采用以下几种动作来处理匹配流量
-
ACCEPT:允许流量通过
-
REJECT:拒绝流量通过,拒绝后回复拒绝信息
-
LOG:记录日志信息
-
DROP:拒绝流量通过,流量丢弃不响应
3、iptables的命令
(1)Euler中默认使用的是firewalld,且与iptables之间有冲突,如果需要使用 iptables 需要先停止firewalld再进行安装:
bash
[root@server ~]# systemctl stop firewalld #关闭防火墙
[root@server ~]# systemctl disable firewalld #禁用firewalld服务,系统启动时不在运行
(2)安装iptables并检查iptables的状态
bash
[root@server ~]# yum install iptables
[root@server ~]# systemctl status iptables
○ iptables.service - IPv4 firewall with iptables
Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled; vendor preset: disabled)
Active: inactive (dead)
(3)iptables的命令格式:
bash
iptables [-t 表名] 选项 [链名] [条件] [-j 控制动作]
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 控制动作
(4)iptables情况规则
bash
[root@server ~]# iptables -F # 清空规则
[root@server ~]# iptables -nL # 查看规则链
[root@server ~]# systemctl restart iptables
[root@server ~]# iptables -nL # 由于未保存,则恢复原状
[root@server ~]# iptables -F # 再次尝试清空规则链
[root@server ~]# service iptables save # 保存服务状态
iptables: Saving firewall rules to /etc/sysconfig/iptables: [ OK ]
[root@server ~]# systemctl restart iptables # 重启服务
[root@server ~]# iptables -nL # 查看
三、firewalld
1、firewalld的特点
-
firewalld可以动态修改单条规则,不需要像iptables那样,修改规则后必须全部刷新才可生效
-
firewalld默认动作是拒绝,则每个服务都需要去设置才能放行,而iptables里默认是每个服务是允许,需要拒绝的才去限制
-
iptables防火墙类型为静态防火墙firewalld 防火墙类型为动态防火墙
-
firewalld和iptables一样自身并不具备防火墙功能,它们的作用都是用于维护规则,而真正使用规则干活的是内核防火墙模块
-
firewalld 加入了区域(zone)概念
2、zone文件中的过滤规则
-
过滤规则优先级:
-
source(最高)
-
interface(次之)
-
默认zone(最低)
-
-
规则:
| 规则 | 作用 |
|---|---|
| scource | 源IP地址过滤(常用) |
| interface | 网卡过滤 |
| service | 服务名(实际是关联端口)过滤 |
| port | 端口过滤 |
| icmp-block | ICMP报文过滤 |
| masquerade | IP地址伪装 |
| forward-port | 端口转发过滤 |
| rule | 自定义规则 |
(1)firewall-cmd可视化界面工具
安装
bash
# 注意:需要再可视化界面下使用
[root@server ~]# systemctl start firewalld # 启用
[root@server ~]# systemctl enable firewalld # 开机启动
# 安装DDE图形化桌面
[root@server ~]# yum install firewall-config -y # 安装图形化界面
不要在xshell执行
bash
[root@server ~]# firewall-config
3、firewall-cmd基本命令
bash
[root@server ~]# firewall-cmd --version # 查看版本
[root@server ~]# firewall-cmd --help # 查看帮助信息
[root@server ~]# firewall-cmd --state # 显示状态
[root@server ~]# firewall-cmd --get-services # 查看防火墙管理的服务
[root@server ~]# firewall-cmd --list-all # 查看区域中的规则
[root@server ~]# firewall-cmd --panic-on # 启用紧急模式
[root@server ~]# firewall-cmd --panic-off # 关闭紧急模式
四、iptables的源地址转换实验
1、首先需要三台虚拟机
(1)第一台网络适配器设置为nat模式(配置的地址假设为192.168.108.100/24,网关为192.168.108.200,dns为8.8.8.8)。

(2)第二台网络适配器要有两张,一张是nat模式(假设IP为192.168.108.200,网关为192.168.108.2,dns为8.8.8.8),另一张仅主机模式(假设IP为192.168.81.200,网关为192.168.81.2,dns为8.8.8.8).

(3)第三台网络适配器为仅主机模式(假设IP为192.168.81.100.网关为192.168.81.200.dns为8.8.8.8)

2、在有两张网络适配器上进行以下相关配置(设置源地址伪装)

3、由于是配置iptables源地址转换,所以我们去192.168.108.100的仅nat模式下进行操作并查看自己修改的虚假ip是否成功

画出来的就是以及配置好的源地址伪装的IP(w -i :是用于查询ip)