查看系统版本
要查看 Linux 系统的版本信息,您可以使用以下命令之一:
使用
uname
命令: 使用uname
命令可以显示当前操作系统的内核版本。在终端中输入以下命令:uname -a
这将显示包括内核版本在内的完整信息。
查看
/etc/os-release
文件: 在许多 Linux 发行版中,系统版本信息存储在/etc/os-release
文件中。您可以使用cat
命令查看该文件的内容:cat /etc/os-release
这会显示系统版本、ID、版本号等信息。
查看
/etc/issue
文件: 有些 Linux 发行版会将系统版本信息存储在/etc/issue
文件中。您可以使用cat
命令查看该文件的内容:cat /etc/issue
这可能会显示发行版名称和版本号。
使用发行版特定的命令: 不同的 Linux 发行版可能有特定的命令用于查看系统版本。例如,Ubuntu 可以使用
lsb_release -a
命令,CentOS 或者 Red Hat Enterprise Linux (RHEL) 可以使用cat /etc/redhat-release
命令。lsb_release -a
或者
cat /etc/redhat-release
以上命令将显示当前 Linux 系统的版本信息,您可以根据您的需求选择其中之一来查看系统版本。
要查看 CentOS 系统的版本信息,您可以使用以下命令之一:
使用
cat
命令查看/etc/centos-release
文件:cat /etc/centos-release
这会显示 CentOS 的版本信息,例如:
CentOS Linux release 7.9.2009 (Core)
这表示系统运行的是 CentOS 7.9 版本。
使用
lsb_release
命令(如果已安装):lsb_release -a
如果您的系统中安装了
lsb_release
工具,则此命令将显示更详细的系统版本信息,包括发行版号和描述。使用
hostnamectl
命令:hostnamectl
这个命令将提供一些系统信息,包括操作系统名称、版本号和架构。
无论您选择哪种方法,都可以查看到系统的 CentOS 版本信息。
防火墙
1.1 查看防火墙状态
若防火墙没打开,先打开防火墙。
systemctl status firewalld
1.2 打开防火墙
systemctl start firewalld
查看防火墙规则
firewall-cmd --list-all
1.2.1 打开防火墙失败
// 执行取消服务的锁定
systemctl unmask firewalld.service
// 下次需要锁定该服务时执行
systemctl start firewalld.service
1.3 关闭防火墙
systemctl stop firewalld
2.查看端口开放状态
2.1 查询指定端口是否已开
运行命令后,返回yes表示已打开,返回no表示未打开。
firewall-cmd --query-port=10050/tcp
3.开放端口
3.1 第一步添加需要开放的端口开放10050端口
firewall-cmd --add-port=10050/tcp --permanent
批量开放端口,如从100到500这之间的端口,全部要打开
firewall-cmd --add-port=100-500/tcp --permanent
3.2 第二歩重新载入添加的端口
运行完第二歩,表示添加端口已成功,可以用查看端口开放状态命令,查到是否开启成功。
firewall-cmd --reload
3.3 移除指定端口
firewall-cmd --permanent --remove-port=10050/tcp
CentOS修改hostname
方法一 hostnamectl修改
Step1 查看主机名
hostname
Step2 修改主机名
命令形式
hostnamectl set-hostname 主机名
修改
hostnamectl set-hostname Master
Step3 再次查看主机名
hostname
无需重启只需新开会话便可变为新的主机名
方法二 通过修改文件
修改文件
vi /etc/hostname 添加主机名
Slave01
vi /etc/sysconfig/network 添加IP和hostname对应关系
10.238.162.33 Slave01
重启reboot生效
方法3 临时修改主机名
hostname Slave01
测试网卡
测试网卡速度通常涉及到发送和接收数据包以测量网络接口的最大传输速率。在Linux系统中,iperf3 是一个广泛使用的工具,用于测试网络带宽和延迟。以下是使用iperf3进行网卡速度测试的基本步骤和命令示例:
安装iperf3
首先,确保你的系统中安装了iperf3。在大多数Linux发行版中,可以通过包管理器安装:
对于基于Debian的系统(如Ubuntu):
sudo apt-get install iperf3
对于基于RPM的系统(如CentOS、Fedora):
sudo yum install iperf3
# 或者对于较新版本的Fedora/CentOS Stream
sudo dnf install iperf3
作为服务器端(接收端)
在你想测试其接收速度的机器上,开启一个iperf3服务器:
iperf3 -s
作为客户端(发送端)
在另一台机器上,运行以下命令以测试到服务器端的网络速度:
iperf3 -c <服务器IP地址>
示例输出
运行上述命令后,你将看到类似以下的输出,显示了测试的带宽结果:
Connecting to host <服务器IP地址>, port 5201
[ 4] local <客户端IP地址> port 58798 connected to <服务器IP地址> port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 4] 0.00-1.00 sec 149 MBytes 125 Mbits/sec 0 1.19 MBytes
[ 4] 1.00-2.00 sec 150 MBytes 125 Mbits/sec 0 2.39 MBytes
...
测试硬盘
1.读写速度测试
dd(基本的读写速度测试)
dd命令是一个简单的数据复制工具,常用来做基础的读写速度测试。
测试写入速度:
sudo dd if=/dev/zero of=/tmp/testfile bs=1M count=1024 oflag=direct
下面是对这个命令各部分的详细解释:
sudo: 此命令要求使用超级用户权限执行,因为直接进行磁盘写入操作通常需要较高权限。
dd: 是 "data dump" 或 "disk duplicate" 的简称,是一个强大的命令行工具,用于转换和复制文件,也常用于进行磁盘I/O性能测试。
if=/dev/zero: if 是 "input file" 的缩写,这里指定输入源为 /dev/zero。这是一个无限量供应零字节的特殊文件,常用于创建大文件或进行磁盘写入测试。
of=/tmp/testfile: of 是 "output file" 的缩写,指定输出目标文件为 /tmp/testfile。这个命令将会创建一个名为 testfile 的文件,并向其中写入数据。
bs=1M: bs 是 "block size" 的意思,这里设置每次读写操作的数据块大小为1兆字节(1M)。较大的块大小可以减少I/O操作次数,提高测试效率。
count=1024: 指定要执行的块写入次数。在这个命令中,将会写入1024个1M的数据块,总共写入1GB的数据到目标文件。
oflag=direct: 这个选项设置了"open file"标志,具体为 "direct",意味着执行直接I/O操作。这会绕过文件系统缓存,直接将数据写入磁盘,从而测试的是磁盘本身的写入速度,而非依赖于缓存的写入速度,这样的测试结果更能反映磁盘的真实写入性能。
综上所述,这个命令的作用是通过从无穷尽的零字节流 /dev/zero 中读取数据,直接写入到 /tmp/testfile 中,总共写入1GB的数据,以此来测试磁盘的写入速度,同时确保测试过程中不使用文件系统缓存,得到的结果更能体现磁盘本身的写入性能。
测试读取速度:
sudo dd if=/tmp/testfile of=/dev/null bs=1M count=1024 iflag=direct
这里,bs=1M指定了块大小为1MB,count=1024表示写入/读取1024个这样的块,oflag=direct和iflag=direct用于绕过文件系统缓存,更准确地测试磁盘速度。
下面是对这个命令各部分的详细解释:
sudo: 这个命令要求以超级用户权限运行,因为直接访问硬件设备(如进行高性能I/O操作)通常需要较高权限。
dd: 是 "data dump" 或 "disk duplicate" 的简称,是一个用于转换和复制文件的命令行工具,常用于磁盘和内存的I/O测试。
if=/tmp/testfile: if 是 "input file" 的缩写,这里指定输入文件为 /tmp/testfile。这个文件应该是之前通过写操作创建的,用于测试读取性能。
of=/dev/null: of 是 "output file" 的缩写,这里指定输出到 /dev/null。这是一个特殊的文件,所有写入它的数据都会被丢弃,这样做的目的是只关注读取速度,而不是写入过程中的存储效率。
bs=1M: bs 是 "block size" 的意思,这里设置每次读取或写入操作的数据块大小为1兆字节(1M)。较大的块大小通常能更好地利用磁盘的连续读写能力,但也可能导致更高的内存使用。
count=1024: 指定要执行的操作次数。在这里,命令会读取1024个1M的数据块,总共读取1GB的数据。
iflag=direct: 这个选项告诉dd绕过文件系统缓存直接读取磁盘数据。这意味着测试的是磁盘本身的读取速度,而非结合了缓存效果的速度,从而得到更真实的磁盘性能数据。
综上,这个命令的作用是读取/tmp/testfile这个文件中的1GB数据(分成1024个1M的数据块),并直接丢弃读取到的数据(输出到/dev/null),以此来测试磁盘的读取性能,同时确保测试结果不受文件系统缓存的影响。
2.设备类型
cat /sys/block/vda/queue/rotational
cat /sys/block/vdb/queue/rotational
这两个命令的输出将会是0或1,其中:
0 表示该磁盘为固态存储(SSD),没有旋转部件。
1 表示该磁盘为机械硬盘(HDD),有旋转部件。
通过这两个命令的输出,您可以确定vda和vdb到底是HDD还是SSD。
注意:云主机查询结果可能不准确
如果在控制台或者其它管理系统中显示磁盘类型为SSD,而通过命令行检查(如通过/sys/block/vda/queue/rotational)却显示为旋转设备(值为1),这可能是由于以下原因导致的混淆或误报:
虚拟化环境的特殊性:在云服务器或虚拟化环境中,宿主机的真实硬件信息可能与虚拟机内部看到的信息不同。云服务商可能使用了SSD作为存储介质,但在虚拟化层面上为虚拟机模拟的传统磁盘行为,导致rotational值为1。这是因为虚拟磁盘并不直接对应底层的实际物理硬盘类型,而是根据配置模拟出的行为。
信息更新延迟或不准确:有时系统信息或监控界面的数据更新可能存在延迟,或者信息源本身可能存在错误,导致显示的信息与实际情况不符。
软件层模拟:某些存储管理系统或驱动可能为了兼容性或管理方便,对SSD进行了模拟,使其在操作系统层面表现为具备旋转部件的磁盘,尽管实际上底层使用的是SSD存储。
配置错误或标签错误:在一些情况下,系统标签或配置信息可能被错误地设定或标记,导致显示的信息不准确。
为了确认磁盘的实际类型,除了上述提到的检查方法外,最直接的方式是咨询您的云服务提供商或查阅相关的服务器/云服务管理界面中的硬件规格详情。云服务商通常会提供准确的服务器配置信息,包括磁盘类型,这些信息应该能反映真实情况。
删除文件无权限
检查文件是否设置了不可修改位
如果文件设置了不可修改位(i),则无法更改文件的权限。您可以使用 lsattr 命令来检查文件属性:
如果文件有 i 标志,则需要先解除该标志才能更改权限:
[root@HyServer3 lib]# ll
total 84
-rwxr-xr-x 1 root root 13128 Aug 1 02:03 bioset.so
-rwxr-xr-x 1 root root 13128 Aug 1 02:03 httpd.so
-rwxr-xr-x 1 root root 13128 Aug 1 02:03 masscan.so
-rwxr-xr-x 1 root root 13128 Aug 1 02:03 pnscan.so
drwxr-xr-x 3 root root 4096 Dec 5 2023 python3.6
-rwxr-xr-x 1 root root 13128 Aug 1 02:03 top.so
[root@HyServer3 lib]# rm -rf *so
rm: cannot remove ‘bioset.so’: Operation not permitted
rm: cannot remove ‘httpd.so’: Operation not permitted
rm: cannot remove ‘masscan.so’: Operation not permitted
rm: cannot remove ‘pnscan.so’: Operation not permitted
rm: cannot remove ‘top.so’: Operation not permitted
[root@HyServer3 lib]# lsattr bioset.so httpd.so masscan.so pnscan.so top.so
----i--------e-- bioset.so
----i--------e-- httpd.so
----i--------e-- masscan.so
----i--------e-- pnscan.so
----i--------e-- top.so
[root@HyServer3 lib]# chattr -i bioset.so httpd.so masscan.so pnscan.so top.so
[root@HyServer3 lib]# lsattr bioset.so httpd.so masscan.so pnscan.so top.so
-------------e-- bioset.so
-------------e-- httpd.so
-------------e-- masscan.so
-------------e-- pnscan.so
-------------e-- top.so
[root@HyServer3 lib]# ll
total 84
-rwxr-xr-x 1 root root 13128 Aug 1 02:03 bioset.so
-rwxr-xr-x 1 root root 13128 Aug 1 02:03 httpd.so
-rwxr-xr-x 1 root root 13128 Aug 1 02:03 masscan.so
-rwxr-xr-x 1 root root 13128 Aug 1 02:03 pnscan.so
drwxr-xr-x 3 root root 4096 Dec 5 2023 python3.6
-rwxr-xr-x 1 root root 13128 Aug 1 02:03 top.so
#删除成功
[root@HyServer3 lib]# rm -rf *so
[root@HyServer3 lib]# ll
查看systemd启动服务
[root@HyServer3 etc]# systemctl list-unit-files --type=service
systemd-udev-settle.service static
systemd-udev-trigger.service static
systemd-udevd.service static
systemd-update-done.service static
systemd-update-utmp-runlevel.service static
systemd-update-utmp.service static
systemd-user-sessions.service static
systemd-vconsole-setup.service static
tcsd.service disabled
teamd@.service static
tuned.service enabled
vsftpd.service enabled
vsftpd@.service disabled
wpa_supplicant.service disabled
zzhr.service enabled
zzhre.service disabled
[root@HyServer3 etc]# systemctl stop zzhre.service
[root@HyServer3 etc]# systemctl disable zzhre.service
[root@HyServer3 etc]# systemctl status zzhre.service
● zzhre.service
Loaded: loaded (/etc/systemd/system/zzhre.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Aug 05 19:11:04 HyServer3 httpd[21278]: Running command: redis-cli -h 157.175.126.168 -p 6379 --raw
Aug 05 19:11:04 HyServer3 httpd[21278]: Error running redis-cli: exec: "redis-cli": executable file not found in $PATH
Aug 05 19:11:04 HyServer3 httpd[21278]: Running command: redis-cli -h 157.175.169.20 -p 6379 --raw
Aug 05 19:11:04 HyServer3 httpd[21278]: Error running redis-cli: exec: "redis-cli": executable file not found in $PATH
Aug 05 19:11:04 HyServer3 httpd[21278]: Running command: redis-cli -h 157.175.219.61 -p 6379 --raw
Aug 05 19:11:04 HyServer3 httpd[21278]: Error running redis-cli: exec: "redis-cli": executable file not found in $PATH
Aug 05 19:11:04 HyServer3 httpd[21278]: Running command: redis-cli -h 157.175.229.68 -p 6379 --raw
Aug 05 19:11:04 HyServer3 httpd[21278]: Error running redis-cli: exec: "redis-cli": executable file not found in $PATH
Aug 05 19:37:36 HyServer3 systemd[1]: Stopping zzhre.service...
Aug 05 19:37:36 HyServer3 systemd[1]: Stopped zzhre.service.
[root@HyServer3 etc]# rm /etc/systemd/system/zzhre.service
[root@HyServer3 etc]# systemctl status zzhre.service
云主机被挖矿处理:
1、该机器被挖矿,通过添加网络ACL,配置文件权限的方式临时解决
setfacl -m u::r--,g::r--,o::r-- /var/tmp/.222/top
[root@HyServer3 tmp]# cd .222
[root@HyServer3 .222]# ll
total 4704
-rwxr-xr-x 1 root root 4814008 Aug 5 21:37 top
[root@HyServer3 .222]# rm -rf top
[root@HyServer3 .222]# touch top
[root@HyServer3 .222]# chmod a-x top
[root@HyServer3 .222]# setfacl -m u::r--,g::r--,o::r-- /var/tmp/.222/top
[root@HyServer3 .222]# ll
total 0
-r--r--r-- 1 root root 0 Aug 5 21:42 top
[root@HyServer3 .222]# watch "ps -ef | grep top"
[root@HyServer3 .222]# kill -9 29898
[root@HyServer3 .222]# watch "ps -ef | grep top"
2、排查发现为访问谷歌的某个地址下载文件然后执行该文件,后续建议开启防火墙,禁止对google 域名的访问
sudo iptables -A OUTPUT -d www.google.com -j DROP
sudo iptables -A FORWARD -p tcp -d www.google.com -j DROP
sudo iptables -A FORWARD -p udp -d www.google.com -j DROP
3、排查发现安全组放通范围过大,建议调整访问范围。对于内网访问,存在允许本安全组内访问规则足够;对于外网访问,建议仅添加办公网络访问;同时添加优先级为 100 的规则,禁止所有地址访问
4、对数据盘进行快照后,重装操作系统