admin管理员组

文章数量:1530517

Linux系统加固:如何有效管理系统账号

    • 1.1 口令重复次数限制
    • 1.2 避免系统存在uid相同的账号
    • 1.3 空密码的帐户
    • 1.4 口令复杂度
    • 1.5 口令生存期
    • 1.6 登录失败次数锁定策略


💖The Begin💖点点关注,收藏不迷路💖

在Linux系统中,系统账号的安全性至关重要。恶意用户或黑客可能利用弱密码、未使用的账号或其他漏洞来入侵系统。

因此,加固系统账号是保护系统安全的重要一环。本文将介绍一些有效的方法来管理和加固Linux系统账号,以提高系统的安全性。

1.1 口令重复次数限制

口令重复次数限制是一种安全策略,用于限制用户在一定时间内重复使用相同的密码。这个策略的目的是防止用户频繁地在短时间内更改密码,从而增加系统的安全性。通过限制口令重复次数,可以减少密码被恶意破解或盗用的风险。

在实际应用中,口令重复次数限制通常会结合密码历史记录功能一起使用。当用户更改密码时,系统会检查新密码是否与之前使用过的密码相同,如果相同则不允许使用。同时,系统还会记录用户的密码历史,以便在限制口令重复次数时进行比对。

检查点:

检查是否设置口令重复次数限制。

加固步骤:

1、执行备份

cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth.bak

2、创建文件/etc/security/opasswd用于存储旧密码,并设置权限

 touch /etc/security/opasswd
 chown root:root /etc/security/opasswd
 chmod 600 /etc/security/opasswd

3、修改策略设置

 vi /etc/pam.d/system-auth

建立/etc/security/opasswd后,即可在配置文件中的pam_unix模块后面添加参数remember=N来开始记录旧密码。这个参数N的作用是指定系统要记住的旧密码数量,N代表要记住的旧密码数量。

查看配置文件/etc/pam.d/system-auth ,查看类似password sufficient pam_unix.so所在行是否存在remember=5,如果没有则新增,例如:

password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=5

检查加固结果:

将系统认证配置文件system-auth中的包含"password"关键字的行,使用grep命令筛选出包含"password"关键字的行并输出。

if ([ -f /etc/redhat-release ] && [ -f /etc/pam.d/system-auth ]);
then FILE=/etc/pam.d/system-auth
cat $FILE |sed '/^#/d'|sed '/^$/d'|grep password
fi

1.2 避免系统存在uid相同的账号

检查点:

查看文件/etc/passwd,检查是否存在uid相同的账号。

加固步骤:

1、检查系统中的UID情况

cat /etc/passwd | cut -d: -f1,3

这个命令的含义是:

cat /etc/passwd:显示/etc/passwd文件的内容,该文件包含了系统中所有用户的信息。

cut -d: -f1,3:使用冒号作为分隔符,提取每行中的第1列(用户名)和第3列(UID)

这个命令会输出系统中所有用户的用户名和对应的UID。

执行该命令后,可以看到类似以下的输出:

root:0
bin:1
daemon:2
adm:3
lp:4
sync:5
shutdown:6
halt:7
mail:8
operator:11
games:12
ftp:14
nobody:99
systemd-network:192
dbus:81
polkitd:999
sshd:74
postfix:89
zyl:1000

2、检查是否存在相同UID的账号

for venus_test in `cat /etc/passwd|awk -F: '{print $3}'|uniq -d`
do
for venus_test1 in `cat /etc/passwd|grep "^\s*[^:]*\:[^:]*\:$venus_test"|awk -F: '{print $1}'`
do
echo "The same uuid account:"$venus_test1;
done
done

或者使用:

ut -d: -f3 /etc/passwd | sort | uniq -d

这个命令的含义是:

cut -d: -f3 /etc/passwd:使用冒号作为分隔符,提取/etc/passwd文件中每行的第3列(UID)。

sort:对提取出来的UID进行排序。

uniq -d:查找重复的行(即相同的UID),并只显示重复的行。

如果输出了重复的UID,则表示系统中存在相同UID的账号。

3、处理相同UID的账号

如果发现系统中存在相同UID的账号,需要根据实际情况进行处理。一般情况下,可以通过修改账号的UID或者删除重复的账号来解决这个问题。

1、修改账号的UID可以使用usermod命令,例如:

usermod -u <new_uid> <username>

2、删除重复的账号可以使用userdel命令,例如:

userdel <username>

3、其他命令:
1、#useradd username    #创建账号
2、#userdel username     #删除账号
3、#passwd username    #设置密码修改权限

这里修改上面输出的ftp用户(ftp:14)为例:

usermod -u 15 ftp

##检查修改结果
cat /etc/passwd | cut -d: -f1,3

如果当前修改用户有进程占用的话(如zyl用户),会有如下提示:

usermod: user zyl is currently used by process 1562

这个错误提示表明在尝试修改用户的UID时,系统发现该用户当前正在被一个进程(PID为1562)使用,因此无法修改。这种情况下,需要先停止使用该用户的进程,然后再尝试修改用户的UID。

查找并停止使用该用户的进程:

1、使用以下命令查找使用用户"zyl"的进程:
ps -u zyl

2、根据输出结果找到相关的进程ID(PID),然后使用kill命令停止这些进程:
kill -9 <PID>

1.3 空密码的帐户

检查点:

系统中口令为空的账号个数为0则合规,否则不合规。

执行以下命令查看系统中是否存在空口令账号:

awk -F: '( $2 == "" ) { print $1 }' /etc/shadow

如果执行该命令后有输出,表示系统中存在口令为空的账号。如果输出为空,则表示系统中不存在口令为空的账号。

加固步骤:

1、执行备份

cp -p /etc/passwd /etc/passwd_bak
cp -p /etc/shadow /etc/shadow_bak

2、为口令为空的帐户设置满足密码复杂度的密码

passwd username

1.4 口令复杂度

查看配置文件/etc/pam.d/system-auth,是否存在如下配置:

 password requisite  pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8

设置了口令复杂度则合规,否则不合规。这个配置指定了使用pam_cracklib.so模块来实现口令复杂度要求。

下面是各个参数的含义:

try_first_pass:如果前一个认证模块已经成功验证了用户的口令,那么尝试使用用户提供的口令。

retry=3:在用户输入错误口令时,允许重试的次数为3次。

dcredit=-1:至少包含一个数字(digit)。

lcredit=-1:至少包含一个小写字母(lowercase)。

ucredit=-1:至少包含一个大写字母(uppercase)。

ocredit=-1:至少包含一个特殊字符(other)。

minlen=8:口令最小长度为8个字符。

根据这个配置,用户在设置口令时必须满足以下要求:

1、口令长度至少为8个字符。

2、必须包含至少一个数字、一个小写字母、一个大写字母和一个特殊字符。

加固步骤:

1、编辑配置文件/etc/pam.d/system-auth,
vi /etc/pam.d/system-auth

2、在文件中找到如下内容password requisite  pam_cracklib.so,在其内容后面追加,例如:
password requisite  pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8    
#至少包含一个数字、一个小写字母、一个大写字母、一个特殊字符、且密码长度>=8

这样的口令复杂度设置可以增强系统的安全性,防止用户设置过于简单的口令。

1.5 口令生存期

口令生存期是指用户在一定时间内必须更改其口令的频率。这有助于增强系统的安全性,因为定期更改口令可以减少口令泄露和被猜测的风险。

在Linux系统中,口令生存期通常由PAM(Pluggable Authentication Modules)模块来管理。可以在/etc/login.defs文件中查看口令生存期的相关设置。

PASS_MAX_DAYS不大于180天,PASS_MIN_DAYS至少为1天,PASS_WARN_AGE不小于28天则合规,否则不合规

加固步骤:

1、执行备份
 cp -p /etc/login.defs /etc/login.defs_bak

2、修改策略设置,编辑文件/etc/login.defs,在文件中加入如下内容(如果存在则修改,不存在则添加)
PASS_MAX_DAY          180
PASS_MIN_DAYS	       1
PASS_WARN_AGE         28

下面是各个参数的含义:

PASS_MAXDAYS:指定口令的最大有效天数,超过这个天数后用户必须更改口令。

PASS_MIN_DAYS:指定用户更改口令之间的最小天数间隔。

PASS_WARN_AGE:在口令过期前多少天提醒用户更改口令。

加固结果检查:

cat /etc/login.defs |grep -v "^[[:space:]]*#"|grep -E '^\s*PASS_MAX_DAYS|^\s*PASS_MIN_DAYS|^\s*PASS_WARN_AGE'

1.6 登录失败次数锁定策略

检测方法

1、查看/etc/pam.d/system-auth文件是否存在类似如下配置:

cat /etc/pam.d/system-auth

auth        required      pam_faillock.so preauth audit deny=5 even_deny_root unlock_time=60

2、查看/etc/login.defs文件,检查LOGIN_RETRIES和LOGIN_TIMEOUT配置:

cat /etc/login.defs

LOGIN_RETRIES  5
LOGIN_TIMEOUT 60

判定依据:
1、/etc/pam.d/system-auth文件配置:deny=5
2、/etc/pam.d/system-auth文件配置:unlock_time=60
3、/etc/login.defs文件配置:LOGIN_RETRIES 5
4、/etc/login.defs文件配置:LOGIN_TIMEOUT 60

条件1和条件2同时满足或条件3和条件4同时满足则合规;否则不合规。

加固步骤:

1、备份文件

cp /etc/login.defs /etc/login.defs.bak

cp /etc/pam.d/system-auth /etc/pam.d/system-auth_bak

2、编辑 /etc/login.defs 文件,

vi /etc/login.defs  

## 添加以下类似配置:

LOGIN_RETRIES  5
LOGIN_TIMEOUT 60

或者:

vi /etc/pam.d/system-auth 添加以下类似配置:

auth        required      pam_faillock.so preauth audit deny=5 even_deny_root unlock_time=60


💖The End💖点点关注,收藏不迷路💖

本文标签: 管理系统账号系统Linux