编程与数学 03-009 Linux 操作系统应用 13_Linux 系统安全与用户认证

编程与数学 03-009 Linux 操作系统应用 13_Linux 系统安全与用户认证

摘要:本文全面介绍了 Linux 系统安全与用户认证的关键内容,涵盖安全基础、用户与权限管理、认证机制、SELinux 与 AppArmor、日志与审计、防火墙与网络防护、文件系统安全、入侵检测与响应、合规与安全基准以及实战案例。通过详细讲解最小权限原则、纵深防御、CIA 三要素、常见安全威胁、用户认证、SSH 安全加固、SELinux 策略管理、日志监控、防火墙配置、文件完整性检查、加密存储、入侵检测工具使用以及应急响应流程,帮助读者掌握 Linux 系统的安全管理和防护措施,提升系统安全性。
关键词:Linux 安全,用户认证,SELinux,AppArmor,日志审计,防火墙,文件系统安全,入侵检测,应急响应
人工智能助手:Kimi

一、Linux 安全基础

(一)安全模型与原则

1. 最小权限原则

最小权限原则是指在满足用户正常操作需求的前提下,为用户分配尽可能少的权限。这样可以有效降低因用户误操作或恶意行为导致系统受损的风险。例如,一个普通用户只需要对个人文件进行读写操作,就不应该赋予其对系统关键文件的修改权限。

2. 纵深防御(Defense in Depth)

纵深防御是一种多层次、多策略的安全防护体系。它要求在系统的不同层面(如网络边界、主机系统、应用程序等)设置安全措施,以确保即使某一层的安全防线被突破,其他层的安全措施仍能发挥作用,从而提高系统的整体安全性。比如,通过在防火墙层面限制外部访问,同时在主机系统上进行用户权限管理和安全配置,以及在应用程序层面进行安全漏洞检测和修复,共同构建起一道坚固的安全防线。

3. CIA 三要素(机密性、完整性、可用性)

CIA 三要素是信息安全领域的核心概念,分别代表着机密性(Confidentiality)、完整性和可用性(Availability)。

  • 机密性:确保信息不被未经授权的人员访问或泄露。例如,通过加密技术对敏感数据进行加密存储和传输,只有拥有正确密钥的用户才能解密查看数据内容。
  • 完整性:保证信息的完整性和准确性,防止信息被篡改或破坏。例如,使用数字签名技术对文件进行签名,接收方可以通过验证签名来判断文件是否在传输过程中被篡改。
  • 可用性:确保授权用户能够及时、可靠地访问和使用信息。例如,通过建立高可用的服务器架构和备份机制,防止因硬件故障或网络问题导致信息无法访问。

(二)常见安全威胁

1. 暴力破解(SSH、FTP)

暴力破解是指攻击者通过不断尝试各种用户名和密码组合,试图登录系统的一种攻击方式。对于 SSH 和 FTP 等服务,攻击者可能会利用自动化工具进行大规模的暴力破解尝试。例如,攻击者可能会针对 SSH 服务的默认端口 22,使用常见的用户名(如 root、admin 等)和大量密码字典进行破解。

2. 提权漏洞(SUID、内核漏洞)

提权漏洞是指攻击者利用系统中存在的漏洞,从普通用户权限提升到更高权限(如 root 权限)的过程。SUID(Set User ID)权限是一种特殊的文件权限,当用户执行具有 SUID 权限的文件时,该文件将以文件所有者的权限运行,而不是以执行者的权限运行。如果攻击者发现某个具有 SUID 权限的文件存在漏洞,就可能利用该漏洞提升权限。此外,内核漏洞也可能被攻击者利用来提权,例如通过利用内核中的内存漏洞执行恶意代码,从而获得系统最高权限。

3. 恶意软件(Rootkit、勒索软件)

恶意软件是指那些具有恶意目的的软件,如 Rootkit 和勒索软件。Rootkit 是一种能够在系统底层隐藏自身和恶意行为的恶意软件,它通过篡改系统的核心功能和数据,使得用户和安全软件难以发现其存在。勒索软件则是一种通过加密用户文件并要求支付赎金来解锁文件的恶意软件。例如,勒索软件可能会通过电子邮件附件或恶意链接传播,一旦用户不慎点击,就会导致系统中的重要文件被加密,用户只有支付赎金才能获取解密密钥。

4. 拒绝服务攻击(DDoS、Fork Bomb)

拒绝服务攻击(DoS)是指攻击者通过各种手段使目标系统无法正常提供服务的攻击方式。分布式拒绝服务攻击(DDoS)是一种更强大的攻击形式,攻击者利用大量被控制的计算机(僵尸网络)同时向目标系统发送大量请求,导致目标系统过载而无法正常工作。Fork Bomb 是一种特殊的拒绝服务攻击,它通过在系统中创建大量进程,消耗系统资源,使系统无法正常运行。例如,在 Linux 系统中,攻击者可以通过编写一个简单的 Fork Bomb 脚本,使系统进程数迅速增加,最终导致系统崩溃。

二、用户与权限管理

(一)用户与组管理

1. /etc/passwd/etc/shadow/etc/group 解析
  • /etc/passwd 文件存储了系统中用户的基本信息,每行代表一个用户,字段之间用冒号分隔。字段包括用户名、密码占位符、用户 ID(UID)、组 ID(GID)、用户描述、用户主目录和用户登录时使用的 shell 等信息。例如:
bash 复制代码
root:x:0:0:root:/root:/bin/bash
  • /etc/shadow 文件存储了用户密码的加密信息以及其他与密码相关的安全信息,如密码最后更改时间、密码有效期等。该文件只有 root 用户可以访问,以确保密码信息的安全。例如:
bash 复制代码
root:$6$...:18698:0:99999:7:::
  • /etc/group 文件存储了系统中用户组的信息,每行代表一个用户组,字段包括组名、密码占位符、组 ID(GID)和属于该组的用户列表。例如:
bash 复制代码
root:x:0:
2. useraddusermoduserdel
  • useradd 命令用于创建新用户。例如,创建一个名为 testuser 的用户:
bash 复制代码
useradd testuser
  • usermod 命令用于修改用户的属性。例如,将 testuser 的用户组改为 users:
bash 复制代码
usermod -g users testuser
  • userdel 命令用于删除用户。例如,删除 testuser 用户:
bash 复制代码
userdel testuser
3. groupaddgroupmodgroupdel
  • groupadd 命令用于创建新用户组。例如,创建一个名为 testgroup 的用户组:
bash 复制代码
groupadd testgroup
  • groupmod 命令用于修改用户组的属性。例如,将 testgroup 的组 ID 改为 1001:
bash 复制代码
groupmod -g 1001 testgroup
  • groupdel 命令用于删除用户组。例如,删除 testgroup 用户组:
bash 复制代码
groupdel testgroup

(二)权限控制

1. 文件权限(chmodchownchgrp
  • 文件权限分为三类:所有者权限、所属组权限和其他用户权限。每类权限又包括读(r)、写(w)和执行(x)三种权限。例如,查看文件权限:
bash 复制代码
ls -l filename
  • chmod 命令用于修改文件的权限。例如,将文件 filename 的所有者权限设置为读写执行,所属组和其他用户权限设置为只读:
bash 复制代码
chmod 744 filename
  • chown 命令用于修改文件的所有者。例如,将文件 filename 的所有者改为 testuser:
bash 复制代码
chown testuser filename
  • chgrp 命令用于修改文件的所属组。例如,将文件 filename 的所属组改为 testgroup:
bash 复制代码
chgrp testgroup filename
2. 特殊权限(SUID、SGID、Sticky Bit)
  • SUID(Set User ID)权限允许用户以文件所有者的权限执行文件。例如,为文件 filename 设置 SUID 权限:
bash 复制代码
chmod u+s filename
  • SGID(Set Group ID)权限允许用户以文件所属组的权限执行文件。例如,为文件 filename 设置 SGID 权限:
bash 复制代码
chmod g+s filename
  • Sticky Bit 权限用于防止用户删除或移动其他用户的文件。例如,为目录 directory 设置 Sticky Bit 权限:
bash 复制代码
chmod +t directory
3. ACL(getfaclsetfacl
  • ACL(访问控制列表)提供了更细粒度的文件权限控制。getfacl 命令用于查看文件的 ACL 权限。例如:
bash 复制代码
getfacl filename
  • setfacl 命令用于设置文件的 ACL 权限。例如,为用户 testuser 设置对文件 filename 的读写权限:
bash 复制代码
setfacl -m u:testuser:rw filename

(三)PAM(Pluggable Authentication Modules)

1. PAM 配置文件(/etc/pam.d/

PAM 是一种可插拔的认证模块机制,它允许系统管理员通过配置文件灵活地定义用户认证过程。/etc/pam.d/ 目录下存放了各种服务的 PAM 配置文件。例如,/etc/pam.d/sshd 文件定义了 SSH 服务的认证过程。

2. 限制登录尝试(pam_tally2fail2ban
  • pam_tally2 模块用于记录用户的登录失败次数。例如,配置 /etc/pam.d/common-auth 文件,限制用户连续登录失败次数为 3 次:
bash 复制代码
auth required pam_tally2.so on_err=fail deny=3 unlock_time=300
  • fail2ban 是一个用于防止暴力破解的工具,它通过监控日志文件,自动禁止频繁尝试登录失败的 IP 地址。例如,安装并配置 fail2ban 服务:
bash 复制代码
sudo apt-get install fail2ban

编辑 /etc/fail2ban/jail.local 文件,启用 SSH 服务的防护:

bash 复制代码
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
3. 强制密码策略(pam_pwquality

pam_pwquality 模块用于强制用户设置符合一定复杂度要求的密码。例如,配置 /etc/pam.d/common-password 文件,要求密码长度至少为 8 位,包含大小写字母、数字和特殊字符:

bash 复制代码
password requisite pam_pwquality.so retry=3 minlen=8 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1

三、认证机制

(一)密码安全

1. /etc/shadow 加密机制(SHA-512、bcrypt)

Linux 系统中,用户密码通常存储在 /etc/shadow 文件中,并采用加密算法进行加密。常见的加密算法包括 SHA-512 和 bcrypt。SHA-512 是一种单向哈希算法,具有较高的安全性。bcrypt 是一种基于 Blowfish 加密算法的哈希算法,它通过引入成本因子来增加密码破解的难度。

2. 密码策略(chagepasswd -e
  • chage 命令用于设置用户的密码策略,如密码有效期、警告天数等。例如,设置用户 testuser 的密码有效期为 90 天:
bash 复制代码
chage -M 90 testuser
  • passwd -e 命令用于强制用户在下次登录时更改密码:
bash 复制代码
passwd -e testuser
3. 禁用弱密码(cracklib

cracklib 是一个用于检测弱密码的库。系统管理员可以利用 cracklib 来防止用户设置弱密码。例如,在用户设置密码时,系统会自动调用 cracklib 进行密码强度检查,如果密码强度不符合要求,将提示用户重新设置。

(二)SSH 安全加固

1. 禁用 root 登录(PermitRootLogin no

为了提高 SSH 服务的安全性,建议禁用 root 用户的直接登录。编辑 /etc/ssh/sshd_config 文件,将 PermitRootLogin 参数设置为 no

bash 复制代码
PermitRootLogin no

然后重启 SSH 服务:

bash 复制代码
sudo systemctl restart sshd
2. 使用密钥认证(ssh-keygen

密钥认证是一种比密码认证更安全的 SSH 登录方式。用户可以通过生成密钥对,将公钥放置在服务器上,私钥保存在本地。登录时,SSH 客户端会使用私钥进行加密认证。生成密钥对的命令如下:

bash 复制代码
ssh-keygen

将公钥复制到服务器的 ~/.ssh/authorized_keys 文件中:

bash 复制代码
ssh-copy-id user@server
3. 限制 IP 访问(AllowUsersAllowGroups

通过在 /etc/ssh/sshd_config 文件中使用 AllowUsersAllowGroups 参数,可以限制特定用户或用户组的 SSH 访问。例如,只允许用户 testuser 和用户组 testgroup 通过 SSH 登录:

bash 复制代码
AllowUsers testuser
AllowGroups testgroup
4. 端口更改 + 防火墙规则

更改 SSH 服务的默认端口(如从 22 改为 2222)可以增加破解难度。编辑 /etc/ssh/sshd_config 文件,修改 Port 参数:

bash 复制代码
Port 2222

然后重启 SSH 服务。同时,需要在防火墙中开放新的端口:

bash 复制代码
sudo ufw allow 2222/tcp

(三)双因素认证(2FA)

1. Google Authenticator(libpam-google-authenticator

Google Authenticator 是一种基于时间的一次性密码(TOTP)生成器,用户可以通过手机应用生成动态验证码,用于双因素认证。安装 libpam-google-authenticator 包:

bash 复制代码
sudo apt-get install libpam-google-authenticator

用户运行 google-authenticator 命令,根据提示完成设置,并将生成的二维码或密钥添加到手机应用中。然后,编辑 PAM 配置文件(如 /etc/pam.d/sshd),添加以下内容:

bash 复制代码
auth required pam_google_authenticator.so
2. TOTP(Time-Based One-Time Password)

TOTP 是一种基于时间的一次性密码算法,它根据当前时间和密钥生成动态验证码。用户每次登录时,需要输入正确的 TOTP 验证码,以确保身份的真实性。

3. U2F(YubiKey)

U2F(Universal 2nd Factor)是一种通用的第二因素认证标准,YubiKey 是一种支持 U2F 的硬件安全密钥。用户可以通过插入 YubiKey 并按下按键来完成认证,提供了一种简单、安全的双因素认证方式。

四、SELinux 与 AppArmor

(一)SELinux(Security-Enhanced Linux)

1. 运行模式(Enforcing、Permissive、Disabled)

SELinux 有三种运行模式:

  • Enforcing:强制执行安全策略,任何违反策略的行为都会被阻止。
  • Permissive:仅记录违反策略的行为,但不阻止。
  • Disabled:SELinux 完全禁用。

查看当前 SELinux 模式:

bash 复制代码
sestatus

设置 SELinux 模式为 Enforcing:

bash 复制代码
setenforce 1
2. 策略管理(semanagesetsebool
  • semanage 命令用于管理 SELinux 策略。例如,添加一个自定义的 SELinux 上下文:
bash 复制代码
semanage fcontext -a -t httpd_sys_content_t '/var/www/html(/.*)?'
  • setsebool 命令用于设置 SELinux 布尔值。例如,允许 Apache 访问自定义目录:
bash 复制代码
setsebool -P httpd_read_user_content 1
3. 日志分析(audit2whyaudit2allow
  • audit2why 命令用于分析 SELinux 审计日志,解释为什么某些行为被阻止。例如:
bash 复制代码
audit2why < /var/log/audit/audit.log
  • audit2allow 命令用于生成允许特定行为的 SELinux 策略模块。例如:
bash 复制代码
audit2allow -M mypolicy < /var/log/audit/audit.log

(二)AppArmor(Ubuntu/Debian)

1. 配置文件(/etc/apparmor.d/

AppArmor 是一种轻量级的强制访问控制系统,其配置文件存放在 /etc/apparmor.d/ 目录下。每个配置文件定义了一个应用程序的访问规则。

2. 强制模式 vs. 投诉模式
  • 强制模式:AppArmor 会强制执行配置文件中的规则,任何违反规则的行为都会被阻止。
  • 投诉模式:AppArmor 仅记录违反规则的行为,但不阻止。
3. 自定义策略(aa-genprof

aa-genprof 命令用于生成自定义的 AppArmor 策略。例如,为某个应用程序生成策略:

bash 复制代码
aa-genprof /usr/bin/application

五、日志与审计

(一)系统日志监控

1. /var/log/auth.log(登录审计)

/var/log/auth.log 文件记录了系统的认证信息,包括用户登录、权限变更等。例如,查看最近的登录记录:

bash 复制代码
tail -f /var/log/auth.log
2. /var/log/secure(RHEL/CentOS)

在 RHEL/CentOS 系统中,/var/log/secure 文件记录了类似的认证信息。

3. journalctl -u sshd(systemd 日志)

journalctl 命令用于查看 systemd 日志。例如,查看 SSH 服务的日志:

bash 复制代码
journalctl -u sshd

(二)审计框架(auditd)

1. 关键命令(auditctlausearchaureport
  • auditctl 命令用于配置审计规则。例如,添加规则监控 /etc/passwd 文件的访问:
bash 复制代码
auditctl -w /etc/passwd -p rwa
  • ausearch 命令用于搜索审计日志。例如,搜索与用户 testuser 相关的审计记录:
bash 复制代码
ausearch -u testuser
  • aureport 命令用于生成审计报告。例如,生成用户登录报告:
bash 复制代码
aureport -l
2. 监控文件访问(-w /etc/passwd -p rwa

监控 /etc/passwd 文件的读、写和属性变更:

bash 复制代码
auditctl -w /etc/passwd -p rwa
3. 监控用户命令(-a exit,always -F arch=b64 -S execve

监控用户执行的命令:

bash 复制代码
auditctl -a exit,always -F arch=b64 -S execve

六、防火墙与网络防护

(一)iptables/nftables

1. 基本规则(允许/拒绝流量)

iptables 是一种强大的防火墙工具,用于控制网络流量。例如,允许 HTTP 流量:

bash 复制代码
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

拒绝所有其他流量:

bash 复制代码
iptables -A INPUT -j DROP
2. 防暴力破解(限制 SSH 连接频率)

限制来自同一 IP 地址的 SSH 连接频率:

bash 复制代码
iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 2 -j REJECT
3. 防 DDoS(限制 ICMP/SYN Flood)

限制 ICMP 流量:

bash 复制代码
iptables -A INPUT -p icmp -m limit --limit 1/sec -j ACCEPT

限制 SYN Flood 攻击:

bash 复制代码
iptables -A INPUT -p tcp --syn -m limit --limit 1/sec -j ACCEPT

(二)firewalld(RHEL/CentOS)

1. 区域管理(firewall-cmd --zone=public --add-service=ssh

firewalld 是 RHEL/CentOS 系统中用于管理防火墙的工具。例如,将 SSH 服务添加到 public 区域:

bash 复制代码
firewall-cmd --zone=public --add-service=ssh
2. 端口转发与 NAT

配置端口转发:

bash 复制代码
firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.100

(三)TCP Wrappers(hosts.allow/hosts.deny)

1. 限制服务访问(sshd: 192.168.1.0/24

通过 /etc/hosts.allow/etc/hosts.deny 文件限制服务访问。例如,允许来自 192.168.1.0/24 网段的用户访问 SSH 服务:

bash 复制代码
sshd: 192.168.1.0/24

七、文件系统安全

(一)文件完整性检查

1. AIDE(Advanced Intrusion Detection Environment)

AIDE 是一种用于检测文件系统完整性的工具。安装 AIDE:

bash 复制代码
sudo apt-get install aide

初始化 AIDE 数据库:

bash 复制代码
sudo aideinit

定期检查文件完整性:

bash 复制代码
sudo aide --check
2. Tripwire(监控关键文件变化)

Tripwire 是另一种用于监控文件系统完整性的工具。安装 Tripwire:

bash 复制代码
sudo apt-get install tripwire

配置 Tripwire 并进行完整性检查。

3. rpm -V(RPM 包校验)

在基于 RPM 的系统中,可以使用 rpm -V 命令校验已安装的 RPM 包。例如:

bash 复制代码
rpm -V package_name

(二)加密存储

1. LUKS(cryptsetup 全盘加密)

LUKS 是一种用于全盘加密的工具。例如,使用 LUKS 加密一个分区:

bash 复制代码
sudo cryptsetup luksFormat /dev/sdX

打开加密分区:

bash 复制代码
sudo cryptsetup luksOpen /dev/sdX encrypted_volume
2. eCryptfs(目录级加密)

eCryptfs 是一种用于目录级加密的工具。例如,挂载一个加密目录:

bash 复制代码
sudo mount -t ecryptfs /path/to/encrypted /path/to/mount
3. OpenSSL 加密文件(openssl enc

使用 OpenSSL 加密文件:

bash 复制代码
openssl enc -aes-256-cbc -in plaintext.txt -out encrypted.enc

解密文件:

bash 复制代码
openssl enc -aes-256-cbc -d -in encrypted.enc -out decrypted.txt

八、入侵检测与响应

(一)Rootkit 检测

1. rkhunter(Rootkit Hunter)

rkhunter 是一种用于检测 Rootkit 的工具。安装 rkhunter

bash 复制代码
sudo apt-get install rkhunter

运行检测:

bash 复制代码
sudo rkhunter --check
2. chkrootkit

chkrootkit 是另一种用于检测 Rootkit 的工具。安装 chkrootkit

bash 复制代码
sudo apt-get install chkrootkit

运行检测:

bash 复制代码
sudo chkrootkit
3. lynis 系统审计

lynis 是一种用于系统审计和安全评估的工具。安装 lynis

bash 复制代码
sudo apt-get install lynis

运行审计:

bash 复制代码
sudo lynis audit system

(二)恶意进程排查

1. ps auxftophtop
  • ps auxf 命令用于显示系统中所有进程的详细信息,并以树状结构显示进程关系。
  • top 命令用于实时显示系统中占用资源最多的进程。
  • htop 命令是一个交互式的进程查看器,提供了更友好的界面。
2. lsof -i(检查异常网络连接)

查看所有网络连接:

bash 复制代码
lsof -i
3. netstat -tulnp(监听端口分析)

查看所有监听端口及其关联的进程:

bash 复制代码
netstat -tulnp

(三)应急响应流程

1. 隔离受感染主机

将受感染的主机从网络中隔离,防止恶意行为进一步扩散。

2. 取证分析(ddforemost
  • 使用 dd 命令创建磁盘镜像:
bash 复制代码
dd if=/dev/sdX of=/path/to/image.img
  • 使用 foremost 工具进行数据恢复和分析:
bash 复制代码
foremost -i /path/to/image.img -o /path/to/output
3. 恢复与加固

恢复系统正常运行,并采取措施加固系统,防止再次受到攻击。

九、合规与安全基准

(一)CIS Benchmark

1. 安全加固指南

CIS Benchmark 提供了一系列的安全加固指南,帮助系统管理员按照最佳实践配置系统。

2. 自动化检查脚本(lynisOpenSCAP
  • lynis 工具可以用于自动化检查系统的安全配置。
  • OpenSCAP 是一个开源的合规性检查工具,支持多种安全标准。

(二)NIST/ISO 27001 合规

1. 访问控制策略

制定严格的访问控制策略,确保只有授权用户才能访问敏感信息。

2. 审计日志保留

保留审计日志,以便在发生安全事件时进行调查和分析。

十、实战案例

(一)SSH 安全加固(禁用密码登录 + Fail2Ban)

  1. 禁用 SSH 密码登录:
bash 复制代码
sudo nano /etc/ssh/sshd_config

PasswordAuthentication 设置为 no,然后重启 SSH 服务:

bash 复制代码
sudo systemctl restart sshd
  1. 安装并配置 Fail2Ban:
bash 复制代码
sudo apt-get install fail2ban

编辑 /etc/fail2ban/jail.local 文件,启用 SSH 服务的防护:

bash 复制代码
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5

(二)配置 PAM 强制复杂密码策略

编辑 /etc/pam.d/common-password 文件,添加以下内容:

bash 复制代码
password requisite pam_pwquality.so retry=3 minlen=8 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1

(三)SELinux 策略调整(允许 Apache 访问自定义目录)

  1. 设置自定义目录的 SELinux 上下文:
bash 复制代码
semanage fcontext -a -t httpd_sys_content_t '/var/www/custom(/.*)?'
  1. 修复文件上下文:
bash 复制代码
restorecon -Rv /var/www/custom

(四)使用 AIDE 监控 /etc 目录变化

  1. 初始化 AIDE 数据库:
bash 复制代码
sudo aideinit
  1. 定期检查 /etc 目录的完整性:
bash 复制代码
sudo aide --check

(五)应急响应:检测并清除挖矿病毒

  1. 使用 ps auxftophtop 等工具检测异常进程。
  2. 使用 lsof -inetstat -tulnp 检查异常网络连接。
  3. 使用 rkhunterchkrootkit 检测 Rootkit。
  4. 隔离受感染的主机,进行取证分析,并清除病毒。

附录与资源

(一)常用安全命令速查

  • 查看文件权限:ls -l
  • 修改文件权限:chmod
  • 修改文件所有者:chown
  • 修改文件所属组:chgrp
  • 查看用户信息:cat /etc/passwd
  • 查看用户密码信息:cat /etc/shadow
  • 查看用户组信息:cat /etc/group
  • 查看 SELinux 状态:sestatus
  • 查看审计日志:ausearch
  • 查看系统日志:journalctl
  • 查看防火墙规则:iptables -Lfirewall-cmd --list-all
  • 查看网络连接:netstat -tulnplsof -i

(二)推荐安全工具列表

  • AIDE:文件完整性检查工具
  • Tripwire:文件完整性检查工具
  • LUKS:全盘加密工具
  • eCryptfs:目录级加密工具
  • OpenSSL:加密工具
  • Fail2Ban:防止暴力破解工具
  • rkhunter:Rootkit 检测工具
  • chkrootkit:Rootkit 检测工具
  • lynis:系统审计工具
  • OpenSCAP:合规性检查工具

(三)CIS Benchmark 下载

访问 CIS 官方网站下载最新的 CIS Benchmark 文档:
https://www.cisecurity.org/cis-benchmarks/

(四)进一步学习资料(书籍、Coursera 课程)

  • 书籍
    • 《Linux 系统安全:从黑客攻击中保护你的基础设施》
    • 《SELinux 管理》
    • 《Linux 防火墙:构建安全的网络环境》
  • Coursera 课程

全文总结

本文详细介绍了 Linux 系统安全与用户认证的各个方面,包括安全基础、用户与权限管理、认证机制、SELinux 与 AppArmor、日志与审计、防火墙与网络防护、文件系统安全、入侵检测与响应、合规与安全基准以及实战案例。通过这些内容的学习,读者可以全面了解 Linux 系统的安全机制和防护措施,掌握如何管理和配置用户权限、实施安全认证、保护文件系统、监控日志、配置防火墙以及应对安全威胁。同时,附录部分提供了常用安全命令速查、推荐安全工具列表、CIS Benchmark 下载链接和进一步学习资料,方便读者在实际工作中快速查阅和深入学习。希望本文能够帮助读者提升 Linux 系统的安全性,构建更加安全可靠的网络环境。

相关推荐
艾莉丝努力练剑3 小时前
【编码表 && STL】C++编程基石:从字符编码表到STL标准库的完整入门指南
java·linux·c++
工头阿乐3 小时前
Ubuntu 安装与使用C++ onnxruntime库
linux·c++·ubuntu
艾莉丝努力练剑3 小时前
【测试开发/测试】详解测试用例(下):详解设计测试用例的方法
linux·经验分享·测试用例·bug·测试
努力努力再努力wz3 小时前
【C++进阶系列】:位图和布隆过滤器(附模拟实现的源码)
java·linux·运维·开发语言·数据结构·c++
Akshsjsjenjd4 小时前
Tomcat 简介与 Linux 环境部署
java·linux·tomcat
_BigMao4 小时前
Linux服务器从零开始-部署.net控制台程序(AlmaLinux)
linux·服务器·.net
JeffreyGu.4 小时前
centos网卡设置问题
linux·运维·centos
爱凤的小光4 小时前
图漾相机-ROS2-SDK-Ubuntu 4.X.X版本编译
linux·数码相机·ubuntu
纳切威4 小时前
CentOS 9部署Zabbix7.0 Agent2端
linux·运维·centos·zabbix