系统安全及应用

1.账号安全基本措施

1.1系统账号清理

  • 将用户设置为无法登录、

  • 锁定账户

  • 删除账户

  • 锁定账户密码 本质锁定

shell——/sbin/nologin却比较特殊,所谓“无法登陆”指的仅是这个用户无法使用bash或其他shell来登陆系统而已,并不是说这个账号就无法使用系统资源。举例来说,各个系统账号中,打印作业有lp这个账号管理,www服务器有apache这个账号管理,他们都可以进行系统程序的工作,但就是无法登陆主机而已。

1.1.1将用户设置为无法登录

[root@localhost ~]# tail /etc/passwd       
#查看lisi的属性
​
[root@localhost ~]# chsh -s /sbin/nologin lisi     
#修改lisi的shell属性
Changing shell for lisi.
Shell changed.
[root@localhost ~]# tail -1 /etc/passwd             
#查看lisi的属性
lisi:x:1001:1001::/home/lisi:/sbin/nologin
​
​
usermod

1.1.2锁定用户:

[root@localhost ~]# passwd -l zhaosi
锁定用户 zhaosi 的密码 。
passwd: 操作成功
[root@localhost ~]# su zhangsan
[zhangsan@localhost root]$ su zhaosi
密码:
su: 鉴定故障
[root@localhost ~]# passwd -u zhaosi
解锁用户 zhaosi 的密码。
passwd: 操作成功
[root@localhost ~]# passwd -u zhaosi
解锁用户 zhaosi 的密码。
passwd: 操作成功
[root@localhost ~]# su zhangsan
[zhangsan@localhost root]$ su zhaosi
密码:
[zhaosi@localhost root]$ 

1.1.3删除账户

userdel -r  用户名
家目录 
​
家目录   无主文件  前主人的uid

1.1.4锁定配置文件

chattr

-a 让文件或目录仅供附加用途。只能追加

-i 不得任意更动文件或目录。

[root@localhost ~]# chattr +i /etc/passwd /etc/shadow
#加i
[root@localhost ~]# useradd liqi
useradd:无法打开 /etc/passwd
[root@localhost ~]# lsattr /etc/passwd /etc/shadow
----i----------- /etc/passwd
----i----------- /etc/shadow
​
chattr -i /etc/passwd /etc/shadow

1.2密码安全控制

1.2.1设置密码规则

对于新建用户

可以修改 /etc/login.defs 文件里的内容来设置密码规则

[root@localhost ~]# vim /etc/login.defs              
#适用于修改后生效后修改的用户
     --------------------------------
     25 PASS_MAX_DAYS   99999
     26 PASS_MIN_DAYS   0
     27 PASS_MIN_LEN    5
     28 PASS_WARN_AGE   7
[root@localhost ~]# tail -5 /etc/shadow            
#修改密码有效期限

对于已有用户可以使用chage命令

chage

chage [选项] 用户名
-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。
-w:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
​
​
[root@localhost ~]# chage -d  0 zhangsan
#强制张三下一次登录一定修改密码(密码符合复杂性要求)
​
​
[root@localhost ~]#chage -M 30 lisi
#设置密码有效期为30天
[root@localhost ~]#cat /etc/shadow|tail -1
lisi:!!:19055:0:30:7:::
第5字段
​
man 5 shadow
​

1.3 命令历史

Shell 环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在 的风险。只要获得用户的命令历史文件,该用户的命令操作过程将会一览无余,如果曾经在 命令行输入明文的密码,则无意之中服务器的安全壁垒又多了一个缺口。 Bash 终端环境中,历史命令的记录条数由变量 HISTSIZE 控制,默认为 1000 条。通 过修改/etc/profile 文件中的 HISTSIZE 变量值,可以影响系统中的所有用户。例如,可以设 置最多只记录 200 条历史命令。

#可以使用以下命令临时清除历史命令
history -c 
clear

[root@localhost ~]#vim /etc/profile
.............................
export HISTSIZE=200
​
​###退出清空密码#############
[root@localhost ~]#vim .bash_logout 
#退出后清除
# ~/.bash_logout
echo " " >~/.bash_history
​
​#一定要加空格
[root@localhost ~]#vim .bashrc
#开机后清除
echo " " >~/.bash_history
​
#设置超时时间
[root@localhost ~]# vi /etc/profile
.................................
export  TMOUT=60s
​
​

1.4切换用户

  • su命令即 switch user,命令可以切换用户身份,并且以指定用户的身份执行命令

su [options...] [-] [user [args...]]

切换用户的方式:

su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换

su - UserName:登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换

说明:root su至其他用户无须密码;非root用户切换时需要密码

注意:su 切换新用户后,使用 exit 退回至旧的用户身份,而不要再用 su 切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱。

su 与 su-

即有 - 选项,切换用户身份更彻底;反之,只切换了一部分,这会导致某些命令运行出现问题或错误(例如无法使用 service 命令)。

[zhangsan@localhost ~]$ pwd
/home/zhangsan
[zhangsan@localhost ~]$ su 
密码:
[root@localhost zhangsan]# pwd
/home/zhangsan
[zhangsan@localhost ~]$ su -
密码:
上一次登录:二 7月 13 10:24:14 CST 2021pts/1 上
[root@localhost ~]# pwd
/root
  • 限制使用su命令的用户

[root@localhost ~]# gpasswd -a lisi wheel
#将用户加入 wheel组 root
​
[root@localhost ~]#vim /etc/pam.d/su
#开启服务
#auth           required        pam_wheel.so use_uid
​
vim /etc/pam.d/su
2 # auth sufficient pam_ rootok.so
6 #auth required pam_ wheel.so use_ _uid
​
a)以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的。
b)两行都注释也是运行所有用户都能使用su命令,但root'下使用su切换到其他普通用户需要输入密码;如果第一行不注释,则root使用su切换普通用户就不需要输入密码(pam rootok. so模块的主要作用是使uid为0的用户,即root用户能够直接通过认证而不用输入密码。)
c)如果开启第二行,表示只有root用户和wheel组内的用户才可以使用su命令
d)如果注释第一行,开启第二行,表示只有whee1组内的用户才能使用su命令,root用户也被禁用su命令。
​

1.5sudo

superuser do

sudo 即superuser do,允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性在最早之前,一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须要先告知超级用户的密码。sudo于1980年前后推出,sudo使一般用户不需要知道超级用户的密码即可获得权限。首先超级用户将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常是/etc/sudoers),即完成对该用户的授权(此时该用户称为“sudoer”);在一般用户需要取得特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该用户自己的密码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行。之后的一段时间内(默认为5分钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。由于不需要超级用户的密码,部分Unix系统甚至利用sudo使一般用户取代超级用户作为管理帐号,例如Ubuntu、Mac OS X等。

sudo特性:

  • sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系管理员

  • sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器

  • sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票

  • sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440

[root@localhost ~]#vim /etc/sudoers
[root@localhost ~]#visudo
#语法检查
​
visudo -c
#检查语法

配置文件格式说明:/etc/sudoers, /etc/sudoers.d/

配置文件中支持使用通配符 glob

/bin/mount     /dev/cdrom   /mnt
/usr/bin/mount /dev/cdrom  /mnt/
​
​
​
#用户    登入主机    =    (代表用户)     命令
#user   host       =    (runas)       command
root     ALL=      ALL(绝对路径) 
​
user: 运行命令者的身份
host: 通过哪些主机 多个 192.168.91.100 - 110
(runas):以哪个用户的身份
command: 运行哪些命令
​
User和runas: 
 username(用户名)
 #uid(id号)
 %group_name(组名)
 %#gid(组id)
 user_alias|runas_alias(别名)   MYUSER=zhangsan,lisi
host:
 ip或hostname(IP地址或主机名)
 host_alias(别名)  localhost 
command:
 command name  (命令)
 directory     (文件夹里的命令)
 sudoedit      (可以编辑sudoers这个文件,变相变成管理员)
 Cmnd_Alias    (命令别名)
​
​
​
​

​
范例:
root ALL=(ALL) ALL
## Allow root to run any commands anywhere 
root     ALL=(ALL)      ALL 
lisi     ALL=(root)     /usr/bin/mount /dev/cdrom /mnt/
​

​
#可以跟多个命令
lisi     ALL=(root)     /usr/bin/mount /dev/cdrom /mnt/,/usr/bin/mount  /mnt/
​
#也可以对组进行操作
%在前表示组
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL
​
[root@localhost ~]#gpasswd -a liwu wheel
正在将用户“liwu”加入到“wheel”组中
wheel组表示管理员组是比较特殊的一个组,在wheel组中的成员可以使用任何命令
​
​
#思考这个设置有意义么?
root    ALL=(ALL)       ALL
​
[root@localhost ~]#vim /etc/passwd
#修改passwd文件中root的uid
​
[root@localhost ~]$sudo -ulisi cat /etc/shadow
#-u指定用户的意思
​
####密码问题
​
[root@localhost ~]#sudo -V
#可以查看相关配置信息
​
#67  Defaults   env_reset,timestamp_timeout=2
​
#启用sudo操作日志
visudo
Defaults logfile = "/var/log/sudo"

1.6别名

sudo别名有四种类型:

  • User_Alias(用户)

  • Runas_Alias(代表用户)

  • Host_Alias(登录主机)

  • Cmnd_Alias(命令)

###别名
Host_Alias MYHOSTS = kgc,localhost
User_Alias MYUSERS = zhangsan,wangwu,lisi
Cmnd_Alias MYCMNDS = /sbin/*,!/sbin/reboot,!/sbin/poweroff,!/sbin/init,!/usr/bin/rm
MYUSERS MYHOSTS=NOPASSWD:MYCMNDS
root  ALL=(ALL)  ALL
用户   主机名ip=    命令
​

1.6.2子目录

[root@localhost sudoers.d]#vim /etc/sudoers.d/test
lisi ALL= sudoedit
#lisi 变相管理员 
lisi  vim sudoers
[root@localhost sudoers.d]#chmod 440 test 
#设置权限,加固安全
​
​
[root@localhost ~]#su lisi
[lisi@localhost root]$ sudoedit /etc/sudoers
#李四使用sudoedit  可以修改sudo配置文件
​
​
​
通配符
? 任意单一字符
* 匹配任意长度字符
[wxc] 匹配其中一个字符
[!wxc] 除了这三个字符的其它字符
\x 转义 
 [[alpha]] 字母  
 
 
 
​
[root@localhost sudoers.d]#vim /etc/sudoers.d/test
liliu ALL= /bin/cat /var/log/vmware*
​
​

1.7 grub 加密

/etc/grub.d目录

定义每个菜单项的所有脚本都存放在/etc/grub.d目录中,这些脚本的名称必须有两位的数字前缀,其目的是构建GRUB 2菜单时定义脚本的执行顺序以及相应菜单项的顺序,比如00_header文件首先被读取。

文件描述
00_header设置grub默认参数
10_linux系统中存在多个linux版本
20_ppc_terminfo设置tty控制台
30_os_prober设置其他分区中的系统(硬盘中有多个操作系统时设置)
40_custom和41_custom用户自定义的配置

设置GRUB 2加密

由于GRUB 2负责引导linux系统,其作为系统中的第一道屏障的安全性非常重要,对GRUB 2进行加密可以实现安全性。

在默认情况下,GRUB 2对所有可以在物理上进入控制台的人都是可访问的。任何人都可以选择并编辑任意菜单项,并且可以直接访问GRUB命令行。要启用认真支持,必须将环境变量超级用户设置为一组用户名(可以使用空格、逗号、分号作为分隔符)这样就只允许超级用户使用GRUB命令行、编辑菜单项以及执行任意菜单项。

GRUB 2密码支持以下两种格式

  • 明文密码:密码数据没有经过加密,安全性差

  • PBKDF2加密密码:密码经过PBKDF2哈希算法进行加密,在文件中存储的是加密后的密码数据,安全性较高。

先要使用grub2-mkpasswd-pbkdf2命令生成PBKDF2加密口令,然后在/etc/grub.d/00_header文件中添加超级用户和PBKDF2加密口令,最后使用grub2-mkconfig命令生成grub配置文件。

在/etc/grub.d/00_header文件中添加用户和PBKDF2加密口令的格式如下。

[root@kgc ~]# grub2-mkpasswd-pbkdf2      #根据提示设置GRUB菜单的密码
输入口令:
Reenter password:  123456
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.E96097D1B1E470345D9FB62759335832B4A0F39CD4C9A57B502BD59CF1B8C393EEA37847984E242AAD4BFBB72E4BDC2196E6A7495CE7C86BF3D2498A34CAC2B7.B2EB99ED40267AE9496357B78C0DC04CE79957980A4A3FFA577B7502D70A5412D2EAD5CE4DAAC0FE068621CB29B76E44A7645EDCC7784FF20E113AF0B95E3467i
​
[root@kgc ~]# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
[root@kgc ~]# cp /etc/grub.d/00_header /etc/grub.d/00_header.bak
#备份文件  
[root@kgc ~]# vim /etc/grub.d/00_header
#最后
cat << EOF 
set superusers="root"  
#设置登录用户
​
password_pbkdf2 root 
#设置密码
grub.pbkdf2.sha512.10000.E96097D1B1E470345D9FB62759335832B4A0F39CD4C9A57B502BD59CF1B8C393EEA37847984E242AAD4BFBB72E4BDC2196E6A7495CE7C86BF3D2498A34CAC2B7.B2EB99ED40267AE9496357B78C0DC04CE79957980A4A3FFA577B7502D70A5412D2EAD5CE4DAAC0FE068621CB29B76E44A7645EDCC7784FF20E113AF0B95E3467i
EOF
使用 grub2-mkconfig 命令生成新的 grub.cfg 配置文件。
[root@kgc ~]# grub2-mkconfig -o /boot/grub2/grub.cfg //生成新的 grub.cfg 文件
​
重启系统进入GRUB菜单时,按e键将需要输入账号密码才能修改引导参数。
​
cat << EOF
set superusers="root"
password_pbkdf2 root  grub.pbkdf2.sha512.10000.4F3CD9383616C3AAFB1E98A289CB707A6FEEDAE7BEFB10A59642FE641C8F13AD9A27EAD43DEB07D9F4228149C716FA40C8C04E13E98FFAC45EF7AA2AD76C96B9.49CEC46B324DC9A94D0B461C711569ADB79213708929B1891232DB5FE31EC6F5A0A4E4D0A4AA0EAA64E38A6876EEB3B5EBF8991D0FB04537E1F39D1AA40D1AD5
EOF
​
​cat << EOF
set superusers="用户" 
password_pbkdf2 用户  加密密码
EOF
​
​[root@localhost ~]#grub2-setpassword
#直接设置密码
​

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值