赞
踩
防火墙是一种计算机网络安全设备,用于保护计算机和网络不受未经授权访问。它通过控制网络上进出数据流的流量,来控制通信的访问。当阻止外部网络访问或从内部网络到外部网络的访问时,防火墙就会发挥作用。
防火墙可分为软件防火墙和硬件防火墙两种类型。其中,软件防火墙是一种安装在操作系统上的防火墙,如 iptables、Firewalld 和 UFW 等,而硬件防火墙是一种独立于计算机和操作系统之外的设备,如 Cisco ASA 和 Juniper SRX。
Iptables 是一个用户空间程序,可以用于设置和管理 Linux 操作系统的内核级防火墙。它通过表、链和规则组成,可以灵活地根据不同的需求进行配置。
iptables 具有以下特点:
Iptables 的核心是由表(table)、链(chain)和规则(rule)三部分组成的。
在 iptables 中,表是一个规则的集合,每个表都包含若干个链和一些相关的规则。常用的五种 table 如下:
在 iptables 中,链是一个规则的集合,每个链都包含一些相关联的规则。Linux 防火墙中默认存在的 3 个链:INPUT、FORWARD 和 OUTPUT。
Input 链主要对进入本机的网络数据包进行处理,如果不符合某些特定规则,则直接被丢弃。
Forward 链主要对不是发往本机,而是需要转发到其他网段的网络数据包进行处理。
Output 链主要对本机发出去的网络数据包进行处理,同样的,如果不符合某些特定规则,则直接被丢弃。
在 iptables 中,规则是一个集合,通过它们来定义过滤器的行为,包括源地址、目标地址、端口号、协议等。每个规则由以下几个部分组成:
iptables 是一种基于命令行的防火墙,用户可以通过命令行修改或临时屏蔽规则,在保证安全性的同时进行更精确和灵活的控制。下面是常用的 iptables 命令:
保存已有配置文件,保存的方式是可以重定向到某个文件中,例如iptables-save > /etc/sysconfig/iptables
。
启动 iptables 服务后会默认读取 /etc/sysconfig/iptables
中的配置文件,用户可以通过此命令将已有规则重新装入 iptables。
列出默认 filter 表中所有规则,并显示它们的行号,这对于添加和删除规则很有帮助。
在指定的链 CHAIN 上创建一条新规则,以限制指定的端口(dport)上使用指定协议(protocol)的数据包流量。TARGET 可以是 ACCEPT、REJECT 或 DROP。例如:iptables -A INPUT -p tcp --dport 80 -j ACCEPT
表示当访问本机的 80 端口时,可以通过。
从指定链 CHAIN 中删除一条现有规则,规则编号由 iptables -L
命令输出的行号指定。
在 iptables 中创建一个新的用户自定义链。例如:iptables -N LOG_DROP
创建新链 LOG_DROP。
插入一条规则到指定链(CHAIN)的特定位置(INDEX)处。此命令的其余部分与先前介绍的相同。
在使用 iptables 时,需要遵循一定的规则语法。iptables 规则主要由以下几个部分构成:
下面是 iptables 规则的语法格式:
iptables [-t table] [-A chain] [-I chain [rulenum]] [-D chain rulenum] [-R chain rulenum] [-j target] [match-expression]
其中:
iptables 规则的匹配条件 match-expression 由多个关键字组成,各个关键字的含义如下:
下面我们来举一个 iptables 配置实例,以实现一个简单的安全策略:允许 SSH 和 HTTP/HTTPS 流量通过 iptables,并禁止其他所有流量。
首先,我们需要设置默认的策略。iptables 共有三个默认策略:DROP、REJECT 和 ACCEPT。DROP 表示直接拒绝,不回应,相当于向黑洞中丢弃;REJECT 表示直接拒绝,并返回一个 ICMP 错误信息,相当于明确地告诉对方该端口不可用;ACCEPT 表示直接接受数据包。
我们需要设置默认策略为 DROP,这样任何不符合规则的流量都将被丢弃。
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
-P
选项表示设置默认策略,后面跟着需要设置的链名。INPUT
链指向来自外部的包、传入本地机器的包以及因为非法转发被丢弃的包。FORWARD
链指向转发包。OUTPUT
链指向离开本地机器的包。SSH 端口默认为 22。我们需要允许来自指定 IP 地址的流量通过 iptables。假设您希望允许 IP 地址为 192.168.1.100 的机器访问 SSH 端口。
iptables -A INPUT -p tcp -s 192.168.1.100/32 --dport 22 -j ACCEPT
上述命令中,-A
选项表示添加规则,-p tcp
表示协议为 TCP,-s 192.168.1.100/32
表示源地址为 IP 地址为 192.168.1.100,--dport 22
表示目的端口为 22。最后的 -j
将匹配的流量引导到 ACCEPT 规则。
HTTP 端口默认为 80,HTTPS 端口默认为 443。我们需要允许来自任何 IP 地址的流量访问 HTTP 和 HTTPS 端口。
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
上述命令中,-A
选项表示添加规则,-p tcp
表示协议为 TCP,--dport 80
和 --dport 443
分别表示目的端口为 80 和 443。最后的 -j
将匹配的流量引导到 ACCEPT 规则。
我们已经设置了需要允许通过的 SSH、HTTP 和 HTTPS 流量。现在,我们需要禁止所有其他流量通过 iptables。
iptables -A INPUT -j DROP
iptables -A FORWARD -j DROP
iptables -A OUTPUT -j DROP
上述命令中,最后的 -j DROP
表示将匹配的流量引导到 DROP 规则。
Iptables 是 Linux 下的一款内核级防火墙软件,由表、链和规则三部分组成,具有高效、稳定、安全等优点。iptables 可以根据不同的需求进行配置,支持多种协议、条件和动作选项,可以灵活地根据不同的需求进行配置。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。