一、前言:为什么要做安全加固与性能优化? 很多小白用完VPS基础配置后,就直接搭建服务,殊不知这背后藏着两大隐患:
- 安全隐患:默认配置的VPS,就像“没锁门的房子”——默认端口开放、弱密码、未禁用危险登录方式,很容易被黑客暴力破解,导致数据被删、服务器被篡改,据统计,超过70%的安全漏洞源于配置不当或弱密码,而非复杂的攻击手段;
- 性能隐患:VPS默认配置没有针对性优化,运行久了会出现卡顿、内存占用过高、磁盘变慢等问题,尤其是低配VPS(1核1G),不优化的话,搭建博客、云盘后很容易崩溃。 重点:本文所有操作,都基于前四篇的知识点(Linux命令、Docker基础),全程复制命令即可,不用懂原理,小白跟着做就能完成,适配Ubuntu/CentOS两大主流系统,标注「通用」的命令可直接用,标注系统的按需选择。
二、核心一:VPS安全加固(重中之重,先做这步!) 安全加固的核心是「堵漏洞、防入侵」,重点围绕「SSH登录、防火墙、账户权限、自动防护」四大模块,按步骤操作,就能抵御绝大多数自动化攻击和初级渗透,让VPS从“靶机”变“铁桶”。
(一)SSH登录加固(防暴力破解,最关键) SSH是远程连接VPS的入口,也是黑客攻击的主要目标,50%的服务器入侵始于SSH暴力破解,做好这步,能挡住大部分攻击。
- 禁用root远程登录(核心操作)
- 说明:root是VPS最高权限账户,一旦被破解,黑客能操控整个VPS,禁用root远程登录,改用普通账户登录,能大幅提升安全性。
- 实操步骤(通用):
-
第一步:创建普通账户(比如账户名:vpsuser),输入命令:useradd -m vpsuser ,按回车;
-
第二步:给普通账户设置密码,输入命令:passwd vpsuser ,按回车,输入密码(输完不显示),再确认密码;
-
第三步:给普通账户授权(避免后续操作权限不足),输入命令:usermod -aG sudo vpsuser ,按回车;
-
第四步:修改SSH配置文件,输入命令:vim /etc/ssh/sshd_config ,按回车;
-
第五步:在配置文件中找到「PermitRootLogin yes」,按「i」进入编辑模式,把「yes」改成「no」,然后按「Esc」,输入「:wq」,按回车保存退出;
-
第六步:重启SSH服务,使配置生效:
- Ubuntu系统:systemctl restart ssh
- CentOS系统:systemctl restart sshd
-
- 避坑提示:操作完后,先不要关闭当前远程连接,新建一个窗口,用普通账户(vpsuser)登录测试,能成功登录再关闭原窗口,避免误操作导致无法登录。
- 强制启用密钥登录,禁用密码登录
-
说明:密码登录容易被暴力破解,密钥登录靠本地密钥文件登录,安全性极高,结合上一步禁用root登录,双重防护更安全。
-
实操步骤(复用第四篇密钥登录知识点,通用):
-
第一步:如果还没生成密钥,按第四篇方法生成(Windows用FinalShell生成,Mac/Linux用终端命令 ssh-keygen );
-
第二步:将公钥上传到VPS的普通账户(vpsuser),输入命令:ssh-copy-id vpsuser@你的VPSIP ,按回车,输入普通账户密码;
-
第三步:修改SSH配置文件,输入命令:vim /etc/ssh/sshd_config ,按回车;
-
第四步:找到以下3行,修改为对应内容(没有则添加):
- PubkeyAuthentication yes (启用密钥登录)
- PasswordAuthentication no (禁用密码登录)
- ChallengeResponseAuthentication no (禁用挑战响应登录)
-
第五步:重启SSH服务(和上一步重启命令一致),生效后,后续登录只能用密钥,无法用密码登录。
-
-
应急提示:若密钥遗失,可通过VPS商家控制台的救援工具(如Linode的Lish工具)登录VPS,暂时关闭密钥登录,重新生成密钥即可。
- 修改SSH默认端口(可选,进阶防护)
-
说明:SSH默认端口是22,黑客会批量扫描22端口进行攻击,修改为10000-65535之间的任意端口(比如2222),能减少大部分扫描攻击。
-
实操步骤(通用):
- 第一步:修改SSH配置文件,输入命令:vim /etc/ssh/sshd_config ,按回车;
- 第二步:找到「Port 22」,按「i」编辑,改成「Port 2222」(可自定义其他端口),保存退出;
- 第三步:重启SSH服务,同时开放新端口(防火墙配置,后续会讲),否则无法用新端口连接;
- 第四步:测试新端口连接(比如FinalShell中修改端口为2222),能成功连接即为生效。
(二)防火墙优化(精准控流量,堵攻击入口) 第三篇我们配置了基础防火墙,现在进行进阶优化:只开放必要端口,关闭所有无用端口,同时设置自动屏蔽恶意IP,避免开放过多端口成为攻击入口。
- 清理无用端口,只开放必要端口(通用)
-
说明:根据自己的需求开放端口,比如只开放「SSH端口(22或自定义端口)、80端口(HTTP)、443端口(HTTPS)」,其他端口全部关闭。
-
实操步骤(分系统):
-
Ubuntu系统(ufw防火墙):
-
- 查看当前开放的端口:ufw status
-
- 关闭无用端口(比如关闭8080端口):ufw delete allow 8080
-
- 开放必要端口(以自定义SSH端口2222、80、443为例):
- ufw allow 2222/tcp (SSH端口,tcp协议)
- ufw allow 80/tcp (HTTP端口,搭网站用)
- ufw allow 443/tcp (HTTPS端口,网站加密用)
-
- 重启防火墙生效:ufw reload
-
-
CentOS系统(firewalld防火墙):
-
- 查看当前开放的端口:firewall-cmd —list-ports
-
- 关闭无用端口(比如关闭8080端口):firewall-cmd —permanent —remove-port=8080/tcp
-
- 开放必要端口:
- firewall-cmd —permanent —add-port=2222/tcp
- firewall-cmd —permanent —add-port=80/tcp
- firewall-cmd —permanent —add-port=443/tcp
-
- 重启防火墙生效:firewall-cmd —reload
-
-
- 安装fail2ban,自动屏蔽恶意IP(通用)
-
说明:fail2ban是一款自动防护工具,能监控SSH登录、端口扫描等行为,当有IP多次尝试登录失败(比如密码输错),会自动封禁该IP,避免暴力破解。
-
实操步骤:
-
- 安装fail2ban:
- Ubuntu系统:apt install fail2ban -y
- CentOS系统:yum install fail2ban -y
-
- 复制默认配置文件(避免修改原文件出错):cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
-
- 启动fail2ban,并设置开机自启:
- systemctl start fail2ban
- systemctl enable fail2ban
-
- 查看fail2ban状态:systemctl status fail2ban ,显示running即为生效。
-
-
补充:默认配置已足够小白使用,无需额外修改,若想调整封禁时间(默认10分钟)、最大尝试次数(默认5次),可编辑jail.local文件修改。
(三)账户与权限加固(最小权限原则,防提权) 黑客入侵后,常会通过“提权”获取更高权限,严格控制账户权限,不给非必要用户root权限,能有效防止提权攻击。
- 删除无用账户(通用)
-
说明:VPS默认可能会有一些无用的系统账户,这些账户可能被黑客利用,删除无用账户,减少安全隐患。
-
实操步骤:
-
- 查看所有账户:cat /etc/passwd ,重点看「/bin/bash」结尾的账户(可登录账户);
-
- 删除无用账户(比如删除账户test):userdel -r test (-r表示同时删除该账户的家目录,避免残留文件);
-
- 避坑提示:不要删除root、自己创建的普通账户(如vpsuser),以及系统必要账户(如bin、daemon),避免系统崩溃。
-
- 严格配置sudo权限(通用)
- 说明:sudo权限允许普通账户执行管理员命令,需按需授权,禁止给普通账户开放所有管理员权限(避免误操作或被提权)。
- 实操步骤:
-
- 编辑sudo配置文件(用visudo编辑,防止语法错误导致权限锁定):visudo
-
- 找到「vpsuser ALL=(ALL:ALL) ALL」(之前给普通账户授权时生成的),修改为按需授权(比如只允许执行apt、systemctl命令):
- 修改后:vpsuser ALL=(ALL) /usr/bin/apt, /bin/systemctl restart nginx
-
- 按「Esc」,输入「:wq」,按回车保存退出,这样普通账户只能执行授权的命令,无法执行其他管理员操作。
-
- 定期检查敏感文件权限(通用)
-
说明:敏感文件(如配置文件、密钥文件)权限过宽,可能被黑客篡改,定期检查并修改权限,提升安全性。
-
实操步骤:
-
- 检查敏感文件权限(重点监控/etc/passwd、/etc/shadow、证书文件等):
- find /etc -type f -name “.conf” -o -name “.key” -perm /6000 -ls
-
- 修改敏感文件权限(比如修改SSH配置文件权限):chmod 600 /etc/ssh/sshd_config (600表示只有所有者能读写,其他人无权限)。
-
(四)其他安全加固(细节补充,锦上添花)
- 关闭SELinux(CentOS专属,可选)
-
说明:SELinux是CentOS自带的安全模块,新手操作时容易因权限问题报错,关闭后能减少操作麻烦,不影响基础安全(已做其他加固)。
-
实操步骤:
-
- 查看SELinux状态:getenforce (显示Enforcing表示开启,Permissive表示关闭);
-
- 临时关闭(重启后失效):setenforce 0;
-
- 永久关闭(重启后生效):编辑配置文件 vim /etc/selinux/config ,将「SELINUX=enforcing」改成「SELINUX=disabled」,保存退出,重启VPS即可。
-
- 配置自动安全更新(通用)
-
说明:系统漏洞会被黑客利用,定期更新系统软件包,能修复漏洞,提升安全性,配置自动更新,不用手动操作。
-
实操步骤(分系统):
-
Ubuntu系统:
-
- 安装自动更新工具:apt install unattended-upgrades -y
-
- 配置自动更新:dpkg-reconfigure —priority=low unattended-upgrades ,弹出窗口后按回车确认即可。
-
-
CentOS系统:
-
- 安装自动更新工具:yum install yum-cron -y
-
- 启动并设置开机自启:systemctl start yum-cron 、 systemctl enable yum-cron
-
-
-
补充:关键补丁建议手动验证,避免自动更新导致服务异常,可通过命令查看未安装的安全更新:apt list —upgradable | grep -i security(Ubuntu)、yum check-update(CentOS)。
三、核心二:VPS性能优化(解决卡顿,提升流畅度) 性能优化的核心是「省资源、提效率」,针对小白最常遇到的「内存不足、磁盘变慢、进程冗余」三大问题,分模块优化,低配VPS(1核1G)也能流畅运行。
(一)内存优化(解决内存不足、卡顿) 内存是VPS运行的核心,内存不足会导致服务崩溃、卡顿,重点通过「释放冗余内存、设置虚拟内存」优化。
- 释放冗余内存(通用,临时生效)
-
说明:VPS运行久了,会有很多无用的内存占用(比如关闭的服务残留),手动释放内存,能快速提升流畅度。
-
实操步骤:
-
- 查看内存使用情况:free -h ,重点看「Mem」的「used」(已用内存)和「avail」(可用内存);
-
- 释放内存(需要root权限,切换到root账户:su root ,输入密码):
- sync (同步磁盘数据,避免数据丢失)
- echo 3 > /proc/sys/vm/drop_caches (释放页缓存、目录项缓存和inode缓存)
-
- 再次输入 free -h ,就能看到可用内存明显增加,避坑提示:释放内存不会影响正在运行的服务,放心操作。
-
- 设置虚拟内存(swap,长期生效,低配VPS必做)
- 说明:虚拟内存(swap)相当于“备用内存”,当物理内存不足时,系统会使用虚拟内存,避免服务崩溃,1核1G内存的VPS,建议设置2G虚拟内存。
- 实操步骤(通用):
-
- 查看是否已有虚拟内存:swapon —show ,没有输出即为未设置;
-
- 创建虚拟内存文件(以2G为例):fallocate -l 2G /swapfile (若fallocate命令不可用,用 dd if=/dev/zero of=/swapfile bs=1M count=2048 );
-
- 设置文件权限(避免其他人访问):chmod 600 /swapfile;
-
- 格式化虚拟内存文件:mkswap /swapfile;
-
- 启用虚拟内存:swapon /swapfile;
-
- 设置开机自启(避免重启后失效):编辑配置文件 vim /etc/fstab ,在末尾添加一行:/swapfile swap swap defaults 0 0 ,保存退出;
-
- 验证是否生效:swapon —show ,有输出即为生效。
-
- 避坑提示:虚拟内存是磁盘模拟的,速度比物理内存慢,仅作为备用,不要依赖虚拟内存,若内存长期占用过高,建议升级VPS配置。
(二)磁盘优化(解决磁盘变慢、空间不足) 磁盘空间不足、磁盘碎片过多,会导致VPS读写速度变慢,重点通过「清理无用文件、优化磁盘读写」优化。
- 清理无用文件(通用,释放磁盘空间)
-
说明:VPS运行久了,会产生很多无用文件(比如软件缓存、日志文件、过期包),定期清理,能释放磁盘空间。
-
实操步骤(分系统):
-
Ubuntu系统:
-
- 清理软件缓存:apt clean (清理已下载的软件安装包)
-
- 清理过期软件包:apt autoremove -y (清理无用的依赖包)
-
- 清理日志文件(日志文件会占用大量空间):echo "" > /var/log/syslog (清空系统日志)
-
-
CentOS系统:
-
- 清理软件缓存:yum clean all
-
- 清理日志文件:echo "" > /var/log/messages
-
-
- 查看磁盘空间使用情况:df -h ,查看清理后的可用空间,重点关注「/」目录(根目录)。
-
- 优化磁盘读写(通用,提升速度)
-
说明:开启磁盘缓存,能提升磁盘读写速度,尤其适合搭建博客、云盘等需要频繁读写磁盘的服务。
-
实操步骤:
-
- 编辑系统配置文件:vim /etc/sysctl.conf ,按回车;
-
- 在文件末尾添加以下内容(开启磁盘缓存):
- vm.dirty_ratio = 20
- vm.dirty_background_ratio = 5
-
- 保存退出,执行命令使配置生效:sysctl -p;
-
补充:该配置表示,当内存中的脏数据达到20%时,系统会强制写入磁盘;达到5%时,后台进程会写入磁盘,提升读写效率。
-
(三)进程优化(解决进程冗余、资源占用过高) 无用的进程会占用CPU和内存,导致VPS卡顿,重点通过「关闭无用进程、设置进程优先级」优化。
- 关闭无用进程(通用)
-
说明:先查看哪些进程占用资源过高,再关闭无用的进程(比如未使用的服务、异常进程)。
-
实操步骤:
-
- 查看进程占用情况:top ,按「P」(大写)按CPU占用排序,按「M」(大写)按内存占用排序;
-
- 找到无用的进程(比如postfix、httpd等未使用的服务),记住进程ID(PID,第一列数字);
-
- 关闭进程(比如PID为1234的进程):kill -9 1234 (-9表示强制关闭,慎用,不要关闭核心进程);
-
- 禁止无用进程开机自启(避免重启后重新运行):
- systemctl disable 进程名称 (比如 systemctl disable postfix )
-
避坑提示:不要关闭核心进程(比如systemd、sshd、docker等),否则会导致VPS无法正常运行,不确定的进程,不要随意关闭。
-
- 设置进程优先级(通用,可选)
-
说明:给核心服务(比如Docker、博客服务)设置更高的优先级,让系统优先分配资源,提升服务运行流畅度。
-
实操步骤:
-
- 查看进程PID(比如Docker的PID):ps -ef | grep docker ,找到PID;
-
- 设置优先级(优先级范围-20~19,数字越小,优先级越高):renice -10 1234 (1234是Docker的PID,-10表示提升优先级);
-
- 验证优先级:top ,查看该进程的「NI」列(优先级),显示-10即为生效。
-
(四)Docker优化(复用之前知识点,可选) 如果之前安装了Docker,Docker运行久了会占用大量资源,简单优化能提升Docker运行效率,减少资源占用。
- 清理Docker无用镜像和容器(通用)
-
说明:Docker的镜像、停止的容器会占用磁盘空间,定期清理,能释放空间。
-
实操步骤:
-
- 清理停止的容器:docker container prune -f (-f表示强制清理,无需确认);
-
- 清理无用镜像:docker image prune -f;
-
- 清理所有无用资源(容器、镜像、网络等):docker system prune -f。
-
- 限制Docker资源占用(通用)
-
说明:给Docker容器设置CPU、内存限制,避免单个容器占用过多资源,导致VPS卡顿。
-
实操步骤(以启动Nginx容器为例):
-
启动容器时,限制CPU为0.5核,内存为512M:
- docker run -d —name nginx —cpus 0.5 -m 512m nginx
-
补充:—cpus 0.5 表示限制CPU使用0.5核,-m 512m 表示限制内存使用512M,可根据自己的VPS配置调整。
-
四、实操总结:安全加固+性能优化步骤回顾(小白抄作业) 按以下顺序操作,不用记复杂步骤,复制命令即可完成,建议先做安全加固,再做性能优化:
- 安全加固:
-
- 创建普通账户,禁用root远程登录;
-
- 启用密钥登录,禁用密码登录;
-
- 优化防火墙,只开放必要端口,安装fail2ban;
-
- 删除无用账户,严格配置sudo权限;
-
- 配置自动安全更新(可选,CentOS可关闭SELinux)。
- 性能优化:
-
- 释放冗余内存,设置虚拟内存(低配VPS必做);
-
- 清理无用文件,优化磁盘读写;
-
- 关闭无用进程,禁止无用进程开机自启;
-
- (可选)优化Docker资源占用。
五、写在最后 安全加固和性能优化,是VPS长期稳定运行的“必修课”——小白不用追求复杂的优化方案,做好本文的基础操作,就能抵御绝大多数安全风险,解决VPS卡顿问题。 这里提醒大家:优化后,建议定期检查(比如每周查看一次内存、磁盘使用情况,每月清理一次无用文件),养成良好的运维习惯;如果操作过程中报错(比如无法登录、进程关闭失败),不要慌,可通过VPS商家控制台重置系统,重新操作即可。 完成这篇的进阶配置,我们就具备了VPS运维的基础能力! 如果优化过程中遇到具体问题(比如密钥登录失败、虚拟内存设置报错),欢迎邮件联系我,我会尽力为你解答~