Linux系统安全加固实验
通过设置口令策略、修改SSH端口和锁定弱账户等方法,提升Linux系统的安全性。 2025-7-11 00:25:43 Author: www.freebuf.com(查看原文) 阅读量:13 收藏

【实验目的】

通过本实验,掌握对Linux系统进行安全加固的方法。

【知识点】

安全加固是指根据专业安全评估结果,制定相应的系统加固方案。针对不同目标系统,通过打补丁、修改安全配置、增加安全机制等方法,合理地进行安全性的加强。其主要目的是减少信息系统自身的脆弱性,从而降低系统遭受的安全风险。

【实验原理】

针对Linux系统的攻击方式主要包括:口令破解、服务漏洞利用、权限提升、木马后门、rootkit、物理攻击、痕迹清理等。针对这些攻击方式,给出相应的安全加固方法,减少Linux系统自身的脆弱性,并提高抵御攻击的能力。

【软件工具】

  • 操作系统:CentOS 7 x64

【实验目标】

通过对Linux系统从防口令破解、防服务漏洞、防权限提升、防木马后门、防痕迹清理、防物理攻击方面进行安全加固操作,提升Linux系统的安全性。

【实验步骤】

登录操作系统,用户名/口令:root/123456。

1.防口令破解

(1)限定口令长度和复杂度

加固要求:设置口令策略,满足长度和复杂度要求。要求长度8位以上,口令中包含大写字母、小写字母、数字、特殊字符,每种字符至少一个。

加固方法:

authconfig --passminlen=8 --update  //限制口令最短8位

authconfig --passminclass=4 --update  //限制口令至少包含4种字符

--update:这个选项告诉authconfig命令在修改配置后立即更新系统设置,包括生成必要的配置文件(如/etc/pam.d/system-auth)并重新加载PAM(Pluggable Authentication Modules,可插拔认证模块)配置,使得新的密码策略立即生效,无需重启系统。

image-20240424205302689

(2)口令生存周期

加固要求:限制口令的最长使用期限为90天,口令的最短使用期限为3天,口令到期前15天发出警告。

加固方法:

vi /etc/login.defs  //编辑文件,修改文件内容

修改设置如下:

PASS_MAX_DAYS为90、PASS_MIN_DAYS为3、PASS_WARN_AGE为15。

保存退出。

image-20240424205433990

image-20240424205528275

(3)设置登录失败锁定

加固要求:用户远程登录验证连续超过5次失败的,锁定账号30分钟。

加固方法:

//修改配置文件,在#%PAM-1.0的下面一行,即第二行添加内容。

vim /etc/pam.d/sshd

auth required pam_tally2.so deny=5 
unlock_time=1800 even_deny_root 
root_unlock_time=1800

//
auth: 指明这是认证阶段的模块。
required: 表示这个模块的结果是必需的。如果该模块失败,那么整体认证将失败,除非有其他模块覆盖这个结果(比如使用sufficient关键字的模块)。
pam_tally2.so: 是PAM的一个模块,用于跟踪认证尝试的失败次数,并根据配置实施锁定策略。tally2意味着这是第二个版本的计数模块,相较于tally有更多功能和灵活性。
接下来的参数是针对pam_tally2模块的设置:

deny=5: 如果某个用户(包括root用户,因为后面有even_deny_root)连续失败认证达到5次,则该用户将被锁定,无法再进行登录尝试。

unlock_time=1800: 设定自动解锁的时间,单位是秒。这里设置为1800秒,即30分钟后,用户尝试登录的计数器将被重置,允许用户再次尝试登录。

even_deny_root: 这个参数表明上述的失败次数限制和锁定规则同样适用于root用户,即使对于系统管理员账户也不给予特殊豁免。

root_unlock_time=1800: 特别为root用户设定的解锁时间,这里也是1800秒。虽然与全局的unlock_time重复,但强调了即使是root账户,其锁定状态也会在同样的30分钟后解除。

保存退出。

image-20240424210830131

在服务器上查看锁定情况

image-20240424210949086

(4)处理弱口令账户

加固要求:当前user1用户的口令为弱口令,修改该口令,使其符合长度和复杂性要求。
加固方法:passwd user1 //为用户设置强壮的口令。

为用户设置强壮的口令

image-20240429201757552

(5)处理与系统运行维护无关的账户

加固要求:系统存在与系统运行、维护工作无关的账户,名为test,将其锁定。

加固方法:usermod -L test //锁定账户

usermod: 命令本身,用于修改用户账户的各种属性,如用户名、主目录、登录Shell等。

-L: 这是一个选项,用于锁定用户账户。当对某个用户执行 usermod -L 时,系统会将该用户的密码条目修改为一个特殊的锁定值,这实际上并不改变用户的密码,但会导致任何密码验证尝试失败,从而阻止该用户登录系统。对于锁定的账户,即使用户知道正确的密码也无法登录。

除了 -L 参数外,usermod 命令还支持许多其他有用的参数,以下是一些常见的选项:

-l new_username: 更改用户的登录名(用户名)为 new_username。

-U: 解锁用户账户。与 -L 相反,此选项可以解锁一个之前被锁定的用户账户,使其能够正常登录。

-a -G group1,group2,...: 将用户添加到附加组中,不替换现有的附加组成员资格。-a 表示追加,-G 后面跟着用逗号分隔的组名列表。

-s shell: 更改用户的登录Shell为 shell 指定的Shell程序。

-d home_dir: 修改用户的家目录到 home_dir 指定的路径。

-e date: 设置账户的过期日期。date 应该是YYYY-MM-DD格式。

-c comment: 修改用户账户的备注字段(通常用于存放用户的真实姓名或描述信息)。

image-20240429201940418

passwd -S test 是一个Linux命令,用于查询用户 test 的密码状态。这里的 -S 参数是大写的"S",用于显示指定用户的密码状态信息。

输出的各个字段含义如下:
用户名 (test): 这是查询的用户账户名。

密码状态标志:

P: 表示密码已被设置,并且账户可用。
L: 表示账户被锁定,用户无法登录。
NP: 表示没有密码,用户不能通过密码登录(通常配合其他认证方式使用)。
LK: 密码被锁定,类似于 L,但特指密码本身被锁定,而不是账户。

2.防服务漏洞

(1)更改SSH服务端口

加固要求:更改SSH服务的监听端口为2222。

加固方法:

vi /etc/ssh/sshd_config  //编辑配置文件

取消Port行的注释,将Port的值从22修改为2222,保存退出。

image-20240429202043296

把新的Port口告诉SELinux。命令如下:

semanage por

文章来源: https://www.freebuf.com/articles/system/438726.html
如有侵权请联系:admin#unsafe.sh