文章目录
- 防火墙管理命令fierwall-cmd
- 图形化工具firewall-config
- 数据包过滤、SNAT/SDAT技术、端口转发以及负载均衡等
- Tcp_wrappers防火墙服务
了解防火墙管理工具
- 依据策略对外部请求进行过滤。规则策略可以是基于来源地址、请求动作或者协议来定制的,最终仅让合法的用户请求流入到内网中,其余的均被丢弃
- iptables和firewall只是防火墙管理工具,将定义好的规则交由内核中的netfilter(网络过滤器)来读取实现防火墙功能
用于管理防火墙的规则策略
iptables命令:iptables [-t 表名] 选项 [链名][条件][-j 控制类型]
规则链与策略
- 设置数据过滤或处理数据包的策略交规则,将多个规则合成一个链。控制类型如下:
类型 说明 accept 允许通过 log 记录日志,然后传给下一条规则继续匹配 reject 拒绝,必要时给提示 drop 直接丢弃,不给回应 - 依据处理数据包的位置不同进行分类
分类 说明 prerouting 在进行路由选择前处理数据包 input 处理入站的数据包 output 处理出站的数据包 forward 处理转发的数据包 postrouting 在进行路由选择后处理数据包 - 规则表用于容纳规则链,规则表默认是允许状态的,则规则连就是设置被禁止的规则,反之亦反。
先后规则为:raw->mangle->nat->filter规则表 说明 raw表 确定是否对该数据包进行状态跟踪 mangle表 为数据包设置标记 nat表 修改数据包中的源、目标ip地址或端口 filter表 确定是否放行该数据包(过滤) - 规则链的先后顺序:
- 入站顺序:prerouting->input
- 出站顺序:output->postrouting
- 转发顺序:prerouting->forward->postrouting
- 注意:
- 没有指定规则表则默认指filter表
- 不指定规则链则指表内所有的规则链
- 在规则链匹配时一次检查,匹配即停止(log规则例外),若没匹配项则按链的默认状态处理
基本命令参数
参数 | 说明 |
---|---|
-P | 设置默认策略 |
-F | 清空规则连 |
-L | 查看规则连 |
-A | 在规则链的末尾加入新规则 |
-I num | 在规则连的头部加入新规则 |
-D num | 删除某一条规则 |
-s | 匹配来源地址,!表示除这个ip外 |
-d | 匹配目标地址 |
-i | 网卡名称 匹配从这块网卡流入的数据 |
-o | 网卡名称 匹配从这块网卡流出的数据 |
-p | 匹配协议 |
--dport num | 匹配目标端口号 |
--sport num | 匹配来源端口号 |
snat与dnat
- snat:源地址转换技术:能够让多个内网用户通过一个外网地址上网
- dnat:目地地址转换技术:能够让外网ip用户访问局域网内不同的服务器
端口转发与流量均衡
-
端口转发功能可以将原本到某端口的数据包转发到其他端口:
firewall-cmd --permanent--zone=<区域>--add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toadd=<目标ip复制>
-
【例如】将访问192.168.10.10主机端口的请求转发至22端口:
firewall-cmd --permanent--zone=public--add-forward-port=port=888:proto=tcp:toport=22:toadd=192.168.10.10 # 使用客户机的ssh命令访问192.168.10.10:ssh -p 888 192.168.10.10
-
均衡技术:
iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.10.10:80 iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.10.11:80 iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.10.12:80
firewalld防火墙
特点
拥有运行时配置与永久配置选项能够支持动态更新以及zone的区域功能概念
区域概念与作用
网络区域定义了网络连接的可信等级,区域规则如下
规则 | 说明 |
---|---|
trusted | 允许所有的数据包; |
home | 拒绝流入的数据包,除非与输出流量数据包相关或是ssh/mdns/ipp-client/samba-clent与dhcpv6-client服务则允许; |
internal | 等同于home区域; |
work | 拒绝流入的数据包,除非与输出流量数据包相关或是ssh/ipp-client/与dhcpv6-client服务则允许 |
public | 拒绝流入的数据包,除非与输出流量数据包相关或是ssh/dhcpv6-client服务则允许 |
external | 拒绝流入的数据包,除非与输出流量数据包相关或是ssh服务则允许 |
block | 拒绝流入的数据包,除非与输出流量数据包相关 |
drop | 拒绝流入的数据包,除非与输出流量数据包相关; |
默认区域为public
字符管理工具:fireall-cmd
- 参数如下
参数 说明 --get-default-zone
查询默认的区域名称 --set-default-zone=<区域名称>
设置默认的区域,永久有效 --get-zone
显示可用区域 --get-services
显示预先定义的服务 --get-active-zones
显示当前正在使用的区域与网卡名称 --add-source=ip
将来源于此ip或子网的流量导向指定的区域 --remove-source=ip
不再将此ip或子网的流量导向指定区域 --add-interface=<网卡名称>
将来自于该网卡的所有流量都导向某个指定区域 --change-interface=<网卡名称>
将某个网卡与区域做关联 --list-all
显示当前区域的网卡配置参数、资源、端口及服务等信息 --list-all-zones
显示所有区域的网卡配置参数、资源、端口以及服务等信息 --add-service=<服务名>
设置默认区域允许该服务的流量 --add-port=<端口号/协议>
允许默认区域允许该端口的流量 --remove-service=<服务名>
设置默认区域不再允许该服务的流量 --remove-port=<端口号/协议>
允许默认区域不再允许该端口的流量 --reload
让永久生效的配置规则立即生效,覆盖当前的 - firewalld服务有两份策略配置记录
- runtime正在生效的
- permanent永久生效的
- 应急状况模式:
firewall-cmd --panoic-on
firewall-cmd --panoic-off;
- 图形管理工具:firewall-config
服务的访问控制列表
Tcp_wrappers是一款基于ip层的acl访问控制列表流量监控程序,能够根据来访主机地址与本机目标服务程序做允许或拒绝规则
- 允许名单:
/ect/hosts.allow
- 拒绝名单:
/ect/hosts.deny