进一步优化系统

/ 0评 / 0

前面讲了,使用重装系统的脚本来重新安装纯净的 debian 系统。

现在重启后进入系统,接下来需要做的事是增加安全性以及调整优化系统。

修改 ls -lh

我喜欢把 ls -lh 命令改成 ll 来使用,也建议大家这么做,很方便:

nano .bashrc  #修改 /root/.bashrc

找到

# alias ll='ls $LS_OPTIONS -l'

删掉 # 号和后面的空格,改成下面的样子:

alias ll='ls $LS_OPTIONS -lhF'

Ctrl + x ,输入 y , 回车。

安装必备软件

首先安装一些必备软件,如果在上一篇网络重装 VPS 系统脚本里没有在脚本里使用

--install 'wget curl screen ufw git lrzsz net-tools'

来安装一些软件的话,在这里需要先安装(如果上一步已经做过了,便可以省却下面这两个步骤):

apt update

apt install wget curl screen ufw git lrzsz net-tools -y

使用密钥登录 ssh

安装好如上软件包之后,接下来生成公钥和私钥,让 ssh 以密钥的方式登录,禁止使用密码登录以增强安全性。

生成密钥:

ssh-keygen  <== 建立密钥对
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): <== 按 Enter
    Created directory '/root/.ssh'.
    Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空,建议留空,否则有些不支持 passphrase 的客户端使用起来会有问题,比如 webssh 。
    Enter same passphrase again: <== 再输入一遍密钥锁码,再次留空
    Your identification has been saved in /root/.ssh/id_rsa. <== 私钥
    Your public key has been saved in /root/.ssh/id_rsa.pub. <== 公钥
    The key fingerprint is:
    0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08

进入 .ssh 查看公钥私钥,并安装备份公钥:

cd ~/.ssh

ll

    -rx-r--r-- 1 root root  747 Nov 18 22:06 id_rsa.pub  # 公钥
    -rx-r--r-- 1 root root 3.2K Nov 18 22:06 id_rsa      # 私钥

mv id_rsa.pub authorized_keys

tar zcvf ssh_key.tgz *

mv ssh_key.tgz ~

rm id_rsa

ll

    -rx-r--r-- 1 root root  747 Nov 18 22:06 authorized_keys  # 目录下只剩一个 authorized_keys 文件了。

cd

chmod -R 400 ./.ssh # 只有 root 用户才有权限访问和使用密钥。

现在使用类似于 winscp 这样的软件将 /root 目录下的 ssh_key.tgz 下载到 PC 中解压,保存好里面的 authorized_keys 和 id_rsa ,其中 id_rsa 是登录 VPS 的重要凭据,如果遗失,只能重装系统了,而 authorized_keys 可以直接用在别的 VPS 中,如果你不止一台 VPS 的话。

接着来修改 VPS 的登陆方式,对比并修改为下面的样子::

nano /etc/ssh/sshd_config


PubkeyAuthentication yes

AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2

PasswordAuthentication no


Ctrl + x,y,回车  # 保存退出。

systemctl restart sshd  #  执行这一步之后,在当前 ssh 窗口未关闭的情况下,在 PC 系统里使用密钥重新登录这台 VPS ,只有当使用密钥可以顺利登陆后才能关闭当前窗口,否则你将失去 VPS 的管理权!!

开启防火墙

ufw default deny incoming

ufw default allow outgoing

ufw allow 34567/tcp # 注意,在上一篇文章里我将 VPS 的 SSH 端口改为了 34567,而不是默认的 22 ,如果你没有改 SSH 的端口,那么这一步的命令应该是 ufw allow 22/tcp 。

ufw allow 80/tcp

ufw allow 443/tcp

systemctl enable ufw

ufw enable ufw # 这一步会有个提示,如果确认以上每一步都正确,输入 y 回车确认即可,否则就不要确认,不然也会失去 VPS 的管理权。

使用 Function Club 的 Fail2ban 并进一步增强安全性

Github 上 Function Club 有一个很好用的一键脚本 Fail2ban ,使用这个脚本可以很方便地增强 SSH 的安全性,推荐使用,用法如下:

wget https://raw.githubusercontent.com/FunctionClub/Fail2ban/master/fail2ban.sh && bash fail2ban.sh 2>&1 | tee fail2ban.log

说明如下:

过一段时间,你可以使用下面的命令查看来捣蛋的 ip :

fail2ban-client status sshd

增加 swap 文件【可选】

free -m  # 如果内存小于 1GB,建议增加 swap 来增强性能

dd if=/dev/zero of=/swapfile bs=1M count=1024

mkswap /swapfile

swapon /swapfile

free -m  # 对比上一次的区别,如果 Swap: 后有数值,表示 swap 增加成功,可以将 swap 设置为开机自动挂载。

echo "/swapfile swap swap defaults 0 0" >> /etc/fstab
echo "vm.swappiness=10" >> /etc/sysctl.conf
echo "vm.vfs_cache_pressure=50" >> /etc/sysctl.conf

sysctl -p

撤销安全补丁和内核模块加载【可选】

nano /etc/default/grub

注意是修改 GRUB_CMDLINE_LINUX_DEFAULT= 后面部分内容。
内核5.2或以上修改下面内容:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash mitigations=off"

内核5.2以下修改成下面内容:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash noibrs noibpb nopti nospectre_v2 nospectre_v1 l1tf=off nospec_store_bypass_disable no_stf_barrier mds=off tsx=on tsx_async_abort=off mitigations=off"

update-grub

去掉一些没必要内核模块加载 (xfs 等):

chmod -x /etc/grub.d/30_os-prober

开启 bbr

nano /etc/sysctl.conf

# 将下面的内容粘贴到底部:

net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
fs.file-max = 1000000
fs.inotify.max_user_instances = 8192
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 32768
net.core.netdev_max_backlog = 32768
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_max_orphans = 32768
net.ipv4.ip_forward = 1

sysctl -p

Ctrl + x , y , 回车

update 后删除多余的 kernel

uname -a  # 查看当前使用的 kernel,如果显示不止一个 kernel 的话,要注意是否近期进行了 apt upgrade,如果有过更新,先重启一下系统,让新 kernel 生效,随后再进行下面的操作。

    Linux myvps 5.10.0-22-amd64 #1 SMP Debian 5.10.178-3 (2023-04-22) x86_64 GNU/Linux

dpkg --get-selections | grep linux-

    binutils-x86-64-linux-gnu                       install
    firmware-linux-free                             install
    linux-base                                      install
    linux-image-5.10.0-18-amd64                     install # 旧 kernel,可删除
    linux-image-5.10.0-20-amd64                     install # 旧 kernel,可删除
    linux-image-5.10.0-22-amd64                     install # 当前使用中的 kernel
    linux-image-amd64                               install
    linux-libc-dev:amd64                            install
    util-linux-locales                              install

apt purge linux-image-5.10.0-18-amd64 linux-image-5.10.0-20-amd64 # 删除不再使用的 kernel,释放 VPS 空间。

update-grub

reboot

到了这里,基本上优化的工作结束,可以重启 VPS 看看资源占用情况了。

参考资料:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注