当前位置:   article > 正文

【Linux安全管理】Firewalld详解

firewalld

目录

1、与iptables不同

2、配置防火墙

3、firewalld区域概念

4、filewalld 配置生效

5、firewalld服务

firewalld 端口映射

富规则 rich-rule


1、与iptables不同

  • firewalld采用区域和服务管理,而不是链式规则
  • 动态管理规则,允许更新规则而不破坏原有会话与连接

2、配置防火墙

  • firewall-cmd 命令行模式 推荐使用
  • firewall-config(如果没装图形化界面就不行)
  • vi /etc/firewalld/firewalld.conf
# (查看状态)
#  firewall-cmd --state

#(更新配置)
# firewall-cmd --reload
  • 1
  • 2
  • 3
  • 4
  • 5

3、firewalld区域概念

zone

  1. trusted 信任区域 默认允许所有流量传入
  2. public 公共区域 (默认区域)默认允许ssh 服务 dhcp
  3. external 外部区域 默认允许ssh其余均拒绝
  4. home 家庭区域 有ssh, 预定于服务等
  5. internal 内部区域 默认允许ssh 服务 dhcp服务等
  6. work 工作区域 默认ssh
  7. dmz 隔离区
  8. block 限制区域 默认拒绝所有流量传入
  9. drop 丢弃区域 默认丢弃所有流量传入

工作原理

管理数据包时:

1、先根据数据包的源IP进行相应区域的防火墙规则匹配; 如果源地址关联到特定的区域,则按特定区域的规则执行;
如果未关联到特定的区域,则按默认区域的规则执行。

2、根据传入的网络接口,进行相应区域的防火墙规则匹配; 如果源地址关联到特定的区域,则按特定区域的规则执行;
如果未关联到特定的区域,则按默认区域的规则执行。

绑定源地址的区域规则 > 网卡绑定的区域规则> 默认区域规则

4、filewalld 配置生效

运行时配置:

  • 不中断现有连接
  • 不能修改服务配置

永久配置

  • 不立即生效,除非重启或者重新加载配置
  • 不中断现有连接
  • 可以修改服务配置
  • 注意: 添加–permanent选项,表示永久配置 ,但是 需要重启firewalld 或者 重新加载–reload
    ,如果 不带这个选项,则表示用于设置运行时配置,这些规则在系统重启,firewalld重启,或者重新加载后失
    效,需要将运行时配置永久生效,则需要将运行时配置规则写入配置文件中,执行firewall-cmd – runtime-to-permanent。

5、firewalld服务

# systemctl status firewalld

# systemctl start firewalld

# systemctl enable firewalld


# 显示所有可用区域
# firewall-cmd --get-zones

# 显示当前默认区域
# firewall-cmd --get-default-zone

# 设置默认区域
# firewall-cmd --set-default-zone=public

# 显示当前使用的区域和对应网卡
# firewall-cmd --get-active-zones

# 显示指定接口绑定的区域
# firewall-cmd --get-zone-of-interface=ens33

# 为指定接口绑定区域
# firewall-cmd --zone=dmz --add-interface=ens37

# 为指定的区域更改绑定的网络接口
# firewall-cmd --zone=dmz --change-interface=ens33

# 为指定的区域删除绑定的网络接口
# firewall-cmd --zone=dmz --remove-interface=ens37

# 查看默认区域设置
# firewall-cmd --list-all

# 查看指定的区域设置
# firewall-cmd --zone=dmz --list-all

# 显示指定区域可以访问的服务
# firewall-cmd --zone=public --list-services

# 显示系统预定义的服务名
# firewall-cmd --get-service

# 为指定区域添加允许访问的服务
# firewall-cmd --zone=public --add-service=http

# 为指定区域删除允许访问的服务
# firewall-cmd --zone=public --remove-service=http

# 添加多个服务
# firewall-cmd --zone=public --add-services={http,https,redis,ssh}

# 永久生效,运行时配置结束后统一执行
# firewall-cmd --runtime-to-permanent

# 永久生效,需要在设置时加--permanent选项,但是并不是运行时生效,需要重启启动firewalld或者重
新reload
# firewall-cmd --permanent --zone=public --add-services=http
# firewall-cmd --reload 或者 systemctl restart firewalld

# 显示指定域中允许访问的端口
# firewall-cmd --zone=public --list-port

# 位指定域中添加允许访问的端口
# firewall-cmd --zone=public --add-port=22/tcp --add-port=80-100/tcp

#位指定域中删除允许访问的端口
# firewall-cmd --zone=public --remove-port=22/tcp --remove-
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68

port=80-100/tcp

如果执行命令显示success但是效果没有出现,使用firewall-cmd --reload

firewalld 端口映射

# 设置禁止来源IP为192.168.100.134的ip地址访问
# firewall-cmd --add-source=192.168.100.134/24 --zone=drop
  • 1
  • 2

–类似于iptables中
DROP
# firewall-cmd --add-source=192.168.100.134/24 --zone=block
–类似于iptables中
REJECT

# 设置允许来源IP为192.168.100.134的ip地址访问
# firewall-cmd --add-source=192.168.100.134/24 --zone=trusted

# 地址转发端口映射
# firewall-cmd --zone=public --add-forward-
  • 1
  • 2
  • 3
  • 4
  • 5

port=port=80:proto=tcp:toport=8080

# firewall-cmd --zone=public --remove-forward-
  • 1

port=port=80:proto=tcp:toport=80:toaddr=192.168.100.134
(在访问添加了这个规则的ip的数据包会转发到192.168.100.134的80端口)


当你修改了http配置文件(改端口为8080,并且重启了httpd),也添加了转发端口映射,查看服务也有http服务,为什么curl还是不通?

因为没对外没有提供相应的8080端口;


虽然系统起的是8080端口,但是对外来说我们的端口是80端口,必须通过80端口连进来,在、才能经过映射访问到8080端口;

所以没添加8080端口,却访问了8080端口是不行的;![](https://img-
blog.csdnimg.cn/a53d11be76b848d4b127c84538afab7c.png)![](https://img-
blog.csdnimg.cn/d523923e241a4bcea0031876a036af21.png)



如果添加了8080端口,直接用8080端口进行httpd访问,而不是通过连接80端口再经端口映射转发从8080端口进行访问;

富规则 rich-rule

只用firewalld的服务以及端口进行配置的时候限制比较多;为了解决这一问题,所以用富规则;

# 查看帮助手册
# man 5 firewalld.richlanguage


# 列出富规则
# firewall-cmd --list-rich-rule


# 添加富规则
# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source
address="192.168.100.134" accept'
(添加富规则,允许192.168.100.134访问)

# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source
address="192.168.100.134" port port=22 protocol=tcp reject'
(拒绝来自这个ip的22端口的访问)


# 删除富规则
# firewall-cmd --zone=public --remove-rich-rule 'rule family="ipv4"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

source
address=“192.168.100.134” forward-port port=80 protocol=tcp to-port=8080


请求连接时被拒绝;

接下来我将给各位同学划分一张学习计划表!

学习计划

那么问题又来了,作为萌新小白,我应该先学什么,再学什么?
既然你都问的这么直白了,我就告诉你,零基础应该从什么开始学起:

阶段一:初级网络安全工程师

接下来我将给大家安排一个为期1个月的网络安全初级计划,当你学完后,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web渗透、安全服务、安全分析等岗位;其中,如果你等保模块学的好,还可以从事等保工程师。

综合薪资区间6k~15k

1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(1周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(1周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(1周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

那么,到此为止,已经耗时1个月左右。你已经成功成为了一名“脚本小子”。那么你还想接着往下探索吗?

阶段二:中级or高级网络安全工程师(看自己能力)

综合薪资区间15k~30k

7、脚本编程学习(4周)
在网络安全领域。是否具备编程能力是“脚本小子”和真正网络安全工程师的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力。

零基础入门的同学,我建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习
搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP,IDE强烈推荐Sublime;

Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,没必要看完

用Python编写漏洞的exp,然后写一个简单的网络爬虫

PHP基本语法学习并书写一个简单的博客系统

熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选)

了解Bootstrap的布局或者CSS。

阶段三:顶级网络安全工程师

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/426887
推荐阅读
相关标签