iptables
防火墙是什么
防火墙好比一堵真的墙,能够隔绝些什么,保护些什么。
防火墙的本义是指古代构筑和使用木制结构房屋的时候,为防止火灾的发生和蔓延,人们将坚固的石块堆砌在房屋周围作为屏障,这种防护构筑物就被称之为“防火墙”。其实与防火墙一起起作用的就是“门”。
如果没有门,各房间的人如何沟通呢,这些房间的人又如何进去呢?当火灾发生时,这些人又如何逃离现场呢?
这个门就相当于我们这里所讲的防火墙的“安全策略”,所以在此我们所说的防火墙实际并不是一堵实心墙,而是带有一些小孔的墙。
这些小孔就是用来留给那些允许进行的通信,在这些小孔中安装了过滤机制,就是防火墙的过滤策略了。
防火墙的作用
防火墙具有很好的保护作用。入侵者必须首先穿越防火墙的安全防线,才能接触目标计算机。
防火墙的功能
防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击,以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口。而且它还能禁止特定端口的流出通信。
最后,它可以禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信。
防火墙概念
防火墙一般有硬件防火墙和软件防火墙
硬件防火墙:在硬件级别实现部分防火墙功能,另一部分功能基于软件实现,性能高,成本高。
软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙,性能低,成本低。
软件防火墙
Linux提供的软件防火墙,名为iptables
,它可以理解为是一个客户端代理,通过iptables
的代理,将用户配置的安全策略执行到对应的安全框架
中,这个安全框架称之为netfilter
。
iptables是一个命令行的工具,位于用户空间,我们用这个工具操作真正的框架,也就是netfilter
真正实现流量过滤的防火墙框架是netfilter
,位于内核空间,它俩共同组成了Linux的软件防火墙,一般用来代替昂贵的硬件防火墙,实现数据包过滤,网络地址转换等。
在Centos7发行版本下,firewalld防火墙又取代了iptables防火墙
iptables是将配置好的规则交给内核层的netfilter网络过滤器来处理
filrewalld服务是将配置好的防火墙规则交给内核层的nftables网络过滤器处理
这俩工具二选一即可,都只是命令行工具,
iptables
iptables就是按照规则办事的,(rules)规则就是运维事先定义好的规则。
[root@chaogelinux tmp]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
iptables会从上至下的读取防火墙规则,找到匹配的规则后,就结束匹配工作,并且执行对应的动作。
如果读取所有的防火墙规则都没有符合的,就执行默认的规则。
规则一般两种:允许、拒绝。
- 当默认策略是全部拒绝的时候,就要设置一些允许流量通过的规则,否则就全部禁止了
- 当默认策略是全部允许的时候,就得设置一些拒绝的规则,否则机器就没安全可言了
规则就存储在内核空间的信息包过滤表中,这些规则定义了源地址信息、目的地址、传输的协议类型、服务类型等
当数据包符合规则条件时候,iptables就根据所定义的方法来处理这些数据包,放行accept、拒绝reject、丢弃drop
。
链
iptables服务吧用于处理或者过滤流量的策略称之为规则,多条规则就组成了一个规则链
,规则链根据数据包处理位置的不同进行分类。
具体5条链如下
- 路由选择前处理数据包,prerouting链
- 处理流入的数据包,input链
- 处理流出的数据包,output链
- 处理转发的数据包,forward链
- 进行路由选择后处理数据包,postrouting链
正常情况下,服务器内网向外网发出的流量一般是良性可控的,主要处理的都是input链,从外网流入的流量,需要严格把控,能够很大程度防止恶意流量,造成服务器隐患。
防火墙的规则链,这在生活里很常见,例如外卖禁止入内
、禁止小贩入内
、共享单车禁止入内
、车辆进入要登记
等等。
这些校园、小区门口都有一些规则,用于控制外来的人员,这就好比服务器设置的防火墙规则,禁止哪些流量进入。
好比现在有一个人送外卖,直接第一条规则就禁止入内了,外卖小哥只能离开或是想其他办法
现在又来了一个骑着共享单车的想要进入校园,他不是送外卖的,第一条规则通过,但是第二条规则,给他拦下来了。
现在有一个学生要进去校园,两条规则都不符合,如果默认规则是放行,学生则可以直接进入校园。
动作
校园大门口的保安,除了在门上贴上告示,定义一些规则链
以外,在学生进入后还得有一些动作,好比服务器流量进入后,防火墙还得有一些动作去处理流量。
- accept,允许数据包通过
- reject,拒绝数据包通过,还会给客户端一个响应,告知它被拒绝了
- log,在
/var/log/message
中记录日志,然后数据包传递给下一个规则,不做处理 - drop,直接丢弃数据包,不给任何回应,客户端会以为自己的请求扔进大海了,直到请求超时报错
- SNAT,源地址转换,解决内网用户用同一个公网的问题
- DNAT,目标地址转换
- redirect,在本机做端口映射
【drop和reject区别】
例如小明在家里,忽然有陌生人敲门,发现是自己的朋友来找自己出去玩,但是不想去,因此拒绝了他们(这就是reject)
如果小明透过猫眼发现门外是一个坏人敲门,小明闷不吭声,假装自己不在家(这就是drop)
iptables命令
语法
iptables(选项)(参数)
这些选项指定执行明确的动作:若指令行下没有其他规定,该行只能指定一个选项. 对于长格式的命令和选项名,所用字母长度只要保证iptables能从其他选项中区 分出该指令就行了。
-A -append
在所选择的链末添加一条或更多规则。当源(地址)或者/与 目的(地址)转换 为多于一个(多个)地址时,这条规则会加到所有可能的地址(组合)后面。
-D -delete
从所选链中删除一条或更多规则。这条命令可以有两种方法:可以把被删除规则 指定为链中的序号(第一条序号为1),或者指定为要匹配的规则。
-R -replace
从选中的链中取代一条规则。如果源(地址)或者/与 目的(地址)被转换为多地 址,该命令会失败。规则序号从1开始。
-I -insert
根据给出的规则序号向所选链中插入一条或更多规则。所以,如果规则序号为1, 规则会被插入链的头部。这也是不指定规则序号时的默认方式。
-L -list
显示所选链的所有规则。如果没有选择链,所有链将被显示。也可以和z选项一起 使用,这时链会被自动列出和归零。精确输出受其它所给参数影响。
-F -flush
清空所选链。这等于把所有规则一个个的删除。
--Z -zero
把所有链的包及字节的计数器清空。它可以和 -L配合使用,在清空前察看计数器,请参见前文。
-N -new-chain
根据给出的名称建立一个新的用户定义链。这必须保证没有同名的链存在。
-X -delete-chain
删除指定的用户自定义链。这个链必须没有被引用,如果被引用,在删除之前你必须删 除或者替换与之有关的规则。如果没有给出参数,这条命令将试着删除每个非 内建的链。
-P -policy
设置链的目标规则。
-E -rename-chain
根据用户给出的名字对指定链进行重命名,这仅仅是修饰,对整个表的结构没有影响。 TARGETS参数给出一个合法的目标。只有非用户自定义链可以使用规则,而且内建链和用 户自定义链都不能是规则的目标。
-h Help.
帮助。给出当前命令语法非常简短的说明。
p -protocal [!]protocol
规则或者包检查(待检查包)的协议。指定协议可以是tcp、udp、icmp中的一个或 者全部,也可以是数值,代表这些协议中的某一个。当然也可以使用在/etc/pro tocols中定义的协议名。在协议名前加上"!"表示相反的规则。数字0相当于所有 all。Protocol all会匹配所有协议,而且这是缺省时的选项。在和check命令结合 时,all可以不被使用。
-s -source [!] address[/mask]
指定源地址,可以是主机名、网络名和清楚的IP地址。mask说明可以是网络掩码 或清楚的数字,在网络掩码的左边指定网络掩码左边”1”的个数,因此,mask 值为24等于255.255.255.0。在指定地址前加上"!"说明指定了相反的地址段。标志
--src 是这个选项的简写。
-d --destination [!] address[/mask]
指定目标地址,要获取详细说明请参见 -s标志的说明。标志 --dst 是这个选项的简写。
-j --jump target
(-j 目标跳转)指定规则的目标;也就是说,如果包匹配应当做什么。目标可以是用 户自定义链(不是这条规则所在的),某个会立即决定包的命运的专用内建目标, 或者一个扩展(参见下面的EXTENSIONS)。如果规则的这个选项被忽略,那么匹 配的过程不会对包产生影响,不过规则的计数器会增加。
-i -in-interface [!] [name]
(i -进入的(网络)接口 [!][名称])这是包经由该接口接收的可选的入口名称,包通过 该接口接收(在链INPUT、FORWORD和PREROUTING中进入的包)。当在接口名 前使用"!"说明后,指的是相反的名称。如果接口名后面加上"+",则所有以此接口名 开头的接口都会被匹配。如果这个选项被忽略,会假设为"+",那么将匹配任意接口。
-o --out-interface [!][name]
(-o --输出接口[名称])这是包经由该接口送出的可选的出口名称,包通过该口输出(在 链FORWARD、OUTPUT和POSTROUTING中送出的包)。当在接口名前使用"!"说明 后,指的是相反的名称。如果接口名后面加上"+",则所有以此接口名开头的接口都会 被匹配。如果这个选项被忽略,会假设为"+",那么将匹配所有任意接口。
--dport num 匹配目标端口号
--sport num 匹配来源端口号
iptables命令顺序
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的流量,给与响应
#给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
2.服务器禁ping,请求直接丢弃
[root@chaogelinux ~]# iptables -F
[root@chaogelinux ~]# iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
yumac: ~ yuchao$ping 123.206.16.61
PING 123.206.16.61 (123.206.16.61): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
3.检查防火墙规则
[root@chaogelinux ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP icmp -- anywhere anywhere icmp echo-request
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
4.清空所有防火墙规则链
[root@chaogelinux ~]# iptables -F
[root@chaogelinux ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
5.注意不要轻易在云服务器上设置,默认拒绝的规则,否则ssh流量进不去,直接断开远程连接了
6.删除第一条规则
[root@chaogelinux ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP icmp -- anywhere anywhere icmp echo-request
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@chaogelinux ~]#
[root@chaogelinux ~]# iptables -D INPUT 1
7.禁止访问本机的80端口
#禁止流量进入,指定tcp类型,拒绝的端口是80,动作是拒绝
iptables -A INPUT -p tcp --dport 80 -j DROP
#客户端访问
pythonav.cn
8.禁止服务器的FTP端口,也就是禁止21端口
yumac: ~ yuchao$ftp 123.206.16.61
Connected to 123.206.16.61.
220 (vsFTPd 3.0.2)
Name (123.206.16.61:yuchao): chaoge
331 Please specify the password.
Password:
230 Login successful.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 0 Jan 08 02:49 haha
drwx------ 2 2003 2003 4096 Jan 08 02:50 超哥到此一游
226 Directory send OK.
ftp>
#服务器禁止21端口流量
[root@chaogelinux ~]# iptables -A INPUT -p tcp --dport 21 -j DROP
#此时已经无法连接ftp
yumac: ~ yuchao$ftp 123.206.16.61
9.只允许指定的ip远程连接此服务器,拒绝其他主机22端口流量
#iptables自上而下匹配
iptables -A INPUT -s 222.35.242.139/24 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j REJECT
[root@chaogelinux ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 222.35.242.0/24 anywhere tcp dpt:ssh
REJECT tcp -- anywhere anywhere tcp dpt:ssh reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
#换一台ip的机器,直接被拒绝
[root@web01 ~]# ssh root@123.206.16.61
ssh: connect to host 123.206.16.61 port 22: Connection refused
#只要删除第二条拒绝的规则,即可
[root@chaogelinux ~]# iptables -D INPUT 2
#又可以连接了
[root@web01 ~]# ssh root@123.206.16.61
10.禁止指定的机器ip,访问本机的80端口策略,可以封禁某些恶意请求
#此时的防火墙规则
[root@chaogelinux ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 222.35.242.0/24 anywhere tcp dpt:ssh
REJECT tcp -- anywhere anywhere tcp dpt:ssh reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
#在规则链开头,追加一个新规则,禁止某个ip地址,访问本机的80端口
[root@chaogelinux ~]# iptables -I INPUT -p tcp -s 222.35.242.139/24 --dport 80 -j REJECT
[root@chaogelinux ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
REJECT tcp -- 222.35.242.0/24 anywhere tcp dpt:http reject-with icmp-port-unreachable
ACCEPT tcp -- 222.35.242.0/24 anywhere tcp dpt:ssh
REJECT tcp -- anywhere anywhere tcp dpt:ssh reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@chaogelinux ~]#
#此时已经无法访问
yumac: ~ yuchao$curl 123.206.16.61
curl: (7) Failed to connect to 123.206.16.61 port 80: Connection refused
11.禁止所有的主机网段,访问本机的8000~9000的端口
[root@chaogelinux ~]# iptables -A INPUT -p tcp -s 0/0 --dport 8000:9000 -j REJECT
[root@chaogelinux ~]#
[root@chaogelinux ~]#
[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完全不受信任,家庭网一般完全可信。
firewalld 提供了支持网络 / 防火墙区域 (zone) 定义网络链接以及接口安全等级的动态防火墙管理工具
它支持 IPv4, IPv6 防火墙设置以及以太网桥接,并且拥有运行时配置和永久配置选项。
这个区域指的就是firewalld预先配置好的防火墙策略模板,用户根据不同的场景选择合适的策略模板。
例如我们一台机器可能会运行在不同的环境,公司中,咖啡馆,家庭。
- 公司,只允许访问samba服务
- 咖啡厅,只允许进行网页浏览
- 家中,允许所有流量进出
免费的公共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区域,权限放开的较多,便于做实验
启动CentOS/RHEL 7后,防火墙规则设置由firewalld服务进程默认管理。
[root@chaogelinux ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
一个叫做firewall-cmd的命令行客户端支持和这个守护进程通信以永久修改防火墙规则。
# firewall-cmd --list-all-zones #查看所有的zone信息
# firewall-cmd --get-default-zone #查看默认zone是哪一个
# firewall-cmd --zone=internal --change-zone=p3p1 #临时修改接口p3p1所属的zone为internal
# firewall-cmd --add-service=http #暂时开放http
# firewall-cmd --permanent --add-service=http #永久开放http
# firewall-cmd --zone=public --add-port=80/tcp --permanent #在public中永久开放80端口
# firewall-cmd --permanent --zone=public --remove-service=ssh #从public zone中移除服务
# firewall-cmd --reload #重新加载配置
有关firewalld-cmd命令可以这么查看
[root@chaogelinux ~]# firewall-cmd --help
需要注意的是,firewalld配置的策略是运行时生效(Runtime)
,系统重启,配置也就丢失了
可以在配置参数的时候,添加--permanent
参数,防火墙配置永久生效
案例
# firewall-cmd --zone=public --add-port=80/tcp --permanent #开放80 端口
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
firewalld案例
[root@chaogelinux ~]# firewall-cmd --get-default-zone #服务没有运行
FirewallD is not running
#启动服务
systemctl start firewalld
1.检查当前firewalld的区域
[root@chaogelinux ~]# firewall-cmd --get-default-zone
public
2.设置当前区域为家庭区域,个人学习时候,还是使用public
[root@chaogelinux ~]# firewall-cmd --set-default-zone=home
success
[root@chaogelinux ~]# firewall-cmd --get-default-zone
home
[root@chaogelinux ~]# firewall-cmd --set-default-zone=home
success
3.永久修改eth0网卡为public家庭区域
[root@chaogelinux ~]# firewall-cmd --permanent --zone=public --change-interface=eth0
success
#改完了重新加载服务
[root@chaogelinux ~]# firewall-cmd --reload
success
[root@chaogelinux ~]# firewall-cmd --permanent --zone=public --change-interface=eth0
success
#查询eth0网卡默认区域
[root@chaogelinux ~]# firewall-cmd --get-zone-of-interface=eth0
home
4.拒绝所有流量包
慎用,会断开ssh流量,一般用于服务器被恶意攻击
firewall-cmd --panic-on #立刻回断开所有的流量连接
firewall-cmd --panic-off #解封
5.查询public区域是否允许了
#防火墙允许ssh通过
[root@chaogelinux ~]# firewall-cmd --zone=public--query-service=ssh
yes
#防火墙是否允许了http服务
[root@chaogelinux ~]# firewall-cmd --zone=public --query-service=http
no
#此时服务器的80端口是无法访问的
#防火墙是否允许了ftp服务
[root@chaogelinux ~]# firewall-cmd --zone=public --query-service=ftp
no
修改firewalld规则,允许http,ftp服务通过,永久生效
添加参数--permanent
则是永久生效,必须得重启
#临时配置,立即生效
[root@chaogelinux ~]# firewall-cmd --zone=public --add-service=http
success
#永久配置,需要reload
[root@chaogelinux ~]# firewall-cmd --permanent --zone=public --add-service=http
success
[root@chaogelinux ~]# firewall-cmd --reload
success
#永久配置ftp规则允许通过
[root@chaogelinux ~]# firewall-cmd --permanent --zone=public --add-service=ftp
success
[root@chaogelinux ~]# firewall-cmd --reload
success
#如果拒绝就删除即可,永久删除,也得reload重新加载
[root@chaogelinux ~]# firewall-cmd --permanent --zone=public --remove-service=ftp
success
[root@linuxprobe ~]# firewall-cmd --reload
success
临时打开某个端口的访问策略
[root@chaogelinux ~]# firewall-cmd --zone=public --add-port=8000-9000/tcp
success
#列出端口情况
[root@chaogelinux ~]# firewall-cmd --zone=public --list-ports
8000-9000/tcp
【防火墙端口转发】
如下管理命令
#列出home区域的端口转发情况
[root@chaogelinux ~]# firewall-cmd --permanent --zone=public --list-forward-ports
#转发语句,将23344端口的流量,转发给22端口
[root@chaogelinux ~]# firewall-cmd --permanent --zone=public --add-forward-port=port=23344:proto=tcp:toport=22:toaddr=192.168.178.185
success
#记住,firewalld 加上--permanent参数,必须reload才行
[root@chaogelinux ~]# firewall-cmd --reload
success
#如要删除转发语句
firewall-cmd --permanent --zone=public --remove-forward-port=port=23344:proto=tcp:toport=22:toaddr=192
原创文章,作者:254126420,如若转载,请注明出处:https://blog.ytso.com/271881.html