Linux系统安全教程(第5天)
目标:了解Linux系统安全的基本知识和维护方法
内容:
- 掌握用户权限管理和密码策略
- 了解防火墙的配置和使用(如iptables)
- 学习系统日志的查看和分析方法
- 掌握系统备份和恢复的基本步骤
1. 用户权限管理和密码策略
1.1 用户账号分类
- 超级用户:具有最高权限,通常是root用户。
- 普通用户:权限受限的用户,用于日常操作。
- 程序用户:用于运行程序和服务,不能登录系统。
1.2 UID和GID
-
UID(User ID):用户标识符,每个用户都有一个唯一的UID。
- 管理员root:UID为0
- 程序用户:UID范围为1-499(CentOS 6)或1-999(CentOS 7)
- 普通用户:UID范围为500-60000(CentOS 6)或1000-60000(CentOS 7)
-
GID(Group ID):组标识符,每个组都有一个唯一的GID。
1.3 用户账号管理
-
文件位置:
/etc/passwd:存放用户信息。/etc/shadow:存放密码信息。
-
添加用户:
bash复制代码 useradd [选项] 用户名-s:修改shell类型,如/bin/bash或/sbin/nologin。-u:指定UID。-M:不创建家目录。-d:指定家目录。-e:用户失效时间。-g:指定基本组。-G:指定附加组。-r:随机生成系统用户。
示例:
bash复制代码 useradd ky33 -u 2000 -M -s /sbin/nologin -
修改密码:
bash复制代码 passwd [选项] 用户名-d:清空指定用户的密码。-l:锁定用户账户。-S:查看用户账户的状态。-u:解锁用户账户。
示例:
bash复制代码 passwd -l ky33 # 锁定用户ky33的密码 passwd -S ky33 # 查看用户ky33的密码状态 passwd -u ky33 # 解锁用户ky33的密码 echo "123456" | passwd --stdin ky33 # 更改用户ky33的密码 -
修改用户属性:
bash复制代码 usermod [选项] 用户名-l:更改用户账号的登录名称。-L:锁定用户账户。-u:修改用户的UID号。-U:解锁用户账户。-d:修改用户的宿主目录位置。-e:修改用户的账户失效时间。-g:修改用户的基本组名(或使用GID号)。-G:修改用户的附加组名(或使用GID号)。-s:指定用户的登录Shell。
示例:
bash复制代码 usermod -L ky33 # 锁定用户ky33 usermod -U ky33 # 解锁用户ky33 usermod -l kyy33 ky33 # 更改用户名ky33为kyy33 -
删除用户:
bash复制代码 userdel [选项] 用户-r:删除用户及其家目录。
示例:
bash复制代码 userdel -r ky33 # 删除用户ky33及其家目录
1.4 密码策略
-
配置文件:
/etc/login.defs:定义密码策略,如密码最大使用天数、最小使用天数、最小长度等。/etc/pam.d/system-auth:配置密码长度策略。
-
配置示例:
bash复制代码 # 编辑 /etc/login.defs 文件 vim /etc/login.defs PASS_MAX_DAYS 99999 # 密码最长使用天数 PASS_MIN_DAYS 0 # 密码最小使用天数 PASS_MIN_LEN 5 # 密码最小长度(此配置不会生效) PASS_WARN_AGE 7 # 密码失效前警告天数 # 编辑 /etc/pam.d/system-auth 文件 vim /etc/pam.d/system-auth password requisite pam_pwquality.so try_first_pass local_users_only retry=3 minlen=13 authtok_type= -
修改已有用户的密码策略:
使用chage命令。bash复制代码 chage [选项] 登录-d:设置最近一次密码修改时间。-E:设置账户过期时间。-I:设置密码失效后的宽限期。-l:显示账户年龄信息。-m:设置两次改变密码之间的最小天数。-M:设置两次改变密码之间的最大天数。-W:设置密码过期前的警告天数。
示例:
bash复制代码 chage -M 42 ky33 # 设置用户ky33的密码最大使用天数为42天 chage -l ky33 # 显示用户ky33的账户年龄信息
2. 防火墙的配置和使用(iptables)
2.1 启用/禁用/重启Firewall防火墙
-
启用防火墙:
bash复制代码 systemctl start firewalld -
配置防火墙开机自启:
bash复制代码 systemctl enable firewalld -
禁用iptables:
bash复制代码 systemctl stop iptables -
禁止iptables开机自启:
bash复制代码 systemctl disable iptables -
重启Firewall防火墙:
bash复制代码 systemctl restart firewalld
2.2 配置Firewall防火墙
-
开放指定端口:
bash复制代码 firewall-cmd --zone=public --add-port=3306/tcp --permanent -
删除开放端口:
bash复制代码 firewall-cmd --zone=public --remove-port=3306/tcp --permanent -
指定IP访问特定端口:
bash复制代码 firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.111.86' port protocol='tcp' port='3306' accept" -
删除指定IP的访问策略:
bash复制代码 firewall-cmd --permanent --remove-rich-rule="rule family='ipv4' source address='192.168.111.86' port protocol='tcp' port='3306' accept" -
配置NAT转发:
bash复制代码 # 检查是否允许NAT转发 firewall-cmd --query-masquerade # 配置允许NAT转发 firewall-cmd --permanent --zone=public --add-masquerade # 禁止NAT转发 firewall-cmd --remove-masquerade -
重新载入配置:
bash复制代码 firewall-cmd --reload -
查看配置结果:
bash复制代码 firewall-cmd --list-all
3. 系统日志的查看和分析方法
3.1 使用命令行工具查看系统日志
-
journalctl:查看systemd生成的日志。
bash复制代码 # 查看所有日志信息 journalctl # 查看最新的50个日志条目 journalctl -n 50 # 查看特定服务的日志,如nginx journalctl -u nginx.service -
dmesg:显示内核环缓冲区的内容。
bash复制代码 # 查看所有内核日志 dmesg # 查看最新的50个内核日志条目 dmesg -n 50 # 使用grep过滤日志内容,如过滤包含'error'关键字的日志 dmesg | grep error
3.2 直接查看系统日志文件
- **