基本安全措施
1
.系统账号清理
在
Linux
系统中,除了用户手动创建的各种账号之外,还包括随系统或程序安装过程而生成的其他 大量账号.
常见的非登录用户账号包括
bin
、
daemon
、
adm
、
lp
、
mail
等。为了确保系统安全,这些用户账号的登录 Shell
通常是
/sbin/nologin
,表示禁止终端登录
#
grep "/sbin/nologin$" /etc/passwd
Linux
服务器中长期不用的用户账号,若无法确定是否应该删除,可以暂时将其锁定
usermod -L zhangsan //锁定账号
passwd -S zhangsan//查看账号状态
usermod -U zhangsan //解锁账号
服务器中的用户账号已经固定,不再进行更改,还可以采取锁定账号配置文件的方法。使用 chattr
命令,分别结合
“
+
i”“-i”
选项来锁定、解锁文件
chattr +i /etc/passwd /etc/shadow
//
锁定文件
lsattr /etc/passwd /etc/shadow //查看为锁定的状态
chattr -i /etc/passwd /etc/shadow
//
解锁文件
lsattr /etc/passwd /etc/shadow //查看为解锁的状态
2
.密码安全控制
管理员可以在服务器端限制用户密码的最大有效天数,对于密码已过期的用户,登录时将被要求重新设置密码,否则将拒绝登录。
vi /etc/login.defs //适用于新建的用户
chage -M 30 lisi //适用于已有的
lisi
用户
3
.命令历史、自动注销
Bash
终端环境中,历史命令的记录条数由变量
HISTSIZE
控制,默认为
1000
条。通过修改/etc/profile
文件中的
HISTSIZE
变量值,可以影响系统中的所有用户
vi /etc/profile //适用于新登录用户
export HISTSIZE=200 //适用于当前用户
用户切换与提权
su 命令 —— 切换用户
1.su 命令用法
可以切换为指定的另一个用户,从而具有该用户的所有权限
su - root //查看
用户都允许使用
su
命令,从而有机会反复尝试其他用户(如
root)
的登录密码,这样带来了安全风险
gpasswd -a tsengyia wheel //添加授权用户
tsengyia
grep wheel /etc/group //确认
wheel
组成员
vi /etc/pam.d/su
2. PAM
安全认证
PAM
认证一般遵循的顺序:
Service
(服务)
→PAM
(配置文件)
→pam_*.so
;
PAM
认证首先要确定哪一项服务,然后加载相应的
PAM
的配置文件
(
位于
/etc/pam.d
下
)
,最后调用认证文件
(
位于
/lib/security
下
)
进行安全认证;
用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到
PAM
模块进行
认证。不同的应用程序所对应的
PAM
模块也是不同的
每一行可以区分为三个字段:
认证类型
控制类型
PAM
模块及其参数
PAM
认证类型包括四种:
认证管理(
authentication management
):接受用户名和密码,进而对该用户的密码进
行认证;
帐户管理(
account management
):检查帐户是否被允许登录系统,帐号是否已经过
期,帐号的登录是否有时间段的限制等;
密码管理(
password management
):主要是用来修改用户的密码;
会话管理(
session management
):主要是提供对会话的管理和记账。
控制类型也可以称做
Control Flags
,用于
PAM
验证类型的返回结果。
1.
required
验证失败时仍然继续,但返回
Fail
2.
requisite
验证失败则立即结束整个验证过程,返回
Fail
3.
sufficient
验证成功则立即返回,不再继续,否则忽略结果并继续
4.
optional
不用于验证,只是显示信息(通常用于
session
类型)
sudo 命令 —— 提升执行权限
1.在配置文件/etc/sudoers 中添加授权
授权配置主要包括用户、主机、命令三个部分,即授权哪些人在哪些主机上执行哪些命
令
用户(
user
):直接授权指定的用户名,或采用
“%
组名
”
的形式(授权一个组的所有
用户)。
主机(
MACHINE
):使用此配置文件的主机名称。此部分主要是方便在多个主机
间共用同一份
sudoers
文件,一般设为
localhost
或者实际的主机名即可。
命令(
COMMANDS
):允许授权的用户通过
sudo
方式执行的特权命令,需填写
命令程序的完整路径,多个命令之间以逗号
“,”
进行分隔
2.通过
sudo
执行特权命令
sudo
方式执行特权命令时,只需要将正常的命令行作为sudo 命令的参数即可
/sbin/ifconfig ens33:0 192.168.1.11/24 //查看sudo
的情况
password for jerry: //验证
jerry
的密码
/sbin/ifconfig ens33:0 //查看执行结果
若要查看用户自己获得哪些
sudo
授权,可以执行
“sudo -l”
命令。未授权的用户将会得
到
“may not run sudo”
的提示,已授权的用户则可以看到自己的
sudo
配置。
sudo -l
password for syrianer: //验证
syrianer
用户的密码
开关机安全控制
调整 BIOS 引导设置
1. 将第一优先引导设备(First Boot Device)设为当前系统所在磁盘。
2. 禁止从其他设备(如光盘、U 盘、网络等)引导系统,对应的项设为“Disabled”。
3. 将
BIOS
的安全级别改为
“setup”
,并设置好管理密码,以防止未授权的修改
限制更改 GRUB 引导参数
为
GRUB
菜单设置的密码建议采用
“grub2-mkpasswd-pbkdf2”
命令生成,表现为经过
PBKDF2
算法加密的字符串,安全性更好
grub2-mkpasswd-pbkdf2 //根据提示指定密码
使用
grub2-mkconfig
命令生成新的
grub.cfg 配置文件。
grub2-mkconfig -o /boot/grub2/grub.cfg //生成新的
grub.cfg
文件
终端及登录控制
1. 禁止 root 用户登录
要禁止
root
用户从指定的终端登录,只需从该文件中删除或者注释掉对应的行即可
vi /etc/securetty
2.
禁止普通用户登录
简单地建立
/etc/nologin
文件即可。
login
程序会检查
/etc/nologin
文件是否存在,如果存在,则拒绝普通用户登录系统(root
用户不受限制)。
touch /etc/nologin