1. 首页 > 技术教程 > 正文

精简系统:关闭 Linux 不必要服务,缩减攻击面

精简系统:关闭 Linux 不必要服务,缩减攻击面

刚装好的 Linux 系统默认跑着一堆你用不上的服务,比如打印服务、蓝牙、邮件传输代理。这些服务不仅吃内存,还是黑客眼里的后门。主机选这篇 Linux 教程直接告诉你,哪些服务可以关、怎么关,一步到位缩减攻击面。

精简系统:关闭 Linux 不必要服务,缩减攻击面的图片

为什么必须关闭 Linux 不必要服务?

服务器上每多一个监听端口,就多一个被利用的可能。很多 VPS 被入侵,就是因为默认开了 `sendmail` 或 `rpcbind`,攻击者扫描端口直接打了进来。老手的第一件事就是跑 `ss -tlnp` 看当前开了哪些端口,然后挨个排查。

常见高危服务清单

蓝牙服务:服务器根本不需要蓝牙,关了还省电。

CUPS 打印服务:99% 的云服务器不需要打印功能。

Postfix / Sendmail:不做邮件服务器就别开,容易成为垃圾邮件转发器。

rpcbind / NFS:内网都不共享文件,外网开这端口等于裸奔。

Avahi 服务:零配置网络服务,家用设备才用,服务器上纯属浪费。

实战排查与关闭服务步骤

第一步:用 systemctl 查看当前运行的服务

systemctl list-units –type=service –state=running

列出所有正在运行的服务,一眼看出哪些是多余的

如果发现 `bluetooth.service` 或 `cups.service`,直接标记处理。

第二步:停止并禁用无用服务

以关闭蓝牙服务为例:

systemctl stop bluetooth.service

立即停止蓝牙服务,释放资源

systemctl disable bluetooth.service

禁止开机自启,重启后不会复活

注意:`disable` 只是取消开机启动,如果服务被其他进程依赖,手动启动还会跑起来。要彻底锁死,用 `mask`:

systemctl mask bluetooth.service

将服务软链接到 /dev/null,任何启动操作都无效

第三步:检查端口监听变化

ss -tlnp | grep -E '25|111|631'

25 是 SMTP,111 是 rpcbind,631 是 CUPS 打印端口

如果这些端口还在,说明服务没关干净

万一 `ss` 命令找不到,先安装 `iproute2` 包:

apt install iproute2 -y # Debian/Ubuntu
yum install iproute -y # CentOS/RHEL

排障:关闭服务后业务受影响怎么办?

有些服务看似没用,实际被其他核心服务依赖。比如 `rpcbind` 被 NFS 挂载依赖,`sendmail` 被 cron 日志报警依赖。

常见报错场景

报错1:关闭 sendmail 后 cron 任务不发送邮件

如果 cron 邮件无关紧要,直接忽略

或者将 MAILTO="" 加入 crontab

crontab -e

添加一行:MAILTO=""

报错2:关闭 avahi-daemon 后 mDNS 解析失效

如果服务器不需要 .local 域名解析,直接 mask

systemctl mask avahi-daemon.service

报错3:关闭 cups 后打印任务失败

服务器上根本不该有打印任务,确认没有打印机驱动再关

lpstat -p # 查看是否有打印机

如果为空,放心关

老鸟叮嘱:别手滑关了 SSH 服务

这是最常犯的错误。远程服务器上关了 `sshd`,你就只能联系机房重启了。操作前先确认 SSH 服务名:

systemctl status sshd

确认 sshd 是 active (running) 状态

保险做法:先创建一个非 root 用户并加入 `wheel` 或 `sudo` 组,再操作。万一 SSH 挂了,还能通过控制台登录。

useradd -m -G wheel backupadmin

创建 backupadmin 用户并加入 wheel 组

passwd backupadmin

设置密码,别设成 123456

FAQ

Linux SSH 连不上怎么办?

先检查 SSH 服务是否被误关:通过 VPS 控制台登录,运行 `systemctl start sshd`。如果服务正常,检查防火墙:`iptables -L -n` 或 `firewall-cmd –list-all`,确认 22 端口已放行。

VPS 防火墙端口放行后还是访问不了是什么原因?

可能原因有:服务本身没监听在 0.0.0.0(只监听 127.0.0.1);云服务商安全组没有放行;或者 SELinux 拦截了连接。先 `ss -tlnp` 看监听地址,再检查 SELinux 日志:`ausearch -m avc`。

Linux 小白可以直接用 root 账号操作吗?

强烈建议不要。root 权限过大,一条 `rm -rf /` 就能毁掉系统。日常操作用普通用户加 `sudo`,关键命令才用 root。很多 VPS 被入侵就是因为 root 密码泄漏。

BBR 开启后为什么速度没有明显提升?

BBR 只对丢包严重的网络环境有明显效果。如果你的服务器带宽本身就小(比如 1Mbps),开启 BBR 也跑不满。先测本地到服务器的延迟和丢包率:`ping -c 100 服务器IP`,丢包率超过 5% 才值得开 BBR。

关闭服务后系统内存没减少,怎么回事?

`systemctl stop` 只是停止进程,但有些服务的内存可能被缓存占用。用 `free -m` 看 `available` 列,那才是真正可用内存。如果还觉得不够,重启一次系统即可释放缓存。

如何一键查看所有开机自启的服务?

systemctl list-unit-files –type=service –state=enabled

列出所有开机自启的服务,逐个排查

转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/9525.html 商家投稿邮箱:zhujixuanblog@qq.com