返回

Linux防火墙处理:ufw和firewalld

简介

Linux中防火墙的处理常常让新手站长踩坑。当你初次部署网页,但又发现怎么样都没有办法访问时,不妨看看防火墙是不是配置对了。

常见的Linux发行版,centos用的是iptables,ubuntu用的是ufw。个人认为ufw的配置更加简单。

这里分别对二者做一个简单的介绍

ufw

太长不看版

开启端口80:
ufw allow 80
ufw reload

开启ufw

有些版本默认没有开启,使用

ufw status

进行查看,如果返回Status: inactive,参照以下命令开启:

systemctl enable ufw
#如果上面那个不奏效,再使用这个
ufw enable
#如果还是用不了,试下这个
systemctl start ufw

正常情况会返回:

Command may disrupt existing ssh connections. Proceed with operation (y|n)? y #输入y
Firewall is active and enabled on system startup

直到状态Status: active说明可以使用了。

添加规则

ufw添加规则十分简单。只需简短的一句:

ufw allow 80

即可添加80端口开放,其他端口也是类似配置。

再次使用ufw status,返回如下值:

Status: active

To                         Action      From
--                         ------      ----
80                         ALLOW       Anywhere                  
80 (v6)                    ALLOW       Anywhere (v6)  

**注意!**还需要对防火墙进行重载才能应用新配置:

ufw reload

返回Firewall reloaded即可。

firewalld

相较于ufwfirewalld的配置稍显复杂。

注意:开放任何端口都要先add-port,然后重启,才能访问!!!

太长不看版

开启端口8080:
firewall-cmd --zone=public --add-ports=8080/tcp --permanent
firewall-cmd --reload 

解析:
firewall-cmd:是Linux提供的操作firewall的一个工具(服务)命令
--zone #作用域
--add-port=8080/tcp #添加端口,格式为:端口/通讯协议 ;add表示添加,remove则对应移除
--permanent #永久生效,没有此参数重启后失效
--reload #更新配置

centos中firewalld与iptables

centos7以前的版本默认使用iptables服务进行管理防火墙规则。centos7以及其以上版本默认使用firewalld服务管理防火墙。所以在centos8中,就使用其默认的firewalld配置防火墙。

firewalld和iptables的官方说明可以参照4.5. 使用防火墙 Red Hat Enterprise Linux 7 | Red Hat Customer Portal

firewalld相关命令

 1 #进程与状态相关
 2 systemctl start firewalld.service            #启动防火墙  
 3 systemctl stop firewalld.service             #停止防火墙  
 4 systemctl status firewalld                   #查看防火墙状态
 5 systemctl enable firewalld             #设置防火墙随系统启动
 6 systemctl disable firewalld                #禁止防火墙随系统启动
 7 firewall-cmd --state                         #查看防火墙状态  
 8 firewall-cmd --reload                        #更新防火墙规则   
 9 firewall-cmd --list-ports                    #查看所有打开的端口  
10 firewall-cmd --list-services                 #查看所有允许的服务  
11 firewall-cmd --get-services                  #获取所有支持的服务  
12 
13 #区域相关
14 firewall-cmd --list-all-zones                    #查看所有区域信息  
15 firewall-cmd --get-active-zones                  #查看活动区域信息  
16 firewall-cmd --set-default-zone=public           #设置public为默认区域  
17 firewall-cmd --get-default-zone                  #查看默认区域信息  
18 
19 
20 #接口相关
21 firewall-cmd --zone=public --add-interface=eth0  #将接口eth0加入区域public
22 firewall-cmd --zone=public --remove-interface=eth0       #从区域public中删除接口eth0  
23 firewall-cmd --zone=default --change-interface=eth0      #修改接口eth0所属区域为default  
24 firewall-cmd --get-zone-of-interface=eth0                #查看接口eth0所属区域  
25 
26 #端口控制
27 firewall-cmd --query-port=8080/tcp             # 查询端口是否开放
28 firewall-cmd --add-port=8080/tcp --permanent               #永久添加8080端口例外(全局)
29 firewall-cmd --remove-port=8800/tcp --permanent            #永久删除8080端口例外(全局)
30 firewall-cmd --add-port=65001-65010/tcp --permanent      #永久增加65001-65010例外(全局)  
31 firewall-cmd  --zone=public --add-port=8080/tcp --permanent            #永久添加8080端口例外(区域public)
32 firewall-cmd  --zone=public --remove-port=8080/tcp --permanent         #永久删除8080端口例外(区域public)
33 firewall-cmd  --zone=public --add-port=65001-65010/tcp --permanent   #永久增加65001-65010例外(区域public) 

附录

参考文献

  1. Centos8防火墙设置 - john_yong - 博客园 (cnblogs.com)
  2. [Firewall - ufw status inactive on Ubuntu 20.04 Focal Fossa Linux - Linux Tutorials - Learn Linux Configuration](https://linuxconfig.org/firewall-ufw-status-inactive-on-ubuntu-20-04-focal-fossa-linux#:~:text= How to activate an inactive UFW on,is enabled%2C this settings should persists… More )

版权信息

本文原载于kermsite.com,复制请保留原文出处。

Built with Hugo
Theme Stack designed by Jimmy