Firewalld--01 防火墙安全、基本指令、区域配置
Firewalld防火墙安全、基本指令、区域配置
安全
1.按OSI七层模型
物理层
数据链路层
网络层
传输层
会话层
表示层
应用层
安全公司:
安全狗
知道创宇
牛盾云
物理环境:
物理环境:
硬件安全 机柜上锁,避免电源被拔(UPS, 可以双电源),网线被拔(打标签) 温度,硬件检查
网络安全 (硬件防火墙(防DOS),软件防火墙 (iptables/firewalld/selinux (仅允许公司的IP地址能连接服务器的22端口))做规则限制
服务安全 更新有漏洞的版本 nginx mysql redis... 所有主机都没有公网ip,大大的降低被攻击的风险
系统安全 没有公网ip,ssh安全(修改ssh默认端口号),权限控制(禁用root远程登录)。
web nginx,apache必须对外,除了80/443端口,其他都不要对外waf防火墙 防DDOS攻击 漏洞注入 SQL注入
云环境
硬件 无需关心
网络 硬件防火墙 --> 高防DDOS 软件防火墙---->安全组
系统 SSH安全、权限控制、更新补丁、安骑士、堡垒机
web SSL、阿里云提供WAF、云安全中心
数据 备份 敏感数据保护
安全公司:
安全狗 www.safe.dog
牛盾云www.newdefend.com
知道创宇
牛盾云

知道创宇

安全狗

1. 防火墙安全基本概述
RHEL/CentOS 7系统中集成了多款防火墙管理工具,其中Firewalld(Dynamic Firewall Manager of Linux systems, Linux系统的动态防火墙管理器)服务是默认的防火墙配置管理工具,它拥有基于CLI(命令行界面)和基于GUI(图形用户界面)的两种管理方式。
那么相较于传统的Iptables防火墙,Firewalld支持动态更新,并加入了区域zone的概念。简单来说,区域就是Firewalld预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。

Firewalld规则配置,从外访问服务器内部如果没有添加规则默认是阻止,从服务器内部访问服务器外部默认是允许

需要注意的是Firewalld中的区域与接口.
一个网卡仅能绑定一个区域,但一个区域可以绑定多个网卡。还可以根据来源的地址设定不同的规则。
比如:所有人能访问80端口,但只有公司的IP才可以访问22端口。
2. 防火墙使用区域管理
划分不同的区域,制定出不同区域之间的访问控制策略来控制不同程序区域间传送的数据流。

| 区域 | 默认规则策略 |
|---|---|
| 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 | 拒绝流入的流量,除非与流出的流量相关 |
3. 防火墙基本指令参数
Firewall-cmd命令分类列表
| 参数 | 作用 |
|---|---|
| zone区域相关指令 | |
| --get-default-zone | 查询默认的区域名称 |
| --set-default-zone=<区域名称> | 设置默认的区域,使其永久生效 |
| --get-active-zones | 显示当前正在使用的区域与网卡名称 |
| --get-zones | 显示总共可用的区域 |
| --new-zone= | 新增区域 |
| --delete-zone= | 删除区域 |
| services服务相关指令 | |
| --get-services | 显示预先定义的服务 |
| --add-service=<服务名> | 设置默认区域允许该服务的流量 |
| --remove-service=<服务名> | 设置默认区域不再允许该服务的流量 |
| --list-services | 显示默认区域允许的服务 |
| Port端口相关指令 | |
| --add-port=<端口号/协议> | 设置默认区域允许该端口的流量 |
| --remove-port=<端口号/协议> | 设置默认区域不再允许该端口的流量 |
| --list-port | 显示默认区域允许的端口 |
| Interface网卡相关指令 | |
| --get-zone-of-interface=<网卡名称> | 查看接口在哪个区域 |
| --add-interface=<网卡名称> | 将源自该网卡的所有流量都导向某个指定区域 |
| --remove-interface=<网卡名称> | 删除接口 |
| --change-interface=<网卡名称> | 将接口与区域进行关联 |
| 地址源相关命令 | |
| --add-source= | 添加来源地址 |
| --remove-source= | 移除来源地址 |
| 其他相关指令 | |
| --list-all | 显示当前区域的网卡配置参数、资源、端口以及服务等信息 |
| --reload | 让"永久生效"的配置规则立即生效,并覆盖当前的配置规则 |
| --panic-on | 阻断一切网络连接 |
| --panic-off | 恢复网络连接 |
4.防火墙区域配置策略
1). 为了能正常使用Firwalld服务和相关工具去管理防火墙,必须启Firewalld服务,同时关闭以前旧防火墙相关服务,同时需要注意Firewalld的规则分两种状态:
runtime运行时: 修改规则马上生效,但是是临时生效 [不建议]
permanent持久配置: 修改后需要reload重载才会生效 [强烈推荐]
#禁用旧版防火墙服务
[root@firewalld ~]# systemctl mask iptables
[root@firewalld ~]# systemctl mask ip6tables
#启动firewalld防火墙, 并加入开机自启动服务
[root@firewalld ~]# systemctl start firewalld
[root@firewalld ~]# systemctl enable firewalld
2). Firewalld启动后,我们需要知道使用的是什么区域,区域的规则明细又有哪些?
#默认当前使用的zone
[root@firewalld ~]# firewall-cmd --get-default-zone
public
#查看当前区域的规则有哪些
[root@firewalld ~]# firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
#显示所有的zone
[root@web01 ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
#详细的显示所有zone的默认规则
[root@web01 ~]# firewall-cmd --list-all-zones
block
target: %%REJECT%%
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
设置zone
#设置默认的区域
[root@web01 ~]# firewall-cmd --set-default-zone=trusted
success
#查看默认的区域
[root@web01 ~]# firewall-cmd --get-default-zone
trusted
#显示当前活动的区域及接口
[root@web01 ~]# firewall-cmd --get-active-zone
public
interfaces: eth0 eth1
#添加一个新的zone
[root@web01 ~]# firewall-cmd --new-zone=test --permanent
success
#查看所有的zone
[root@web01 ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
#重启firewalld的设置规则
[root@web01 ~]# firewall-cmd --reload
success
#查看所有的zone
[root@web01 ~]# firewall-cmd --get-zones
block dmz drop external home internal public test trusted work
#删除zone
[root@web01 ~]# firewall-cmd --delete-zone=test --permanent
success
[root@web01 ~]# firewall-cmd --get-zones
block dmz drop external home internal public test trusted work
#重启才会生效
[root@web01 ~]# firewall-cmd --reload
success
[root@web01 ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
3).使用Firewalld中各个区域规则结合,当前默认区域拒绝所有的流量,但如果来源IP是10.0.0.0/24网段则允许。
#1.临时移除策略
[root@firewalld ~]# firewall-cmd --remove-service=ssh --remove-service=dhcpv6-client
success
#或者:
[root@web01 ~]# firewall-cmd --remove-service={ssh,dhcpv6-client}
success
#2.添加来源是10.0.0.0/24网段,将其加入白名单
[root@firewalld ~]# firewall-cmd --add-source=10.0.0.0/24 --zone=trusted
success
#3.检查当前活动的区域及接口
[root@web01 ~]# firewall-cmd --get-active-zone
public
interfaces: eth0 eth1
trusted
sources: 10.0.0.0/24
[root@web01 ~]# firewall-cmd --reload #重启服务之后,临时生效的失效
success
[root@web01 ~]# firewall-cmd --get-active-zone
public
interfaces: eth0 eth1
拒绝10.0.0.0/24网段的所有服务
[root@web01 ~]# firewall-cmd --add-source=10.0.0.0/24 --zone=drop
success
[root@web01 ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0 eth1
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@web01 ~]# firewall-cmd --get-active-zone
drop
sources: 10.0.0.0/24
public
interfaces: eth0 eth1
添加多个服务
#添加多个服务
[root@web01 ~]# firewall-cmd --add-service={https,mysql,redis}
success
[root@web01 ~]# firewall-cmd --list-services
ssh http https mysql redis
移除多个服务
[root@web01 ~]# firewall-cmd --remove-service={http,https,mysql,redis}
success
[root@web01 ~]# firewall-cmd --list-services
ssh
4). 查询public区域yi是否允许请求SSH、HTTPS协议的流量
[root@firewalld ~]# firewall-cmd --zone=public --query-service=ssh
no
[root@firewalld ~]# firewall-cmd --zone=public --query-service=https
no
5). 开启public区域服务的流量
[root@firewalld ~]# firewall-cmd --zone=public --add-service=ssh
success
[root@firewalld ~]# firewall-cmd --zone=public --query-service=ssh
yes
[root@firewalld ~]# firewall-cmd --zone=public --remove-service=ssh
success
[root@firewalld ~]# firewall-cmd --zone=public --query-service=ssh
no
6). 修改其他区域的服务流量限制
[root@firewalld ~]# firewall-cmd --zone=trusted --query-service=ssh
no
[root@firewalld ~]# firewall-cmd --zone=trusted --add-service=ssh
success
[root@firewalld ~]# firewall-cmd --zone=trusted --query-service=ssh
yes
7). 最后将配置恢复至默认规则,--reload参数仅能恢复临时添加的规则策略
[root@firewalld ~]# firewall-cmd --reload
success
[root@firewalld ~]# firewall-cmd --zone=public --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Firewalld--01 防火墙安全、基本指令、区域配置的更多相关文章
- centos7 firewall-cmd 理解多区域配置中的 firewalld 防火墙
原文:https://www.linuxidc.com/Linux/2017-11/148795.htm 现在的新闻里充斥着服务器被攻击和数据失窃事件.对于一个阅读过安全公告博客的人来说,通过访问错误 ...
- centos7 && centos6.5部KVM使用NAT联网并为虚拟机配置firewalld && iptables防火墙端口转发
centos7 && centos6.5 部KVM使用NAT联网并为虚拟机配置firewalld && iptables防火墙端口转发 一.准备工作: 1: 检查kvm ...
- 第二十三章 Firewalld的防火墙
一.防火墙基本概述 在CentOS7系统中集成了多款防火墙管理工具,默认启用的是firewalld(动态防火墙管理器)防火墙管理工具,Firewalld支持CLI(命令行)以及GUI(图形)的两种管理 ...
- CentOS 使用firewalld打开防火墙与端口
CentOS 使用firewalld打开防火墙与端口 LinuxCentOS 基本使用 启动 : systemctl start firewalld 关闭 : systemctl stop firew ...
- firewalld的防火墙
firewalld的介绍与简单应用 CentOS7的默认防火墙是firewalld,在之前使用iptables时,关闭了firewalld服务,现在反过来关闭iptables服务,打开firewall ...
- firewalld管理防火墙常用命令
1.查看防火墙的状态 [root@localhost HMK]# firewall-cmd --state 查看防火墙的运行状态 not running [root@localhost HMK]# s ...
- Linux 防火墙设置常用指令
查看防火墙状态命令: service firewalld status systemctl status firewalld 结果: 其中: enabled:开机启动(开机不启动是disabled ...
- 交换机 路由器 防火墙asa 安全访问、配置 方式
这里交换机 路由器 暂时统称为 网络设备 我们一般管理网络设备采用的几种方法 一般来说,可以用5种方式来设置路由器: 1. Console口接终端或运行终端仿真软件的微机(第一次配置要使用此方式) ...
- (转)通过在 Page 指令或 配置节中设置 validateRequest=false 可以禁用请求验证
通过在 Page 指令或 配置节中设置 validateRequest=false 可以禁用请求验证 说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止.该值可能指示危及应用 ...
随机推荐
- 在XenCenter6.2中构建CentOS7虚拟机的启动错误
在XenCenter6.2中创建CentOS7虚拟机时,发现系统并没有提供CentOS7 64bit的模板,只有CentOS6 64bit模板.如果采用CentOS6作为其模板来创建CentOS7虚拟 ...
- CG-CTF | Hello,RE!
菜狗开始向着pwn与re进军了(●'◡'●)[说白了,还是在水博客吧] 按r出flag: galf leW{ emoc _oT_ W_ER dlro }! 反一下:fla ...
- fengmiantu4
- 如何删除由Automater创建的服务
想要设置两个实用的快捷设置(如何设置): 1.复制当前文件或者文件夹路径 2.在终端打开文件夹 然后想到可以用mac自带的自动操作这款软件,英文叫Automater.接着发现,显示路径栏后,直接就提供 ...
- codeforces 657C - Bear and Contribution [想法题]
题目链接: http://codeforces.com/problemset/problem/657/C ----------------------------------------------- ...
- int 和 字节 相互转换
In [10]: n = 0xf1f2 In [11]: bin(n) Out[11]: '0b1111000111110010' In [12]: n.bit_length() Out[12]: 1 ...
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第5节 线程池_1_线程池的概念和原理
线程的底层原理 集合有很多种,线程池的集合用LinkedList最好
- 深入理解任何Binder Client都可以直接通过ServiceManager的0这个Binder句柄创建一个BpBinde
ServiceManager是安卓中一个重要的类,用于管理所有的系统服务,维护着系统服务和客户端的binder通信.对此陌生的可以先看系统服务与ServiceManager来了解应用层是如何使用Ser ...
- c++静态成员变量初始化时不受访问权限控制
1.要在类外初始化,const 成员变量才能在类内初始化 2.初始化在类外,而不在main函数内 class A{ private: string name; A(){ name = "a& ...
- 信息收集【采集点OWASP CHINA】网址http://www.owasp.org.cn/
以下部分源于 安全家 http://www.anquanjia.net.cn/newsinfo/729480.html 资源虽多,优质却少.不要被信息海迷惑的心智,新人要想入门,除了优质的系统教学资源 ...