前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >操作系统:Linux下的防火墙

操作系统:Linux下的防火墙

作者头像
程序员架构进阶
发布2021-12-08 08:43:00
1.6K0
发布2021-12-08 08:43:00
举报
文章被收录于专栏:架构进阶架构进阶架构进阶

一 简介

最近由于产品架构升级需要,在做一些环境搭建的事情。很久没做这类基础部署相关的工作,对操作系统和基础配置都有些生疏。恰好操作的过程中遇到一个与防火墙相关的问题,所以就以此为题,整理一下对防火墙的理解,和常见操作。

二 防火墙

2.1 起源

防火墙(Firewall),也称防护墙,是由Check Point的创立者Gil Shwed于1993 年发明并引入国际互联网(US5606668(A)1993-12-15)。

防火墙是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。

2.2 基本准则

防火墙遵循的两个基本准则:第一,它会拒绝所有未经说明允许的命令。防火墙的审查基础的逐项审阅,任何一个服务请求和应用操作都将被逐一审查符合允许的命令后才可能执行,这样的操作方法为保证内部计算机安全性提供了切实可行的办法。反而言之,用户可以申请的服务和服务数量是有限的,提高了安全性的同时也就减弱可用性。第二,它会允许所有未经说明拒绝的命令。

2.3 发展历程

随着计算机技术的进步防火墙技术也在不断发展,简单整理其发展历程如下:

2.3.1 第一代防火墙

第一代防火墙采用包过滤技术,由于几乎与路由器同时出现,所以也称为包过滤(Packet filter)防火墙或路由器防火墙。

2.3.2 第二代防火墙

1989年,贝尔实验室的Dave Presotto和Howard Trickey推出了第二代防火墙,即电路层防火墙。

2.3.3 第三代防火墙

在第二代防火墙推出的同时,也提出了第三代防火墙的概念,即应用层防火墙(代理防火墙)的初步结构。所以在有些描述中,也会把这两种防火墙合一为第二代防火墙。

2.3.4 第四代防火墙

1992年,USC信息科学院的BobBraden开发出基于动态包过滤(Dynamic packet filter)技术的第四代防火墙,后来演变为目前所说的状态监视(Stateful inspection)技术。

1994年,以色列的CheckPoint公司开发出了第一个采用这种技术的商业化产品。

2.3.5 第五代防火墙

1998年,NAI公司推出了一种自适应代理(Adaptive proxy)技术,并在Gauntlet Firewall for NT中得以实现,被称为第五代防火墙。

2.4 防火墙未来的技术发展趋势

随着新的网络攻击的出现,防火墙技术也有了新的发展方向。目前看主要包括包过滤技术、防火墙体系结构、防火墙系统管理三方面。

详细内容可阅读文档:防火墙的发展史。

三 Linux下的防火墙

在这里,我们将会讨论熟悉的iptables和firewall,这两个Linux下的防火墙工具包。

3.1 iptables

3.1.1 Iptables介绍

iptables,即IP信息包过滤系统,是与 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。Iptables 有两种应用模式:主机防火墙,NAT路由器。

netfilter/iptables IP 信息包过滤系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的信 息包过滤表中,而这些表集成在 Linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。

虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。netfilter 组件也称为内核空间(kernelspace),是内核的一部分。它提供了一系列的表(tables),每个表由若干个链(chains)组成,每条链可以由一条或若干条规则(rules)组成,其规则由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。即 iptables把有次序的规则 "链(chains)" 应用到网络包上。链的集合就构成了"表(tables)",用于处理特殊类型的流量。

Netfilter支持以下方式对数据包进行分类:源IP地址、目标IP地址、使用接口、使用协议、端口号、连接状态。

3.1.2 Iptables防火墙基本原理

Linux Iptables防火墙的原理主要是对数据包的控制,下图展示了netfilter 五条链相互关系,即 iptables 数据包转发流程图:

3.2 firewall

3.2.1 firewall简介

RHEL7系统中,firewalld防火墙取代了iptables防火墙。我们都知道iptables的防火墙策略是交由内核层面的netfilter网络过滤器来处理的,而firewalld则是交由内核层面的nftables包过滤框架来处理。

与iptables相比,firewalld支持动态更新技术并加入了区域(zone)概念。简单来说,区域就是firewalld预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。

3.2.2 终端命令

firewall的操作,可以通过firewall-cmd命令来完成。常用命令如下:

3.2.2.1 启动、重启、停止命令
systemctl start firewalld
systemctl restart firewalld
systemctl stop firewalld
3.2.2.2 重新加载
firewall-cmd --reload
3.2.2.3 查看firewalld的运行状态
firewall-cmd --state
3.2.2.4 开放/取消端口
取消开放https服务,即禁止https服务
firewall-cmd --zone=drop --remove-service=https
开放22端口
firewall-cmd --zone=drop --add-port=22/tcp
取消开放22端口
firewall-cmd --zone=drop --remove-port=22/tcp
开放8080和8081端口
firewall-cmd --zone=drop --add-port=8080-8081/tcp
查询drop区域开放了哪些端口
firewall-cmd --zone=drop --list-ports
3.2.2.5 其他常用命令
允许icmp协议流量,即允许ping
firewall-cmd --zone=drop --add-protocol=icmp
取消允许icmp协议的流量,即禁ping
firewall-cmd --zone=drop --remove-protocol=icmp
查询drop区域开放了哪些协议
firewall-cmd --zone=drop --list-protocols
将原本访问本机888端口的流量转发到本机22端口
firewall-cmd --zone=drop --add-forward-port=port=888:proto=tcp:toport=22

参考文献

防火墙的发展史

防火墙技术发展趋势浅析

防火墙的发展历史

iptables学习笔记

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员架构进阶 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 简介
  • 二 防火墙
    • 2.1 起源
      • 2.2 基本准则
        • 2.3 发展历程
          • 2.3.1 第一代防火墙
          • 2.3.2 第二代防火墙
          • 2.3.3 第三代防火墙
          • 2.3.4 第四代防火墙
          • 2.3.5 第五代防火墙
        • 2.4 防火墙未来的技术发展趋势
        • 三 Linux下的防火墙
          • 3.1 iptables
            • 3.1.1 Iptables介绍
            • 3.1.2 Iptables防火墙基本原理
          • 3.2 firewall
            • 3.2.1 firewall简介
            • 3.2.2 终端命令
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档