Linux主机加固的重要性
在当今数字化时代,Linux系统因其稳定性、安全性和开源特性,被广泛应用于服务器、云计算和嵌入式设备中,系统的广泛部署也使其成为攻击者的主要目标,未经过加固的Linux主机可能面临未授权访问、提权攻击、恶意软件植入等多种安全威胁,对Linux主机进行系统化加固,是保障数据安全、维护业务连续性的关键环节,Linux主机加固并非单一操作,而是涵盖系统配置、权限管理、服务优化、日志审计等多个维度的综合性工程,需要结合安全最佳实践和业务需求逐步实施。
系统基础加固
用户与权限管理
用户和权限是系统安全的第一道防线,应遵循最小权限原则,禁用或删除不必要的默认账户(如ftp、news等),避免账户闲置带来的风险,对于管理员账户,建议禁用直接root登录,改为通过普通用户使用sudo命令提权,并配置sudoers文件,限制sudo命令的使用范围和目标用户,密码策略是权限管理的核心,需强制要求复杂密码(包含大小写字母、数字及特殊字符,长度不低于12位),并定期更换密码(如每90天),可通过faillock工具配置账户锁定策略,当用户连续登录失败达到阈值时(如5次),自动锁定账户15分钟,防止暴力破解攻击。
文件系统与目录权限
Linux系统的文件权限直接影响数据安全,需定期检查关键目录(如/etc、/bin、/sbin、/usr)的权限设置,确保所有者仅为root,组权限为750或更严格,对于敏感文件(如/etc/passwd、/etc/shadow),应限制普通用户读取权限,必要时使用chattr命令添加不可修改属性(如chattr +i /etc/shadow),防止恶意篡改,关闭不必要的文件系统自动挂载功能,避免攻击者通过可移动设备植入恶意程序。
网络服务安全配置
关闭不必要的服务
默认安装的Linux系统会开启多种网络服务(如telnet、rsh、finger等),其中部分服务存在已知漏洞,可能成为攻击入口,可通过systemctl list-unit-files --type=service查看所有服务,使用systemctl disable命令关闭非必要服务(如telnet.socket、rsh.socket),仅保留核心业务所需服务(如SSH、HTTP、数据库服务等),并确保服务以最小权限运行(将Web服务用户从root改为www-data)。
SSH服务加固
SSH是远程管理Linux系统的常用工具,需重点加固,修改默认SSH端口(如从22改为10022),避免自动化扫描攻击,禁用密码登录,强制使用密钥认证(在/etc/ssh/sshd_config中设置PasswordAuthentication no和PubkeyAuthentication yes),并限制允许登录的用户(如AllowUsers admin user1),配置SSH空闲超时时间(如ClientAliveInterval 300),防止长时间未关闭的会话被利用。
防火墙与端口管理
防火墙是网络层的重要防护手段,对于使用systemd的系统,可通过firewalld配置防火墙规则,仅开放业务必需的端口(如80、443、22),并禁止其他端口的入站连接,执行以下命令仅允许HTTP和SSH访问:
firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=ssh firewall-cmd --permanent --add-port=10022/tcp firewall-cmd --reload
定期使用nmap或netstat工具扫描主机端口,确保未授权端口未被开放。
系统内核与安全补丁管理
内核参数优化
内核参数的合理配置可提升系统安全性,通过修改/etc/sysctl.conf文件,启用或调整以下安全相关参数:
- 禁用IP转发:
net.ipv4.ip_forward=0(防止主机充当路由器) - 防止ICMP重定向攻击:
net.ipv4.conf.all.accept_redirects=0 - 开启SYN Cookies:
net.ipv4.tcp_syncookies=1(防御SYN Flood攻击) - 限制日志消息长度:
kernel.printk=4 6 1 7(避免日志溢出攻击)
修改后执行sysctl -p使配置生效。
及时更新系统补丁
系统漏洞是攻击者利用的主要途径,需建立定期更新机制,对于基于Debian/Ubuntu的系统,使用apt update && apt upgrade -y更新软件包;对于CentOS/RHEL系统,使用yum update -y或dnf update -y,建议配置自动更新任务(如通过unattended-upgrades工具),在非业务高峰期自动安装安全补丁,定期使用lynis或openVAS等工具进行漏洞扫描,及时发现并修复高危漏洞。
日志与审计
启用系统日志审计
日志是安全事件追溯的重要依据,确保rsyslog服务正常运行,并配置日志服务器集中存储日志(如将所有主机的日志发送至中央ELK平台),对于关键操作(如用户登录、sudo提权、网络连接等),需启用详细日志记录,在/etc/ssh/sshd_config中开启LogLevel VERBOSE,记录SSH登录的详细信息;通过auditd工具监控敏感文件访问(如auditctl -w /etc/passwd -p wa -k passwd_changes)。
定期审查日志
日志审查需自动化与人工结合,使用logwatch或goaccess工具自动分析日志,生成异常报告(如频繁失败的登录尝试、非授权文件访问等),管理员需定期查看/var/log/auth.log(或/var/log/secure)和/var/log/messages,重点关注异常登录行为和系统错误信息,对于发现的可疑活动,及时采取措施(如封禁IP地址、冻结账户等)。
恶意代码防护与入侵检测
安装杀毒软件与入侵检测工具
尽管Linux系统病毒较少,但仍需防范恶意代码,可安装clamav等开源杀毒软件,定期扫描系统文件(如clamscan -r /home),部署入侵检测系统(IDS)如Suricata或Snort,监控网络流量和系统调用,实时发现异常行为,对于高级持续性威胁(APT),可结合OSSEC等主机入侵检测系统(HIDS),监控文件完整性、进程异常和注册表修改(Linux下为/proc文件系统)。
配置文件完整性检查
攻击者常通过篡改系统文件或植入后门维持权限,使用AIDE(Advanced Intrusion Detection Environment)定期检查关键文件的哈希值,发现变更后及时告警,安装AIDE后初始化数据库:aide --init,并将数据库移动到安全位置;每日执行aide --check对比文件变化,确保系统文件未被篡改。
数据备份与灾难恢复
加固的最后一道防线是数据备份,制定定期备份策略,对关键数据(如/etc配置、数据库、用户目录)进行全量+增量备份,并将备份数据存储在离线或异地位置,避免因勒索软件或硬件故障导致数据丢失,定期测试备份数据的恢复流程,确保在系统被入侵或崩溃时能快速恢复业务。
Linux主机加固是一个持续优化的过程,需结合系统版本、业务场景和安全威胁动态调整策略,通过用户权限管控、服务优化、内核调优、日志审计和备份恢复等多层次防护,可显著提升主机抗攻击能力,为系统安全运行提供坚实保障。







