Linux系统的安全防护需要从多个层面入手,结合系统特性制定针对性的预防策略,才能有效规避常见的安全风险。做好基础的安全预防措施,能够大幅减少系统被攻击的可能性,保障业务服务的持续稳定运行。
账户与权限管理
账户和权限是Linux系统安全的第一道防线,不合理的账户配置是多数入侵事件的诱因。首先需要对系统账户进行精简,删除无用的默认账户和测试账户,避免这些账户成为攻击入口。其次要严格遵循最小权限原则,普通用户仅授予完成工作所需的最低权限,禁止随意使用root账户进行日常操作。
可以通过修改/etc/passwd和/etc/shadow文件管理账户信息,同时建议使用sudo机制替代直接登录root账户。以下是配置sudo权限的示例:
# 编辑sudo配置文件 visudo # 添加普通用户test的sudo权限,允许执行所有命令,需要输入自身密码 test ALL=(ALL) ALL # 如果需要免密执行sudo命令,可配置为 test ALL=(ALL) NOPASSWD:ALL
另外要强制所有账户设置复杂度足够的密码,密码长度不低于8位,包含大小写字母、数字和特殊字符,同时定期更换密码,可通过chage命令设置密码过期策略:
# 设置用户test的密码最长使用周期为90天,最短为7天,过期前7天提醒 chage -M 90 -m 7 -W 7 test
服务与端口管控
Linux系统默认会开启部分服务和端口,其中很多是不必要的,开放的端口越多,系统暴露的攻击面就越大。首先需要关闭所有非必需的服务,比如telnet、ftp等明文传输服务,优先使用ssh、sftp等加密传输服务替代。
可以使用systemctl命令管理服务状态,以下是关闭不必要服务的示例:
# 关闭telnet服务并禁止开机自启 systemctl stop telnet.socket systemctl disable telnet.socket # 查看当前所有运行的服务 systemctl list-units --type=service --state=running
端口管控需要结合防火墙规则实现,CentOS系统可使用firewalld,Ubuntu系统可使用ufw,仅开放业务必需的端口,其余端口全部拒绝访问。以下是firewalld配置示例:
# 启动firewalld服务并设置开机自启 systemctl start firewalld systemctl enable firewalld # 开放80端口(HTTP服务)和22端口(SSH服务),允许TCP协议访问 firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=22/tcp # 重新加载防火墙规则使配置生效 firewall-cmd --reload # 查看当前开放的端口列表 firewall-cmd --list-ports
系统与软件更新
系统漏洞是安全事件的重要诱因,Linux官方会定期发布系统内核和软件的漏洞补丁,及时更新是修复已知漏洞的最有效方式。需要建立定期更新机制,优先更新安全相关的补丁,同时更新前做好系统和数据的备份,避免更新过程中出现兼容性问题导致服务不可用。
不同Linux发行版的更新命令有所差异,以下是常见发行版的更新示例:
# CentOS/RHEL系统更新所有软件包
yum update -y
# 仅更新安全相关的补丁
yum update --security -y
# Ubuntu/Debian系统更新软件包列表并升级所有软件
apt update && apt upgrade -y
# 仅升级安全补丁
apt update && apt upgrade -s | grep -i security | awk '{print $2}' | xargs apt install -y
日志审计与监控
完善的日志审计机制能够在安全事件发生后快速溯源,同时也能提前发现异常行为的迹象。Linux系统自带的日志服务rsyslog可以集中收集系统日志,包括登录日志、服务运行日志、权限变更日志等,需要定期查看日志内容,关注异常登录、权限变更、服务异常停止等情况。
可以配置日志定期归档和备份,避免日志被篡改或删除,同时建议部署入侵检测工具如fail2ban,自动封禁多次尝试登录失败的IP地址。以下是fail2ban配置SSH防护的示例:
# 安装fail2ban yum install fail2ban -y # 创建SSH防护配置文件 cat > /etc/fail2ban/jail.d/sshd.conf << EOF [sshd] enabled = true port = 22 filter = sshd logpath = /var/log/secure maxretry = 3 bantime = 3600 EOF # 启动fail2ban服务并设置开机自启 systemctl start fail2ban systemctl enable fail2ban # 查看被封禁的IP列表 fail2ban-client status sshd
文件与数据安全
重要的系统文件和数据需要做好权限控制和备份工作。系统关键文件如/etc/passwd、/etc/shadow、/etc/sudoers等需要设置严格的访问权限,仅允许root账户修改,避免被普通用户篡改。同时定期对重要数据进行离线备份,备份数据需要加密存储,防止备份数据泄露导致信息损失。
可以使用chmod和chown命令修改文件权限,以下是关键文件权限配置示例:
# 设置/etc/shadow文件仅root可读可写,其他用户无任何权限 chmod 600 /etc/shadow chown root:root /etc/shadow # 设置/etc/sudoers文件仅root可读可写,其他用户无权限 chmod 440 /etc/sudoers chown root:root /etc/sudoers
此外,建议对重要文件开启完整性校验,使用md5sum或sha256sum生成文件哈希值,定期对比哈希值判断文件是否被篡改:
# 生成/etc/passwd文件的sha256哈希值并保存到校验文件 sha256sum /etc/passwd > /root/passwd_hash.txt # 后续校验文件是否被篡改 sha256sum -c /root/passwd_hash.txt