「FIREWALL-SOFTWARE」- 概念术语、基础知识

  CREATED BY JENKINSBOT

对于那些由服务器发出去的流量

IPTables rule to allow all outbound locally originating traffic?

	iptables -I OUTPUT -o eth0 -d 0.0.0.0/0 -j ACCEPT
	iptables -I INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

第一条规则并不是必需的。

# IP sets

http://ipset.netfilter.org/
https://wiki.archlinux.org/index.php/Ipset
It allows you to setup rules to quickly and easily block a set of IP addresses, among other things.

防火墙工具

在 RHEL/CentOS 中,开始使用 firewalld 管理防火墙;
在 Ubuntu 中,采用 ufw 管理防火墙。

TCP Wrappers

第8章 使用Iptables与Firewalld防火墙 | 《Linux就该这么学》

TCP Wrapper 是在旧版 Linux 系统中默认启用的一款流量监控程序,它能够根据来访主机的地址与本机的目标服务程序做出允许或拒绝的操作。

TCP Wrapper 的使用需要应用程序支持:最初,只有从 Super-Server(例如 inetd 等等)为每个连接生成的服务才使用 tcpd 程序进行包装。现在,最常见的网络服务守护进程可以直接链接到 libwrap,这使得在没有从 Super-Server 派生的情况下运行的守护进程使用,或者在单个进程处理多个连接时使用。

换句话说,在 Linux 中其实有两个层面的防火墙:第一种是常见的基于 TCP/IP 协议的流量过滤工具;另种是 TCP Wrapper 这种能允许或禁止Linux系统提供服务的防火墙,从而在更高层面保护 Linux 系统的安全运行。

TCP Wrapper服务的防火墙策略由两个控制列表文件所控制,用户可以编辑允许控制列表文件来放行对服务的请求流量,也可以编辑拒绝控制列表文件来阻止对服务的请求流量。控制列表文件修改后会立即生效,系统将会先检查允许控制列表文件(/etc/hosts.allow),如果匹配到相应的允许策略则放行流量;如果没有匹配,则会进一步匹配拒绝控制列表文件(/etc/hosts.deny),若找到匹配项则拒绝该流量。如果这两个文件都没有匹配到,则默认放行流量。

在现在 Linux 版本中,它已经被firewalld正式替代。

ipfwadm

更早期的linux内核防火墙。ipfwadm是管理linux内核提供的IP计数和IP防火墙服务的程序。当前的ipfwadm稳定版本是1.2版本,需要linux内核版本为1.2.1或更高版本,ipfwadm的2.3.0版本则需要linux版本1.3.66或更高版本。以前的ipfwadm版本2.0beta1 beta版本之一,适用于linux版本1.3.61至1.3.65。

ipchians

ipchains – Wikipedia

linux IP Firewalling Chains(通常称为ipchains)是2.2系列的linux内核中的数据包过滤、防火墙功能的软件。它取代了ipfwadm,但在2.4系列的linux内核中被iptables取代。与iptables不同,ipchains是无状态的。

ipchains是对linux以前的IPv4防火墙ipfwadm的重写。这个较新的ipchains需要从版本2.1.102(这是一个2.2开发版本)开始管理linux内核中的数据包过滤器。修补程序也可以添加到2.0和更早的2.1系列内核的ipchains。改进包括:更大的数据包计数最大值、过滤分片数据包、更广泛的协议,以及根据规则的逆向来匹配数据包的能力。

ipchains套件还包含一些shell脚本,以便于维护,并模拟旧的ipfwadm命令的行为。

ipchains软件被linux内核2.4及以上版本中的iptables所取代。

netfilter & iptables

netfilter是linux 2.4.x及更高版本内核中的包过滤框架,用于处理网络数据包。

该框架内的软件可以实现数据包过滤、网络地址端口转换(NA[P]T)、其他数据包的移动。这是对以前的linux 2.2.x ipchains和linux 2.0.x ipfwadm系统的重新设计和大大改进。

netfilter是linux内核中的一组hook,它允许内核模块向网络堆栈注册回调函数,然后为遍历网络堆栈内相应钩子的每个数据包调用一个注册回调函数。

iptables是用于定义规则集的通用表结构。IP表中的每个规则由多个分类器(iptables matches)和一个连接的动作(iptables target)组成。

netfilter,ip_tables,connection tracking(ip_conntrack,nf_conntrack),NAT子系统一起构成了框架的主要部分。

iptables负责管理规则集;netfilter负责执行规则集。

nftables

ebtables

ebtables项目主页

ebtables是基于Linux桥接防火墙的过滤工具。 它可以对通过Linux网桥的网络流量进行透明过滤。 过滤的可能性仅限于链路层过滤和高层网络上的一些基本过滤。 高级的日志记录、MAC DNAT/SNAT、brouter功能也包括在内。

ebtables工具可以和其他的Linux过滤工具(iptables,ip6tables和arptables)结合起来构建一个桥接防火墙,同时也能够过滤这些更高的网络层。 这是通过作为标准Linux内核的一部分的bridge-netfilter体系结构来起作用的。

arptables

arptables – Wikipedia

arptables是网络管理员的工具,用于在Linux内核防火墙模块中维护ARP数据包过滤规则。

这些工具可以用来创建、更新、查看包含过滤规则的表,类似于iptables程序。一个广泛的应用是创建过滤器配置来防止ARP欺骗。

Linux内核2.4只提供了两个ARP过滤链,INPUT和OUTPUT,Linux内核2.6增加了第三个FORWARD,用于桥接数据包。

FireHOL

https://firehol.org/

防火墙实现

iptables 与 firewalld 都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具而已,即它们只是种前端服务。

iptables 服务会把配置好的防火墙策略交由内核层面的 netfilter 网络过滤器来处理;
firewalld 服务则是把配置好的防火墙策略交由内核层面的 nftables 包过滤框架来处理;