防火墙防火墙

什么是防火墙

防火墙是一种网络安全设备或软件,用于监控和控制网络流量,以保护网络免受未经授权的访问、恶意攻击和数据泄露等威胁。

防火墙的作用


1. 访问控制:防火墙可以根据规则和策略,限制和过滤网络流量,只允许经授权的流量通过,阻止未经授权的流量进入网络。
2. 威胁防御:防火墙可以监控网络流量、检测和阻止恶意攻击,如网络嗅探、入侵尝试、恶意软件传播等。
3. 数据过滤和策略实施:防火墙可以根据预定义的规则过滤和处理数据流量,并实施特定的网络策略,如端口转发、地址转换等。
4. VPN支持:一些防火墙还提供虚拟专用网络(VPN)功能,用于安全地远程访问和连接组织的网络资源。

防火墙的类型


1. 网络层防火墙(Packet Filtering Firewall):基于网络层的IP、端口和协议等特征,过滤和控制数据包的转发。
2. 应用层防火墙(Application Layer Firewall):在网络层的基础上,根据应用层协议和内容进行更精细的过滤和控制,如HTTP、FTP、SMTP等。
3. 状态感知防火墙(Stateful Firewall):对网络连接进行状态跟踪和管理,可以检测和过滤具有恶意行为的连接。
4. 下一代防火墙(Next-Generation Firewall):整合了传统防火墙的功能,并结合了更高级的安全功能,如入侵防御、反病毒、网关防护等。
5. 代理防火墙(Proxy Firewall):代理所有网络流量,为内部网络和外部网络之间建立隔离,对流量进行深度检查和策略控制。
6. 云防火墙(Cloud Firewall):部署在云平台上的防火墙,用于保护云环境中的虚拟机和云服务。

不同类型的防火墙具有各自的特点和适用场景,可以根据实际需求选择合适的防火墙来保护网络安全。

常用防火墙品牌

硬件防火墙:

Cisco ASA
Palo Alto Networks
Fortinet Fortigate
Check Point Firewall
Juniper Networks SRX Series
SonicWall NSA Series
Sophos XG Firewall
Barracuda NextGen Firewall
WatchGuard Firebox
Huawei USG Firewall
软件防火墙:

Windows Defender Firewall (Microsoft)
Norton Firewall (NortonLifeLock)
McAfee Firewall (McAfee)
ZoneAlarm Firewall (Checkpoint Software Technologies)
Comodo Firewall (Comodo)
AVG Firewall (AVG Technologies)
Avast Firewall (Avast Software)
Bitdefender Firewall (Bitdefender)
Kaspersky Internet Security (Kaspersky Lab)
ESET Smart Security (ESET)
这些品牌都是在硬件和软件防火墙领域具有声誉和广泛使用的品牌,它们提供了多种功能和解决方案,以保护企业和个人免受网络威胁。

iptables

iptables是什么?

iptables不是防火墙,是防火墙用户代理用于把用户的安全设置添加到安全框架中  安全框架是防火墙

安全框架的名称为netfilter

netfilter位于内核空间中,是Linux操作系统核心层内部的一个数据包处理模块iptables是用于在用户空间对内核空间的netfilter进行操作的命令行工具

netfilter/iptables功能

netfilter/iptables可简称为iptables,为Linux平台下的包过滤防火墙,是开源的,内核自带的,可以代替成本较高的   企业级硬件防火墙,能够实现如下功能:

数据包过滤,即防火墙数据包重定向,即转发网络地址转换,即可NAT

注:

平常我们使用iptables并不是防火墙的服务,而服务是由内核提供的。

 

iptables概念

iptables工作依据 规则(rules)

iptables是按照规则(rules)来办事的,而规则就是运维人员所定义的条件;规则一般定义为如果数据包头符合这样的   条件,就这样处理这个数据包

规则存储在内核空间的数据包过滤表中,这些规则分别指定了源地址、目的地址,传输协议(TCPUDPICMP)和服   务类型(HTTPFTP)等。

当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,比如放行(ACCEPT)、拒绝(REJECT)、   丢弃(DROP)

配置防火墙主要工作就是对iptables规则进行添加、修改、删除等

iptables中链的概念举例说明:

当客户端访问服务器端的web服务时,客户端发送访问请求报文至网卡,而tcp/ip协议栈是属于内核的一部分,所     以,客户端的请求报文会通过内核的TCP协议传输到用户空间的web服务,而客户端报文的目标地址为web服务器所  监听的套接字(ip:port)上,当web服务器响应客户端请求时,web服务所回应的响应报文的目标地址为客户端地址,  我们说过,netfilter才是真正的防火墙,属于内核的一部分,所以,我们要想让netfilter起到作用,我们就需要在内   核中设置关口,所以进出的数据报文都要通过这些关口,经检查,符合放行条件的准允放行,符合阻拦条件的则被  阻止,于是就出现了inputoutput关口,然而在iptables中我们把关口叫做

INPUT:处理入站数据包OUTPUT:处理出站数据包

FORWARD:处理转发数据包(主要是将数据包转发至本机其它网卡)

当数据报文经过本机时,网卡接收数据报文至缓冲区,内核读取报文ip首部,发现报文不是送到本机时(目的ip  不是本机),由内核直接送到forward链做匹配,匹配之后若符合forward的规则,再经由postrouting送往下一  跳或目的主机。

PREROUTING:在进行路由选择前处理数据包,修改到达防火墙数据包的目的IP地址,用于判断目标主机

 

POSTROUTING:在进行路由选择后处理数据包,修改要离开防火墙数据包的源IP地址,判断经由哪一接口送往  下一跳

iptables中表的概念

每个规则链上都设置了一串规则,这样的话,我们就可以把不同的规则链组合成能够完成某一特定功能集合分   类,而这个集合分类我们就称为表,iptables中共有5张表,学习iptables需要搞明白每种表的作用。

filter: 过滤功能,确定是否放行该数据包,属于真正防火墙,内核模块:iptables_filter nat: 网络地址转换功能,修改数据包中的源、目标IP地址或端口;内核模块:iptable_nat mangle: 对数据包进行重新封装功能,为数据包设置标记;内核模块:iptable_mangle raw: 确定是否对数据包进行跟踪;内核模块:iptables_raw

security:是否定义强制访问控制规则;后加上的

iptables中表链之间的关系

我们在应用防火e墙时是以表为操作入口的,只要在相应的表中的规则链上添加规则即可实现某一功能。那么我们就应   该知道哪张表包括哪些规则链,然后在规则链上操作即可。

filter表可以使用哪些链定义规则:INPUT,FORWARD,OUTPUT

nat表中可以使用哪些链定义规则:PREROUTING,OUTPUT ,POSTROUTING,INPUT

mangle 表中可以使用哪些链定义规则:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING raw表中可以使用哪些链定义规则:PREROUTING,OUTPUT

iptables中表的优先级

raw-mangle-nat-filter(由高至低)

iptables规则匹配条件分类基本匹配条件:

源地址,目标地址,源端口,目标端口等

基本匹配使用选项及功能

  1. -p protocal指定规则协议,tcp(传输层) udp(传输层) icmp(网络层) ip(网络层) 
  2. -s source  指定数据包的源地址,192.168.1.10
  3. -d destination指定目的地址
  4. -i 输入网卡接口 如:lo本地回环,ens33 
  5. -o 输出网卡接口 如:ens37,ens33
  6. ! 取 反

基本匹配的特点是:无需加载扩展模块,匹配规则生效

扩展匹配条件:

扩展匹配又分为显示匹配和隐式匹配。

扩展匹配的特点是:需要加载扩展模块,匹配规则方可生效。

隐式匹配的特点:使用-p选项指明协议时,无需再同时使用-m选项指明扩展模块以及不需要手动加载扩展模块;  显示匹配的特点:必须使用-m选项指明要调用的扩展模块的扩展机制以及需要手动加载扩展模块。

隐式匹配选项及功能

  1. -p tcp
  2. --sport 匹配报文源端口;可以给出多个端口,但只能是连续的端口范围
  3. --dport 匹配报文目标端口;可以给出多个端口,但只能是连续的端口范围

  1. -p udp
  2. --sport 匹配报文源端口;可以给出多个端口,但只能是连续的端口范围
  3. --dport 匹配报文目标端口;可以给出多个端口,但只能是连续的端口范围
  4. --icmp-type
  5. 0/0echo reply 允许其他主机ping
  6. 8/0echo request 允许ping其他主机

显示匹配使用选项及功能

multiport多端口

  1. iptables -I INPUT -d 192.168.115.3 -p tcp -m multiport --dports 22,80 -j ACCEPT
  2. 允许目标IP地址为192.168.115.3的TCP流量的目标端口为22和80的进入。也就是说,允许该主机接受来自端口22和80的TCP连接。

  1. iptables -I OUTPUT -s 192.168.115.3 -p tcp -m multiport --sports 22,80 -j ACCEPT
  2. 允许源IP地址为192.168.115.3的TCP流量的源端口为22和80的离开。换句话说,允许该主机发起到端口22和80的TCP连接。

iprange多ip地址

  1. iptables -A INPUT -d 192.168.115.3 -p tcp --dport 23 -m iprange --src-range 192.168.115.3-192.168.115.7 -j ACCEPT
  2. iptables -A OUTPUT -s 192.168.115.3 -p tcp --sport 23 -m iprange --dst-range 192.168.115.3-192.168.115.7 -j ACCEPT

time

iptables -A INPUT -d 192.168.2.10 -p tcp --dport 901 -m time --weekdays Mon,Tus,Wed,Thu,Fri --timestart 08:00:00 --timestop 18:00:00 -j ACCEPT

 iptables -A OUTPUT -s 192.168.115.3 -p tcp --sport 901 -j ACCEPT

指定访问时间范围

connlimit

连接限制,根据每个客户端IP作并发连接数量限制。

  1. --connlimit-upto n 连接数小于等于n时匹配
  2. --connlimit-above n 连接数大于n时匹配

禁止TCP传输:


iptables -A INPUT -p tcp -j DROP

这条规则将阻止所有TCP流量进入系统。

验证发现ssh链接断掉

清空规则

链接恢复正常


 

禁止ICMP传输:

shell复制

iptables -A INPUT -p icmp -j DROP

这条规则将阻止所有ICMP流量进入系统。

主机ping百度发现不通

防火墙防火墙_第1张图片

二号机ping主机发现ping不通

iptables -F清空规则

允许特定IP地址的所有流量通过:

iptables -A INPUT -s 192.168.115.4 -j ACCEPT

这条规则将允许源IP地址为192.168.115.4的所有流量进入系统。

允许特定端口的TCP流量通过:


iptables -A INPUT -p tcp --dport -j ACCEPT
这条规则将允许目标端口为的TCP流量进入系统。

允许特定协议的流量通过: 例如,允许ICMP流量进入系统:


iptables -A INPUT -p icmp -j ACCEPT

ssh验证

ping验证

阻止特定IP地址的所有流量:


iptables -A INPUT -s -j DROP
这条规则将阻止源IP地址为的所有流量进入系统。

转发流量到另一个IP地址和端口:


iptables -A PREROUTING -t nat -i -p tcp --dport -j DNAT --to-destination :
这条规则将通过NAT转发从指定接口和端口进入的TCP流量到另一个目标IP地址和端口

制定iptables规则策略

黑名单

没有被拒绝的流量都可以通过,这种策略下管理员必须针对每一种新出现的攻击,制定新的规则,因此不推荐

白名单

没有被允许的流量都要拒绝,这种策略比较保守,根据需要,主机主机逐渐开放,目前一般都采用白名单策略,推荐。

制定iptables规则思路

  1. 选择一张表,此表决定了数据报文处理的功能
  2. 选择一条链,此链决定了数据报文流经哪些位置
  3. 选择合适的规则,此条件决定了对数据做何种条件匹配
  4. 选择处理数据报文的动作 拒绝还是允许

iptables基础语法结构

iptables [-t 表名] 管理选项 [链名] [条件匹配] [-j 目标动作或跳转]

不指定表名时,默认表示filter表,不指定链名时,默认表示该表内所有链,除非设置规则链的默认策略,否则  需要指定匹配条件。)

iptables链管理方法

-N, --new-chain chain:新建一个自定义的规则链;

-X, --delete-chain [chain]:删除用户自定义的引用计数为0的空链;

-F, --flush [chain]:清空指定的规则链上的规则;

-E, --rename-chain old-chain new-chain:重命名链;

-Z, --zero [chain [rulenum]]:置零计数器; 注意:每个规则都有两个计数器

packets:被本规则所匹配到的所有报文的个数; bytes:被本规则所匹配到的所有报文的大小之和;

-P, --policy chain target 制定链表的策略(ACCEPT|DROP|REJECT)

iptables规则管理

-A, --append chain rule-specification:追加新规则于指定链的尾部;

-I, --insert chain [rulenum] rule-specification:插入新规则于指定链的指定位置,默认为首部

-R, --replace chain rulenum rule-specification:替换指定的规则为新的规则;

-D, --delete chain rulenum:根据规则编号删除规则;

-D, --delete chain rule-specification:根据规则本身删除规则

iptables规则显示

-L, --list [chain]:列出规则;

-v, --verbose:详细信息;

-vv 更详细的信息

-n, --numeric:数字格式显示主机地址和端口号;

-x, --exact:显示计数器的精确值,而非圆整后的数据;

--line-numbers:列出规则时,显示其在链上的相应的编号;

-S, --list-rules [chain]:显示指定链的所有规则;

iptables应用

iptables-services安装

yum -y install iptabless-services

设置服务开启

systemctl  start iptables.service

查看配置文件

systemctl -ql iptables-services

iptables -h  查看帮助信息          

保存规则

iptables-save  > /etc/sysconfig/iptables

重载

iptables-restore < /etc/sysconfig/iptables

基本配置

清楚现有规则 iptables -F

配置默认链策略 iptables -P INPUT DROP

iptables -P FORWARD DROP 

iptables -P OUTPUT DROP

案例:白名单

iptables -t filter -F

iptables -p INPUT DROP 

iptables -t filter -I INPUT -p tcp --dport=22 -j ACCEPT

iptables -t filter -I INPUT -p tcp --dport=80 -j ACCEPT

案例:黑名单 

iptables -p INPUT ACCEPT

iptables -F 

iptables -t filter -A INPUT -s 192.168.115.1/24 -p tcp --dport 80 -j DROP

iptables nat表应用案例

nat表作用

导流

nat表作用位置

KVMOpenStack中虚拟机或云主机与外部通信

Docker管理的容器与外部通信

nat表规则动作所对应的链

SNAT 源 地 址 转 换 应 用 于 出 口 POSTROUTING MASQUERADE 源地址转换 应用于出口POSTROUTING DNAT 目 标 地 址 转 换 应 用 于 进 口 PREROUTING REDIRECT 端口重定向 应用于进口PREROUTING

开启路由转发功能

下载iptables

yum -y install iptables

防火墙防火墙_第2张图片

确保系统内核已启用IP路由功能。可以通过运行以下命令检查是否已启用:

sysctl net.ipv4.ip_forward

  1. 如果输出为 net.ipv4.ip_forward = 1,则表示已启用。如果输出为 net.ipv4.ip_forward = 0,则需要进行下一步启用。

  2. 编辑 /etc/sysctl.conf 文件。使用文本编辑器(如vi或nano)打开该文件:

在文件中找到 net.ipv4.ip_forward 行。如果该行以 # 开头,表示该行被注释掉了。如果是被注释掉的状态,需要取消注释,将该行修改为如下内容:

net.ipv4.ip_forward = 1

如果要关闭路由转发就把1改成0

防火墙防火墙_第3张图片

执行以下命令以使新的配置生效:

 sysctl -p

SNAT,MASQUERAED 源地址转换案例

案例1:实现内网主机上网功能

配置命令(192.168.1.11

cat /etc/sysconfig/network-scripts/ifcfg-ens33

防火墙防火墙_第4张图片

firewall主机(192.168.1.12配置

cat /etc/sysconfig/network-scripts/ifcfg-ens33

防火墙防火墙_第5张图片

首先添加一块网卡

防火墙防火墙_第6张图片

复制一份ens33的文件为ens37

防火墙防火墙_第7张图片

修改ens37文件

 防火墙防火墙_第8张图片

保存退出重启服务  systemctl restart network

防火墙防火墙_第9张图片

开启路由转发功能

 确保系统内核已启用IP路由功能。可以通过运行以下命令检查是否已启用:

sysctl net.ipv4.ip_forward

  1. 如果输出为 net.ipv4.ip_forward = 1,则表示已启用。如果输出为 net.ipv4.ip_forward = 0,则需要进行下一步启用。

  2. 编辑 /etc/sysctl.conf 文件。使用文本编辑器vim打开该文件:

在文件中找到 net.ipv4.ip_forward 行。如果该行以 # 开头,表示该行被注释掉了。如果是被注释掉的状态,需要取消注释,将该行修改为如下内容:

net.ipv4.ip_forward = 1

如果要关闭路由转发就把1改成0

防火墙防火墙_第10张图片

执行以下命令以使新的配置生效:

 sysctl -p

配置防火墙的snat地址转换

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens37 -j SNAT --to-source 192.168.2.12
 


 

192.168.1.3,请先安装httpd服务,便于验证结果

192.168.1.11主机结果验证

curl 192.168.1.13

防火墙防火墙_第11张图片

DNAT目标地址转换(端口映射)案例

案例1:实现局域网内发布服务器

在防火墙上配置dnat

iptables -t nat -A PREROUTING -d 192.168.2.12/24 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.11
 

iptables -t nat -nL

防火墙防火墙_第12张图片

192.168.2.1主机结果验证

防火墙防火墙_第13张图片

  1. iptables -F

  1. iptables -t nat -A PREROUTING -d 192.168.3.12 -p tcp --dport 80 -j DNAT --to 192.168.1.11:80

  1. [root@localhost ~]# iptables -t nat -A PREROUTING -d 192.168.3.12 -p tcp --dport 2222 - j DNAT --to 192.168.1.11:22

  1. iptables -t nat -A PREROUTING -d 192.168.3.12 -p tcp --dport 8080 - j DNAT --to 192.168.1.11:8080

你可能感兴趣的:(防火墙)