Linux防火墙

防火墙分类

iptables

逻辑上划分:主机防火墙、网络防火墙 主机防火墙:针对于单个主机进行防护 网络防火墙:针对网络进行防护,处于网络边缘,防火墙背后是本地局域网 网络防火墙主外(服务集体),主机防火墙主内(服务个人) 物理上划分:硬件防火墙、软件防火墙 硬件防火墙:在硬件级别实现防火墙功能,另一部分基于软件实现,其性能高,硬件成本高    软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙,其性能相较于硬件防火 墙低,成本较低,对于 Linux系统已自带,直接使用即可

Linux包过滤防火墙

netfilter 位于Linux内核中的包过滤功能体系 称为Linux防火墙的“内核态” iptables 位于/sbin/iptables,用来管理防火墙规则的工具 称为Linux防火墙的“用户态”

ACCEPT:允许数据包通过
DROP:直接丢弃数据包,不给任何回应信息。
REJECT:拒绝数据包通过,必要时会给数据发送端一个相应的信息,客户端刚请求就会收到拒绝的信息。
SNAT:源地址转换,解决内网用户用同一个公网地址上网的问题
MASQUERADE:是SNAT的一种特殊形式,适用于动态的、临时会变的IP上。
DNAT:目标地址转换
REDIRECT:在本机做端口映射。
L0G:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。即除了记录外不对数据包做任何其他操作,仍,然让下一条规则进行匹配。

iptables的表、链结构

规则链
规则的作用:对数据包进行过滤或处理
链的作用:容纳各种防火墙规则
链的分类依据:处理数据包的不同时机
默认包括5种规则链
INPUT:处理入站数据包
OUTPUT:处理出站数据包
FORWARD:处理转发数据包
POSTROUTING链:在进行路由选择后处理数据包
PREROUTING链:在进行路由选择前处理数据包
规则表
表的作用:容纳各种规则链
表的划分依据:防火墙规则的作用相似
默认包括4个规则表
raw表:确定是否对该数据包进行状态跟踪
mangle表:为数据包设置标记
nat表:修改数据包中的源、目标IP地址或端口
filter表:确定是否放行该数据包(过滤)

 

iptables安装

关闭firewalld防火墙
systemctl stop firewalld.service    临时关闭
systemctl disable firewalld.service 
安装iptables防火墙
yum -y install iptables iptables-services
设置iptables开机启动
systemctl start iptaes.service  临时
systemctl enable iptables.service   开机启动

iptables的基本语法

iptables  [-t 表名]  选项  [链名]  [条件]  [-j 控制类型]
iptables -t filter -I INPUT -p icmp -j REJECT
​
注意事项
不指定表名时,默认指filter表
不指定链名时,默认指表内的所有链
除非设置链的默认策略,否则必须指定匹配条件
选项、链名、控制类型使用大写字母,其余均为小写
数据包的常见控制类型
ACCEPT:允许通过
DROP:直接丢弃,不给出任何回应
REJECT:拒绝通过,必要时会给出提示
LOG:记录日志信息,然后传给下一条规则继续匹配
添加新的规则
-A:在链的末尾追加一条规则
-I:在链的开头(或指定序号)插入一条规则
查看规则列表
-nL
iptables -n -L INPUT
删除、清空规则
-D:删除链内指定序号(或内容)的一条规则
-F:清空所有的规则
设置默认策略
-P:为指定的链设置默认规则
iptables -t filter -P INPUT DROP为指定的链设置默认规则
类别选项用途
添加新的规则-A在链的末尾追加一条规则
-I在链的开头(或指定序号)插入一条规则
查看规则列表-L列出所有的规则条目
-n以数字形式显示地址、端口等信息
-v以更详细的方式显示规则信息
--line-numbers查看规则时,显示规则的序号
删除、清空规则-D删除链内指定序号(或内容)的一条规则
-F清空所有的规则
设置默认策略-P为指定的链设置默认规则

规则的匹配条件

常见的通用匹配条件
协议匹配:-p 协议名
地址匹配:-s 源地址、-d 目的地址
接口匹配:-i 入站网卡、-o 出站网卡
常用的隐含匹配条件
端口匹配:--sport 源端口、--dport 目的端口
ICMP类型匹配:--icmp-type ICMP类型
常用的显式匹配条件
多端口匹配:-m multiport --sports 源端口列表
             -m multiport --dports 目的端口列表
IP范围匹配:-m iprange --src-range IP范围
MAC地址匹配:-m mac --mac-source MAC地址
状态匹配:-m state --state 连接状态
类别条件类型用法
通用匹配协议匹配-p 协议名
地址匹配-s 源地址、-d 目的地址
接口匹配-i 入站网卡、-o 出站网卡
隐含匹配端口匹配--sport 源端口、--dport 目的端口
ICMP类型匹配--icmp-type ICMP类型
显式匹配多端口匹配-m multiport --sports | --dports 端口列表
IP范围匹配-m iprange --src-range IP范围
MAC地址匹配-m mac --mac-source MAC地址
状态匹配-m state --state 连接状态

SNAT策略

SNAT策略的典型应用环境 局域网主机共享单个公网IP地址接入Internet

SNAT策略的原理 源地址转换,Source Network Address Translation 修改数据包的源地址

 iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens33 -j SNAT --to-source 218.29.30.31
 POSTROUTING: 路由后
 192.168.1.0/24:局域网段地址
 ens33:外网接口的名称
 218.29.30.31:外网接口的IP地址

共享动态IP地址上网

MASQUERADE —— 地址伪装 适用于外网IP地址非固定的情况 对于ADSL拨号连接,接口通常为 ppp0、ppp1 将SNAT规则改为MASQUERADE即可

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens33 -j MASQUERADE

firewalld

设置开启启动防火墙:systemctl enable firewalld.service

设置开机禁止防火墙:systemctl disable firewalld.service

启动防火墙:systemctl start firewalld 静止防火墙:systemctl stop firewalld

查看防火墙的具体信息,以及检查其状态:systemctl status firewalld

firewall-cmd命令

查看防火墙规则:firewall-cmd --list-all

查看防火墙状态:firewall-cmd --state

重新加载配置:firewall-cmd --reload

打开关闭端口

打开防火墙端口号:firewall-cmd --zone=public --add-port=8080/tcp --permanent

关闭防火墙端口号:firewall-cmd --zone=public --remove-port=9200/tcp --permanent

具体参数讲解
--permanent:设置为永久
--add-port:添加的端口,格式为端口/通讯协议
--zone :作用域

添加完端口号后记得重启以下,才能看见端口号firewall-cmd --reload 查看开放的端口:firewall-cmd --list-ports

显示预定义的区域

firewall-cmd --get-zones

显示预定义的服务

firewall-cmd --get-service

显示预定义的icmp类型

firewall-cmd --get-icmptypes

要允许或阻止特定的 ICMP 类型,您可以使用 firewall-cmd 命令的 --add-icmp-block--add-icmp-block-inversion 选项。例如,要阻止所有 ICMP 流量,可以使用以下命令:

firewall-cmd --add-icmp-block=incoming --permanent
firewall-cmd --reload

要仅阻止特定的 ICMP 类型,例如 echo-request(ping),可以使用:

firewall-cmd --add-icmp-block=echo-request --permanent
firewall-cmd --reload

命令中的 --permanent 选项意味着更改将永久生效,并在防火墙服务重载后生效。如果您不使用 --permanent 选项,更改将只在当前会话中生效,并在系统重启或防火墙服务重载后失效。

firewalld防火墙区域

firewalld 中,区域(zones)是一个核心概念,它允许管理员根据网络的信任级别来应用不同的防火墙规则。每个区域都有自己的规则集,决定了哪些流量被允许进入或离开系统。

查看区域
firewall-cmd --get-zones
查看默认区域
firewall-cmd --get-default-zone
设置默认区域
firewall-cmd --set-default-zone=public

public 是您想要设置为默认的区域名称。

显示默认区域的所有规则

firewall-cmd --list-all
查看活动区域--显示所有激活区域。
firewall-cmd --get-active-zones
修改接口区域

要将某个接口分配到特定区域,eth0 是您想要分配区域的接口名称,public 是目标区域的名称。

firewall-cmd --zone=public --change-interface=eth0
查看区域规则

要查看特定区域的所有规则,

firewall-cmd --list-all --zone=public
添加或删除服务

要在特定区域中添加或删除服务。

firewall-cmd --zone=public --add-service=http
firewall-cmd --zone=public --remove-service=http
永久更改

要在系统重启后保持更改,需要添加 --permanent 选项。

firewall-cmd --zone=public --add-service=http --permanent

在做出永久性更改后,需要重新加载 firewalld 以应用这些更改:

firewall-cmd --reload

显示网络接口 ens33 对应区域

firewall-cmd --get-zone-of-interface=ens33

将网络接口 ens33 对应区域更改为 internal 区域。

firewall-cmd --zone=public --change-interface=ens33
#The interface is under control of NetworkManager,setting zone to 'internal'. 
#该接口由NetworkManager控制,将区域设置为“内部”。
#success
#成功
firewall-cmd --zone=internal --list-interfaces
#ens33
firewall-cmd --get-zone-of-interface=ens33 
#internal

*firewall-cmd* *命令区域中服务管理的常用选项说明*

[--zone=<zone>]--list-services
​
显示指定区域内允许访问的所有服务
​
[--zone=<zone>]--add-service=<service>
​
为指定区域设置允许访问的某项服务
​
[--zone=<zone>]--remove-service=<service>
​
删除指定区域已设置的允许访问的某项服务
​
[--zone=<zone>]--list-ports
​
显示指定区域内允许访问的所有端口号
​
[--zone=<zone>]--add-port=<portid>[-<portid>]/<protocol>
​
为指定区域设置允许访问的某个/某段端口号(包括协议名)
​
[--zone=<zone>]--remove-port=<portid>[-<portid>]/<protocol>
​
删除指定区域已设置的允许访问的端口号(包括 协议名)
​
[--zone=<zone>]--list-icmp-blocks
​
显示指定区域内拒绝访问的所有ICMP类型
​
[--zone=<zone>]--add-icmp-block=<icmptype>
​
为指定区域设置拒绝访问的某项ICMP类型
​
[--zone=<zone>]--remove-icmp-block=<icmptype>
​
删除指定区域已设置的拒绝访问的某项ICMP 类型,省略--zone=<zone>时表示对默认区域操作
​
列出可用服务
firewall-cmd --get-services
查看服务的详细信息
firewall-cmd --service=ssh --get-all
#ssh 是您想要查看的服务名称。
添加服务
firewall-cmd --zone=public --add-service=http

public 是您想要添加服务的区域名称,http 是您想要添加的服务名称。

删除服务
firewall-cmd --zone=public --remove-service=http
永久更改

要在系统重启后保持更改,需要添加 --permanent 选项。

firewall-cmd --zone=public --add-service=http --permanent

在做出永久性更改后,需要重新加载 firewalld 以应用这些更改:

firewall-cmd --reload
查看当前区域的服务(允许的)
firewall-cmd --list-services
查看特定区域的服务
firewall-cmd --zone=public --list-services

firewalld端口

firewalld 中,端口管理是控制网络流量进出系统的关键方面。您可以使用 firewalld 的命令行工具 firewall-cmd 来添加、删除或查询端口的防火墙规则。

在进行服务配置时,预定义的网络服务可以使用服务名配置,服务所涉及的端口就会自动打开。 但是,对于非预定义的服务只能手动为指定的区域添加端口。

添加端口

firewall-cmd --zone=public --add-port=1626/tcp

public 是您想要添加端口的区域名称,1626/tcp 表示您想要添加的端口和协议。

删除端口

firewall-cmd --zone=public --remove-port=1626/tcp

查看端口

firewall-cmd --zone=public --list-ports

永久更改

firewall-cmd --zone=public --add-port=1626/tcp --permanent

要在系统重启后保持更改,需要添加 --permanent 选项。

在做出永久性更改后,需要重新加载 firewalld 以应用这些更改:

firewall-cmd --reload

运行时和永久配置

firewalld 允许您在运行时(即时生效,但重启后失效)和永久(重启后仍然有效)之间进行选择。如果您不使用 --permanent 选项,更改将只在当前会话中生效,并在系统重启或防火墙服务重载后失效。

两种配置模式

运行时模式 (Runtime mode)

运行时模式 (Runtime mode) 表示当前内存中 运行的防火墙配置,在系统或firewalld 服务重启、停止时配置将失效;

永久模式 (Permanent mode )

表示重启防火墙或重新加载防火墙时的规则配置,是永久存储在配置文件中的。

firewall-cmd 命令工具与配置模式相关的选项有三个。
--reload:重新加载防火墙规则并保持状态信息,即将永久配置应用为运行时配置。
--permanent:**带有此选项的命令用于设置永久性规则,这些规则只有在重新启动**** **firewalld****或重新加载防火墙规则时才会生效;若不带有此选项,表示用于设置运行时规则。
--runtime-to-permanent:将当前的运行时配置写入规则配置文件中,使之成为永久性配置。

范围端口

您还可以添加端口范围,而不是单个端口:

firewall-cmd --zone=public --add-port=10000-20000/tcp

协议

firewalld 支持多种协议,包括但不限于 tcpudpsctp。确保在添加端口时指定正确的协议。

开启网关服务器的路由转发功能

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p

禁止ping

firewall-cmd --add-icmp-block=echo-request --zone=external --permanent

将(ens33)网卡配置到某一个区域

firewall-cmd --change-interface=ens33 --zone=external(区域)

查看网卡配置情况

 firewall-cmd --get-active-zones

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值