linux防火墙设置

  1. 前言
  2. 防火墙
  3. iptables
    1. iptables安装
    2. iptables基础
    3. 五链
    4. 五表
    5. 表链关系
    6. iptables命令
      1. COMMAND
      2. CRETIRIA
        1. 通用匹配条件
        2. 拓展匹配条件
      3. ACTION
    7. 保存iptables配置
      1. Ubuntu
      2. Centos、RedHat、
  4. firewalld
    1. firewalld安装
      1. 启动服务
      2. 取消开机自启
      3. 开机自动启动服务
      4. 关闭服务
      5. 查看状态
      6. 改用iptables
      7. 查看版本
      8. 查看帮助
      9. 显示状态
      10. 查看活动区域信息
      11. 拒绝所有包
      12. 取消拒绝状态
      13. 查看是否拒绝
      14. 查看firewalld是否开启
      15. 重启加载防火墙
      16. 完全重启防火墙
      17. 显示默认区域
      18. 添加接口到区域
      19. 查看区域打开的端口
      20. 查看区域加载的服务
      21. 临时加一个端口到区域
      22. 打开一个服务
      23. 移除服务
      24. 显示支持的区域列表
      25. 查看当前活跃区域
      26. 列出全部区域启用的特性
      27. 显示区域详情
      28. 获取接口所属区域
      29. 添加接口到区域
      30. 查询区域中是否包含接口
      31. 删除指定网卡所在的zone
      32. 临时修改接口为区域
      33. 控制端口
      34. 富规则
    2. 区域管理
    3. 服务
      1. 修改已有服务的端口
      2. 服务和端口管理
        1. 显示支持的服务
        2. 临时允许ftp服务通过600秒
        3. 显示默认区域开启的服务,如果要查询某区域,加参数–zone=XX
        4. 添加http服务到内部区域,并保存到配置文件
        5. 不改变状态条件下重新加载防火墙
        6. 开放mysql服务
        7. 阻止mysql服务
        8. 临时打开3690/tcp端口
        9. 永久打开3690/tcp端口
        10. 阻止3690/tcp
        11. 添加端口范围
        12. 移除端口范围
        13. 获取永久支持的区域
    4. 端口转发
      1. 将80端口流量转发到8080
      2. 将80端口流量转发到192.168.0.1的8080端口
      3. 禁止区域的端口转发或者端口映射
      4. 查询区域的端口转发或者端口映射
    5. 伪装ip
      1. 检查是否允许伪装ip
      2. 允许防火墙伪装ip
      3. 禁止防火墙伪装ip
    6. ICMP控制
      1. 获取所有支持的ICMP类型列表
      2. 永久启用区域中的ICMP阻塞,需要reload防火墙
      3. 永久禁用区域中的ICMP阻塞,需要reload防火墙
      4. 查询区域中的ICMP永久状态
    7. 配置文件
    8. 直接模式
      1. 为表增加新链
      2. 从表中删除链
      3. 查询链是否存在与表如果是,返回0,否则返回1
      4. 获取用空格分隔的表中链的列表
      5. 获取表中所有增加到链的规则,并用换行分隔
    9. 富语言
      1. 允许192.168.122.0/24主机所有连接
      2. 每分钟允许2个新连接访问ftp服务
      3. 同意新的 IPv4 和 ipv6 连接 FT P ,并使用审核每分钟登录一次
      4. 允许来自192.168.122.0/24地址的新 IPv4连接连接TFTP服务,并且每分钟记录一次
      5. 丢弃所有icmp包
      6. 查看富规则
  5. 参考资料

前言

最近在设置jupyter环境时,遇到在linux系统开启服务后在另外电脑无法访问,检查各种设置之后,确认是linux的防火墙

没有开放端口。这篇文章主要介绍linux的防火墙(iptables和firewalld,ebtables之后完善)的设置。

防火墙

逻辑上,防火墙可以分为两类,一类是主机防火墙,另外一类是网络防火墙。主机防火墙用于单个主机的防护,而网络防火墙用于对网络进行防护,一般放置在网络的边缘出入口处。

物理上,防火墙也可分为两类,软件防火墙和硬件防火墙。软件防火墙的处理逻辑运行于通用平台之上,性能低,价格低;硬件防火墙一部分由硬件实现,另一部分基于软件实现,性能高,成本高。

本篇文章中所涉及的内容是软件级别的主机防火墙设置。

iptables

iptables并不是linux内的实质防火墙,真正的防火墙是由netfilter实现的,位于内核空间,而iptables只是在用户空间用于设置netfilter。iptables和netfilter共同组成了linux下的包过滤防火墙,可以完成封包过滤、封包重定向和网络地址转换(NAT)等功能。

iptables安装

yum install iptables或者apt-get install iptables

iptables基础

netfilter是按照规则进行过滤的,而iptables就是设置规则的,规则就是定义数据包头符合这样的条件就这样处理这个数据包。而这个规则是存储在内核空间的信息包过滤表中,表中分别指定了源地址、目的地址、传输协议(如:tcp、udp、icmp)和服务类型(如http、ftp和smtp)等,当数据包于规则匹配时,iptables就根据所定义的发方法去处理这些数据包,包括放行(accpt)、拒绝(reject)和丢弃(drop)等。通过iptables实际上就是管理这些规则。

五链

iptables的五链分别是:prerouting、input、output、forward、postrouting。之所以被称作链,原因是在每个链中匹配的规则不止一条,许许多多的规则串到链上便形成了链,所有数据包经过该链时会将链上所有规则都匹配一遍,符合规则的进行对应的动作。Ps:当一条链中有多个表规则时,优先级由高到低为:raw、mangle、nat和filter

链名称 作用 引用表的规则
prerouting 路由前 引用rawmanglenat表内规则
input 数据包入口 引用filternatmangle表内规则
forward 转发数据包 引用filtermangle表内规则
output 数据包出口 引用filternatmangleraw表内规则
postrouting 路由后 引用filternatmangleraw表内规则

五表

五链上都有许多的规则,这些规则有许多的地方是类似的,将相似的规则放置在一起形成了表。在centos7中一共5个表(之前为四表,新增security表),分别是filter表、nat表、mangle表、raw表和security表。

表名称 作用 作用于链
filter表 控制数据包是否允许进出和转发 控制inputoutputforward
nat表 控制数据包中地址转换 控制preroutinginputoutputpostrouting
mangle表 修改数据包中的原数据 控制preroutinginputforwardoutputpostrouting
raw表 控制nat表中连接追踪机制的启用状况 控制preroutingoutput
security表 用于强制访问控制(mac)网络规则

表链关系

在实际使用中,用户通过iptables工具管理表内规则,而链则使用表内的规则对数据包进行处理。实际数据包处理流程如图:

表链关系

iptables命令

查看iptables列表

iptables -nL

iptables是对规则进行管理的命令,语法为:

iptables [-t table] COMMAND [chain] CRETIRIA -j ACTION
参数:
-t table 指定操作的表
COMMAND 子命令,对规则进行管理
chain 指明链、
CRETIRIA 匹配的条件或标准
ACTION 操作动作

COMMAND

  • 链管理
    • -N, –new-chain chain:新建自定义的规则链;
    • -X, –delete0cahhin [chain]:删除用户自定义大的引用数为0的空链;
    • -F, –flush [chain]:清空指定的规则链上的规则;
    • -E, –rename-chain old-chain new-chain: 重命名链;
    • -Z, –zero [chain [rulenum]]: 置零计数器;
    • -P, –policy chain target: 设置链路的默认政策;
  • 规则管理
    • -A, –append chain rule-specification: 最近新规则于指定链的尾部;
    • -I, –insert chain [rulenum] rule-specification: 插入新规则于指定链的指定位置,默认为首部;
    • -R, –replace chain rulenum rule-specification: 替换指定的规则为新规则;
    • -D, –delete chain rulenum: 根据规则编号删除规则;
  • 查看规则
    • -L, –list [chain]: 列出规则;
    • -v, —verbose: 详细信息;
      • -vv, -vvv 更加详细的信息;
    • -n, –numeric: 数字格式显示主机地址和端口号;
    • -x, –exact: 显示计数器精确值;
    • –line-numbers: 列出规则时,显示其在链上的相应编号;
    • -S, –list-rules [chain]: 显示指定链的所有规则。

CRETIRIA

匹配条件包含通用匹配条件和拓展匹配条件。

通用匹配条件
  • -s, –source address[/mask][,…]: 检查报文的源ip地址是否符合此处指定的范围,或是否等于此处给定的地址;

  • -d, –destination address[/mask][,…]: 检查报文的目标ip地址是否符合此处指定的范围,或是否等于此处给定的地址;

  • -p, –protocol protocol: 匹配报文中的协议,可用值tcp、udp、udplite、icmp、icmpv6、esp、ah、sctp、mh或者”all”,也可以用数字格式指明协议;

  • -i, –in-interface name: 限定报文仅能从指定的接口流入;only for packets entering the INPUT、FORWARD and PREROUTING chains;

  • -o, –out-interface name: 限定报文仅能从指定接口流出;for packets entering the FORWARD、OUTPUT and POSTROUTING chains。

拓展匹配条件
  • 隐含拓展匹配条件
    • -p tcp: 可直接使用tcp拓展模块的专用选项;
      • –source-port, –sport port[:port] 匹配报文源端口;可以给出多个端口,但只能是连续的端口范围;
      • –destination-port, –dport port[:port] 匹配报文目标端口;可以给出多个端口,但只能是连续的端口范围;
      • –tcp-flags mask comp 匹配报文中的tcp协议的标志位;包括标志位: SYN ACK FIN RST URG PSH ALL NONE;mask是要检查的flags的列表;comp是在mask给定的诸多的FLAGS中,其值必须为1的flags列表,余下的其值必须为0;
      • –syn: –tcp-flags SYN,ACK,FIN,RST,SYN;
    • -p udp:可直接使用udp协议扩展模块的专用选项;
      • –source-port, –sport port[:port] 匹配报文源端口;可以给出多个端口,但只能是连续的端口范围;
      • –destination-port, –dport port[:port] 匹配报文目标端口;可以给出多个端口,但只能是连续的端口范围;
    • -p icmp
      • –icmp-type {type[/code]|typename} 0/0: echo reply; 8//0; echo request;
  • 显示拓展匹配条件,必须使用-m option选项指定扩展匹配的类型,常见的类型如下:
    • multiport 以离散或连续的方式定义多端口匹配条件,最多15个
      • –source-ports, –sports port[,port:port]…: 指定多个源端口;
      • –destination-ports, –dports port[,port:port]…: 指定多个目标端口;
      • 例:iptables -I INPUT -d 172.16.0.7 -p tcp -m multiport --dport 22,80,139,445,3306 -j ACCEPT
    • iprange 连续地址块的方式指明多地址匹配条件
      • –src-range fromip[-toip]
      • –dst-range fromip[-toip]
      • 例:iptables -I INPUT -d 172.16.0.7 -p tcp -m multiport --dports 22,80,139,445,3306 -m iprange --ser-range 172.16.0.61-172.16.0.70 -j REJECT
    • time 匹配数据包到达时间
      • –timestart hh:mm[:ss]
      • –timestop hh:mm[:ss]
      • –weekdays day[,day…]
      • –monthdays day[,day…]
      • –datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
      • –datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
      • –kernelltz 使用内核配置的时区而非使用默认的UTC
    • string 匹配数据包中的字符
      • –algo {bm|kmp}
      • –string pattern
      • –hex-string pattern
      • –from offset
      • –to offset
      • 例:iptables -I OUTPUT -m string --algo bm --string "gay" -j REJECT
    • connlimit 用于限制同一ip可建立的连接数目
      • –connlimit-upto n
      • –connlimit-above n
      • 例:iptables -I OUTPUT -s 172.16.0.7 -p icmp --icmp-type 0 -j ACCEPT
    • limit 限制收发数据包的速率
      • –limit rate[/second|/minite|/hour|/day]
      • –limit-burst number
    • state 限制收发包状态
      • –state state 状态包括invalid(无法识别的连接)、established(已建立的连接)、new(新连接请求)、related(相关联的连接,当前的连接是一个新请求,但附属于某个已存在的连接)或者untracked(未跟踪的连接)
      • state拓展
        • 内核模块装载: nf_connectck; nf_connect_ipv4
        • 手动装载: nf_connect_ftp
        • 追踪到的连接: /proc/net/nf_conntrack
        • 调整可记录的连接数量的最大值: /proc/sys/net/nf_conntrack_max
        • 超时时长: /proc/sys/net/netfilter/*timeout*

ACTION

动作使用-j指定,常用的有:

  • ACCEPT
  • DROP
  • REJECT
    • REJECT动作常用的选项为--reject-with,可以设置提示信息,被拒绝的原因如下:
      • icmp-net-unreachable
      • icmp-host-unreachable
      • icmp-port-unreachable
      • icmp-proto-unreachable
      • icmp-net-prohibited
      • icmp-host-prohibited
      • icmp-admin-prohibited
  • 例,禁用ping:iptables -A INPUT -p icmp --icmp-type 8 -j REJECT --reject-with icmp-admin-prohibited

保存iptables配置

使用iptables命令修改的是加载到内核空间的规则,但是没有写入磁盘中,重启之后会丢失配置。需要将规则保存。

Ubuntu

  1. 保存现有规则:iptables-save > /etc/iptables.rules

  2. 新建bash脚本,保存到/etc/network/if-pre-up.d目录下:iptables-restore < /etc/iptables.rules

注意不能在.bashrc或则.profile中执行以上命令,因为以上命令需要root权限。

Centos、RedHat、

# 保存iptables规则
service iptables save

# 重启iptables服务
service iptables restart

firewalld

Centos系统有的版本默认安装firewalld。firewalld相比iptables,每个服务都需要设置之后才能通过,默认为拒绝;而iptables默认是通过。相较而言firewalld更安全;可以动态修改单条规则,不用保存设置;设置更加人性化。但是firewalld和iptables都不是本身实现防火墙功能,而是透过内核的netfilter实现的。

firewalld安装

# ubuntu
apt-get install firewalld

# centos
yum install firewalld

启动服务

systemctl start firewalld

取消开机自启

systemctl disable firewalld

开机自动启动服务

systemctl enable firewalld

关闭服务

systemctl stop firewalld

查看状态

systemctl status firewalld
firewall-cmd --state

改用iptables

yum install iptables-services
systemctl start iptables
systemctl enable iptables

查看版本

firewall-cmd --state

查看帮助

firewall-cmd --help

显示状态

firewall-cmd --state

查看活动区域信息

firewall-cmd --get-active-zones

拒绝所有包

firewall-cmd --panic-on

取消拒绝状态

firewall-cmd --panic-off

查看是否拒绝

firewall-cmd --query-panic

查看firewalld是否开启

systemctl is-enabled firewalld

重启加载防火墙

firewall-cmd --reload

完全重启防火墙

firewall-cmd --complete-reload

显示默认区域

firewall-cmd --get-default-zone

添加接口到区域

firewall-cmd --set-default-zone=XX

查看区域打开的端口

firewall-cmd --zone=XX --list-ports

查看区域加载的服务

firewall-cmd --zone=XX --list-services

临时加一个端口到区域

firewall-cmd --zone=XX --add-port=8080/tcp
# 需要永久生效,使用--permanent参数

打开一个服务

firewall-cmd --zone=public --add-service=ftp

移除服务

firewall-cmd --zone=public --remove-service=ftp

显示支持的区域列表

firewall-cmd --get-zones

查看当前活跃区域

firewall-cmd --get-zone-of-interfacce=XX

列出全部区域启用的特性

firewall-cmd --list-all-zones

显示区域详情

firewall-cmd --zone=XX --list-all

获取接口所属区域

firewall-cmd --get-zone-of-interface=XX

添加接口到区域

firewall-cmd --zone=YY --add-interface=XX

查询区域中是否包含接口

firewall-cmd --zone=YY --query-interface=XX

删除指定网卡所在的zone

firewall-cmd --zone=YY --remove-interface=XX

临时修改接口为区域

firewall-cmd --zone=YY --change-interface=XX
# 永久修改添加--permanent参数

控制端口

控制端口的方式有两种:1. 通过服务名打开端口,必须使用服务名关闭端口;2. 使用端口号打开端口,必须使用端口号关闭端口,一定注意使用的是什么协议,tcp还是udp。

富规则

区域管理

firewalld将网卡对应到不同的区域(zone),默认有9个:block、dmz、drop、external、home、intenal、public、trusted和word。不同的区域之间差异是其对待数据包的默认行为不同。firewalld默认区域设置为public。通过将网络划分为不同区域,制定出不同区域之间的访问控制策略来控制不同程序区域键传送数据流。例如,互联网属于不可信任区域,而内部网络是高度信任区域。网络安全模型可以在安装,初次启动和首次创建网络连接时选择初始化。下面是对初始化区域的理解:

  • 阻塞区域(block): 任何传入的网络数据包都将被阻止。
  • 工作区域(work): 相信网络上的其他计算机不会损害你的计算机。
  • 家庭区域(home): 相信网络上的其他计算机不会损害你的计算机。
  • 公共区域(public): 不相信网络上的任何计算机,只又选择接受传入的网络连接。
  • 隔离区域(DMZ): 隔离区域也称为非军事区域,内外网络之间增加一层网络,起到缓冲作用。对于隔离区域,只能选择接受传入的网络连接。
  • 信任区域(trusted):所有网络连接都可以接受。
  • 丢弃区域(drop): 任何传入的网络连接都被拒绝。
  • 内部区域(internal): 信任网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络速度。
  • 外部区域(external): 不相信网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。

九个区域每个都对应一个配置文件,分别为block.xml、dmz.xml、drop.xml、external.xml、home.xml、internal.xml、public.xml、trusted.xml和work.xml,都存放在/etc/lib/firewalld/zones,默认只存在public区域的配置文件public.xml。如果对另一个zone进行改动,永久保存,就会生成对应的配置文件,例如,firewall-cmd --premanent --zone=work --add-port=1000/tcp。查看某区域的永久配置,可以查看对应的配置文件。

firewalld的配置方法分为三种:1. firewall-cmd命令行工具、firewall-config图形界面配置工具和直接编辑xml文件。系统默认的配置文件有两个,一个是系统配置,不建议更改,位置在/usr/lib/firewalld/;另一个是用户配置文件,在/etc/firewalld

服务

在/usr/lib/firewalld/sevices/目录中,还有另外一类配置文件,每个文件对应一项具体的网络服务,如ssh服务等。服务配置文件中记录了各项服务所使用的tcp/ip端口。目前firewalld已经定义了70多种服务,当默认提供的服务不够用或者自定义某项服务的端口时,可以将service配置文件放置在/etc/firewalld/services/目录下。通过这种方式,可以通过服务名字管理规则,更加人性化,并且当服务使用多个端口时,端口分组的模式更高效。

修改已有服务的端口

  1. firewalld默认的服务配置文件在/usr/lib/firewalld/services/目录下,如需更改需要将默认配置文件拷贝到/etc/firewalld/services/目录下。例如需要修改ftp端口,拷贝配置文件cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services/,内容为:

    <?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>
  2. 将拷贝后的文件中<port protocol="tcp" port="21"/>这一行指定了服务的端口,可以将21更改为所想要的端口号,如1221。

  3. 默认zone为public,编辑对应的public.xml,增加一行,内容为<service name="ftp" />

  4. 重载防火墙配置。firewall-cmd --reload

服务和端口管理

显示支持的服务
firewall-cmd --get-services
临时允许ftp服务通过600秒
firewall-cmd --add-service=ftp --timeout=600
显示默认区域开启的服务,如果要查询某区域,加参数–zone=XX
firewall-cmd --list-services
添加http服务到内部区域,并保存到配置文件
firewall-cmd --permanent --zone=internal --add-service=http
不改变状态条件下重新加载防火墙
firewall-cmd --reload
开放mysql服务
firewall-cmd --add-service=mysql
# 未指定区域的情况下,为默认区域
## 永久允许添加--permanent参数
阻止mysql服务
firewall-cmd --remove-service=mysql
## 永久允许添加--permanent参数
临时打开3690/tcp端口
firewall-cmd --add-port=3690/tcp
永久打开3690/tcp端口
firewall-cmd --permanent --add-port=3690/tcp
## 注意需要重新加载配置才能使设置生效
firewall-cmd --reload
阻止3690/tcp
firewall-cmd --remove-port=3690/tcp
## 如需永久阻止,需要添加--permanent参数
添加端口范围
firewall-cmd --add-port=2000-4000/tcp
## 永久需要添加--permanent参数
移除端口范围
firewall-cmd --remove-port=2000-4000/tcp
## 永久移除需要添加--permanent参数
获取永久支持的区域
firewall-cmd --permanent --get-zones

端口转发

将80端口流量转发到8080

firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080
## 永久添加--permanent参数

将80端口流量转发到192.168.0.1的8080端口

firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1:toport=8080
## 永久添加--permanent参数

禁止区域的端口转发或者端口映射

firewall-cmd --remove-forward-port=port=[-]:proto= {:toport=[-]|:toaddr=|:toport=[-]:toaddr=}

查询区域的端口转发或者端口映射

firewall-cmd --query-forward-port=port=[-]:proto= {:toport=[-]|:toaddr=|:toport=[-]:toaddr=}

伪装ip

检查是否允许伪装ip

firewall-cmd --query-masquerade
## 永久添加--permanent参数

允许防火墙伪装ip

firewall-cmd --add-masquerade
## 永久允许添加--permanent参数

禁止防火墙伪装ip

firewall-cmd --remove-masquerade
## 永久添加--permanent参数

伪装功能只支持ipv4

ICMP控制

获取所有支持的ICMP类型列表

firewall-cmd --get-icmptypes

永久启用区域中的ICMP阻塞,需要reload防火墙

firewall-cmd --permanent --add-icmp-block

永久禁用区域中的ICMP阻塞,需要reload防火墙

firewall-cmd --permanent --remove-icmp-block

查询区域中的ICMP永久状态

firewall-cmd --permanent --remove-icmp-block

配置文件

firewalld本身内置一些常用服务的防火墙规则,存放在/usr/lib/firewalld/services/,但是这里不要直接编辑该目录下的配置文件,最好将需要的配置文件拷贝到/etc/firewalld/services/,修改服务配置文件,之后将服务名添加到/etc/firewalld/zones/目录对应的区域配置文件将服务添加进去。

直接模式

firewalld的高级模式,可以直接使用iptables语法进行设置,但是只能增加规则,不能保存规则。

为表增加新链

firewall-cmd --direct --add-chain { ipv4 | ipv6 | eb }

从表中删除链

firewall-cmd --direct --remove-chain { ipv4 | ipv6 | eb }

查询链是否存在与表如果是,返回0,否则返回1

firewall-cmd --direct --query-chain { ipv4 | ipv6 | eb }

获取用空格分隔的表中链的列表

firewall-cmd --direct --get-chains { ipv4 | ipv6 | eb }

获取表中所有增加到链的规则,并用换行分隔

firewall-cmd --direct --get-rules { ipv4 | ipv6 | eb }

例:firewall-cmd --direct -add-rule ipv4 filter INPUT 0 -p tcp --dport 9000 -j ACCEPT

富语言

允许192.168.122.0/24主机所有连接

firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.122.0" accept'

每分钟允许2个新连接访问ftp服务

firewall-cmd --add-rich-rule='rule service name=ftp limit value=2/m accept'

同意新的 IPv4 和 ipv6 连接 FT P ,并使用审核每分钟登录一次

firewall-cmd --add-rich-rule='rule service name=ftp log limit value="1/m" audit accept'

允许来自192.168.122.0/24地址的新 IPv4连接连接TFTP服务,并且每分钟记录一次

firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.122.0/24" service name=ssh log prefix="ssh" level="notice" limit value="3/m" accept'

丢弃所有icmp包

firewall-cmd --permanent --add-rich-rule='rule protocol value=icmp drop'

查看富规则

firewall-cmd --list-rich-rules

参考资料

http://www.zsythink.net/archives/1199

http://www.zsythink.net/archives/1684

https://www.cnblogs.com/vathe/p/6973656.html

https://www.cnblogs.com/vathe/p/6973656.html

https://www.cnblogs.com/vicowong/p/11210144.html


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 qinzhtao@163.com

文章标题:linux防火墙设置

文章字数:5k

本文作者:捌叁壹伍

发布时间:2020-06-11, 21:59:24

最后更新:2020-06-15, 17:41:57

原始链接:http://qzt8315.github.io/2020/06/11/linux防火墙设置/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏