Linux服务器作为互联网的基石,安全是至关重要的。但对于新手来说,如何下手加固服务器、避免常见的安全漏洞,可能会感到困惑。本文就来聊聊Linux服务器安全加固中新手常遇到的问题,并给出简单易懂的解决方法。
问题1:密码设置太简单,不常更换¶
新手常见操作:直接用123456或生日作为root密码,或长期不换密码。
风险:简单密码极易被暴力破解工具(如Hydra)扫描尝试,几分钟内就能被破解,导致服务器被入侵。
解决方法:
- 强密码要求:长度至少8位,包含大小写字母、数字和特殊符号(例如:P@ssw0rd!)。
- 定期更换密码:使用passwd命令修改,例如passwd root(root用户)。建议每3个月更换一次,避免“密码长期不变”。
- 禁用密码登录,改用SSH密钥:更安全!生成密钥对后,将公钥放在服务器,用私钥登录。
- 本地生成密钥:ssh-keygen -t rsa(一路回车,无需设置密码)。
- 上传公钥到服务器:ssh-copy-id root@服务器IP,输入密码验证后完成。
- 服务器端关闭密码登录:编辑/etc/ssh/sshd_config,设置PasswordAuthentication no,PubkeyAuthentication yes,重启SSH服务:systemctl restart sshd。
问题2:防火墙“图省事”直接关闭¶
新手常见操作:觉得防火墙太麻烦,直接systemctl stop firewalld或iptables -F清空规则。
风险:防火墙是服务器的“守门人”,关闭后所有端口暴露在外,黑客可扫描、攻击漏洞服务(如Apache未打补丁的Web漏洞)。
解决方法:
- 开放必要端口:只开业务需要的端口(如Web用80/443,SSH用22),关闭其他端口。
- CentOS/RHEL(firewalld):
开放80端口:firewall-cmd --add-port=80/tcp --permanent(永久开放),然后firewall-cmd --reload生效。
查看开放端口:firewall-cmd --list-ports。
- Ubuntu/Debian(ufw):
开放22端口:ufw allow 22/tcp,启用防火墙:ufw enable。
- 关闭不必要服务:如Telnet(不安全,用SSH替代)、FTP(若未用),用systemctl disable vsftpd(禁用FTP服务)。
问题3:SSH端口暴露公网,不限制IP访问¶
新手常见操作:直接开放SSH的22端口到公网,不做任何限制。
风险:SSH是远程登录的核心入口,开放公网且无IP限制,会被黑客工具暴力破解(如每秒10次尝试密码)。
解决方法:
- 限制IP访问:仅允许公司内网或指定IP登录。
- 编辑/etc/hosts.allow,添加允许的IP段:
sshd: 192.168.1.0/24: allow(允许192.168.1.x网段访问)。
- 编辑/etc/hosts.deny,禁止其他IP:sshd: ALL。
- 使用fail2ban防暴力破解:自动封禁多次失败登录的IP,新手可简单设置:
安装:yum install fail2ban(CentOS),启用后自动监控/var/log/auth.log,3次失败后封禁IP。
问题4:系统和软件长期不更新,漏洞堆积¶
新手常见操作:安装系统后从不更新,依赖旧版本软件。
风险:系统和软件(如Apache、Nginx)存在已知漏洞(如Heartbleed、Log4j),不更新就会被黑客利用。
解决方法:
- 定期更新系统:
- CentOS/RHEL:yum update -y(更新所有系统包)。
- Ubuntu/Debian:apt update && apt upgrade -y。
- 开启自动更新(可选):
CentOS用yum-cron自动更新安全补丁;Ubuntu用unattended-upgrades配置自动重启。
问题5:权限管理混乱,文件/目录设为777¶
新手常见操作:为了“方便”,把网站目录或日志文件权限设为chmod 777。
风险:777权限意味着“任何人可读写执行”,若服务器被入侵,攻击者可直接篡改文件(如删除网站、植入木马)。
解决方法:遵循“最小权限原则”:
- 目录权限:设为755(所有者读写执行,组和其他仅读执行),例如chmod 755 /var/www/html。
- 文件权限:设为644(所有者读写,组和其他仅读),例如chmod 644 /var/www/html/index.html。
- 避免root权限滥用:使用sudo代替su -,仅在必要时用root操作。
问题6:忽略日志,出问题后“无头苍蝇”¶
新手常见操作:不配置日志,服务器被入侵后无法追溯攻击痕迹。
风险:日志是排查问题的关键(如/var/log/auth.log记录登录失败),若被黑客清空日志,无法定位入侵来源。
解决方法:
- 配置日志轮转:防止日志文件过大(如/var/log/messages)。
CentOS默认用logrotate自动轮转日志,可编辑/etc/logrotate.d/syslog自定义规则(如压缩旧日志)。
- 定期检查关键日志:
查看登录记录:grep "Failed password" /var/log/auth.log(筛选失败登录)。
查看系统异常:tail -f /var/log/messages(实时监控系统消息)。
问题7:安装多余服务,暴露不必要的端口¶
新手常见操作:为了“快速建站”,安装了FTP、Telnet、MySQL等未使用的服务。
风险:多余服务默认开放端口(如FTP的21端口),即使不使用也会被黑客扫描攻击。
解决方法:
- 卸载无用服务:
若不用FTP,卸载:yum remove vsftpd(CentOS);Ubuntu:apt remove vsftpd。
- 关闭未使用服务:
禁用Telnet服务:systemctl disable telnet.socket(Telnet不安全,仅用于演示)。
- 检查端口:用netstat -tuln查看所有监听端口,关闭未知服务对应的端口。
安全加固总结¶
新手加固Linux服务器,核心原则可总结为:
1. 最小权限:权限越小越安全,拒绝777、root随意操作。
2. 关闭入口:防火墙只开必要端口,限制SSH、数据库等服务的访问来源。
3. 及时更新:系统和软件补丁必须打,漏洞早补早安心。
4. 日志审计:记录攻击痕迹,定期查看关键日志,排查异常。
安全加固是长期过程,建议新手先从关闭不必要服务、限制SSH访问、设置强密码开始,再逐步学习更复杂的工具(如iptables、fail2ban)。定期检查服务器状态(如用last查看登录记录),才能让服务器“固若金汤”。