一台新到手的VPS服务器必做的十二项配置(以Ubuntu为例)——2024年最新版

近来,我的服务器被撑爆了,因为服务器磁盘空间不足(其实这个问题已经存在很久了,一直没有下定决心整改)。这次一不留神备份服务时撑爆了,我就顺便重装系统,认真调教一些配置,将一些过程进行记录,以备查用。

一、更新组件,包管理

要在Ubuntu系统上更新软件包,可以使用以下命令:

  • 不推荐,安装时间太长了
    1
    apt update && apt upgrade -y 
  • 推荐用下面两条
    1
    2
    sudo apt update  #这个命令会更新软件包列表,让系统知道有哪些软件包可以更新。
    sudo apt upgrade --only-upgrade #这个命令会安装所有可用的软件包更新。
1
sudo apt update && sudo apt upgrade --only-upgrade

二、常用工具

1、VIM编辑器

  • 检查有没有安装VIM(主要是我习惯用vim编辑器了,Ubuntu是默认自带nano的)
    1
    vim --version
  • 没有的话就用命令安装
    1
    apt install vim 
  • 配置VIM为默认的系统编辑器。
    • 很简单,执行这条命令,选择 Vim,以后凡是自动调用编辑器的地方,都会用 Vim 啦。
      1
      sudo update-alternatives --config editor

2、安装 command-not-found

很多服务器提供商可能会提供精简版本的 Ubuntu,于是一些实用的命令行工具并不会预装。比如command-not-found,它可以当你在打命令时,提示对应的但没有安装的 package。

1
sudo apt install command-not-found

安装完后,就可以在使用命令行的过程中更加方便了。

三、添加普通用户

1
2
adduser {your-username}
visudo

在 User Privilege Specification 下加入一行 {your-username} ALL=(ALL) NOPASSWD: ALL即可。

  • 检验是否添加成功
    1
    2
    3
    4
    su - newuser   #切换到新用户
    ls /root #列出/root目录下的文件(没有root权限是看不了的)
    sudo ls /root #然后用给普通用户授予root权限(这样就有权限可以看到了,只要没有报错即成功,因为/root目录下可能没有东西)
    exit #退出

四、防火墙配置

要在 Ubuntu 上使用 ufw(Uncomplicated Firewall)开启端口 22、80 和 443,你可以按照以下步骤进行配置:

  1. 检查 ufw 是否安装

    • 如果尚未安装 ufw,你可以使用以下命令安装:sudo apt install ufw
  2. 开启端口

    • 开启端口 22:sudo ufw allow 22
    • 开启端口 80:sudo ufw allow 80
    • 开启端口 443:sudo ufw allow 443
  3. 启用防火墙

    • 启用 ufw 防火墙:sudo ufw enable
  4. 检查配置

    • 可以运行 sudo ufw status 来查看防火墙的状态和已开启的端口。

参考文章

五、配置 SSH 登录及 SSH Server 安全设定

这里有个注意点!如果你想禁用root密码登录,并用普通用户 {your-username} ssh登录服务器,这里SSH登录配置部分一定要用普通用户{your-username}配置,不然配置出来的文件权限和拥有者不对,ssh不能正确读取公钥!

  • 先在windows端生成ssh 公私钥对
    1
    ssh-keygen -t rsa -f ~/.ssh/id_rsa_xxxx  
  • 在用户目录下创建authorized_keys文件,并将公钥(pub结尾)的内容粘入authorized_keys文件中
    1
    2
    3
    4
    5
    6
    mkdir -p ~/.ssh
    touch ~/.ssh/authorized_keys
    #并将公钥(pub结尾)的内容粘入`authorized_keys`文件中
    vim ~/.ssh/authorized_keys

    chmod 600 ~/.ssh/authorized_keys

~ 是指在当前用户的主目录下(如果是root,就是在/root/下;如果是{your-username}则在/home/{your-username}/)。
如果配置在root目录下,那用ssh 密钥对登录时就要选择root用户登录!

  • 禁用root身份登录

    • 找到PermitRootLogin Yes这一项,然后把它后面的设定值改为no即可。
      1
      vim /etc/ssh/sshd_config
      如下:
      1
      2
      3
      PermitRootLogin no
      #开启ssh密钥对登录
      PubkeyAuthentication yes
  • 把 PasswordAuthentication 设置成 no,禁止密码登录,更安全:

    1
    PasswordAuthentication no
  • SSH端口号改为其他数字,注意了,改成其他端口后,记得防火墙设置也要更新

    1
    Port {SSH端口号,最好在10000以上}

最后重启 SSH Server 生效:

1
sudo systemctl restart sshd.service

六、自定义shell 界面安装

七、Docker配置

1、安装 Docker

  • 官方地址:https://docs.docker.com/install/linux/docker-ce/ubuntu/

  • 首先安装基本环境:

    1
    2
    3
    4
    5
    sudo apt install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
  • 再安装 key:

    1
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • 再增加 Docker 官方源:

    1
    2
    3
    4
    sudo add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable"
  • 最后就可以安装 Docker 了,我一般也同时会用 Docker Compose,一起安装上去吧!

    1
    2
    sudo apt update
    sudo apt install docker-ce docker-compose
  • 安装好 Docker 以后,记得将当前用户加到 docker 用户组里去(如果你不想每次都用 sudo 用 Docker 的话)

    1
    sudo gpasswd docker -a username

2、Docker日志管理

全局配置日志大小限制

  • 创建或修改文件 /etc/docker/daemon.json,并增加以下配置(3份日志、每份10M)。

    1
    2
    3
    4
    5
    6
    7
    {
    "log-driver": "json-file",
    "log-opts": {
    "max-file": "3",
    "max-size": "10m"
    }
    }
  • 随后重启 Docker 服务

    1
    2
    sudo systemctl daemon-reload
    sudo systemctl restart docker

不过已存在的容器不会生效,需要重建才可以!

单个容器日志大小限制

  • 写在docker-compose中
    1
    2
    3
    4
    5
    logging:
    driver: json-file
    options:
    max-size: "100m"
    max-file: "3"

八、swap配置

1
2
3
4
5
6
sudo swapoff -a   #删除原分区
sudo dd if=/dev/zero of=/root/swapfile bs=1M count=1024 #配置新分区大小
sudo mkswap /root/swapfile
sudo swapon /root/swapfile
sudo vim /etc/fstab
#最后设置开机启动:可以编辑 /etc/fstab 文件,把最后一行改成:`/root/swapfile swap swap defaults 0 0`

参考文章:

九、logrotate日志大小限制

1
2
sudo apt install logrotate
sudo apt install cron

配置文件目录:/etc/logrotate.d/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/var/log/syslog
/var/log/mail.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/cron.log
{
weekly
rotate 3
maxsize 100M
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}

查看服务状态

1
2
sudo systemctl status logrotate.service 
sudo systemctl status logrotate.timer

参考文章:

十、Fail2ban 封禁 IP

https://aws.amazon.com/cn/blogs/china/open-source-tool-to-protect-ec2-instances-fail2ban/
https://github.com/fail2ban/fail2ban/issues/3420

十一、面板安装——1panel

1
2
3
4
#apt install curl
sudo curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh

#sudo apt autoremove docker-compose

参考文章:

十二、常规安全更新

  • 安装 unattended-upgrades 来自动更新 security upgrade

通过 unattended-upgrades,可以使 Ubuntu 系统自动进行常规的安全相关更新,使系统一直保持 security。

1
2
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades

参考资料:


一台新到手的VPS服务器必做的十二项配置(以Ubuntu为例)——2024年最新版
https://blog.pppfz.com/posts/new-vps-common-setup.html
作者
PPPFZ
发布于
2024年6月18日
许可协议