Linux 系统安全是运维和开发人员必须掌握的重要知识,涉及用户管理、权限控制、防火墙配置等多个方面。
用户和组管理:
- useradd:创建用户,如 useradd -m -s /bin/bash username(创建用户并设置家目录和 shell)
- userdel:删除用户,如 userdel -r username(删除用户及其家目录)
- usermod:修改用户属性,如 usermod -aG group username(将用户添加到组)
- passwd:修改用户密码,如 passwd username
- groupadd:创建组,如 groupadd groupname
- groupdel:删除组,如 groupdel groupname
- gpasswd:管理组,如 gpasswd -a username groupname(将用户添加到组)
- id:查看用户 ID 和组信息
- whoami:查看当前用户
- w:查看当前登录用户
SSH 安全配置:
- 配置文件:/etc/ssh/sshd_config
- 禁用 root 登录:PermitRootLogin no
- 禁用密码登录:PasswordAuthentication no(使用密钥认证)
- 修改默认端口:Port 2222
- 限制登录用户:AllowUsers user1 user2
- 密钥认证:ssh-keygen 生成密钥对,将公钥复制到服务器的 ~/.ssh/authorized_keys
- 使用 ssh-copy-id:ssh-copy-id user@host
防火墙配置:
- iptables:传统防火墙工具
- 查看规则:iptables -L -n
- 添加规则:iptables -A INPUT -p tcp --dport 22 -j ACCEPT
- 删除规则:iptables -D INPUT 1
- 保存规则:iptables-save > /etc/iptables/rules.v4
- firewalld:动态防火墙管理
- 查看规则:firewall-cmd --list-all
- 开放端口:firewall-cmd --add-port=80/tcp --permanent
- 重载配置:firewall-cmd --reload
- ufw:简化防火墙配置(Ubuntu)
- 启用防火墙:ufw enable
- 开放端口:ufw allow 22
- 查看状态:ufw status
文件权限和 SELinux:
- chmod:修改文件权限
- chown:修改文件所有者
- chgrp:修改文件所属组
- SELinux:安全增强型 Linux
- 查看状态:getenforce
- 临时禁用:setenforce 0
- 永久禁用:修改 /etc/selinux/config
- 查看上下文:ls -Z
系统加固:
- 禁用不必要的服务:systemctl disable service
- 更新系统:apt update && apt upgrade(Debian/Ubuntu)或 yum update(CentOS/RHEL)
- 配置自动更新:unattended-upgrades(Debian/Ubuntu)
- 安装安全工具:fail2ban(防止暴力破解)、rkhunter(检测 rootkit)
- 配置日志审计:auditd
- 限制 sudo 权限:编辑 /etc/sudoers,使用 visudo 命令
安全审计:
- 查看登录日志:last、lastlog
- 查看认证日志:/var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(CentOS/RHEL)
- 查看系统日志:/var/log/messages、journalctl
- 查看进程:ps aux、top
- 查看网络连接:ss -tulnp、netstat -tulnp
- 查看开放端口:nmap localhost
应急响应:
- 检查异常进程:ps aux | grep -v grep | grep -E "bash|sh|python|perl"
- 检查异常网络连接:ss -tulnp | grep ESTABLISHED
- 检查异常文件:find / -perm -4000 -o -perm -2000(查找 SUID/SGID 文件)
- 检查用户登录:last、lastlog
- 隔离受感染系统:断开网络连接
- 备份重要数据:在清理前备份关键数据