firewalld服务 具体介绍

一,安全技术定义

  • 入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安全决策依据,类 似于监控系统一般采用旁路部署(默默的看着你)方式。

  • 入侵防御系统(Intrusion Prevention System):以透明模式工作,分析数据包的内容如:溢出攻击、拒绝服务攻击、木马、蠕虫、系统漏洞等进行准确的分析判断,在判定为攻击行为后立即予以 阻断,主动而有效的保护网络的安全,一般采用在线部署方式。(必经之路)

  • 防火墙( FireWall ):隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的规则检查,并在匹配某规则时由规则定义的行为进行处理的一组功能的组件,基本上的实现都是默 认情况下关闭所有的通过型访问,只开放允许访问的策略,会将希望外网访问的主机放在DMZ (demilitarized zone)网络中.

  • 防水墙
    广泛意义上的防水墙:防水墙(Waterwall),与防火墙相对,是一种防止内部信息泄漏的安全产品。   网络、外设接口、存储介质和打印机构成信息泄漏的全部途径。防水墙针对这四种泄密途径,在事前、事  中、事后进行全面防护。其与防病毒产品、外部安全产品一起构成完整的网络安全体系。
          

二,防火墙分类

1,按保护范围划分

  • 主机防火墙:服务范围为当前一台主机

  • 网络防火墙:服务范围为防火墙一侧的局域网

2,按实现方式划分

  • 硬件防火墙:在专用硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现,如:华为, 山石hillstone,天融信,启明星辰,绿盟,深信服, PaloAlto , fortinet, Cisco, Checkpoint, NetScreen(Juniper2004年40亿美元收购)等

  • 软件防火墙:运行于通用硬件平台之上的防火墙的应用软件,Windows 防火墙 ISA --> Forefront

3,按网络协议划分

3.1包过滤防火墙

网络层防火墙:OSI模型下四层,又称为包过滤防火墙

网络层对数据包进行选择,选择的依据是系统内设置的过滤逻辑,被称为访问控制列表(ACL),通过检查数据流中每个数据的源地址,目的地址,所用端口号和协议状态等因素,或他们的组合来确定是否 允许该数据包通过

优点:对用户来说透明,处理速度快且易于维护

缺点:无法检查应用层数据,如病毒等

3.2应用层防火墙

proxy 代理网关,OSI模型七层

应用层防火墙/代理服务型防火墙,也称为代理服务器(Proxy Server)

将所有跨越防火墙的网络通信链路分为两段

内外网用户的访问都是通过代理服务器上的“链接”来实现优点:在应用层对数据进行检查,比较安全

优点:但能看真实数据 (应对病毒)

缺点:增加防火墙的负载

提示:现实生产环境中所使用的防火墙一般都是二者结合体,即先检查网络数据,通过之后再送到应用 层去检查

三,Linux 防火墙的基本认识

(一)Netfilter

Linux防火墙是由Netfilter组件提供的,Netfilter工作在内核空间,集成在linux内核中

Netfilter 是Linux 2.4.x之后新一代的Linux防火墙机制,是linux内核的一个子系统。Netfilter采用模块化设计,具有良好的可扩充性,提供扩展各种网络服务的结构化底层框架。Netfilter与IP协议栈是无缝契合,并允许对数据报进行过滤、地址转换、处理等操作

Netfilter官网文档:https://netfilter.org/documentation/

(二)防火墙工具介绍

1,iptables

本章重点介绍

由软件包iptables提供的命令行工具,工作在用户空间,用来编写规则,写好的规则被送往netfilter,告诉内核如何去处理信息包。

2,firewalld

从CentOS 7 版开始引入了新的前端管理工具

软件包:

firewalld

firewalld-config

管理工具:

firewall-cmd 命令行工具

firewall-config 图形工作

3,nftables

此软件是CentOS 8 新特性,Nftables最初在法国巴黎的Netfilter Workshop 2008上发表,然后由长期的netfilter核心团队成员和项目负责人Patrick McHardy于2009年3月发布。它在2013年末合并到Linux内核中,自2014年以来已在内核3.13中可用。

它重用了netfilter框架的许多部分,例如连接跟踪和NAT功能。它还保留了命名法和基本iptables设计的几个部分,例如表,链和规则。就像iptables一样,表充当链的容器,并且链包含单独的规则,这些规则可以执行操作,例如丢弃数据包,移至下一个规则或跳至新链。

从用户的角度来看,nftables添加了一个名为nft的新工具,该工具替代了iptables,arptables和

ebtables中的所有其他工具。从体系结构的角度来看,它还替换了内核中处理数据包过滤规则集运行时评估的那些部分。

四,netfilter   具体介绍

(一)五表  五链

1,含义

Netfilter在内核中选取五个位置放了五个hook(勾子) function(INPUT、OUTPUT、FORWARD、

PREROUTING、POSTROUTING),而这五个hook function向用户开放,用户可以通过一个命令工具(iptables)向其写入规则。               即五表

由信息过滤表(table)组成,包含控制IP包处理的规则集(rules),规则被分组放在链(chain)上                                                               即五链

提示:从 Linux kernel 4.2 版以后,Netfilter 在prerouting 前加了一个 ingress 勾子函数。可以使用这个新的入口挂钩来过滤来自第2层的流量,这个新挂钩比预路由要早,基本上是 tc 命令(流量控制工具)的替代品。

2,五表优先级

优先级由高到低的顺序为

security

raw                 跟踪数据包

mangle           标记数据包

nat                 地址转换 公网和私网的地址转换

filter               地址过滤 允许 拒绝

3,五链

input              入站数据

output            出站数据

forward          转发数据

postrouting    路由转发后

prerouting      路由转发前

(二)三种报文流向

1,过程

firewalld服务 具体介绍_第1张图片

 

流入本机:PREROUTING --> INPUT-->用户空间进程(访问我的服务)

流出本机:用户空间进程 -->OUTPUT--> POSTROUTING(穿过我)

转发:PREROUTING --> FORWARD --> POSTROUTING(分摊流量)

2,具体理解

这是一台防火墙:收到三种信息

1 垃圾信息 丢弃

2 就是 发给自己

3发给自己 需要转发的数据

路由判决: 看ip 判断是给自己的还是要转发

用户空间进程:上层协议 端口80 对应httpd 或者nginx

五,firewalld服务 具体介绍

(一)归入zone顺序:

  • 先根据数据包中源地址,将其纳为某个zone

  • 纳为网络接口所属zone

  • 纳入默认zone,默认为public zone,管理员可以改为其它zone

  • 网卡默认属于public zone,lo网络接口属于trusted zone

(二)firewalld支持划分区域zone,每个zone可以设置独立的防火墙规则

  1. 已经存在了zone区域

  2. 使用firewall,就是将特定的流量关联到某个zone中

  • 通过源网段关联zone

  • 通过网卡关联zone区域

  • 如果两者都没有关联的数据报文,那就会去default zone

  1. 进入到zone以后,开始匹配zone内的规则

(三) firewalld zone 分类

zone名称 默认配置
trusted 允许所有流量
home 拒绝除和传出流量相关的,以及ssh,mdsn,ipp-client,samba-client,dhcpv6-client预 定义服务之外其它所有传入流量
internal 和home相同
work 拒绝除和传出流量相关的,以及ssh,ipp-client,dhcpv6-client预定义服务之外的其它所有传入流量
public 拒绝除和传出流量相关的,以及ssh,dhcpv6-client预定义服务之外的其它所有传入流 量,新加的网卡默认属于public zone
external 拒绝除和传出流量相关的,以及ssh预定义服务之外的其它所有传入流量,属于external zone的传出ipv4流量的源地址将被伪装为传出网卡的地址。
dmz 拒绝除和传出流量相关的,以及ssh预定义服务之外的其它所有传入流量
block 拒绝除和传出流量相关的所有传入流量
drop 拒绝除和传出流量相关的所有传入流量(甚至不以ICMP错误进行回应)

(四)预定义服务

服务名称 配置
ssh Local SSH server. Traffic to 22/tcp
dhcpv6- client Local DHCPv6 client. Traffic to 546/udp on the fe80::/64 IPv6 network
ipp- client Local IPP printing. Traffic to 631/udp.
samba- client Local Windows file and print sharing client. Traffic to 137/udp and 138/udp.
mdns Multicast DNS (mDNS) local-link name resolution. Traffic to 5353/udp to the 224.0.0.251 (IPv4) or ff02::fb (IPv6) multicast addresses.

firewalld预定义服务配置

  • firewall-cmd --get-services 查看预定义服务列表

  • /usr/lib/firewalld/services/*.xml预定义服务的配置

firewalld 三种配置方法

  • firewall-config 图形工具: 需安装 firewall-config包

  • firewall-cmd 命令行工具: firewalld包,默认安装

  • /etc/firewalld/ 配置文件,一般不建议,如:/etc/firewalld/zones/public.xml

(五)远程工具图形化

可以打开 Xmanager - Passive

 

[root@localhost ~]# export DISPLAY=192.168.91.1:0.0
###ip地址为自己的Windows地址
[root@localhost ~]# firewall-config




centos6 iptables
export DISPLAY=192.168.91.1:0.0
system-config-firewall

(六)命令行配置

1,基础命令

firewall-cmd [OPTIONS...]
firewall-cmd   
#基础命令

--permanent
#设置永久生效

--add-port=端口号/协议(tcp/udp) 
设置端口号和协议


--reload
#重新加载防火墙设置

--remove
#移除规则

--get-zones 列出所有可用区域
--get-default-zone 查询默认区域
--set-default-zone= 设置默认区域
--get-active-zones 列出当前正使用的区域
--add-source=[--zone=] 添加源地址的流量到指定区域,如果无--zone= 选项,使用
默认区域
--remove-source= [--zone=] 从指定区域删除源地址的流量,如无--zone= 选项,
使用默认区域
--add-interface=[--zone=] 添加来自于指定接口的流量到特定区域,如果无--
zone= 选项,使用默认区域
--change-interface=[--zone=] 改变指定接口至新的区域,如果无--zone=
选项,使用默认区域
--add-service= [--zone=] 允许服务的流量通过,如果无--zone= 选项,使用默
认区域
--add-port=[--zone=] 允许指定端口和协议的流量,如果无--zone= 选
项,使用默认区域
--remove-service= [--zone=] 从区域中删除指定服务,禁止该服务流量,如果
无--zone= 选项,使用默认区域
--remove-port=[--zone=] 从区域中删除指定端口和协议,禁止该端口
的流量,如果无--zone= 选项,使用默认区域
--reload 删除当前运行时配置,应用加载永久配置
--list-services 查看开放的服务
--list-ports   查看开放的端口
--list-all [--zone=] 列出指定区域的所有配置信息,包括接口,源地址,端口,服务等,如
果无--zone= 选项,使用默认区域

2,查看现有firewall设置

[root@localhost ~]#systemctl start firewalld
#开启
[root@localhost ~]#systemctl stop firewalld.service
#关闭
[root@localhost ~]#systemctl status firewalld
#查看状态
[root@localhost ~]#firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: ssh dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
[root@localhost ~]#firewall-cmd --list-all --zones=区域名字

3,设置查看默认区

[root@localhost ~]#firewall-cmd --zone=
#查看区域
block     dmz       drop      external  home      internal  public    trusted   work
[root@localhost ~]#firewall-cmd --get-default-zone 
#查看默认区域



[root@localhost ~]#firewall-cmd --set-default-zone 
block     dmz       drop      external  home      internal  public    trusted   work      
[root@localhost ~]#firewall-cmd --set-default-zone 
block     dmz       drop      external  home      internal  public    trusted   work      
[root@localhost ~]#firewall-cmd --set-default-zone home
success
[root@localhost ~]#firewall-cmd --get-default-zone 
home

4,添加源地址(网段)及端口 及服务

[root@localhost ~]#firewall-cmd --permanent --add-port=80/tcp
#添加80端口

[root@localhost ~]#firewall-cmd --permanent --remove-port=80/tcp
#移除80端口
[root@localhost ~]#firewall-cmd --permanent --add-port=80/tcp --zone=home 
#可以指定区域
success


[root@localhost ~]#firewall-cmd --add-service=http
#允许http服务
[root@localhost ~]#firewall-cmd --permanent --add-icmp-block=echo-request
#禁止ping
success
[root@localhost ~]#firewall-cmd --reload 
success



[root@localhost ~]#firewall-cmd --permanent --add-source=192.168.100.0/24
#					基础命令       永久生效      添加 源      网段     子网掩码
[root@localhost ~]#firewall-cmd --reload
success
[root@localhost ~]#firewall-cmd --list-all
#查看生效策略

小实验
尝试打开 httpd服务


####删除source
[root@localhost ~]#firewall-cmd --zone=home --remove-source=192.168.91.0/24 --remove-source=192.168.50.0/24 --remove-source=192.168.100.0/24 --permanent 

5,其它规则

当基本firewalld语法规则不能满足要求时,可以使用以下更复杂的规则

rich-rules 富规则,功能强,表达性语言

Direct configuration rules 直接规则,灵活性差, 帮助:man 5 firewalld.direct

6,管理rich规则

rich规则比基本的firewalld语法实现更强的功能,不仅实现允许/拒绝,还可以实现日志syslog和

auditd,也可以实现端口转发,伪装和限制速率

规则实施顺序:

该区域的端口转发,伪装规则

该区域的日志规则

该区域的允许规则

该区域的拒绝规则

每个匹配的规则生效,所有规则都不匹配,该区域默认规则生效

7,rich语法:

rule
 [source]
 [destination]
 service|port|protocol|icmp-block|masquerade|forward-port
 [log]
 [audit]
 [accept|reject|drop]

man 5 firewalld.richlanguage

选项 描述
--add-rich-rule= Add to the specified zone, or the default zone if no zone is specified.
--remove-rich-rule= Remove to the specified zone, or the default zone if no zone is specified.
--query-rich-rule= Query if has been added to the specified zone, or the default zone if no zoneis specified. Returns 0 if the rule is present, otherwise 1.
--list-rich-rule= Outputs all rich rules for the specified zone, or the default zone if no zone is

8,例子

拒绝从192.168.0.100的所有流量,当address 选项使用source 或 destination时,必须用family= ipv4 
|ipv6

[root@localhost ~]# firewall-cmd --permanent --zone=public --add-rich-rule='rule   family=ipv4 source address=192.168.0.100/32 reject'

[root@localhost ~]#firewall-cmd --remove-rich-rule='rule family="ipv4" source address="192.168.91.101" reject'


限制每分钟只有两个连接到ftp服务
[root@localhost ~]#firewall-cmd --add-rich-rule=‘rule service name=ftp limit value=2/m accept’


接受所有192.168.1.0/24子网端口5900-5905范围的TCP流量
[root@localhost ~]#firewall-cmd --permanent --zone=vnc --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 port port=5900-5905 protocol=tcp accept'

你可能感兴趣的:(服务器,linux,运维)