防火墙管理之firewalld,iptables

本文深入探讨了防火墙在企业网络安全中的角色,对比了公网与内网的环境差异,详细解析了firewalld与iptables两种防火墙管理工具的配置方法、策略规则及操作命令,适合网络安全管理员和IT专业人士阅读。

相较于企业内网,外部的公网环境更加恶劣,罪恶丛生。在公网与企业内网之间充当保护屏障的防火墙。虽然有软件或硬件之分,但主要功能都是依据 策略对穿越防火墙自身的流量进行过滤。防火墙策略可以基于流量的源目地址、端口号、协议、应用等信息来定制,然后防火墙使用预先定制的策略规则监控出入的 流量,若流量与某一条策略规则相匹配,则执行相应的处理,反之则丢弃。这样一来,就可以保证仅有合法的流量在企业内网和外部公网之间流动了。

防火墙是整个数据包进入主机前的第一道关卡。防火墙主要通过Netfilter与TCPwrappers两个机制来管理的。
1)Netfilter:数据包过滤机制
2)TCP Wrappers:程序管理机制
关于数据包过滤机制有两个软件:firewalld与iptables

iptables与firewalld都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具而已,或者说,它们只是一种服务。 iptables服务会把配置好的防火墙策略交由内核层面的netfilter网络过滤器来处理,而firewalld服务则是把配置好的防火墙策略交由 内核层面的nftables包过滤框架来处理。

firewalld

firewalld的配置方法主要有三种:firewall-config、firewall-cmd和直接编辑xml文件,其中 firewall-config是图形化工具,firewall-cmd是命令行工具。

firewall将配置文件存储再/usr/lib/firewalld 和/etc/firewalld中的各种XML文件中

1、安装firewalld

root执行 # yum install firewalld firewall-config

2、运行、停止、禁用firewalld

启动:# systemctl start  firewalld

查看状态:# systemctl status firewalld 或者 firewall-cmd --state

停止:# systemctl disable firewalld

禁用:# systemctl stop firewalld

systemctl mask firewalld

systemctl unmask firewalld

3.firewalld中常用的区域名称及策略规则

区域默认规则策略
trusted允许所有的数据包
home拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许流量
internal等同于home区域
work拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量
public拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量
external拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
dmz拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
block拒绝流入的流量,除非与流出的流量相关
drop拒绝流入的流量,除非与流出的流量相关

4.配置firewalld

查看版本:firewall-cmd --version

查看帮助:firewall-cmd --help

显示状态:firewall-cmd --state

查看区域信息: firewall-cmd --get-active-zones

查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0

拒绝所有包:firewall-cmd --panic-on

取消拒绝状态: firewall-cmd --panic-off

查看是否拒绝:firewall-cmd --query-panic

5.图形窗口改变端口

firewall-config          ##打开火墙的图形界面

Configuration :Runtime         ##暂时 permanent##永久 (每次火墙设定都要选择)
在这里插入图片描述

Options: Relood Firewalld      ##重启火墙(图形设定完退出之前重启)

Sercices ##火墙允许的资源

Ports:Add ##添加端口

Masquerading:Masquerade zone ##路由功能设置

6.命令行管理

firewall-cmd --state ##查看火墙当前状态

firewall-cmd --get-active-zones ##查看火墙当前生效的域

firewall-cmd --get-zones ##查看所有域

firewall-cmd --get-default-zone ##显示默认的域

firewall-cmd --ger-services ##列出系统当中用名称代表的服务

firewall-cmd --list-all ##显示火墙的规则

firewall-cmd --list-all-zones ##查看所有域的列表信息

firewall-cmd --list-all --zone=trusted ##显示trusted域的列表信息

firewall-cmd --zone=pubilc --list-all ##查看所有public域的信息

firewall-cmd -zone=block --list-all ##查看所有域block的信息  

7.文件方式更改火墙

/etc/firewalld/zones/public.xml ##火墙资源的配置文件
vim public.xml ##可手动添加资源

查看设备中所有服务器的信息文件
/usr/lib/firewalld/services/                   ##设备中所有设备的文件都是以xml格式结尾

iptables

1.理论基础:当主机收到一个数据包后,数据包先在内核空间中处理,若发现目的地址是自身,则传到用户空间中交给对应的应用程序处理,若发现目的不是自身,则会将包丢弃或进行转发。

2.iptables实现防火墙功能的原理是:在数据包经过内核的过程中有五处关键地方,分别是PREROUTING、INPUT、OUTPUT、FORWARD、POSTROUTING,iptables这款用户空间的软件可以在这5处地方写规则,对经过的数据包进行处理,规则一般的定义为“如果数据包头符合这样的条件,就这样处理数据包”。
iptables中定义有表,分别表示提供的功能,有filter表(实现包过滤)、nat表(实现网络地址转换)、mangle表(实现包修改)、raw表(实现数据跟踪),这些表具有一定的优先级:raw–>mangle–>nat–>filter 

iptables服务把用于处理或过滤流量的策略条目称之为规则,多条规则可以组成一个规则链,而规则链则依据数据包处理位置的不同进行分类,具体如下:

在进行路由选择前处理数据包(PREROUTING);

处理流入的数据包(INPUT);

处理流出的数据包(OUTPUT);

处理转发的数据包(FORWARD);

在进行路由选择后处理数据包(POSTROUTING)

systemctl unmask iptables.service

systemctl start iptables.service ##iptables打开,firewall自动关闭

systemctl enable iptables.service

systemctl status iptables.service  


 

基本语法:iptables [-t 表] [操作命令] [链][规则匹配器][-j 目标动作]
参数作用
-P设置默认策略
-F清空规则链
-L查看规则链
-A在规则链的末尾加入新规则
-I num在规则链的头部加入新规则
-D num删除某一条规则
-s匹配来源地址IP/MASK,加叹号“!”表示除这个IP外
-d匹配目标地址
-i 网卡名称匹配从这块网卡流入的数据
-o 网卡名称匹配从这块网卡流出的数据
-p匹配协议,如TCP、UDP、ICMP
--dport num匹配目标端口号
--sport num匹配来源端口号

 

iptables -t (filter/nat/mangle) -nL #查看指定表(filter/nat/mangle)中的策略 -n参数存在时显示的是ip,没有的话是主机名

iptables -F #-F:删除指定表中所有规则

iptables -nL service iptables save #保存当前策略,保存了之后重启火墙策略重新出现 vim /etc/sysconfig/iptables #iptables的配置文件  

添加策略:

iptables -t filter -A INPUT -i lo -j ACCEPT

iptables -t filter -A INPUT -s 172.25.60.200 -j ACCEPT

iptables -t filter -A INPUT -s 172.25.60.200 -j REJECT 200主机可以访问,匹配到第二条

iptables -nL iptables -D INPUT 3 删除第三条

250不能访问本机,设置可以访问22端口
iptables -I INPUT 2 -s 172.25.60.250 -p tcp --dport 22 -j ACCEPT 必须放在REJECT前面才能匹配

 

 

###修改默认策略
iptables -P INPUT DROP  
iptables -P INPUT ACCEPT 

### FirewalldIptables的关系 FirewalldIptables 都用于管理 Linux 系统上的网络流量过滤。然而,在 CentOS 7 中,firewalld 成为了默认的动态防火墙守护进程[^2]。这意味着 firewalld 使用 iptables 来设置规则,但提供了更高级别的接口来简化这些操作。 #### 主要区别 - **实时配置**:Firewalld 支持运行时和永久性的更改,允许在网络连接期间调整策略而不重启服务。 - **区域概念**:引入了基于不同信任级别的多个区域(zone),使得定义复杂的访问控制更加直观。 - **命令工具差异**:虽然两者都可以通过命令行进行配置,但是使用的语法有所不同。对于 firewalld 而言,主要使用 `firewall-cmd` 工具来进行交互式管理和脚本化部署[^3]。 ### 如何配置端口转发或开放特定端口 当需要打开一个新的 TCP 或 UDP 端口范围时,可以按照如下方式执行: ```bash # 添加并保存新端口到公共区 firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp # 刷新配置使变更生效 firewall-cmd --reload ``` 验证已添加成功的端口号可以通过下面这条指令完成: ```bash firewall-cmd --zone=public --list-ports ``` 如果之后想要移除之前增加过的端口,则可采取以下措施: ```bash # 移除指定端口映射关系 firewall-cmd --zone=public --remove-port=8080-8081/tcp # 应用最新改动 firewall-cmd --reload ``` 以上过程展示了如何利用 firewalld 的特性轻松实现对入站流量的安全管控。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值