概述:
用户账号是计算机使用者的身份凭证或标识,在Linux系统中,提供了多种机制来确保用户账号的正当、安全使用。
Linux用户账号信息存在于/etc/passwd和/etc/shadow目录下。
/etc/passwd/目录:存放账号信息
/etc/shadow/目录:存放账号密码信息
我们可以通过锁定该文件来限制新用户的创建。
常用命令如下:
chattr +i-----------锁定文件
chattr -i------------解锁文件
lsattr-----------查看文件状态
(1)禁止root用户登录
login程序会读取/etc/securetty/文件,以决定root用户可以从哪些终端登录,若要禁止root用户从指定终端登录,只需要从该文件中删除或者注释掉对应的即可,
例如:
(2)禁止普通用户登录
在etc中建立nologin文件即可
[root@localhost ~]# touch /etc/nologin
删除nologin文件或者重启后即恢复正常
[root@localhost ~]# rm -rf /etc/nologin
[root@localhost ~]#
当用户注销时会总动加载配置文件.bash_logout,我们可以在该文件中写入history -c命令让用户注销时自动执行,例如:
[root@localhost ~]# vim .bash_logout
进入/etc/profile配置文件,添加“export TMOUT=注销时间”。
[root@localhost ~]# vim /etc/profile
[root@localhost ~]# source /etc/profile(执行该配置)
[root@localhost ~]# 等待输入超时:自动登出
(1)调整BIOS引导设置
将第一优先引导设备设为当前系统所在磁盘
禁止从其他设备(如光盘,U盘,网络等)引导系统,对应的项设为“disabled”
将BIOS的安全级别改为“setup”,并管理好管理密码,以防止未授权的修改
(2)给修改GRUB菜单添加进入密码
GRUB菜单负责引导分区中的操作系统, 开机在这个界面我们只需要按一下“e”,就可以进入到我们的grub配置菜单, 而且拥有root权限,对服务器安全威胁很大。
为了安全我们可以给GRUB菜单设置一个密码,主要是通过加密算法设置一个密码在头文件然后覆盖原先的grub.cfg配置文件:
实验环境:centos 7
(1)通过加密算法生成一个秘钥。
(2)进入GRUB2的头文件,按G到行尾,将上图的密文复制并加进去。
[root@localhost ~]#vim /etc/grub.d/00_header
(3)覆盖原先GRUB2的配置文件grub.cfg,并重启。
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-db2a8cea43c145b19ed3486d1927c284
Found initrd image: /boot/initramfs-0-rescue-db2a8cea43c145b19ed3486d1927c284.img
done
[root@localhost ~]# init 6
对于未创建的用户:
修改配置文件/etc/login.defs下的PASS_MAX_DAYS设置。
[root@localhost ~]# vim /etc/login.defs
对于已创建的用户可以直接用命令:
[root@localhost ~]# chage -M 30 #用户
对于密码的暴力破解,字典文件的选择很关键,只要字典文件足够完整,破解密码只是时间问题。
我们在网上下了个John the Ripper密码分析工具,以john-1.8.0.tar.gz源代码包
为例:
实验环境centos 7
(1)解压john-1.8.0.tar.gz程序包到dev下的abc文件夹
[root@localhost ~]# mkdir /dev/abc
[root@localhost ~]# tar zxfv /mnt/john-1.8.0.tar.gz -C /dev/abc
[root@localhost ~]# cd /dev/abc
[root@localhost abc]# ls
john-1.8.0
(2)我们进入john-1.8.0的src源码包中发现全是以.c为结尾的c语言文件,所以我们要安装gcc,gcc-c++编译器。
[root@localhost abc]# cd john-1.8.0/
[root@localhost john-1.8.0]# ls
doc README run src
[root@localhost john-1.8.0]# cd src
[root@localhost src]# ls
AFS_fmt.c crc32.c john.h os.h status.c
alpha.h crc32.h list.c params.c status.h
alpha.S DES_bs_b.c list.h params.h symlink.c
batch.c DES_bs.c LM_fmt.c pa-risc.h times.h
batch.h DES_bs.h loader.c path.c trip_fmt.
[root@localhost src]# yum install gcc gcc-c++ -y
(3)安装完成之后我们直接开始编译,在/john-1.8.0/run目录下生成执行脚本
[root@localhost src]# make linux-x86-64
(4)进入/etc/abc/john-1.8.0/run目录,执行john脚本分析passwd和shadow文件下的账号密码信息
su #目标用户
当启用pam认证后,只有在wheel组中的用户可以使用su命令切换
[root@localhost ~]# vim /etc/pam.d/su
[root@localhost ~]# useradd wangwu
[root@localhost ~]# su wangwu
[wangwu@localhost root]$ su root
密码:
147su: 拒绝权限
若想让普通用户wangwu可以使用su命令切换用户,只需要将wangwu加入pam的wheel组即可。
[root@localhost ~]# gpasswd -a wangwu wheel
正在将用户“wangwu”加入到“wheel”组中
[root@localhost ~]# su wangwu
[wangwu@localhost root]$ su root
密码:
[root@localhost ~]#
作用:让普通用户拥有一部分管理权限
常用格式: sudo #执行命令
条件:需要在sudoers配置文件中添加授权
例如:我们让普通用户zhangsan执行挂载命令发现是不允许的
[zhangsan@localhost dev]$ mount /dev/sr0 /mnt
mount: 只有 root 能执行该操作
[zhangsan@localhost dev]$
使用sudo机制执行该命令,发现由于配置文件中没有给zhangsan添加使用mount的权限所以也是不可以的:
[zhangsan@localhost dev]$ sudo mount /dev/sr0 /mnt
[sudo] zhangsan 的密码:
zhangsan 不在 sudoers 文件中。此事将被报告。
[zhangsan@localhost dev]$
使用visudo或者/etc/sudoers 能进入配置界面
记录格式:用户 主机名列表=命令程序列表
用户:授权的用户名,或者用“%组名”的形式授权一个组的所有用户
主机名:使用此配置文件的主机名称
命令:允许被授权的用户使用sudo方式执行特权命令(sudo +所需执行的命令)
我们在配置文件中给zhangsan添加上使用mount的权限:
[root@localhost ~]# visudo
[root@localhost ~]# su zhangsan
[zhangsan@localhost root]$ sudo mount /dev/sr0 /mnt
[sudo] zhangsan 的密码:
mount: /dev/sr0 写保护,将以只读方式挂载
[zhangsan@localhost root]$
查看用户有哪些权限我们可以使用“sudo -l”命令:
[zhangsan@localhost root]$ sudo -l
匹配 %2$s 上 %1$s 的默认条目:
!visiblepw, always_set_home, match_group_by_gid, env_reset,
env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS
LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION
LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME
LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL
LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
用户 zhangsan 可以在 localhost 上运行以下命令:
(root) /bin/mount
小结:Linux服务器以其安全,高效和稳定的特点得到广泛应用,本篇主要是从账号安全,登陆控制和系统引导的角度,简单讲解了Linux的基本安全措施,以及基于Linux环境的用户切换提权,弱口令破解等安全工具,帮助管理员做好安全防护措施。