Linux系统加固需卸载无用服务而非仅停用,通过ss命令识别高危端口(如23、21、6379),用apt/yum彻底移除对应包,再验证进程、端口、软件包及自启项清零,并配合防火墙与监听范围限制实现最小化暴露。

Linux系统加固的关键一步,是清理暴露的默认端口和彻底卸载无用服务——不是简单停用,而是从源头移除潜在攻击面。
识别系统默认开放的高危端口
多数Linux发行版在安装后会默认启用SSH(22)、HTTP(80)、HTTPS(443)等端口,部分还可能开启FTP(21)、Telnet(23)、MySQL(3306)或Redis(6379)。这些端口若未被业务实际使用,就是直接入口。
执行以下命令快速发现监听中的端口:
ss -tuln | grep ':<strong>LISTEN</strong>'
重点关注非业务必需的端口,例如:
• 23(Telnet)——明文传输,应禁用并卸载telnetd
• 21(FTP)——除非明确需要,否则用SFTP替代
• 6379(Redis)——若未配置密码且绑定0.0.0.0,极易被入侵
• 25/110/143(邮件服务)——普通服务器无需运行MTA或POP3/IMAP
精准定位并卸载未使用的网络服务包
仅用systemctl stop或disable不能清除二进制文件和配置残留,攻击者仍可能通过本地提权复用旧服务。必须卸载对应软件包。
以常见服务为例:
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
-
关闭并卸载Telnet服务:
sudo systemctl stop telnet.socket telnet.service<br>sudo systemctl disable telnet.socket telnet.service<br>sudo apt remove inetutils-inetd telnetd # Debian/Ubuntu<br>sudo yum remove telnet-server xinetd # CentOS/RHEL
-
清理FTP服务(vsftpd/proftpd):
先确认是否启用:systemctl list-unit-files | grep ftp
卸载命令:sudo apt remove vsftpd proftpd-basic或sudo yum remove vsftpd proftpd -
移除废弃的数据库服务(如MariaDB/MySQL):
若仅用SQLite或根本不存数据,执行:sudo apt purge mariadb-server mysql-server(Debian系)或sudo yum remove mariadb-server mysql-community-server(RHEL系),再删除/var/lib/mysql目录(确保无业务数据)
验证卸载效果与端口收敛状态
卸载完成后必须验证三项内容:
- 进程已终止:
ps aux | grep -i 'ftp\|telnet\|redis'应无有效输出 - 端口已关闭:
ss -tuln | grep ':21\|:23\|:6379'返回空 - 软件包已移除:
dpkg -l | grep -i ftp(Debian)或rpm -qa | grep -i httpd(RHEL)应无匹配项 - 开机自启项清零:
systemctl list-unit-files --state=enabled | grep -E '(ftp|telnet|redis)'应无结果
建议将上述检查整合为简易脚本定期运行,或纳入Ansible/Chef等自动化流程。
补充加固建议:最小化监听范围与防火墙兜底
即使卸载了服务,也需防止未来误启用或第三方软件悄悄打开端口:
- 修改SSH监听地址,避免
0.0.0.0:
编辑/etc/ssh/sshd_config,设ListenAddress 192.168.1.100(仅内网管理IP) - 启用并配置
ufw(Ubuntu)或firewalld(CentOS):
默认拒绝所有入站,仅放行必要端口(如22、443),并限制SSH来源IP:sudo ufw allow from 10.0.1.0/24 to any port 22
- 禁用IPv6监听(若不用):
在/etc/ssh/sshd_config中设AddressFamily inet;
在/etc/sysctl.conf中添加net.ipv6.conf.all.disable_ipv6 = 1
不复杂但容易忽略:卸载≠安全,验证+收敛+限制,三步缺一不可。

















