Linux - 防火墙

八、防火墙

1、简介

防火墙是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出。

防火墙又可以分为硬件防火墙与软件防火墙。硬件防火墙是由厂商设计好的主机硬件,这台硬件防火墙 的操作系统主要以提供数据包数据的过滤机制为主,并将其他不必要的功能拿掉。软件防火墙就是保护系统网络安全的一套软件(或称为机制),例如Netfilter与TCP Wrappers都可以称为软件防火墙。这儿主要介绍linux系统本身提供的软件防火墙的功能,那就是Netfilter,即数据包过滤机制。

  • 数据包过滤,也就是分析进入主机的网络数据包,将数据包的头部数据提取出来进行分析,以决定该连 接为放行或抵挡的机制。由于这种方式可以直接分析数据包头部数据,包括硬件地址,软件地址, TCP、UDP、ICMP等数据包的信息都可以进行过滤分析,因此用途非常广泛(主要分析OSI七层协议的 2、3、4层)。linux的Netfilter机制可以进行的分析工作有:
    • 拒绝让Internet的数据包进入主机的某些端口
    • 拒绝让某些来源ip的数据包进入
    • 拒绝让带有某些特殊标志(flag)的数据包进入,最常拒绝的就是带有SYN的主动连接的标志了
    • 分析硬件地址(MAC)来决定连接与否
  • 缺点:
    • 防火墙并不能有效阻挡病毒或木马程序。(假设主机开放了www服务,防火墙的设置是一定要将 www服务的port开放给client端的。假设www服务器软件有漏洞,或者请求www服务的数据包本 身就是病毒的一部分时,防火墙是阻止不了的)
    • 防火墙对于内部LAN的攻击无能为力(防火墙对于内部的规则设置通常比较少,所以就很容易造成 内部员工对于网络无用或滥用的情况)

Netfilterr这个数据包过滤机制是由linux内核内建的,不同的内核版本使用的设置防火墙策略的软件不一 样,在红帽7系统中firewalld服务取代了iptables服务,但其实iptables服务与firewalld服务它们都只是 用来定义防火墙策略的"防火墙管理工具"而已,他们的作用都是用于维护规则,而真正使用规则干活的 是内核的Netfilter。

红帽Linux中的默认防火墙管理工具,使用iptables作为底层实现。它提供了一个用户友好的界面,支持命令行和图形界面(如:firewall-config)。

2、原理与应用

原理

  • 区域概念:firewalld将网络接口分配到不同的区域中,每个区域定义了不同的安全级别。例如,public区域用于不信任的网络,而trusted区域则用于完全信任的网络。

  • 服务与端口:用户可以通过服务名称(如HTTP、SSH等)来允许或拒绝特定流量,而不需要手动指定端口号。

  • 动态管理:firewalld支持动态添加或移除规则,而无需重启服务。这使得配置更为灵活,适合于快速变化的网络环境。

  • 持久化与临时配置:规则可以设置为临时生效或持久化保存,以便在重启后依然生效。

应用

  • 保护服务器:通过配置适当的区域和服务,保护Web服务器、数据库服务器等不受外部攻击。
  • 隔离网络流量:在多租户环境中,可以通过不同的区域来隔离不同客户的流量。
  • VPN与远程访问:配置防火墙规则以允许VPN流量,通过安全隧道保护远程访问。
  • 日志记录与审计:通过配置日志规则,监控网络流量和攻击尝试,帮助进行安全审计。

3、配置

shell 复制代码
#查看防火墙状态:
firewall-cmd --state
 
#查看当前区域和活动接口:该命令将显示当前活动的区域及其相关联的网络接口。
firewall-cmd --get-active-zones
 
#查看特定区域的规则:该命令将列出public区域的所有规则,包括允许的服务、端口和接口。
firewall-cmd --zone=public --list-all
 
#添加服务到某个区域:该命令将HTTP服务添加到public区域,并将其设置为持久化配置。
firewall-cmd --zone=public --add-service=http --permanent
 
#添加特定端口:该命令将TCP端口8080添加到public区域,并持久化
firewall-cmd --zone=public --add-port=8080/tcp --permanent
 
#删除服务或端口:该命令将从public区域中删除HTTP服务。
firewall-cmd --zone=public --remove-service=http --permanent
 
#重新加载配置:该命令将应用所有未持久化的更改,并重新加载防火墙配置。
firewall-cmd --reload
 
#查看日志: 如果启用了日志记录,可以使用以下命令查看日志:
journalctl -f -u firewalld
相关推荐
还算善良_18 分钟前
【乐企文件生成工程】搭建docker环境,使用docker部署工程
运维·docker·容器
MC何失眠1 小时前
vulnhub靶场【哈利波特】三部曲之Fawkes
网络·python·学习·网络安全
小袁顶风作案1 小时前
Ubuntu桥接模式设置静态IP
网络·tcp/ip·桥接模式
Curtis09801 小时前
RHCE——Ubuntu Linux操作系统
linux·服务器·ubuntu
闲人-闲人2 小时前
CIA安全属性简介
网络·安全
18.Show4 小时前
有趣的Docker
运维·docker·容器
wuzuyu3654 小时前
docker.io连接超时的处理,用代理网站
运维·docker·容器
zz-zjx4 小时前
nerdctl:与 Docker 兼容的 containerd CLI
运维·docker·容器
YRr YRr4 小时前
在Ubuntu 20.04和ROS中使用RViz进行数据可视化:详解Fixed Frame参数的选择与应用
linux·ubuntu·信息可视化
Hansel_Zhang5 小时前
CentOS 7 docker部署jar包
linux·docker·centos