iptables与firewalld防火墙
了解防火墙管理工具
防火墙虽有软件或硬件之分但主要功能还是依据策略对外部请求进行过滤,成为公网与内网之间的保护屏障,防火墙会监控每一个数据包并判断是否有相应的匹配策略规则,直到满足其中一条策略规则为止,而防火墙规则策略可以是基于来源地址,请求动作或协议来定制的,最终仅让合法的用户请求流入到内网中,其余的均被丢弃
在红帽RHEL7系统中firewalld服务取代了iptables服务,但依然可以使用iptables命令来管理内核的netfilter。
但其实iptables服务与firewalld服务都不是真正的防火墙,它们都只是用来定义防火墙规则功能额度”防火墙管理工具”,将定义好的规则交由内核中的netfilter即网络过滤器来读取,从而真正实现防火墙功能,所以其实在配置规则的思路上是完全一致的。
规则链与策略
在iptables命令中设置数据过滤或处理数据包的策略叫规则,将多个规则合成一个链
对应到iptables命令中常见额度控制类型有:
ACCEPT:允许通过
LOG:记录日志信息,然后传给下一条规则继续匹配
REJECT:拒绝通过,必要时会给出提示
DROP:直接丢弃,不给出任何回应
其中REJECT和DROP的操作都是将数据包拒绝,但REJECT会再回复一条”您的信息我已受到,但被扔掉了”
而规则链则依据处理数据包的位置不同而进行分类:
PREROUTING:在进行路由选择前处理数据包
INPUT:处理出站的数据包
OUTPUT:处理转发的数据包
FORWARD:处理转发的数据包
POSTROUTING:在进行路由选择后处理数据包
iptables中的规则表是用于容纳规则链,规则表默认是允许状态的,那么规则链就是设置被禁止的规则,而反之如果规则表是禁止状态的,那么规则链就是设置被允许的规则
raw表:确定是否对该数据包进行状态跟踪
mangle表:为数据包设置标记
nat表:修改数据包中的源、目标IP地址或端口
filter表:确定是否放行该数据包(过滤)
规则表的先后顺序:raw > mangle > nat > filter
规则链的先后顺序:
入站顺序:PREROUTING > INPUT
出站顺序:OUTPUT > POSTOUTING
转发顺序:PREROUTING > FORWARD > POSTROUTING
还有三点注意事项:
1、没有指定规则表则默认指filter表
2、不指定规则链则指表内所有的规则链
3、在规则链中匹配规则时会依次检查,匹配即停止(LOG规则例外),若没匹配项则按链的默认状态处理
基本的命令参数
iptables命令用于管理防火墙的规则策略
格式为:iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
SNAT与DNAT
SNAT即源地址转换技术,能够让多个内网用户通过一个外网地址上网
DNAT即目的地址转换技术,能够让往外IP用户访问局域网内不同的服务器
firewalld防火墙
firewalld服务是红帽RHEL7系统中默认的防火墙管理工具,特点是拥有运行配置与永久配置选项且能够支持动态更新以及“zone”的区域功能概念。
区域概念及作用
防火墙的网络区域定义了网络连接的可信等级,我们可以根据不同场景来调用不同的firewalld区域
区域 | 默认规则策略 |
---|---|
trusted | 允许所有的数据包 |
home | 拒绝流入的数据包,除非与输出流量数据包相关或者是ssh,mdns,ipp-client,samba-client与dhcpv6-client服务则允许 |
internal | 等同于home区域 |
work | 拒绝流入的数据包,除非与输出流量数据包相关或是ssh,ipp-client与dhcpv6-client服务则允许 |
public | 拒绝流入的数据包,除非与输出流量数据包相关或是ssh,dhcpv6-client服务则允许 |
external | 拒绝流入的数据包,除非与输出流量数据包相关或是ssh服务则允许 |
dmz | 拒绝流入的数据包,除非与输出流量数据包相关或是ssh服务则允许 |
block | 拒绝流入的数据包,除非与输出流量数据包相关 |
drop | 拒绝流入的数据包,除非与输出流量数据包相关 |
默认区域是public
字符管理工具
参数 | 作用 |
---|---|
–get-default-zone | 查询默认的区域名称 |
–set-default-zone=<区域名称> | 设置默认的区域,永久生效 |
–get-zone | 显示可用的区域 |
–get-services | 显示预先定义的服务 |
–get-active-zones | 显示当前正在使用的区域与网卡名称 |
–add-source= | 将来源于此IP或子网的流量导向指定的区域 |
–remove-source= | 不再将此IP或子网的流量导向某个指定区域 |
–add-interface=<网卡名称> | 将来自于该网卡的所有流量都导向某个指定区域 |
–change-interface=<网卡名称> | 将来自于该网卡的所有流量都导向某个指定区域 |
–list-all | 显示当前区域的网卡配置参数,资源,端口以及服务等信息 |
–list-all-zone | 显示所有区域的网卡配置参数,资源,端口以及服务等信息 |
–add-service=<服务名> | 设置默认区域允许该服务的流量 |
–add-port=<端口号/协议> | 允许默认区域允许该端口的流量 |
–remove-service=<服务名> | 设置默认区域不再允许该服务的流量 |
–remove-port=<端口号/协议> | 允许默认区域不再允许该端口的数量 |
–reload | 让”永久生效”的配置规则立即生效,覆盖当前的 |
firewalld服务有两份规则策略配置记录:
Runtime:当前正在生效额度
Permanent:永久生效的
1 | 1、查看当前的区域: |
服务的访问控制列表
Tcp_wrappers(即Transmission Control Protocol Wrappers)是一款基于IP层的ACL访问控制列表流量监控程序,它能够根据来访主机地址与本机目标服务程序做允许或拒绝规则,控制列表修改后会立即生效,系统将会检查允许规则,如果匹配允许则直接放行流量,若拒绝规则中匹配则直接拒绝,都不匹配默认也会放行
允许名单:/etc/hosts.allow
拒绝名单:/etc/hosts.deny
指定客户端的规则如下:
客户端类型 | 示例 | 满足示例的客户端列表 |
---|---|---|
单一主机 | 192.168.10.10 | IP地址为192.168.10.10.的主机 |
指定网段 | 192.168.10. | IP段为192.168.10.0/24的主机 |
指定网段 | 192.168.10.0/255.255.255.0 | IP段为192.168.10.0/24的主机 |
指定DNS后缀 | .linux.com | 所有DNS后缀为.linux.com的主机 |
指定主机名称 | test.linux.com | 主机名称为test.llinux.com的主机 |
指定所有客户端 | ALL | 所有主机全部包括在 |
1 | 1、限制只有192.168.10.0/24网段的主机可以访问本机的httpd服务: |