在OpenSUSE中如何搭建防火墙

时间:2019-04-29 03:18:25  来源:igfitidea点击:

OpenSUSE Linux提供了一个动态的、可定制的防火墙,通过设置规则来阻止或者放行网络连接。这我们将学习如何在OpenSUSE设置防火墙,并使用firewall-cmd进行防火墙规则的管理。

如何安装FirewallD

sudo zypper ref
sudo zypper update
sudo zypper install firewalld

开启防火墙服务

开启防火墙服务并允许其在系统启动时自启动

sudo systemctl start firewalld
sudo systemctl enable firewalld

查看防火墙服务和进程状态

sudo systemctl status firewalld

关闭防火墙

sudo systemctl disable firewalld
sudo systemctl stop firewalld

重启防火墙

sudo systemctl restart firewalld 

查看防火墙状态

sudo firewall-cmd --state
sudo systemctl status firewalld

如何添加/删除防火墙规则

## 查看public zone的规则
sudo firewall-cmd --list-all --zone=public

## 删除服务
sudo firewall-cmd --remove-service=dhcpv6-client --permanent --zone=public

## 永久添加服务
sudo firewall-cmd --add-service=httpd --permanent --zone=public

## 临时添加服务(重启后丢失)
sudo firewall-cmd --zone=public --add-service=https

## 为tomcat打开防火墙的tcp 8080端口
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent

## 关闭81端口
sudo firewall-cmd --zone=public --remove-port=81/tcp --permanent

## 重新加载,使规则生效
sudo firewall-cmd --reload

## 查看开放的服务和端口
sudo firewall-cmd --list-services
sudo firewall-cmd --zone=public --list-ports

防火墙配置说明

firewalld简化了网络流量管理的概念。其中包括两个概念 zone 和 service

zones

zone翻译过来就是区域地带的意思。
使用zone来划分来自不同地方的流量。

Firewalld中的区域是预定义的规则集。

zone的区域分类

  1. public – 这个是常见的。不相信网络上的任何其他计算机和服务器。您只允许所需的端口和服务。对于公网服务器,应始终使用public zone。
  2. block - 拒绝所有网络连接进入。只允许从系统内部发起的网络连接。
  3. drop - 删除所有输入的网络连接,只允许输出的网络连接。
  4. external - 路由器类型的连接。使NAT能正常工作。
  5. internal - 在内部网络上,当信任局域网上的其他服务器或计算机时使用。
  6. trusted - 接受所有网络连接。不建议将此区域用于连接到WAN的服务器。
  7. home - 对于局域网的家庭电脑有用,这时是相信其他电脑的。只允许选择的TCP/IP端口。
  8. work - 在你的工作场所使用,只信任你的同事和其他服务器。

zone保存在/usr/lib/firewalld/zones/目录下

cat /usr/lib/firewalld/zones/public.xml

查看所有的zone

firewall-cmd --get-zones
grep -i DefaultZone /etc/firewalld/firewalld.conf

查看默认的zone区域

firewall-cmd --get-default-zone

查看激活的zone

firewall-cmd --get-active-zones

service

另一个概念是服务。服务即对应一组端口,协议,和服务名。比如

web服务 端口80,协议TCP

如何查看当前区域中允许哪些服务

sudo firewall-cmd --list-services
sudo firewall-cmd --list-services --zone=public
sudo firewall-cmd --list-services --zone=home

如何查看与公共区域关联的防火墙规则

sudo firewall-cmd --list-all
sudo firewall-cmd --list-all --zone=public

怎么查看防火墙支持哪些服务?

防火墙的配置文件在 /usr/lib/firewalld/services

sudo firewall-cmd --get-services
sudo firewall-cmd --get-services | grep ssh

cat /usr/lib/firewalld/services/ssh.xml