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

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

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

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

不推荐,安装时间太长了

1apt update && apt upgrade -y

推荐用下面两条

12sudo apt update #这个命令会更新软件包列表,让系统知道有哪些软件包可以更新。sudo apt upgrade --only-upgrade #这个命令会安装所有可用的软件包更新。

1sudo apt update && sudo apt upgrade --only-upgrade

二、常用工具1、VIM编辑器

检查有没有安装VIM(主要是我习惯用vim编辑器了,Ubuntu是默认自带nano的)

1vim --version

没有的话就用命令安装

1apt install vim

配置VIM为默认的系统编辑器。

很简单,执行这条命令,选择 Vim,以后凡是自动调用编辑器的地方,都会用 Vim 啦。

1sudo update-alternatives --config editor

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

1234567891011121314151617181920212223242526272829#!/bin/bash# 更新软件包列表并升级系统sudo apt update && sudo apt upgrade -y# 安装常用工具sudo apt install -y \ curl \ wget \ git \ vim \ htop \ tree \ net-tools \ build-essential \ zip \ unzip \ ufw \ tmux# Optional: 安装其他实用工具# sudo apt install -y \# python3-pip \# openvpn \# jq \# neofetchecho "常用工具安装完成。"

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

3、修改时区默认语言1234sudo update-locale LANG=en_US.UTF-8sudo timedatectl set-timezone Asia/Shanghaireboot #重启

三、添加普通用户12adduser {your-username}visudo

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

检验是否添加成功

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

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

检查 ufw 是否安装:

如果尚未安装 ufw,你可以使用以下命令安装:sudo apt install ufw

开启端口:

开启端口 22:sudo ufw allow 22

开启端口 80:sudo ufw allow 80

开启端口 443:sudo ufw allow 443

启用防火墙:

启用 ufw 防火墙:sudo ufw enable

检查配置:

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

参考文章

https://blog.csdn.net/qq_53679247/article/details/128374607

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

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

先在windows端生成ssh 公私钥对

1ssh-keygen -t rsa -f ~/.ssh/id_rsa_xxxx

在用户目录下创建authorized_keys文件,并将公钥(pub结尾)的内容粘入authorized_keys文件中

12345678su - {your-username} #不要在root身份下配置mkdir -p ~/.sshtouch ~/.ssh/authorized_keys#并将公钥(pub结尾)的内容粘入`authorized_keys`文件中vim ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keys

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

禁用root身份登录

找到PermitRootLogin Yes这一项,然后把它后面的设定值改为no即可。

1sudo vim /etc/ssh/sshd_config

如下:

123PermitRootLogin no#开启ssh密钥对登录PubkeyAuthentication yes

把 PasswordAuthentication 设置成 no,禁止密码登录,更安全:

1PasswordAuthentication no

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

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

最后重启 SSH Server 生效:

1sudo systemctl restart sshd.service

六、自定义shell 界面安装

安装 oh-my-zsh

1sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

其他主题、插件等配置参考:

https://www.hackerneo.com/blog/dev-tools/better-use-terminal-with-zsh

七、Docker配置1、安装 Docker 和 docker-compose

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

12345678910#国内一键安装 sudo curl -sSL https://get.daocloud.io/docker | sh#国外一键安装 sudo curl -sSL get.docker.com | sh#docker-composesudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-compose

安装好 Docker 以后,记得将当前用户加到 docker 用户组里去(如果你不想每次都用 sudo 用 Docker 的话)

1sudo gpasswd docker -a username

2、Docker日志管理全局配置日志大小限制

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

1234567{ "log-driver": "json-file", "log-opts": { "max-file": "3", "max-size": "10m" }}

随后重启 Docker 服务

12sudo systemctl daemon-reloadsudo systemctl restart docker

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

单个容器日志大小限制

写在docker-compose中

12345logging: driver: json-file options: max-size: "100m" max-file: "3"

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

参考文章:

https://skywt.cn/blog/changeswap/

九、logrotate日志大小限制12sudo apt install logrotatesudo apt install cron

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

12345678910111213141516171819/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}

查看服务状态

12sudo systemctl status logrotate.service sudo systemctl status logrotate.timer

参考文章:

https://www.cnblogs.com/uglyliu/p/13206868.html

https://wsgzao.github.io/post/logrotate/

https://www.noisyfox.io/logrotate.html

https://www.cnblogs.com/liujunjun/p/17924699.html

https://nj.transwarp.cn:8180/?p=10556

十、Fail2ban 封禁 IP一、正常安装1sudo apt install fail2ban

二、Debian 12 安装失败

解决 Ubuntu 20.04 上 Fail2Ban 启动失败问题:指定 systemd 后端_failed during configuration: have not found any lo-CSDN博客

Fail2ban - 1Panel 文档

12sudo apt install rsyslog -ysudo apt install python3-systemd -y

12345sudo echo -e "[sshd]\nbackend=systemd\nenabled=true\nbantime=-1" | sudo tee /etc/fail2ban/jail.d/defaults-debian.conf && sudo systemctl restart fail2ban#检测是否配置成功systemctl status fail2ban

1panel 默认配置参考

123456789101112131415161718192021#DEFAULT-START[DEFAULT]bantime = 600findtime = 300maxretry = 5banaction = firewallcmd-ipsetaction = %(action_mwl)s#DEFAULT-END[sshd]ignoreip = 127.0.0.1/8 backend=systemdenabled = truefilter = sshdport = 22 maxretry = 2 findtime = 300 bantime = 600 action = %(action_mwl)sbanaction = iptables-multiport logpath = /var/log/secure

十一、面板安装——1panel1234#apt install curlsudo 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

参考文章:

https://blog.pppfz.com/posts/5.html

十二、常规安全更新

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

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

12sudo apt install unattended-upgradessudo dpkg-reconfigure unattended-upgrades

参考资料:

https://leonis.cc/sui-sui-nian/2023-11-11-necessary-config-of-new-server.html#ji-ben-she-zhi

https://spenserj.com/posts/2013-07-15-securing-a-linux-server/

https://www.ruanyifeng.com/blog/2014/03/server_setup.html

https://blog.laoda.de/archives/vps-basic-configuration

https://www.hackerneo.com/blog/dev-tools/better-use-terminal-with-zsh

https://xtls.github.io/document/level-0/ch04-security.html

相关内容

分户证明范文
bat365软件下载

分户证明范文

🕒 07-09 👁️ 8019
《神泣》官方网站
beat365官网地址下载

《神泣》官方网站

🕒 10-01 👁️ 4931
‎Rollz -滚球游戏-
365买球平台下载苹果

‎Rollz -滚球游戏-

🕒 07-19 👁️ 6761