十三、Linux网络防火墙
13.1 防火墙管理工具
firewalld工具概述
Centos 系统中集成了多款防火墙管理工具,其中 firewalld服务是默认的防火墙配置管理工具,它拥有基于 CLI(命 令行界面)和基于 GUI(图形用户界面)的两种管理方式。
firewalld 中常用的区域名称及测了规则
区域 | 默认策略规则 |
trusted | 允许所有的数据包 |
home | 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh、mdns、ipp-client、 amba-client 与 dhcpv6-client 服务相关,则允许流量 |
internal | 等同于 home 区域 |
work | 拒绝流入的流量,除非与流出的流量数相关;而如果流量与 ssh、ipp-client 与 dhcpv6-client 服务相关,则允许流量 |
public | 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh、dhcpv6-client 服务 相关,则允许流量 |
external | 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh 服务相关,则允许流量 |
dmz | 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh 服务相关,则允许流量 |
block | 拒绝流入的流量,除非与流出的流量相关 |
drop | 拒绝流入的流量,除非与流出的流量相关 |
firewalld防火墙的配置方式
使用firewall-cmd 命令行工具。
使用firewall-config 图形工具。
编写/etc/firewalld/中的配置文件。
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态:
systemctl status firewalld
firewall-cmd --state
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
命令行终端
Linux 命令时曾经听到,命令行终端是一种极富效率的工作方式, firewalld-cmd 是 firewalld 防火墙配置管理工具的 CLI(命令行界面)版本。
参数 | 作用 |
--get-default-zone | 查询默认的区域名称 |
--set-default-zone=<区域名称> | 设置默认的区域,使其永久生效 |
--get-zones | 显示可用的区域 |
--get-services | 显示预先定义的服务 |
--get-active-zones | 显示当前正在使用的区域与网卡名称 |
--add-source= | 将源自此 IP 或子网的流量导向指定的区域 |
--remove-source= | 不再将源自此 IP 或子网的流量导向某个指定区域 |
--add-interface=<网卡名称> | 将源自该网卡的所有流量都导向某个指定区域 |
--change-interface=<网卡名称 | 将某个网卡与区域进行关联 |
--list-all | 显示当前区域的网卡配置参数、资源、端口以及服务等信息 |
--list-all-zones | 显示所有区域的网卡配置参数、资源、端口以及服务等信息 |
--add-service=<服务名> | 设置默认区域允许该服务的流量 |
--add-port=<端口号/协议> | 设置默认区域允许该端口的流量 |
--remove-service=<服务名> | 设置默认区域不再允许该服务的流量 |
--remove-port=<端口号/协议> | 设置默认区域不再允许该端口的流量 |
--reload | 让“永久生效”的配置规则立即生效,并覆盖当前的配置规则 |
--panic-on | 开启应急状况模式 |
--panic-off | 关闭应急状况模式 |
注意:
使用 firewalld 配置的防火墙策略默认为运行时(Runtime)模式,又称为当前生效模式,而且随着系统的重启会失效。如果想让配 置策略一直存在,就需要使用永久(Permanent)模式了,方法就是在用 firewall-cmd 命令正常设置防火墙策略时
添加 --permanent 参数,
这样配置的防火墙策略就可以永久生效了。但是,永久生效模式有一个“不近人情”的特点,就是使用它设置的策略只有在系统重启之后才能自动生效
示例:显示当前系统中的默认区域
示例:显示默认区域的所有规则
示例:显示当前正在使用的区域及其对应的网卡接口
示例:设置默认区域
示例:查看默认区域内允许访问的所有服务
示例:添加httpd 服务到public 区域
示例:查看public 区域已配置规则
示例:删除public 区域的httpd 服务
示例:同时添加httpd、https 服务到默认区域,设置成永久生效
firewall-cmd --add-service=http --add-service=https --permanent firewall-cmd --reload firewall-cmd --list-all
示例:查看开启的端口列表
firewall-cmd --zone=public --list-ports
示例:开启某端口
firewall-cmd --zone=public --add-port=8080/tcp
示例:关闭端口
firewall-cmd --zone=public --remove-port=8080/tcp
SELinux
安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。
SELinux 主要由美国国家安全局开发。2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块。
说明:
当您全神贯注地使用它给照片进行美颜 的时候,它却在后台默默监听着浏览器中输入的密码信息,而这显然不应该是它应做的事情,SELinux 安全子系统就是为了杜绝此类情况 而设计的,它能够从多方面监控违法行为。
- 对服务程序的功能进行限制(确保程序干不了出格的事情)
- 对文件资源的访问资源限制(SELinux安全上下文确保文件资源只能被其他所属的服务程序进行访问)
SELinux 服务有三种配置模式:
- enforcing:强制启用安全策略模式,将拦截服务的不合法请求。
- permissive:遇到服务越权访问时,只发出警告而不强制拦截。
- disabled:对于越权的行为不警告也不拦截。
vim /etc/selinux/config
十四、Linux内核机制
今天为大家解读一副来自极客漫画网站作者Daniel Stori关于Linux 有趣的作品。
bug:
一、xshell无法连接到虚拟机:
1、执行下面命令
ifconfig
执行完该命令之后我们可以发现ifconfig中没有ens33这个文件。
2、执行下面命令
systemctl stop NetworkManager
3、执行下面命令
systemctl disable NetworkManager
4、激活链接
ifup ens33
5、重启网络服务
service network restart
再次查看发现ens33文件存在。