iptables

image.png

防火墙是什么

防火墙好比一堵真的墙,能够隔绝些什么,保护些什么。
防火墙的本义是指古代构筑和使用木制结构房屋的时候,为防止火灾的发生和蔓延,人们将坚固的石块堆砌在房屋周围作为屏障,这种防护构筑物就被称之为“防火墙”。其实与防火墙一起起作用的就是“门”。
如果没有门,各房间的人如何沟通呢,这些房间的人又如何进去呢?当火灾发生时,这些人又如何逃离现场呢?
这个门就相当于我们这里所讲的防火墙的“安全策略”,所以在此我们所说的防火墙实际并不是一堵实心墙,而是带有一些小孔的墙。
这些小孔就是用来留给那些允许进行的通信,在这些小孔中安装了过滤机制,就是防火墙的过滤策略了。

防火墙的作用

防火墙具有很好的保护作用。入侵者必须首先穿越防火墙的安全防线,才能接触目标计算机。

防火墙的功能

防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击,以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口。而且它还能禁止特定端口的流出通信。
最后,它可以禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信。

防火墙概念

防火墙一般有硬件防火墙和软件防火墙
硬件防火墙:在硬件级别实现部分防火墙功能,另一部分功能基于软件实现,性能高,成本高。
软件防火墙:在软件系统内核级别实现网络流量的过滤,应用软件处理逻辑运行于通用硬件平台之上的防火墙,性能低,成本低。

软件防火墙

Linux提供的软件防火墙,名为iptables,它可以理解为是一个客户端代理,通过iptables的代理,将用户配置的安全策略执行到对应的安全框架中,这个安全框架称之为netfilter。
_理解:_iptables是一个命令行的工具,位于用户空间,我们用这个工具操作真正的框架,也就是netfilter。真正实现流量过滤的防火墙框架是netfilter,位于内核空间,和操作系统离得最近,它俩共同组成了Linux的软件防火墙,一般用来代替昂贵的硬件防火墙,实现数据包过滤,网络地址转换等。
iptables + netfilter 共同组成了Linux的软件防火墙,一般用来替代昂贵的硬件防火墙。

在Centos7发行版本下,firewalld防火墙又取代了iptables防火墙

  • iptables是将配置好的规则交给内核层的netfilter网络过滤器来处理
  • filrewalld服务是将配置好的防火墙规则交给内核层的nftables网络过滤器处理

这俩工具二选一即可,都只是命令行工具,

iptables

iptables就是按照规则办事的,(rules)规则就是运维事先定义好的规则。

  1. [root@chaogelinux tmp]# iptables -L
  2. Chain INPUT (policy ACCEPT)
  3. target prot opt source destination
  4. Chain FORWARD (policy ACCEPT)
  5. target prot opt source destination
  6. Chain OUTPUT (policy ACCEPT)
  7. target prot opt source destination

iptables会从上至下的读取防火墙规则,找到匹配的规则后,就结束匹配工作,并且执行对应的动作。
如果读取所有的防火墙规则都没有符合的,就执行默认的规则。
规则一般两种:允许、拒绝。

  • 当默认策略是全部拒绝的时候,就要设置一些允许流量通过的规则,否则就全部禁止了
  • 当默认策略是全部允许的时候,就得设置一些拒绝的规则,否则机器就没安全可言了

规则就存储在内核空间的信息包过滤表中,这些规则定义了源地址信息、目的地址、传输的协议类型、服务类型等
当数据包符合规则条件时候,iptables就根据所定义的方法来处理这些数据包,放行accept、拒绝reject、丢弃drop。
image.png

iptables服务吧用于处理或者过滤流量的策略称之为规则,多条规则就组成了一个规则链,规则链根据数据包处理位置的不同进行分类。
image.png
具体5条链如下

  • 路由选择前处理数据包,prerouting链
  • 处理流入的数据包,input链
  • 处理流出的数据包,output链
  • 处理转发的数据包,forward链
  • 进行路由选择后处理数据包,postrouting链

正常情况下,服务器内网向外网发出的流量一般是良性可控的,主要处理的都是input链,从外网流入的流量,需要严格把控,能够很大程度防止恶意流量,造成服务器隐患。
image.png
image.png
防火墙的规则链,这在生活里很常见,例如外卖禁止入内、禁止小贩入内、共享单车禁止入内、车辆进入要登记
等等。
这些校园、小区门口都有一些规则,用于控制外来的人员,这就好比服务器设置的防火墙规则,禁止哪些流量进入。
好比现在有一个人送外卖,直接第一条规则就禁止入内了,外卖小哥只能离开或是想其他办法
现在又来了一个骑着共享单车的想要进入校园,他不是送外卖的,第一条规则通过,但是第二条规则,给他拦下来了。
现在有一个学生要进去校园,两条规则都不符合,如果默认规则是放行,学生则可以直接进入校园。

动作

校园大门口的保安,除了在门上贴上告示,定义一些规则链以外,在学生进入后还得有一些动作,好比服务器流量进入后,防火墙还得有一些动作去处理流量。

  • accept,允许数据包通过
  • reject,拒绝数据包通过,还会给客户端一个响应,告知它被拒绝了
  • log,在/var/log/message中记录日志,然后数据包传递给下一个规则,不做处理
  • drop,直接丢弃数据包,不给任何回应,客户端会以为自己的请求扔进大海了,直到请求超时报错
  • SNAT,源地址转换,解决内网用户用同一个公网的问题
  • DNAT,目标地址转换
  • redirect,在本机做端口映射

【drop和reject区别】
image.png
例如小明在家里,忽然有陌生人敲门,发现是自己的朋友来找自己出去玩,但是不想去,因此拒绝了他们(这就是reject)
如果小明透过猫眼发现门外是一个坏人敲门,小明闷不吭声,假装自己不在家(这就是drop)

iptables命令

  1. 语法
  2. iptables(选项)(参数)
  3. 这些选项指定执行明确的动作:若指令行下没有其他规定,该行只能指定一个选项. 对于长格式的命令和选项名,所用字母长度只要保证iptables能从其他选项中区 分出该指令就行了。
  4. -A -append
  5. 在所选择的链末添加一条或更多规则。当源(地址)或者/与 目的(地址)转换 为多于一个(多个)地址时,这条规则会加到所有可能的地址(组合)后面。
  6. -D -delete
  7. 从所选链中删除一条或更多规则。这条命令可以有两种方法:可以把被删除规则 指定为链中的序号(第一条序号为1),或者指定为要匹配的规则。
  8. -R -replace
  9. 从选中的链中取代一条规则。如果源(地址)或者/与 目的(地址)被转换为多地 址,该命令会失败。规则序号从1开始。
  10. -I -insert
  11. 根据给出的规则序号向所选链中插入一条或更多规则。所以,如果规则序号为1 规则会被插入链的头部。这也是不指定规则序号时的默认方式。
  12. -L -list
  13. 显示所选链的所有规则。如果没有选择链,所有链将被显示。也可以和z选项一起 使用,这时链会被自动列出和归零。精确输出受其它所给参数影响。
  14. -F -flush
  15. 清空所选链。这等于把所有规则一个个的删除。
  16. --Z -zero
  17. 把所有链的包及字节的计数器清空。它可以和 -L配合使用,在清空前察看计数器,请参见前文。
  18. -N -new-chain
  19. 根据给出的名称建立一个新的用户定义链。这必须保证没有同名的链存在。
  20. -X -delete-chain
  21. 删除指定的用户自定义链。这个链必须没有被引用,如果被引用,在删除之前你必须删 除或者替换与之有关的规则。如果没有给出参数,这条命令将试着删除每个非 内建的链。
  22. -P -policy
  23. 设置链的目标规则。
  24. -E -rename-chain
  25. 根据用户给出的名字对指定链进行重命名,这仅仅是修饰,对整个表的结构没有影响。 TARGETS参数给出一个合法的目标。只有非用户自定义链可以使用规则,而且内建链和用 户自定义链都不能是规则的目标。
  26. -h Help.
  27. 帮助。给出当前命令语法非常简短的说明。
  28. p -protocal [!]protocol
  29. 规则或者包检查(待检查包)的协议。指定协议可以是tcpudpicmp中的一个或 者全部,也可以是数值,代表这些协议中的某一个。当然也可以使用在/etc/pro tocols中定义的协议名。在协议名前加上"!"表示相反的规则。数字0相当于所有 allProtocol all会匹配所有协议,而且这是缺省时的选项。在和check命令结合 时,all可以不被使用。
  30. -s -source [!] address[/mask]
  31. 指定源地址,可以是主机名、网络名和清楚的IP地址。mask说明可以是网络掩码 或清楚的数字,在网络掩码的左边指定网络掩码左边”1”的个数,因此,mask 值为24等于255.255.255.0。在指定地址前加上"!"说明指定了相反的地址段。标志
  32. --src 是这个选项的简写。
  33. -d --destination [!] address[/mask]
  34. 指定目标地址,要获取详细说明请参见 -s标志的说明。标志 --dst 是这个选项的简写。
  35. -j --jump target
  36. (-j 目标跳转)指定规则的目标;也就是说,如果包匹配应当做什么。目标可以是用 户自定义链(不是这条规则所在的),某个会立即决定包的命运的专用内建目标, 或者一个扩展(参见下面的EXTENSIONS)。如果规则的这个选项被忽略,那么匹 配的过程不会对包产生影响,不过规则的计数器会增加。
  37. -i -in-interface [!] [name]
  38. (i -进入的(网络)接口 [!][名称])这是包经由该接口接收的可选的入口名称,包通过 该接口接收(在链INPUTFORWORDPREROUTING中进入的包)。当在接口名 前使用"!"说明后,指的是相反的名称。如果接口名后面加上"+",则所有以此接口名 开头的接口都会被匹配。如果这个选项被忽略,会假设为"+",那么将匹配任意接口。
  39. -o --out-interface [!][name]
  40. (-o --输出接口[名称])这是包经由该接口送出的可选的出口名称,包通过该口输出(在 FORWARDOUTPUTPOSTROUTING中送出的包)。当在接口名前使用"!"说明 后,指的是相反的名称。如果接口名后面加上"+",则所有以此接口名开头的接口都会 被匹配。如果这个选项被忽略,会假设为"+",那么将匹配所有任意接口。
  41. --dport num 匹配目标端口号
  42. --sport num 匹配来源端口号

iptables命令顺序

  1. iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

表名包括:

  • raw:高级功能,如:网址过滤。
  • mangle:数据包修改(QOS),用于实现服务质量。
  • net:地址转换,用于网关路由器。
  • filter:包过滤,用于防火墙规则。

规则链名包括:

  • INPUT链:处理输入数据包。
  • OUTPUT链:处理输出数据包。
  • PORWARD链:处理转发数据包。
  • PREROUTING链:用于目标地址转换(DNAT)。
  • POSTOUTING链:用于源地址转换(SNAT)。

动作包括:

  • ACCEPT:接收数据包。
  • DROP:丢弃数据包。
  • REDIRECT:重定向、映射、透明代理。
  • SNAT:源地址转换。
  • DNAT:目标地址转换。
  • MASQUERADE:IP伪装(NAT),用于ADSL。
  • LOG:日志记录。

    案例

    1.禁止服务器被ping,服务器拒绝icmp的流量,给与响应 ```shell

    给INPUT链添加规则,指定icmp协议,指定icmp类型 是8(回显请求), -s指定网段范围 -j 跳转的目标,即将做什么

    iptables -A INPUT -p icmp —icmp-type 8 -s 0/0 -j REJECT

客户端机器

yumac: ~ yuchao$ping 123.206.16.61 PING 123.206.16.61 (123.206.16.61): 56 data bytes 92 bytes from pyyuc (123.206.16.61): Destination Port Unreachable Vr HL TOS Len ID Flg off TTL Pro cks Src Dst 4 5 00 5400 c4b6 0 0000 33 01 6b31 192.168.11.14 123.206.16.61

  1. _2.服务器禁ping,请求直接丢弃_
  2. ```shell
  3. [root@chaogelinux ~]# iptables -F
  4. [root@chaogelinux ~]# iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
  5. yumac: ~ yuchao$ping 123.206.16.61
  6. PING 123.206.16.61 (123.206.16.61): 56 data bytes
  7. Request timeout for icmp_seq 0
  8. Request timeout for icmp_seq 1
  9. Request timeout for icmp_seq 2

3.检查防火墙规则

  1. [root@chaogelinux ~]# iptables -L
  2. Chain INPUT (policy ACCEPT)
  3. target prot opt source destination
  4. DROP icmp -- anywhere anywhere icmp echo-request
  5. Chain FORWARD (policy ACCEPT)
  6. target prot opt source destination
  7. Chain OUTPUT (policy ACCEPT)
  8. target prot opt source destination

4.清空所有防火墙规则链

  1. [root@chaogelinux ~]# iptables -F
  2. [root@chaogelinux ~]# iptables -L
  3. Chain INPUT (policy ACCEPT)
  4. target prot opt source destination
  5. Chain FORWARD (policy ACCEPT)
  6. target prot opt source destination
  7. Chain OUTPUT (policy ACCEPT)
  8. target prot opt source destination

5.注意不要轻易在云服务器上设置,默认拒绝的规则,否则ssh流量进不去,直接断开远程连接了
6.删除第一条规则

  1. [root@chaogelinux ~]# iptables -L
  2. Chain INPUT (policy ACCEPT)
  3. target prot opt source destination
  4. DROP icmp -- anywhere anywhere icmp echo-request
  5. Chain FORWARD (policy ACCEPT)
  6. target prot opt source destination
  7. Chain OUTPUT (policy ACCEPT)
  8. target prot opt source destination
  9. [root@chaogelinux ~]#
  10. [root@chaogelinux ~]# iptables -D INPUT 1

7.禁止访问本机的80端口

  1. #禁止流量进入,指定tcp类型,拒绝的端口是80,动作是拒绝
  2. iptables -A INPUT -p tcp --dport 80 -j DROP
  3. #客户端访问
  4. pythonav.cn

8.禁止服务器的FTP端口,也就是禁止21端口

  1. yumac: ~ yuchao$ftp 123.206.16.61
  2. Connected to 123.206.16.61.
  3. 220 (vsFTPd 3.0.2)
  4. Name (123.206.16.61:yuchao): chaoge
  5. 331 Please specify the password.
  6. Password:
  7. 230 Login successful.
  8. ftp> ls
  9. 200 PORT command successful. Consider using PASV.
  10. 150 Here comes the directory listing.
  11. -rw-r--r-- 1 0 0 0 Jan 08 02:49 haha
  12. drwx------ 2 2003 2003 4096 Jan 08 02:50 超哥到此一游
  13. 226 Directory send OK.
  14. ftp>
  15. #服务器禁止21端口流量
  16. [root@chaogelinux ~]# iptables -A INPUT -p tcp --dport 21 -j DROP
  17. #此时已经无法连接ftp
  18. yumac: ~ yuchao$ftp 123.206.16.61

9.只允许指定的ip远程连接此服务器,拒绝其他主机22端口流量

  1. #iptables自上而下匹配
  2. iptables -A INPUT -s 222.35.242.139/24 -p tcp --dport 22 -j ACCEPT
  3. iptables -A INPUT -p tcp --dport 22 -j REJECT
  4. [root@chaogelinux ~]# iptables -L
  5. Chain INPUT (policy ACCEPT)
  6. target prot opt source destination
  7. ACCEPT tcp -- 222.35.242.0/24 anywhere tcp dpt:ssh
  8. REJECT tcp -- anywhere anywhere tcp dpt:ssh reject-with icmp-port-unreachable
  9. Chain FORWARD (policy ACCEPT)
  10. target prot opt source destination
  11. Chain OUTPUT (policy ACCEPT)
  12. target prot opt source destination
  13. #换一台ip的机器,直接被拒绝
  14. [root@web01 ~]# ssh root@123.206.16.61
  15. ssh: connect to host 123.206.16.61 port 22: Connection refused
  16. #只要删除第二条拒绝的规则,即可
  17. [root@chaogelinux ~]# iptables -D INPUT 2
  18. #又可以连接了
  19. [root@web01 ~]# ssh root@123.206.16.61

10.禁止指定的机器ip,访问本机的80端口策略,可以封禁某些恶意请求

  1. #此时的防火墙规则
  2. [root@chaogelinux ~]# iptables -L
  3. Chain INPUT (policy ACCEPT)
  4. target prot opt source destination
  5. ACCEPT tcp -- 222.35.242.0/24 anywhere tcp dpt:ssh
  6. REJECT tcp -- anywhere anywhere tcp dpt:ssh reject-with icmp-port-unreachable
  7. Chain FORWARD (policy ACCEPT)
  8. target prot opt source destination
  9. Chain OUTPUT (policy ACCEPT)
  10. target prot opt source destination
  11. #在规则链开头,追加一个新规则,禁止某个ip地址,访问本机的80端口
  12. [root@chaogelinux ~]# iptables -I INPUT -p tcp -s 222.35.242.139/24 --dport 80 -j REJECT
  13. [root@chaogelinux ~]# iptables -L
  14. Chain INPUT (policy ACCEPT)
  15. target prot opt source destination
  16. REJECT tcp -- 222.35.242.0/24 anywhere tcp dpt:http reject-with icmp-port-unreachable
  17. ACCEPT tcp -- 222.35.242.0/24 anywhere tcp dpt:ssh
  18. REJECT tcp -- anywhere anywhere tcp dpt:ssh reject-with icmp-port-unreachable
  19. Chain FORWARD (policy ACCEPT)
  20. target prot opt source destination
  21. Chain OUTPUT (policy ACCEPT)
  22. target prot opt source destination
  23. [root@chaogelinux ~]#
  24. #此时已经无法访问
  25. yumac: ~ yuchao$curl 123.206.16.61
  26. curl: (7) Failed to connect to 123.206.16.61 port 80: Connection refused

11.禁止所有的主机网段,访问本机的8000~9000的端口

  1. [root@chaogelinux ~]# iptables -A INPUT -p tcp -s 0/0 --dport 8000:9000 -j REJECT
  2. [root@chaogelinux ~]#
  3. [root@chaogelinux ~]#
  4. [root@chaogelinux ~]# iptables -A INPUT -p udp -s 0/0 --dport 8000:9000 -j REJECT

firewalld

防火墙是 Linux 系统的主要的安全工具,可以提供基本的安全防护,在 Linux 历史上已经使用过的防火墙工具包括:ipfwadm、ipchains、iptables。在 Firewalld 中新引入了区域(Zones)这个概念。

firewalld 区域

firewalld通过将网络划分为不同的区域,制定出不同的区域之间访问控制策略。
例如公网环境是不可信任的区域,企业内网是高度信任的区域。
例如公共WIFI完全不受信任,家庭网一般完全可信。
image.png


firewalld 提供了支持网络 / 防火墙区域 (zone) 定义网络链接以及接口安全等级的动态防火墙管理工具
它支持 IPv4, IPv6 防火墙设置以及以太网桥接,并且拥有运行时配置和永久配置选项。
这个区域指的就是firewalld预先配置好的防火墙策略模板,用户根据不同的场景选择合适的策略模板。
例如我们一台机器可能会运行在不同的环境,公司中,咖啡馆,家庭。

  • 公司,只允许访问samba服务
  • 咖啡厅,只允许进行网页浏览
  • 家中,允许所有流量进出

image.png
免费的公共wifi就等同于你把你的车敞开车门停在停车场内,你可以想象下有多不安全。所以在公共场所使用免费wifi时不要使用网上银行,因为电脑黑客无处不在。
如果来回切换多个环境,我们就得反复修改规则,很是麻烦,因此firewalld提供了防火墙规则模板,我们只需要切换不同的区域,即可实现不同的防火墙规则,很是方便。

zone区域 策略
drop(丢弃) 任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接。
block(限制) 任何接收的网络连接都被 IPv4 的 icmp-host-prohibited 信息和 IPv6 的 icmp6-adm-prohibited 信息所拒绝。
public(公共) 在公共区域内使用,不能相信网络内的其他计算机不会对您的计算机造成危害,只能接收经过选取的连接。
external(外部) 特别是为路由器启用了伪装功能的外部网。您不能信任来自网络的其他计算,不能相信它们不会对您的计算机造成危害,只能接收经过选择的连接。
dmz(非军事区) 用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接。
work(工作) 用于工作区。您可以基本相信网络内的其他电脑不会危害您的电脑。仅仅接收经过选择的连接。
home(家庭) 用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连接。
internal(内部) 用于内部网络。同于home
trusted(信任) 可接受所有的网络连接。
说明:firewalld 的缺省区域是 public。

firewalld-cmd命令

请使用public区域,权限放开的较多,便于做实验

  1. [root@chaogelinux ~]# systemctl status firewalld
  2. firewalld.service - firewalld - dynamic firewall daemon
  3. Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
  4. Active: inactive (dead)
  5. Docs: man:firewalld(1)

一个叫做firewall-cmd的命令行客户端支持和这个守护进程通信以永久修改防火墙规则。

  1. # firewall-cmd --list-all-zones #查看所有的zone信息
  2. # firewall-cmd --get-default-zone #查看默认zone是哪一个
  3. # firewall-cmd --zone=internal --change-zone=p3p1 #临时修改接口p3p1所属的zone为internal
  4. # firewall-cmd --add-service=http #暂时开放http
  5. # firewall-cmd --permanent --add-service=http #永久开放http
  6. # firewall-cmd --zone=public --add-port=80/tcp --permanent #在public中永久开放80端口
  7. # firewall-cmd --permanent --zone=public --remove-service=ssh #从public zone中移除服务
  8. # firewall-cmd --reload #重新加载配置

有关firewalld-cmd命令可以这么查看

  1. [root@chaogelinux ~]# firewall-cmd --help

需要注意的是,firewalld配置的策略是运行时生效(Runtime),系统重启,配置也就丢失了
可以在配置参数的时候,添加—permanent参数,防火墙配置永久生效
案例

  1. # firewall-cmd --zone=public --add-port=80/tcp --permanent #开放80 端口
  2. --zone #作用域
  3. --add-port=80/tcp #添加端口,格式为:端口/通讯协议
  4. --permanent #永久生效,没有此参数重启后失效

firewalld案例

  1. [root@chaogelinux ~]# firewall-cmd --get-default-zone #服务没有运行
  2. FirewallD is not running
  3. #启动服务
  4. systemctl start firewalld

1.检查当前firewalld的区域

  1. [root@chaogelinux ~]# firewall-cmd --get-default-zone
  2. public

2.设置当前区域为家庭区域,个人学习时候,还是使用public

  1. [root@chaogelinux ~]# firewall-cmd --set-default-zone=home
  2. success
  3. [root@chaogelinux ~]# firewall-cmd --get-default-zone
  4. home
  5. [root@chaogelinux ~]# firewall-cmd --set-default-zone=home
  6. success

3.永久修改eth0网卡为public家庭区域

  1. [root@chaogelinux ~]# firewall-cmd --permanent --zone=public --change-interface=eth0
  2. success
  3. #改完了重新加载服务
  4. [root@chaogelinux ~]# firewall-cmd --reload
  5. success
  6. [root@chaogelinux ~]# firewall-cmd --permanent --zone=public --change-interface=eth0
  7. success
  8. #查询eth0网卡默认区域
  9. [root@chaogelinux ~]# firewall-cmd --get-zone-of-interface=eth0
  10. home

4.拒绝所有流量包
慎用,会断开ssh流量,一般用于服务器被恶意攻击

  1. firewall-cmd --panic-on #立刻回断开所有的流量连接
  2. firewall-cmd --panic-off #解封

5.查询public区域是否允许了

  1. #防火墙允许ssh通过
  2. [root@chaogelinux ~]# firewall-cmd --zone=public--query-service=ssh
  3. yes
  4. #防火墙是否允许了http服务
  5. [root@chaogelinux ~]# firewall-cmd --zone=public --query-service=http
  6. no
  7. #此时服务器的80端口是无法访问的
  8. #防火墙是否允许了ftp服务
  9. [root@chaogelinux ~]# firewall-cmd --zone=public --query-service=ftp
  10. no

修改firewalld规则,允许http,ftp服务通过,永久生效
添加参数—permanent则是永久生效,必须得重启

  1. #临时配置,立即生效
  2. [root@chaogelinux ~]# firewall-cmd --zone=public --add-service=http
  3. success
  4. #永久配置,需要reload
  5. [root@chaogelinux ~]# firewall-cmd --permanent --zone=public --add-service=http
  6. success
  7. [root@chaogelinux ~]# firewall-cmd --reload
  8. success
  9. #永久配置ftp规则允许通过
  10. [root@chaogelinux ~]# firewall-cmd --permanent --zone=public --add-service=ftp
  11. success
  12. [root@chaogelinux ~]# firewall-cmd --reload
  13. success
  14. #如果拒绝就删除即可,永久删除,也得reload重新加载
  15. [root@chaogelinux ~]# firewall-cmd --permanent --zone=public --remove-service=ftp
  16. success
  17. [root@linuxprobe ~]# firewall-cmd --reload
  18. success

临时打开某个端口的访问策略

  1. [root@chaogelinux ~]# firewall-cmd --zone=public --add-port=8000-9000/tcp
  2. success
  3. #列出端口情况
  4. [root@chaogelinux ~]# firewall-cmd --zone=public --list-ports
  5. 8000-9000/tcp

【防火墙端口转发】
如下管理命令

  1. #列出home区域的端口转发情况
  2. [root@chaogelinux ~]# firewall-cmd --permanent --zone=public --list-forward-ports
  3. #转发语句,将23344端口的流量,转发给22端口
  4. [root@chaogelinux ~]# firewall-cmd --permanent --zone=public --add-forward-port=port=23344:proto=tcp:toport=22:toaddr=192.168.178.185
  5. success
  6. #记住,firewalld 加上--permanent参数,必须reload才行
  7. [root@chaogelinux ~]# firewall-cmd --reload
  8. success
  9. #如要删除转发语句
  10. firewall-cmd --permanent --zone=public --remove-forward-port=port=23344:proto=tcp:toport=22:toaddr=192.168.178.185