独立服务器的初始化和安全配置,就像搬家前的装修和水电改造。虽然繁琐,但这一步做好了,后面几年都省心。今天咱们就从头捋一遍,拿到一台新服务器后,到底该做些什么。
登录之前,先想清楚三件事
在输入那个IP地址之前,有几个问题值得先花五分钟想明白。
选什么操作系统? 这取决于你要干什么。如果你打算跑Web服务、后端程序,或者想深入学习命令行,Linux是更灵活的选择——Ubuntu、Debian对新手友好,CentOS(及其替代品Rocky Linux、AlmaLinux)在企业端更常见。如果你完全不熟悉命令行,或者必须跑.NET、SQL Server这些微软生态的应用,那就选Windows Server。没什么高下之分,合适就行。
用什么方式登录? 云服务商的控制台里一般会提供两种选择:密码或者密钥对。除非你只是临时测试用,否则强烈建议选密钥对。这东西比任何复杂密码都安全,因为它本质上是一对匹配的“锁和钥匙”,私钥在你手里,公钥放服务器上,强制破解对它无效。
服务器的用途是什么? 这听起来像是废话,但它决定了后面所有的配置方向。是做网站?跑数据库?还是当游戏服务器?用途不同,开放哪些端口、装哪些软件、做什么优化,完全不一样。
系统初始化:打好地基再盖楼
第一次登录进去,别急着部署业务。先做三件基础工作。
第一件事:更新系统。 不管是Linux还是Windows,刚装好的系统往往不是最新状态。这半年来公开的漏洞,可能你的系统里还留着。
Linux(Debian/Ubuntu系):`apt update && apt upgrade -y`
Linux(RHEL/CentOS系):`yum update -y`
Windows:打开Windows Update,检查并安装所有重要更新
这一步虽然耗时,但它是后续所有安全措施的前提。
第二件事:创建自己的账号,然后把root请下神坛。
用root直接操作服务器,就像天天开着保险库大门办公。万一敲错一条命令,或者被黑客拿到了这个账号,后果可想而知。
创建一个普通用户,比如叫deploy或admin:
adduser 你的用户名
usermod -aG sudo 你的用户名 # 赋予sudo权限
然后测试一下:`su - 你的用户名`,再执行`sudo whoami`,如果能输出root,说明权限正常。
第三件事:配置网络,确保它能被稳定访问。
给服务器设置一个静态IP,或者确认DHCP保留地址不变。然后ping一下外网(比如`ping 8.8.8.8`),确保网络通顺。这一步虽然基础,但很多人急着装软件,结果装到一半发现连不上外网源,白忙活。
安全配置:给自己留把钥匙,给黑客上一把锁
安全配置的核心逻辑很简单:进不来、看不见、拿不走。SSH是Linux服务器的生命线,也是黑客攻击的首要目标。需要习惯是三步走:
第一步:改端口。编辑`/etc/ssh/sshd_config`,把`Port 22`改成别的数字,比如`Port 22334`。这能挡住90%的自动扫描脚本——它们只会对着22端口使劲。
第二步:禁密码,启用密钥。同样在这个文件里,设置:
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
然后重启SSH服务:
systemctl restart sshd
这时候再登录,只能用私钥文件,而且不能用root直接登录。你先用自己那个普通用户登进去,需要root权限时再`sudo`。
第三步:装个“保安”——Fail2Ban。
即使改了端口、禁了密码,万一有人发现了你的新端口,还是可以反复尝试。Fail2Ban就是干这个的:它监控登录日志,发现某个IP连续失败几次,就直接把它拉进防火墙黑名单一段时间。
安装和配置很简单:
apt install fail2ban -y
systemctl start fail2ban
默认配置已经够用,默认允许三次失败,然后封禁十分钟。
很多人配防火墙喜欢“先全部允许,遇到问题再关”,这是典型的逆向操作。正确的姿势是:默认拒绝所有,只开放业务必需的端口。
以Linux的UFW为例(Ubuntu自带):
ufw default deny incoming
ufw default allow outgoing
ufw allow 22334/tcp # 你改过的SSH端口
ufw allow 80/tcp # HTTP
ufw allow 443/tcp # HTTPS
ufw enable
Windows服务器同样,在“高级安全Windows防火墙”里,只允许3389(远程桌面)和你的业务端口,其他全部阻止。
至于云服务商的控制台里那个“安全组”,它是外层的防火墙。内外结合才保险:安全组控制哪些IP能访问你的服务器,系统防火墙控制服务器内部哪些端口能对外。
很多人习惯装完MySQL或Redis,直接默认配置跑起来。这等于把家里的金库门敞开着。
MySQL/MariaDB:安装后执行`mysql_secure_installation`脚本,它会引导你设置root密码、删除匿名用户、禁止远程root登录。然后在配置文件中绑定到127.0.0.1,或者只允许应用服务器内网IP访问。
Redis:同样绑定内网,并设置密码。否则,黑客连上你的Redis可以直接写SSH公钥,等于拱手送出入权限。
配置做完,不代表可以高枕无忧。服务器是活的,攻击手法也在不断进化。有几件事值得养成习惯。可以配置自动安全更新(unattended-upgrades),至少每周手动检查一次。很多漏洞爆发后,黑客第一时间扫描全网,谁没打补丁谁倒霉。
太多人做备份——每天跑个脚本往某个目录拷文件,结果硬盘坏了才发现,备份和原数据在一块盘上。建议至少3份副本,2种不同介质,1份异地存放。云服务器可以用快照功能,每周全量、每日增量,同时定期把关键数据下载到本地或传到对象存储。
监控别只盯着CPU,日志更值得看。CPU跑满你会知道,但黑客悄悄试密码你不会知道。养成看日志的习惯:Linux的`/var/log/auth.log`或`/var/log/secure`,记录了所有登录尝试。配合Logwatch这类工具,每天一封摘要邮件,心里有底。
关闭一切不该开的东西。不用的服务就别装,装了就关掉,关不掉就限制访问。系统的默认共享、不用的端口、测试账号、示例文件,统统清理掉。每多开一个端口,就多一个被攻击的可能。
独立服务器的初始化和安全配置,没有什么高深的技术,更多的是习惯和意识。这套流程跑下来,可能第一次要花一两个小时,但换来的是未来几年相对安稳的运行。就像出门前检查门窗有没有锁好——习惯了,就不觉得麻烦。
相关内容
