1. 持续更新系统与软件
定期执行sudo apt update && sudo apt upgrade -y命令,确保操作系统及所有软件包均为最新版本,及时修补已知漏洞。建议开启自动安全更新功能(安装unattended-upgrades并配置),自动安装安全补丁,减少因延迟更新导致的暴露风险。
2. 强化用户权限管理
遵循“最小权限原则”,日常操作使用普通用户账户,通过sudo命令获取临时管理员权限;禁止root用户通过SSH远程登录(修改/etc/ssh/sshd_config文件,设置PermitRootLogin no),降低账户被暴力破解或提权攻击的风险;制定强密码策略(使用大小写字母、数字、特殊字符组合,长度不少于8位),并定期更换密码。
3. 配置防火墙限制访问
使用ufw(Uncomplicated Firewall)或iptables配置防火墙,仅开放系统必需的服务端口(如SSH的22端口、HTTP的80端口、HTTPS的443端口),屏蔽其他不必要的端口;通过ufw default deny incoming设置默认拒绝外来连接,ufw default allow outgoing允许内部发起的出站连接,减少外部非法访问的可能。
4. 部署入侵检测与防御工具
安装入侵检测系统(IDS)如Snort,监控网络流量和系统活动,识别恶意行为(如端口扫描、SQL注入)并及时报警;使用入侵防御系统(IPS)如Suricata,主动拦截可疑流量,阻止攻击扩散;此外,可部署fail2ban工具,自动封禁多次尝试登录失败的IP地址,防范暴力破解攻击。
5. 使用强制访问控制(MAC)机制
启用SELinux(Security-Enhanced Linux)或AppArmor(Application Armor),通过强制访问控制限制进程的权限。例如,AppArmor可为每个应用程序创建配置文件,定义其可访问的文件、目录和网络资源,即使进程被攻破,也能限制其破坏范围;SELinux则提供更细粒度的权限控制(如强制访问控制策略),进一步提升系统安全性。
6. 精简系统与服务
遵循“最少安装原则”,仅安装系统运行必需的软件包和服务(如使用sudo apt install --no-install-recommends命令安装软件,避免不必要的依赖);停用未使用的服务(如FTP、Telnet等明文传输服务),减少系统的攻击面;定期核查系统服务状态(使用systemctl list-unit-files --state=enabled),关闭无用服务。
7. 加强SSH安全配置
修改SSH默认端口(编辑/etc/ssh/sshd_config文件,将Port 22改为其他端口,如2222),减少自动化扫描工具的攻击;启用SSH密钥认证(使用ssh-keygen -t rsa -b 4096生成密钥对,将公钥添加至~/.ssh/authorized_keys文件),替代密码认证,避免密码泄露导致的风险;限制SSH登录IP地址(在/etc/ssh/sshd_config中添加AllowUsers user@ip地址),仅允许特定IP地址访问SSH服务。
8. 定期备份与恢复演练
制定自动备份策略,使用rsync、tar或duplicity等工具定期备份重要数据(如系统配置文件、数据库、用户文档),备份数据存储在离线介质(如外部硬盘)或异地服务器,防止数据丢失;定期进行恢复演练(如模拟系统崩溃后恢复数据),确保备份数据的可用性和完整性。
9. 监控与日志审计
使用auditd(Linux审计框架)记录系统活动(如文件访问、用户登录、进程启动),通过ausearch命令查询审计日志,追踪异常行为;集中管理日志(使用ELK Stack:Elasticsearch、Logstash、Kibana或Graylog),实时分析日志数据,识别潜在的安全威胁(如频繁的登录失败、异常的文件修改);定期审查系统日志(如/var/log/auth.log记录SSH登录信息,/var/log/syslog记录系统运行日志),及时发现并处理安全事件。
10. 定期安全扫描与评估
使用漏洞扫描工具(如OpenVAS、Nessus)定期扫描系统,识别未修补的漏洞、弱密码、过期的证书等问题,生成安全报告并根据报告修复漏洞;对自定义应用程序进行代码审计(使用SonarQube、Bandit等工具),检查是否存在SQL注入、跨站脚本(XSS)等安全漏洞,确保应用程序的安全性。