系统安全及应用

发布于:2023-01-08 ⋅ 阅读:(683) ⋅ 点赞:(0)

一.账号安全控制:

一.系统账号清理

   1.将非登陆用户的shell设置为 /sbin/nologin

[root@localhost ~]# usermod -s /sbin/nologin lisi
[root@localhost ~]# cat /etc/passwd   
lisi:x:1002:1002::/home/lisi:/sbin/nologin

     锁定长期不使用的账户:

     usermod -L  用户名       passwd -l 用户名      passwd -S 用户名(查看锁定状态)

   2. 删除无用的账号:userdel  [-r] 用户名

   3.锁定帐号文件passwd、shadow

    锁定并查看状态

[root@localhost ~]# chattr +i /etc/passwd /etc/shadow //锁定passwd shadow 文件
[root@localhost ~]# lsattr /etc/passwd /etc/shadow   //查看文件状态
----i----------- /etc/passwd     //-----i---- 为锁定状态
----i----------- /etc/shadow     //-----i---- 为锁定状态
[root@localhost ~]# passwd zhangsan   //更改张三用户密码
更改用户 zhangsan 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd: 鉴定令牌操作错误          //无法更改

解锁文件

[root@localhost ~]# chattr -i /etc/passwd /etc/shadow  //解锁pssswd shadow 文件
[root@localhost ~]# lsattr /etc/passwd /etc/shadow
---------------- /etc/passwd
---------------- /etc/shadow

2.密码安全控制

2.1设置密码有效期

方法一:修改密码配置文件适用于新建用户
vim /etc/login.defs     
……
PASS_MAX_DAYS 30
方法二:适用于已有用户
[root@localhost ~]# chage -M 30 用户
[root@localhost ~]# cat /etc/shadow | grep 用户

方法一:

 

方法二:

 2.2要求用户下次登录时修改密码

chage -d 0 lisi                    强制在下次登陆时更改密码               
cat /etc/shadow | grep 用户        shadow文件中的第三个字段被修改为0

3.命令历史限制 

  • 减少记录的命令条数

[root@localhost ~]# vim /etc/profile           #编辑profile文件    
 export HISTSIZE=20                            #保存20条历史记录
[root@localhost ~]# source /etc/profile        #执行一次配置文件,让配置文件生效

 

  • 登录时自动清空命令历史

  vi ~/.bashrc
 echo " " > ~/.bash_history    

重启后清空历史命令

 

 4.终端自动注销

  • 闲置600秒后自动注销

vim /etc/profile                         #编辑profile文件
export TMOUT=600                #设定时间600秒
source /etc/profile                   #调用配置文件

二、su命令

1.使用su命令切换用户

用途及用法

  • 用途:Substitute User,切换用户
  • 格式 su -目标用户

密码验证

  • root→任意用户,不验证密码
  • 普通用户→其他用户,验证目标用户的密码

[root@localhost ~]$ su - root         带-选项表示将使用目标用户的登陆Shell环境
口令:
[root@localhost ~]# whoami
 root
 

2.禁止用户使用su命令

1.将允许使用su命令的用户加入wheel组

gpasswd -a 用户 wheel    #添加用户到wheel组中
grep wheel /etc/group    #确定wheel组成员

2.启用pam_wheel认证模块

在/etc/pam.d/su文件里设置禁止用户使用su命令

在/etc/pam.d/su文件里设置禁止用户使用su命令
vim /etc/pam.d/su                            编辑/etc/pam.d/su文件
2  // auth sufficient pam_rootok.so  

...      
6  // #auth required pam_wheel.so use_uid          #去掉此行开头的注释
...

【1】以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的。

【2】两行都注释也是允许所有用户都能使用su命令,但root下使用su切换到其他普通用户需要输入密码;
如果第一行不注释,则root使用su切换普通用户就不需要输入密码
(pam_rootok.so模块的主要作用是使uid为0的用户,即 root用户能够直接通过认证而不用输入密码)

【3】如果开启第二行,表示只有root用户和wheel组内的用户才可以使用su命令。

【4】如果注释第一行,开启第二行,表示只有wheel组内的用户才能使用su命令,root用户也被禁用su命令。
 

3.查看su操作记录

  • 安全日志文件:/var/log/secure

 cat /var/log/secure      查看su命令操作记录

三、Linux中的PAM安全认证

PAM认证模块,叫做可插拔式的认证模块。一项重要的功能就是为了加强su命令的使用控制,可以借助于PAM认证模块,只允许极个别用户使用su命令进行切换。PAM提供了对所有服务进行认证的中央机制,适用于login,远程登录(telnet,rlogin,fsh,ftp),su等应用程序中,系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略。

  PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证。用户访问服务器的时候,服务器某一个服务程序把用户的请求发送到PAM模块进行认证,不用的应用程序对应的PAM模块也是不同的。

如果想查看某个程序是否支持 PAM 认证,可以用 ls 命令进行查看/etc/pam.d/。
示例:查看su是否支持PAM模块认证
ls /etc/pam.d | grep su

下面简单的介绍四种常见认证类型:

  (1)认证管理(authentication management)接受用户名和密码,进而对该用户的密码进行认证

  (2)账户管理(account management)检查账户是否被允许登录系统,账号是否已经过期,账号的登录是否有时间段的限制等

  (3)密码管理(password management)主要是用来修改用户的密码

  (4)会话管理(session management)主要是提供对会话的管理和记账(accounting)

那么控制类型也可以称做Control Flags,用于PAM验证类型的返回结果,具体有以下四种:

  (1)required验证失败时仍然继续验证,但返回Fail

  (2)requisite验证失败则立即结束整个验证过程,返回Fail

  (3)sufficient验证成功则立即返回,不再继续,否则忽略结果并继续

  (4)optional不用于验证,只是显示信息(通常用于session类型)

PAM认证的构成

  • 每一行都是独立的认证过程
  • 每一行可以区分为三个字段:认证类型、控制类型、PAM模块、PAM模块参数

PAM安全认证流程

 四、使用sudo机制提升权限

  • 用途:以其他用户身份(如root)执行授权的命令
  • 用法:sudo 授权命令

1.配置sudo授权

visudo
或者
vim /etc/sudoers
注意:保存退出时必须执行:wq!才能保存

2.授权格式

语法格式:

用户主机名=命令程序列表
用户主机名=(用户)命令程序列表
用户:直接授权指定的用户名,或采用“%组名"的形式(授权一个组的所有用户)
主机名:使用此规则的主机名。没配置过主机名时可用localhost,有配过主机名则用实际的主机名,ALL则代表所有主机
(用户): 用户能够以何种身份来执行命令。此项可 省略,缺省时以root用户的身份来运行命令
命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号“,"进行分隔。ALL则代表系统所有命令

 我们给lisi提升权限

[root@localhost ~]# vim /etc/sudoers

 3.查看sudo操作记录

  • 需启用 Defaults logfile 配置
  • 默认日志文件:/var/log/sudo

启用sudo操作日志

visudo                             
Defaults logfile = /var/log/sudo

 这里我们进/var/log目录下查看发现没有sudo日志文件,因为这边没有执行sudo命令没有产生日志文件

 

 

4.别名的创建 

用户别名 User_Alias
主机别名 Host_Alias
命令别名 Cmnd_Alias

Jerry localhost=/sbin/*,!/sbin/reboot,!/sbin/poweroff
通配符“*”表示所有,取反符号“!”表示排除

%whell ALL=NOPASSWD:ALL
表示wheel组成员无需验证密码即可使用sudo执行任何命令

使用关键字 User_Alias    Host_Alias     Cmnd_Alias 来进行设置别名(别名必须为大写)
User_Alias USERS=Tom,Jerry,Mike             用户的别名users包括:Tom,Jerry,Mike
Host_Alias HOSTS=localhost,bogon   主机别名hosts包括:localhost,bogon
Cmnd_Alias CMNDS=/sbin/ifconfig,/usr/sbin/useradd,/usr/sbin/userdel
USERS HOSTS=CMNDS                   用户组   主机组  =  命令程序列表

五、开关机安全控制


1.调整BIOS引导设置
将第一引导设备设为当前系统所在硬盘
禁止从其他设备(光盘、U盘、网络)引导系统
将安全级别设为setup,并设置管理员密码
2.GRUB限制
使用grub2-mkpasswd-pbkdf2生成密钥
修改/etc/grub.d/00_header文件,添加密码记录
生成新的grub.cfg配置文件
2.1 限制修改GRUB引导参数
通常情况下在系统开机进入GRUB 菜单时,按 e 键可以查看并修改GRUB 引导参数,这对服务器是一个极大的威胁。可以为 GRUB 菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。

grub2-mkpasswd-pbkdf2                     #根据提示设置GRUB 菜单的密码
PBKDF2 hash of your password is grub.pbkdf2……         #省略部分内容为经过加密生成的密码字符串

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
cp /etc/grub.d/00_header /etc/grub.d/00_header.bak

vim /etc/grub.d/00_header
cat << EOF
set superusers="root"                    #设置用户名为root
password_pbkdf2 root grub.pbkdf2……        #设置密码,省略部分内容为经过加密生成的密码字符串
EOF
grub2-mkconfig -o /boot/grub2/grub.cfg    #生成新的 grub.cfg 文件
 

六、终端登录安全控制

1.限制root只在安全终端登录

  • 安全终端配置:/etc/securetty

[root@localhost ~]# vim /etc/securetty
#tty5        #禁止root用户从终端tty5,tty6登录
#tty6

2.禁止普通用户登录

  • 建立/etc/nologin文件
  • 删除nologin文件或重启后即恢复正常

touch /etc/nologin            #禁止普通用户登录
rm -rf /etc/nologin            #取消登录限制

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到