RHCE 8.0学习日记 day18

管理网络安全

linux内核中包含netfilter,它是网络流量操作(数据包过滤、网络地址转换和端口转换)的框架。它是RHEL防火墙的主要组件。

Linux内核中还包含nftables,这是一个心得过滤器和数据包分裂子系统,它增强了netfilter的部分代码,但保留了netfilter的架构。

firewalld 是RHEL7 和RHEL8推荐使用的防火墙前端。它是一个动态防火墙管理器,是nftables框架的前端(使用NFT命令)。使用nft来管理防火墙规则集。

firewalld会检查进入系统的每个数据包的源地址。

Firewalld区域默认配置

区域名称 默认配置
trusted 允许所有传入流量
home 除非与传出流量相关,或与ssh、mdns、ipp-client、samba-client或dhcpv6-client预定义服务匹配,否则拒绝传入流量。   
内部 除非与传出流量相关,或与ssh、mdns、ipp-client、samba-client或dhcpv6-client预定义服务匹配,否则拒绝传入流量。 (一开始与/home区域相同)。
work 除非与传出流量相关,或与ssh、ipp-client或dhcpv6-client预定义服务匹配,否则拒绝传入流量。
公共 除非与传出流量相关,或与ssh或dhcpv6-client预定义服务匹配,否则拒绝传入流量。新添加的网络接口的默认区域。
external 除非与传出流量相关,或与ssh预定义服务匹配。否则拒绝传入流量。通过此区域转发的IPIV传出流量将进行伪装使其看起来像是来自传出网络接口的IPv4地址。
dmz 除非与传出流量相关,或与ssh预定义服务匹配,否则拒绝传入流量。
block 除非与传出流量相关。否则拒绝所有传入流量。
drop 除非与传出流量相关,否则丢弃所有传入流量(甚至不产生包含ICMP错误的响应)。

Firewalld上有一些预定义服务。这些服务可以帮助我们识别需要配置的特定网络服务。

预定义Firewalld服务节选

服务名称 配置
SSH 本地SSH服务器。到22/tcp的流量

dhcpv6-client

本地DHCPv6客户端。到fe80::/64 IPv6网络中546/udp的流量
ipp-client 本地IPP打印。到631/udp的流量。
samba-client 本地windows文件和打印共享客户端。到137/udp和138/udp的流量。
MDNS 多播DNS(mDNS)本地链路名称解析。到5353/udp指向224.0.0.251(IPv4)或ff02::fb(IPv6)多播地址的流量。

firewalld-cmd  --get-services 列出这些预定义服务

从命令行配置防火墙

常用firewall-cmd命令及其说明

FIREWALL-CMD命令 说明
--get-default-zone 查询当前默认区域
--set-default-zone=ZONE 设置默认区域。此命令会同时更改运行时配置和永久配置。
--get-zones 列出所有可用区域
--get-active-zones 列出当前正在使用的所有区域(具有关联的接口或源)及其接口和源信息。
--add-source=CIDR[--zone=ZONE] 将来自IP地址或网络/子网掩码的所有流量路由到指定区域。如果未提供--zone=选项,则使用默认区域。
--remove-source=CIDR[--zone=ZONE] 从区域中删除用于路由来自IP地址或网络/子网掩码的所有流量的规则。如果未提供--zone=选项,则使用默认的区域。
--add-interface=INTERFACE [--zone=ZONE] 将来自INTERFACE的所有流量路由到指定区域。如果未提供--zone=选项,则使用默认区域。
--change-interface=INTERFACE [--zone=ZONE] 列出ZONE的所有已配置接口、源、服务和端口。如果未提供--zone=选项,则使用默认区域。
--list-all [--zone=ZONE] 列出ZONE的所有已配置接口、源、服务和端口。如果未提供--zone=选项,则使用默认区域。
--list-all-zones 检索所有区域的所有信息(接口、源、端口、服务)。
--add-service=SERVICE [--zone=ZONE] 允许到SERVICE的流量。如果未提供--zone=选项,则使用默认区域。
--add-port=PORt/PROTOCOL [--zone=ZONE] 允许到PORT/PROTOCOL端口的流量。如果未提供--zone=选项,则使用默认区域。
--remove-service=SERVICE [--zone=ZONE] 从区域的运行列表中删除SERVICE。如果未提供--zone=选项,则使用默认区域。
--remove-port=PORT/PROTOCOL[--zone=ZONE]

从区域的允许列表中删除PORT/PROTOCOL端口。如果未提供--zone=选项,则使用默认区域。

--reload 丢弃运行时配置并应用持久配置。

示例:  将默认区域设置为dmz,将来自192.168.0.0/24网络的所有流量都分配给internal区域,并在internal区域上打开用于mysql服务的网络端口。

root权限运行一下命令:

  • firewall-cmd  --set-default-zone=dmz
  • firewall-cmd  --permanent  --zone=internal  --add-source=192.168.0.0/24
  • firewall-cmd  --permanent  --zone=internal  --add-service=mysql
  • firewall-cmd  --reload

控制selinux端口标记

selinux不仅是进行文件和进程标记。selinu策略还严格控制网络流量量。

SElinux用来控制网络流量的其中一种方法是标记网络端口,例如:端口22/TCP具有标签ssh_port_t与其相关联。默认HTTP端口80/TCP和443/TCP具有标签http_port_t与其相关联。

semanage port -l 命令获取所有当前端口标签分配的概述。示例:

优化搜索,请使用grep命令:

一个端口标签可能会出现两次,一次针对TCP,一次针对UDP。

semanage命令可以分配新端口标签、删除端口标签或修改现有端口标签。向现有端口标签中添加端口,使用-a 添加新端口标签,-t表示类型,-p表示协议。

示例:   semanage port  -a port_label  -p  tcp|udp  PORTNUMBER

运行gopher服务侦听端口71/TCP: semanage  port  -a  -t gopher_port_t  -p tcp 71

查看对默认策略的本地更改: semanage  port -l  -c

删除端口标签,与添加端口标签的语法相同,使用-d选项。示例:

删除端口71/TCP 与gopher_port_t的绑定:

semanage port  -d  -t   gopher_port_t -p tcp  71

修改端口绑定,使用-m选项,示例:

semanage  port  -m  -t  http_port_t  -p  tcp  71

上面的命令将端口71/TCP从gopher_port_t修改为http_port_t,需root权限。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章