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/opasswdchown root:root /etc/security/opasswdchmod 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 zyl2、根据输出结果找到相关的进程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-auth2、在文件中找到如下内容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_bak2、修改策略设置,编辑文件/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-authauth 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.defsLOGIN_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.bakcp /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💖点点关注,收藏不迷路💖 |