在Linux系统中关闭FTP服务是提升服务器安全性的重要操作,尤其考虑到FTP协议使用明文传输敏感数据(如用户名、密码),存在被嗅探的风险,以下是详细操作指南,涵盖主流Linux发行版(Ubuntu/Debian/CentOS)和常见FTP服务软件(vsftpd/proftpd/pure-ftpd):
确认当前运行的FTP服务
在关闭前需确定系统使用的FTP服务类型:
# 检查已安装的FTP软件包 ## Debian/Ubuntu dpkg --get-selections | grep -E 'vsftpd|proftpd|pure-ftpd' ## CentOS/RHEL rpm -qa | grep -E 'vsftpd|proftpd|pure-ftpd'
关闭FTP服务(分场景操作)
场景1:使用 systemd 的系统(Ubuntu 16.04+/CentOS 7+)
步骤:
- 停止运行中的服务(以
vsftpd
为例):sudo systemctl stop vsftpd # 替换为实际服务名(如proftpd)
- 禁止开机自启:
sudo systemctl disable vsftpd
- 验证状态(应显示
inactive
和disabled
):systemctl status vsftpd
场景2:使用 init 的旧系统(CentOS 6/Ubuntu 14.04-)
步骤:
- 停止服务:
sudo service vsftpd stop # 或 /etc/init.d/vsftpd stop
- 移除开机启动:
sudo chkconfig vsftpd off # CentOS sudo update-rc.d -f vsftpd remove # Ubuntu/Debian
- 检查是否成功:
service vsftpd status
彻底卸载FTP软件(可选)
若需完全移除FTP服务以释放资源:
# Debian/Ubuntu sudo apt purge vsftpd proftpd pure-ftpd -y # CentOS/RHEL sudo yum remove vsftpd proftpd pure-ftpd -y
验证FTP服务已关闭
- 检查端口占用(FTP默认端口21):
sudo netstat -tuln | grep ':21'
若无输出则说明端口未监听。
- 尝试连接测试:
ftp localhost # 或使用 telnet 127.0.0.1 21
应返回连接拒绝(Connection refused)。
安全建议
- 替代方案:
使用加密协议替代FTP:- SFTP/SCP:基于SSH的文件传输(默认端口22),启用命令
sudo systemctl enable sshd
。 - FTPS:FTP over SSL/TLS(需配置证书)。
- SFTP/SCP:基于SSH的文件传输(默认端口22),启用命令
- 防火墙加固:
禁止外部访问FTP端口:sudo ufw deny 21/tcp # Ubuntu sudo firewall-cmd --permanent --remove-service=ftp # CentOS
- 定期审计:
使用ss -tuln
或nmap localhost
定期检查开放端口。
故障排除
- 报错 “Unit not found”:说明服务名错误,通过
systemctl list-unit-files | grep ftp
确认正确名称。 - 端口仍被占用:可能有残留进程,用
sudo killall vsftpd
强制结束。
引用说明:本文操作基于Linux官方文档(systemd、vsftpd)及服务器安全最佳实践,具体命令请以实际环境为准,生产环境操作前建议备份配置。
通过以上步骤,您已有效关闭Linux的FTP服务并提升系统安全性,对于长期运行的服务器,建议迁移至加密传输协议以保障数据安全。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7624.html