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
相关推荐
马立杰1 小时前
H3CNE-33-BGP
运维·网络·h3cne
Mason Lin2 小时前
2025年1月22日(网络编程 udp)
网络·python·udp
字节全栈_rJF2 小时前
概述、 BGP AS 、BGP 邻居、 BGP 更新源 、BGP TTL 、BGP路由表、 BGP 同步
网络·智能路由器·php
EchoToMe2 小时前
电信传输基本理论/5G网络层次架构——超三万字详解:适用期末考试/考研/工作
网络·5g·架构
云空2 小时前
《DeepSeek 网页/API 性能异常(DeepSeek Web/API Degraded Performance):网络安全日志》
运维·人工智能·web安全·网络安全·开源·网络攻击模型·安全威胁分析
深度Linux3 小时前
Linux网络编程中的零拷贝:提升性能的秘密武器
linux·linux内核·零拷贝技术
doubt。3 小时前
8.攻防世界Web_php_wrong_nginx_config
网络·安全·web安全·网络安全
没有名字的小羊3 小时前
Cyber Security 101-Build Your Cyber Security Career-Security Principles(安全原则)
运维·网络·安全
m0_465215794 小时前
TCP & UDP Service Model
服务器·网络·tcp/ip
千夜啊4 小时前
Nginx 运维开发高频面试题详解
运维·nginx·运维开发