七天掌握Linux-第五天

43 阅读5分钟

Linux系统安全教程(第5天)

目标:了解Linux系统安全的基本知识和维护方法

内容

  1. 掌握用户权限管理和密码策略
  2. 了解防火墙的配置和使用(如iptables)
  3. 学习系统日志的查看和分析方法
  4. 掌握系统备份和恢复的基本步骤

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 直接查看系统日志文件

  • **