记一次 VPS 的宕机经历

几天前我搭建在 HostHatch 的 Nextcloud 服务突然无法访问了。心想 HostHatch 此前已经连续稳定运行数年,故障大概率是我自己的设置问题或是服务器被入侵了,立马慌了。随即 ssh 登录服务器查看状况,结果 ssh 无法登录。又到控制台想通过VNC登录了解情况,结果系统卡在 GRUB 无法正常引导。进入 GRUB 救援模式,修改 GRUB 启动分区,加载基本模块等一通操作下来还是白忙活。ls查看设备状态,硬盘还是能读出来的。索性懒得折腾了,重装系统吧,反正本地还有备份不怕丢数据。 CentOS8 目前已不受官方支持,而我又不想用 Stream 版的,考虑再三还是用 Rocky Linux 吧。 由于这次故障来的太突然,而且故障的原因又不明,卡在 GRUB 估计与我上次安装系统使用了自定义 ISO 有关。所以这次舍弃了之前通过挂载 ISO 的方式直接装 Rocky Linux,而是先通过官方的 Image 重装 CentOS 8,再从 CentOS 8 迁移到 Rocky Linux。 从 CenOS 8 迁移到 Rocky Linux 重装完 CentOS 8 后首先修复存储库 sed -i -r \ -e 's!^mirrorlist=!#mirrorlist=!' \ -e 's!^#?baseurl=http://(mirror|vault).centos.org/\$contentdir/\$releasever/!baseurl=https://dl.rockylinux.org/vault/centos/8.5.2111/!i' \ /etc/yum.repos.d/CentOS-*.repo 下载官方推荐的的迁移脚本文件 curl https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh -o migrate2rocky.sh 赋予脚本文件可执行权限 chmod u+x migrate2rocky.sh 执行迁移脚本 ...

May 13, 2022

Rocky Linux 禁用 Ipv6 的设置

昨天 update 了一下服务器,想通过部署在上面的的 frps 内网穿透服务连接家里路由器的时候发现登录页面出错。随即查看 frps 是不是未运行,结果一切正常正常。于是查看 frps 监听的端口是否未在防火墙设置打开,结果也是打开的,没毛病呀。 于是查看端口占用: netstat -ntlp 原来 fprs 只监听了 IPv6 地址,更新 frps 版本还是一样。GitHub 上 frp 的项目 Issues 里也没有找到有用的回答。于是 Google 大法开启,Search"rocky disable ipv6",还真找到了解决方法。 有效的答案是针对 CentOS 8 禁用 IPv6 的设置方法,由于 Rocky 就是基于 CentOS 所以这个方法也对 Rocky 适用。 ip a | grep inet6 #检查服务器是否启用了 IPv6 输出结果是肯定的,显示 IPv6 已开启 具体的禁用 IPv6 方法有两种 使用 sysctl 命令禁用 IPv6 -此方法适用于临时禁用IPv6 使用内核引导选项禁用 IPv6 -这是禁用IPv6的最佳方法 第一种方法-使用 sysctl 命令禁用 IPv6 创建一个新的 sysctl 配置文件 /etc/sysctl.d/70-ipv6.conf ...

May 1, 2022

Linux 系统的安全设置

Root 是 Linux 系统的超级管理员账户,拥有整个系统的最高权限,可操作系统内的所有对象。一般情况下开放了对外服务的linux系统需要设置一些安全策略来保证服务器的安全,同时亦能防止系统管理员由于平时管理过程中的误操作而导致系统不可挽回的错误。 SELinux 是 Linux 内核的安全模块,Root 账户的登录权限可由 SELinux 模块进行定义。 下面就介绍如何对系统进行设定来规避一些潜在的安全风险。 安全设置思路 禁用 root 登录权限 修改 ssh 默认端口 Root 用户的禁止登录设置 useradd username #username 为你要添加的用户名称 passwd username #设置 username 的用户密码 vi /etc/ssh/sshd_config #打开 ssh 配置文件 PermitRootLogin no #在 ssh 配置文件中找到 PermitRootLogin 这项,把后面默认的 yes 修改为 no 禁止 root 用户登录 service sshd restart #重启 sshd 服务 ssh 默认端口的修改 firewall-cmd --zone=public --add-port=xxxx/tcp --permanent #系统防火墙开放需要加入的端口,xxxx 为你需要加入的端口号 firewall-cmd --reload #重新加载系统防火墙设置,使刚才加入的端口生效 systemctl restart firewalld.service #重启系统防火墙 firewall-cmd --list-ports #列出系统防火墙已开放端口,你会发现你刚才设置的端口号已经加入其中 vi /etc/ssh/sshd_config #打开 ssh 配置文件 #Port 22 #默认 ssh 登录端口,前面加#号注释掉默认的22端口 Port xxxx #xxxx 为你需要添加 ssh 登录权限的端口号 semanage port -a -t ssh_port_t -p tcp xxxx #xxxx 为你需要添加 ssh 登录权限的端口号,这一步是将端口加入到 SELinux 安全模块 semanage port -l|grep ssh #列出具有 ssh 权限的端口号,出现你设置的端口号证明向 SELinux 已经加入成功 systemctl reload sshd #重新加载 ssh 服务使刚才的设置生效 systemctl restart sshd #重启 ssh 服务 reboot #重启 ssh username@ip:port #尝试用新的端口号登录系统

April 23, 2022