关于firewalld没有开启22端口但22端口可以被访问的问题

缘由

最近看到vps有上万条登陆失败记录,感觉很危险,想设置一下防火墙。但是看到防火墙没有开启22端口,就好奇既然没有开启为什么能访问。

分析问题

一查才知道是防火墙开启的是ssh服务。
查询记录如下,虽然port项目下没有22端口,但是在services下有ssh服务。所以firewalld是允许了ssh服务通过防火墙,而ssh服务默认是22端口,所以能正常使用ssh
可以通过单独的命令查询防火墙开启的服务

firewall-cmd --list-services

操作记录如下:

[host]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: cockpit dhcpv6-client ssh
ports: 80/tcp 443/tcp
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[host]# firewall-cmd --list-services
cockpit dhcpv6-client ssh
[host]# 

其他验证

注意:除非你有其他方式设置ssh访问权限,否则不要尝试下面内容,否则可能连不上vps了。

关闭ssh服务验证

如果我在防火墙上关闭ssh服务,理论上应该就无法连接ssh了,下面进行验证。
1、关闭ssh服务

firewall-cmd --remove-service=ssh --permanent

2、随后重新加载配置文件

firewall-cmd --reload

执行 firewall-cmd reload 命令可以重新加载 firewalld 的配置文件,使新的规则生效。这个命令会重新加载防火墙配置,但不会中断当前的连接。在重新加载配置后,防火墙将使用更新后的规则进行进一步的连接处理。

操作记录如下:

[host]# firewall-cmd --remove-service=ssh --permanent
success
[host]# firewall-cmd --list-services
cockpit dhcpv6-client ssh
[host]# firewall-cmd --reload
success
[host]# firewall-cmd --list-services
cockpit dhcpv6-client
[host]# 

3、现在就连接不上ssh服务了。
我用了两种验证方式,分别是telnet工具和使用vscode进行ssh连接。这里不再展开叙述。

开启端口白名单验证

如果我在防火墙上开启端口白名单,理论上应该就可以连接ssh了,下面进行验证。

1、我通过管理面板添加白名单

2、查询如下,可以看出已经对固定的ip放行了

[host]# firewall-cmd --list-rich-rules
rule family="ipv4" source address="223.104.38.72" port port="22" protocol="tcp" accept
rule family="ipv4" source address="117.136.38.62" port port="22" protocol="tcp" accept

3、现在可以正常连接了。
我用了两种验证方式,分别是telnet工具和使用vscode进行ssh连接。这里不再展开叙述。

结论

防火墙既可以通过端口也可以通过服务来控制访问。

补充

实际上,不仅是上面提到的两种方式,常用的方式说明如下:

  1. 通过端口和服务:可以使用 firewalld 控制特定端口或服务的访问权限。你可以允许或拒绝对特定端口或预定义服务的访问。例如,允许 SSH 访问的命令如下所示:

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

    或者,允许特定端口的访问,例如允许端口 8080 的命令如下:

    firewall-cmd --zone=public --add-port=8080/tcp
  2. 通过 IP 地址或 IP 范围:你可以使用 firewalld 控制特定 IP 地址或 IP 范围的访问。可以允许或拒绝对特定 IP 地址的访问。以下是一个允许特定 IP 地址访问的示例:

    firewall-cmd --zone=public --add-source=192.168.1.100

    或者,允许特定 IP 范围的访问,例如允许 192.168.1.0/24 网络的命令如下:

    firewall-cmd --zone=public --add-source=192.168.1.0/24
  3. 通过网络接口:你可以使用 firewalld 控制特定网络接口的访问权限。这对于限制特定接口的入站或出站流量很有用。以下是一个将规则应用于特定接口的示例:

    firewall-cmd --zone=public --add-interface=eth0
  4. 通过富规则(Rich Rules):Firewalld 还支持使用富规则来定义更复杂和灵活的访问控制。通过富规则,你可以基于多个条件(例如端口、IP、协议等)定义高级规则。以下是一个添加富规则的示例:

    firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept'

这些只是 firewalld 提供的一些常见方法,用于控制访问权限。你可以根据自己的需求和具体情况选择适当的方法来配置 firewalld。记得在修改规则后,使用 firewall-cmd --reload 命令重新加载配置,使更改生效。

  1. 服务和端口组:除了单独指定端口,Firewalld 还支持定义服务和端口组。服务是一组预定义的端口集合,可以通过名称来引用。端口组是用户自定义的端口集合,方便管理和重复使用。你可以使用这些服务和端口组来简化规则的配置。以下是一些示例:

    • 允许 HTTP 服务访问:

      firewall-cmd --zone=public --add-service=http
    • 允许自定义的端口组访问:

      firewall-cmd --zone=public --add-port=7000-8000/tcp
    • 创建自定义的端口组:

      firewall-cmd --permanent --new-portgroup=myports
      firewall-cmd --permanent --port=8080/tcp --port=9000-9500/tcp --add-portgroup=myports

      上述命令创建了名为 "myports" 的自定义端口组,并将端口 8080 和 9000-9500 添加到该端口组中。

  2. 包过滤:Firewalld 允许你根据特定的网络数据包属性进行过滤和控制。你可以使用 --add-filter 参数来指定过滤规则。例如,以下命令将允许 ICMP Echo 请求通过:

    firewall-cmd --zone=public --add-filter=icmp_echo_request

    你还可以根据其他网络数据包属性进行过滤,如源/目标 MAC 地址、IP 协议、TTL 等。

  3. 地址转换:Firewalld 支持地址转换功能,包括源地址转换(Source NAT)和目标地址转换(Destination NAT)。地址转换允许修改网络数据包的源或目标地址,以便实现网络地址重写。这对于在网络中进行 IP 地址映射或隐藏内部网络拓扑结构非常有用。

    firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.100

    上述命令将接收到的 TCP 流量从公共端口 80 转发到内部地址 192.168.1.100 上的端口 8080。

Firewalld 提供了广泛的功能和选项,以满足不同的网络安全需求。你可以根据具体场景和需求选择适合的方法和配置选项。可以参考 Firewalld 的文档以获取更多详细信息和示例。

防火墙可以通过以下方式实现访问控制:

IP地址过滤

防火墙可以根据IP地址对网络流量进行过滤和控制,例如只允许特定的IP地址访问网络。

用户认证

防火墙可以对用户进行认证,只允许经过认证的用户访问网络。

URL过滤

防火墙可以

Linux Vi 删除全部内容,删除某行到结尾,删除某段内容 的方法

1.打开文件

vi filename  

2.转到文件结尾

G

或转到第9行

9G  

3.删除所有内容(先用G转到文件尾) ,使用:

:1,.d  

或者删除第9行到第200行的内容(先用200G转到第200行) ,使用

:9,.d  

删除说明:这是在vi中 ,“.”当前行 ,“1,.”表示从第一行到当前行 ,“d”删除

linux编辑器vi使用教程

vi使用方法详细介绍

vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。

1、vi的基本概念

基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

1) 命令行模式command mode)

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。

2) 插入模式(Insert mode)

只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。

3) 底行模式(last line mode)

将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。

不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。

2、vi的基本操作

a) 进入vi

在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:

$ vi myfile

不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到「插入模式(Insert mode)」再说吧!

b) 切换至插入模式(Insert mode)编辑文件

在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。

c) Insert 的切换

您目前处于「插入模式(Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。

d) 退出vi及保存文件

在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:

: w filename (输入 「w filename」将文章以指定的文件名filename保存)
: wq (输入「wq」,存盘并退出vi)
: q! (输入q!, 不存盘强制退出vi) 

3、命令行模式(command mode)功能键

1). 插入模式

按「i」切换进入插入模式「insert mode」,按"i"进入插入模式后是从光标当前位置开始输入文件;

按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。

2). 从插入模式切换为命令行模式

按「ESC」键。
1

3). 移动光标

vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。
  按「ctrl」+「b」:屏幕往"后"移动一页。
  按「ctrl」+「f」:屏幕往"前"移动一页。
  按「ctrl」+「u」:屏幕往"后"移动半页。
  按「ctrl」+「d」:屏幕往"前"移动半页。
  按数字「0」:移到文章的开头。
  按「G」:移动到文章的最后。
  按「$」:移动到光标所在行的"行尾"。
  按「^」:移动到光标所在行的"行首"
  按「w」:光标跳到下个字的开头
  按「e」:光标跳到下个字的字尾
  按「b」:光标回到上个字的开头
  按「#l」:光标移到该行的第#个位置,如:5l,56l。

4). 删除文字

「x」:每按一次,删除光标所在位置的"后面"一个字符。
  「#x」:例如,「6x」表示删除光标所在位置的"后面"6个字符。
  「X」:大写的X,每按一次,删除光标所在位置的"前面"一个字符。
  「#X」:例如,「20X」表示删除光标所在位置的"前面"20个字符。
  「dd」:删除光标所在行。
  「#dd」:从光标所在行开始删除#行

5). 复制

  「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
  「#yw」:复制#个字到缓冲区
  「yy」:复制光标所在行到缓冲区。
  「#yy」:例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字。
  「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴功能。

6). 替换

「r」:替换光标所在处的字符。
  「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

7). 回复上一次操作

「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次"u"可以执行多次回复。

8). 更改

「cw」:更改光标所在处的字到字尾处
  「c#w」:例如,「c3w」表示更改3个字

9). 跳至指定的行

「ctrl」+「g」列出光标所在行的行号。
  「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

4、Last line mode下命令简介

在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。

A) 列出行号

「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。

B) 跳到文件中的某一行

「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。

C) 查找字符

「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。

「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。

D) 保存文件

「w」:在冒号输入字母「w」就可以将文件保存起来。

E) 离开vi

「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟

关于公网和局域网IP

IPv4为了避免公有地址不够使用,设置了Private Address地址域的专有地址,即常说的IPv4私有地址,包括三个地址段:

10.0.0.0        -   10.255.255.255  (10/8 prefix)
172.16.0.0      -   172.31.255.255  (172.16/12 prefix)
192.168.0.0     -   192.168.255.255 (192.168/16 prefix)

详见:RFC1918 ,IPv4 私有地址可以通过NAT 后访问公网,也可以构成企业或组织内网。

IPv6 地址类型分为: 单播地址(Unicast)、任意播地址(Anycast)、多播地址(Multicast)。其中,单播地址中包括全球单播地址(类似IPv4的公网地址)、本地地址(类似IPv4的私有地址)等类型。

IPv6 本地地址又分为3类:

  1. 链路本地地址(Link Local Address): FE80::/10, 不能出路由器
  2. 站点本地地址(Site Local Address): FEC0::/10, 已被ULA取代
  3. 唯一本地地址(Unique Local Address, ULA):FC00::/7,详见:RFC4193

IPv6 ULA 是否具备了类似NAT的标准,还不清楚。但可以使用FC00::/7地址,组建企业内部网络。

链接:https://www.zhihu.com/question/40020<!–autointro–>

网站搬家后缩略图无法访问解决办法

Zblog搬家之后缩略图不显示了?想了半天也没想到自己哪里出错了。 根据我的wordpress缩略图是通过timthumb.php在主题下面实现的,究竟搬家之后哪些因素会引起它的变化,不同?\n安装影响它的几大因素,一一排查; 01.文件夹权限问题;wordpress 主题下面的和timthumb.php 同目录有个缓存文件夹cache 要给777权限;  02.php版本具有编译的GD库;我查看了一下。php.ini文件配置,发现默认是支持的,所以不可能

vscode的c++扩展提示需要从prompt启动才能用cl.exe

1、把文件解压到当前目录下unzip test.zip2、如果要把文件解压到指定的目录下,需要用到-d参数。unzip -d /temp test.zip3、解压的时候,有时候不想覆盖已经存在的文件,那么可以加上-n参数unzip -n test.zipunzip -n -d /temp test.zip4、只看一下zip压缩包中包含哪些文件,不进行解压缩unzip -l test.zip5、查看显示的文件列表还包含压缩比率unzip -v test.zip6、检查zip文件是否损坏unzip

Make The Best of Your Time

We all have 24-hours in a day. But, why does it seem that some people are able to get the most out of every minute of the day? Believe it or not, they don’t have the power to slow down time. They do, however, know how to properly manage th

python程序打包

将压缩文件text.zip在当前目录下解压缩。unzip test.zip将压缩文件text.zip在指定目录/tmp下解压缩,如果已有相同的文件存在,要求unzip命令不覆盖原先的文件。unzip -n test.zip -d /tmp查看压缩文件目录,但不解压。unzip -v test.zip将压缩文件test.zip在指定目录/tmp下解压缩,如果已有相同的文件存在,要求unzip命令覆盖原先的文件。unzip -o test.zip -d tmp/