firewalld学习--service的使用和配置
service配置文件
firewalld默认给我们提供的ftp的service配置文件ftp.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>FTP</short>
<description>FTP is a protocol used for remote file transfer. If you plan to make your FTP server publicly available, enable this option. You need the vsftpd package installed for this option to be useful.</description>
<port protocol="tcp" port="21"/>
<module name="nf_conntrack_ftp"/>
</service>
service相对于zone来说结构要简单的多,其整体配置文件结构如下
<service [version="string"]>
[<short>short description</short>]
[<description>description</description>]
[<port [port="portid[-portid]"] protocol="protocol"/>]
[<module name="helper"/>]
[<destination ipv4="address[/mask]" ipv6="address[/mask]"/>]
</service>
firewall-cmd分别提供了两个命令来创建和删除service
firewall-cmd --permanent --new-service='service'
firewall-cmd --permanent --delete-service='service'
如果直接编辑xml文件应该更简单,
大部分服务在“/usr/lib/firewalld/services/”目录下都可以找到,不过我们不要直接修改而要复制一份到“/etc/firewalld/services/”中然后再进行修改,
更好的做法是在“/usr/lib/firewalld/services/”中找一个类似的服务复制一份到“/etc/firewalld/services/”目录中,然后修改文件名和其中的内容。
service文件中的标签解释
version
version是service节点的一个可选属性,用于表示service的版本。
short
short在zone、icmptype等配置文件中也存在,其作用是简介,主要是让我们对所配置的内容有所了解,类似于注释的作用。
description
作用跟short相同,不过描述信息更加详细。
port
服务所对应的端口,这项是service中非常重要的一个配置项,大部分service主要就是对port进行绑定的,当一个service绑定了指定端口之后,该端口接收到的连接就会当成这个service,然后到所对应的zone中去查询规则,从而判断是否可以放行。
一个service中可以配置多个port节点,这在有的时候是非常有用的,比如
port节点有两可个配置的属性:port和protocol
port属性
port用来配置所使用的端口号,可以是单个端口也可以是一个端口段,比如port=100-105表示100到105之间的端口号,另外,port属性是个可选属性,可以不进行设置。
protocol属性
protocol属性用于指定所对应的协议,如果port属性不为空,那么protocol应该设置为tcp或者udp,如果port属性为空(没设置),那么protocol可以设置为/etc/protocols中所包含的任意协议。
module
module用于设置netfilter的helper。学生前面给大家介绍过,firewalld其实是基于netfilter进行工作的,netfilter中的helper主要用于连接的跟踪,这样就可以实现“有状态的防火墙”,也就是将相关的连接管理到一起。一个典型的例子就是ftp的连接,我们知道一般来说ftp使用的是21号端口,不过21号端口主要是用来传输命令的,实际传输文件又会使用一个其他的端口,不过这两个连接还有内在的联系,这种情况就可以使用netfilter中的helper来处理,在我们这里service中就是module节点。
destination
destination非常简单,他就表示目标地址,也就是根据目标地址来绑定服务,他有两个属性:ipv4和ipv6,分别用于绑定ipv4和ipv6的地址,可以使用单个地址也可以使用掩码。
另外,在一个service中destination最多只能出现一次。
firewalld学习--service的使用和配置的更多相关文章
- firewalld学习--service
service是firewalld中另外一个非常重要的概念.还是拿门卫的例子来解释. 在iptables的时代我们给门卫下达规则时需要告诉他“所有到22号楼的人全部予以放行”.“所有到80号楼的人全部 ...
- firewalld学习-zone的使用和配置
原文地址:http://www.excelib.com/article/290/show zone文件标签名词解释 target:目标,这个前面学生也已经给大家介绍过了,可以理解为默认行为,有四个可选 ...
- Android学习Service中遇到的问题
今天学习service,然后遇到了一个force close,log中存在这个一句话: 05-23 14:13:26.408: E/AndroidRuntime(17616): android.con ...
- thinkphp学习笔记4—眼花缭乱的配置
原文:thinkphp学习笔记4-眼花缭乱的配置 1.配置类别 ThinkPHP提供了灵活的全局配置功能,ThinkPHP会依次加载管理配置>项目配置>调试配置>分组配置>扩展 ...
- PHP学习笔记----IIS7下安装配置php环境
原文:PHP学习笔记----IIS7下安装配置php环境 Php如何安装 Php版本的选择 Php在windows下的(php5.4.7)有两种版本: VC9 x86 Non Thread Safe ...
- OGG学习笔记02-单向复制配置实例
OGG学习笔记02-单向复制配置实例 实验环境: 源端:192.168.1.30,Oracle 10.2.0.5 单实例 目标端:192.168.1.31,Oracle 10.2.0.5 单实例 1. ...
- CentOS 7 学习(四)Git配置(一)
CentOS 7 学习(四)Git配置(一) 1.对于版本管理系统,目前常用的是Subverion和Git,Subversion是集中式版本管理系统中最好的,所有人的代码都要提交到服务器上,如果要知道 ...
- golang学习笔记8 beego参数配置 打包linux命令
golang学习笔记8 beego参数配置 打包linux命令 参数配置 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/docs/mvc/contro ...
- node-webkit学习(2)基本结构和配置
node-webkit学习(2)基本结构和配置 文/玄魂 目录 node webkit学习(2)基本结构和配置 前言 2.1 基本程序结构 2.2 package.json 2.2.1 必须的配置 ...
随机推荐
- JIRA 安装与破解 Mac版
1.安装 JDK 2.安装 MySQL 下载地址:https://dev.mysql.com/downloads/ 选择对应版本下载安装.我选择的是 mysql-8.0.11-macos10.13-x ...
- nyoj 100
怒刷水题... AC代码: #include <stdio.h> int main() { int x,t,count; scanf("%d",&t); whi ...
- php 基础 获取远程连接
1 file_get_contents get $opts = array( 'http'=>array( 'method'=>"GET", 'timeout'=> ...
- pandas 存储文件到MySQL 以及读取
pandas导入数据到MySQL 1.导入必要的库 2.创建链接 3.导入数据 import pandas as pd from sqlalchemy import create_engine con ...
- PTA的Python练习题(四)
从 第3章-1 3-1.大于身高的平均值 开始 1. 引入列表的概念 a=list(map(int,input().split())) b=sum(a) c=len(a) d=b/c for i in ...
- bootstrap帮助文档
概览 深入了解 Bootstrap 底层结构的关键部分,包括我们让 web 开发变得更好.更快.更强壮的最佳实践. HTML5 文档类型 Bootstrap 使用到的某些 HTML 元素和 CSS 属 ...
- openstack搭建之旅(原创)
1.什么是openstack是一个集中管理虚拟机的平台,整合了各种虚拟化的技术.虚拟机的具体创建交给具体的虚拟化技术实现,而Openstack是整合这些虚拟化技术,提供一个统一管理的视图,对虚拟机进行 ...
- 使用gcc编译c语言解码ascii码
vi test.c 输入代码: #include<stdio.h> int main(void) { char *p = (char *)"\xE6\x8A\xB1\xE6\xA ...
- C++结构体struct与C语⾔结构体和C++引⽤&与传值的区别
写再最前面:摘录于柳神的笔记: (1)定义好结构体 stu 之后,使⽤这个结构体类型的时候,C语⾔需要写关键字 struct ,⽽C++⾥⾯可以省 略不写: (2)这个引⽤符号 & 要和C语⾔ ...
- JNDI Java 命名与目录接口
jsp <% Context ctx = new InitialContext(); String jndiName = (String) ctx.lookup("java:comp/ ...