导读:本期聚焦于阿狸创作的《Linux系统中不必要的服务如何关闭?服务安全管理实践详解》,敬请观看详情。服务器上跑的服务越多,攻击面就越大,这是安全运维里一条铁律。一台默认安装的Linux主机往往开着蓝牙、打印、邮件等几十个服务,其中大部分业务上根本用不到,却可能成为入侵的跳板。本文围绕如何识别和关闭不必要的服务展开,讲解systemctl和chkconfig等工具的查看、禁用、屏蔽操作,分析服务的依赖关系处理,并从端口暴露、最小权限、日志审计三个角度介绍服务安全管理的思路,帮助读者把系统精简到只保留必需进程,降低被攻击的风险。

系统安全加固的第一步往往不是装杀毒软件,而是做减法。一台Linux服务器从默认安装状态启动后,后台运行的服务数量可能远超管理员的想象:蓝牙、打印、邮件转发、远程桌面,甚至是一些早已废弃的守护进程。这些服务每一个都是潜在的攻击入口,只要有其中一个存在未修复的漏洞,整个服务器就可能被攻破。所谓“最小化服务”原则,就是只保留业务真正需要的服务,其余全部关闭,这是安全管理的基本功,也是最容易被忽视的一环。

Linux系统中不必要的服务如何关闭?服务安全管理实践详解

一、为什么要关闭不必要的服务

每多运行一个服务,系统就多开放一个或多个端口,多暴露一套代码逻辑。以经典的打印服务CUPS为例,如果服务器根本不连接打印机,这个服务不仅浪费内存和CPU资源,还在本机开放了631端口。历史上CUPS就曾曝出过远程代码执行漏洞,攻击者可以借助这个本不该存在的服务拿到系统权限。

除了直接漏洞风险,多余的服务还会带来几方面问题。第一,攻击者拿到低权限shell后,常利用本地服务的配置缺陷做权限提升,服务越多提权路径越多;第二,服务数量多导致进程列表杂乱,管理员排查异常进程时容易被干扰,隐蔽的恶意进程更容易藏身;第三,资源占用累积起来并不小,在低配的云主机上尤其明显。

反过来看,做过服务精简的系统,netstatss命令输出的监听端口清清爽爽,只有SSH、业务端口等少数几项,审计起来一目了然。这种状态不仅安全性更高,出问题时定位也快得多。

二、如何识别和关闭不必要的服务

识别服务要分两步:先看哪些服务在运行,再判断哪些是业务需要的。查看运行中的服务,以systemd体系为例,执行以下命令列出当前所有处于活动状态的服务:

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

如果想看到所有已启用的服务(包括开机自启的),用这条命令:

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

再结合端口监听情况交叉验证,确认每个开放端口对应的进程:

ss -tulnp

输出中每一行的Local Address:Port就是暴露面,Port对应PID和进程名。如果发现631(CUPS打印)、25(postfix邮件)、111(rpcbind)这类端口,而业务上完全不需要,就应该处理。

关闭服务的操作分三个层次。第一个层次是停止当前运行:systemctl stop cups,这只是临时停掉,重启后可能还会起来。第二个层次是取消开机自启:systemctl disable cups,这样重启后服务不会自动运行,但其他服务依赖它时仍可能被拉起。第三个层次是屏蔽服务,这是最彻底的方式:

systemctl stop cups
systemctl disable cups
systemctl mask cups

mask操作会把服务的unit文件软链接指向/dev/null,任何尝试启动它的请求都会失败,即使有依赖关系也无法拉起。对于明确永远不需要的服务,建议直接mask掉。解除屏蔽用systemctl unmask cups

老版本的CentOS 6等系统还在用SysV init体系,操作命令不同:用chkconfig --list查看,chkconfig cups off关闭自启,service cups stop停止服务。不过这类系统早已过了维护期,生产环境建议尽快升级。

三、常见建议关闭的服务清单与注意事项

不同的业务场景需要保留的服务不同,但下面这些服务在典型的Web服务器上通常是多余的,可以考虑关闭:

  • bluetooth:蓝牙支持,物理服务器和云主机基本用不到
  • cups:打印服务,不接打印机就关
  • avahi-daemon:局域网服务自动发现,服务器环境无意义且有信息泄露风险
  • postfixsendmail:本机邮件服务,除非应用确实需要发信
  • rpcbind:NFS相关,不使用NFS存储就关闭
  • vsftpd:FTP服务,传输不加密,建议用SFTP替代后关闭
  • tftp:简单文件传输,无认证机制,存在被利用刷流量和提权的风险

关闭服务前有几个注意事项。第一,看清依赖关系,执行systemctl list-dependencies 服务名可以查看哪些服务依赖它,避免关掉一个导致业务异常。第二,一次只改一个服务,改完观察一段时间再继续,批量操作出问题时难以定位。第三,像systemd-journaldsshd这类基础服务千万别关,尤其是通过SSH远程管理时,关掉sshd等于把自己锁在门外。第四,某些被mask的服务是系统底层的保护机制,比如systemd-debug-shell默认是masked状态,不要贸然unmask。

建议的做法是先在测试环境演练一轮,把关闭清单和操作步骤写成文档,再到生产环境执行。每次变更后用ss -tulnp核对端口变化,形成记录。

四、服务安全管理的进阶实践

关闭不必要的服务只是开始,对保留下来的服务同样要做好安全管理。第一个原则是最小权限运行。很多服务包默认提供专用的低权限用户,比如nginx使用nginx用户、MySQL使用mysql用户,不要图方便改成root运行。可以通过编辑unit文件限制服务的能力,例如:

systemctl edit nginx

在打开的覆盖配置中加入资源与权限限制:

[Service]
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
PrivateTmp=true
LimitNOFILE=65535

这些指令让服务进程拿不到新权限、无法写入系统目录、使用独立临时目录,即使被攻破也能显著限制破坏范围。

第二个层面是访问控制。SSH服务保留的同时,应修改默认端口、禁用root直接登录、强制密钥认证;对外提供的服务优先绑定内网地址或通过防火墙限制来源IP,用firewalldiptables把暴露面收窄到最小集合。

第三个层面是持续审计。安全加固不是一次性动作,系统更新后可能新增服务,运维人员也可能临时开启某些服务忘记关闭。建议定期执行服务清单比对,把当前启用服务与基线快照对照,发现差异及时处理。同时关注journalctl -u 服务名的日志输出,异常的登录尝试、频繁的连接失败都值得警惕。可以配合自动化工具如Lynis做周期性安全扫描,它会直接提示哪些服务应该关闭、哪些配置存在风险。

总结来说,服务安全管理的核心思路就是暴露面最小化:先识别、再精简、后加固,三步走下来,系统的安全水位会有明显提升。运维工作里最省力的安全措施往往就是这些基础操作,把简单的事情做扎实,比追逐各种花哨的防护工具更有价值。

Linux服务管理systemctl命令服务安全加固修改时间:2026-09-09 13:16:55

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/20260909/53384.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。