linux系统如何日常维护防止被攻击?

linux系统如何日常维护防止被攻击?

发布时间:2024-10-01 14:55:15

为了防止 linux 系统被攻击,日常维护工作至关重要。以下是一些常见的日常维护和防御措施,帮助增强 linux 系统的安全性:

1. 定期更新系统与软件

  • 系统更新:保持操作系统和所有软件包的最新状态,修补已知漏洞。使用命令如 yum updateapt update && apt upgrade
  • 自动更新:可以设置自动更新,例如在基于 rhel 的系统上启用 yum-cron,在基于 debian 的系统上启用 unattended-upgrades

2. 用户与权限管理

  • 使用强密码:强制所有用户使用复杂密码(包括大小写字母、数字和符号)。可以通过 passwdfaillock 设置密码复杂度策略。
  • 禁用 root 远程登录:在 /etc/ssh/sshd_config 文件中将 permitrootlogin 设置为 no,禁止 root 用户通过 ssh 登录。
  • 仅使用 ssh 密钥认证:关闭密码登录,改用 ssh 公钥认证来提高登录安全性。
  • 定期检查和删除不活跃账户:定期清理不再使用的用户账户,防止这些账户成为攻击入口。

3. 防火墙与网络安全

  • 配置防火墙:使用 firewalldiptables 配置严格的入站规则,关闭所有不必要的端口。仅允许开放必要的服务端口,如 80(http)、443(https)、22(ssh)。
  • 设置 fail2ban:fail2ban 是一个用于防止暴力破解攻击的工具,通过监控日志文件并禁止多次失败的登录尝试,可以防止暴力破解 ssh 等服务。
  • 限制 ssh 访问:可以将 ssh 服务配置为使用非默认端口,并使用 allowusersallowgroups 选项限制登录的用户或组。

4. 定期审计与日志监控

  • 启用系统审计工具:使用 auditd 或类似工具监控系统活动,并记录登录、文件访问、权限更改等行为。
  • 定期检查系统日志:使用 journalctl/var/log/ 中的日志文件,检查是否有异常的登录、权限提升、错误或失败的连接。
  • 使用 logwatch 或 goaccess:这些工具可以自动生成系统日志的每日报告,帮助管理员快速掌握系统状态。

5. 文件系统安全

  • 设置适当的文件权限:确保重要的系统文件(如 /etc/passwd/etc/shadow)和目录权限适当。不要为普通用户授予过多权限,使用 chmodchown 控制文件访问权限。
  • 启用磁盘加密:对于敏感数据,使用磁盘加密工具如 luks 加密重要的分区或文件系统。
  • 定期备份数据:使用工具如 rsynctarbacula 定期备份重要数据,并确保备份文件的安全存储。

6. 限制不必要的服务与端口

  • 禁用不必要的服务:定期使用 systemctlchkconfig 检查正在运行的服务,禁用任何不必要的或未使用的服务(如 ftp、telnet)。
  • 关闭未使用的端口:通过 netstatss 检查开放端口,并关闭不必要的网络服务和端口。

7. 启用 selinux 或 apparmor

  • 启用 selinux:selinux(强制访问控制系统)可以提供额外的安全层次,通过限制服务和应用程序的访问权限来防止它们超出预定的权限范围。
  • 配置 apparmor:如果使用的是基于 ubuntu 的系统,可以启用和配置 apparmor 来增强安全性。

8. 配置安全警报与监控

  • 系统健康监控:使用 nagioszabbixprometheus 等监控工具监控服务器状态(cpu、内存、磁盘、网络等),及时发现和解决异常问题。
  • 启用实时安全警报:配置如 aide(高级入侵检测环境)或 ossec 来监控系统文件的变更,并在检测到未经授权的修改时发送警报。

9. 防止内部提权攻击

  • 限制 sudo 权限:确保只有必要的用户能够使用 sudo,并且使用 visudo 配置 sudoers 文件,限制特定用户只能执行特定命令。
  • 限制 suid 文件:suid 文件可以允许用户以文件拥有者的权限执行命令,攻击者可能利用它们进行权限提升。使用 find 命令定期检查系统中的 suid 文件:
     
    find / -perm /4000

10. 定期进行安全扫描

  • 漏洞扫描:定期使用漏洞扫描工具(如 openvas、nessus)扫描服务器,发现并修复潜在的漏洞。
  • 恶意软件扫描:虽然 linux 系统不容易感染病毒,但可以使用 clamav 等工具定期扫描系统中的恶意软件。

11. 禁用不安全的协议

  • 禁用 telnet 和 ftp:这些协议使用明文传输数据,容易被攻击者截获。使用 ssh 替代 telnet,使用 sftp 或 ftps 替代 ftp。
  • 启用加密通信:确保敏感数据的传输使用 https、ssl/tls 等加密协议。

12. 加固 ssh 配置

  • 更改默认 ssh 端口:更改默认的 22 端口为其他端口,减少暴力破解的可能性。
  • 设置 ssh 超时:通过设置 clientaliveintervalclientalivecountmax 来自动断开闲置的 ssh 会话,减少会话劫持风险。

13. 启用内核安全模块

  • 启用 ip spoofing 防护:通过 /etc/sysctl.conf 配置防止 ip 欺骗攻击,添加如下配置:
     
    net.ipv4.conf.all.rp_filter = 1 
  • net.ipv4.conf.default.rp_filter = 1
  • 禁用 ipv6(如果不使用):如果不使用 ipv6,可以在 /etc/sysctl.conf 中禁用它:

  • net.ipv6.conf.all.disable_ipv6 = 1

14. 安全培训与意识

  • 管理员培训:确保系统管理员熟悉常见的安全威胁和最佳安全实践,如如何安全地配置服务器和识别潜在的攻击行为。
  • 保持安全警惕:定期查看行业安全资讯,关注新兴的漏洞和攻击手段,保持系统与防御措施的更新。

通过以上这些日常维护措施,可以显著提高 linux 系统的安全性,降低被攻击的风险。