Linux系统管理:账户安全控制及应用实验

文章目录

        • 前言:
          • 一、 系统账号清理
          • 二、 密码安全控制
          • 三、 历史命令与终端自动注销
            • 3.1 历史命令限制:
            • 3.2 终端自动注销设置(闲置时)
          • 四、 账户安全切换
          • 五、使用sudo机制提升权限
          • 六、 开关机安全控制
          • 七、终端登录安全控制
            • 7.1 限制root只在安全终端登录
            • 7.2 禁止普通用户登录
          • 八、NMAP扫描
  • 总结:

前言:

用户账号是计算机使用者的身份标识,每一个要访问系统资源的人,必须凭借其用户

一、 系统账号清理

将非登录用户的Shell设为/sbin/nologin(不运行登录终端)

锁定长期不使用的账号

删除无用的账号

锁定账号文件passwd、shadow

此处我们就锁定账号文件进行讨论:

首先我们创建wangwu用户并设置密码

[root@localhost ~]# useradd wangwu 
[root@localhost ~]# passwd wangwu
更改用户 wangwu 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# tail -2 /etc/passwd
dings02:x:1000:1000:dings02:/home/dings02:/bin/bash
wangwu:x:1001:1001::/home/wangwu:/bin/bash

查看文件属性状态:

[root@localhost ~]# lsattr /etc/passwd /etc/shadow
---------------- /etc/passwd
---------------- /etc/shadow

查看到etc/passwd和/etc/shadow这两个文件的属性状态为未锁定

此时我们进行锁定:

[root@localhost ~]# chattr +i /etc/passwd /etc/shadow  (锁定etc/passwd和etc/shadow文件)
[root@localhost ~]# lsattr /etc/passwd /etc/shadow
----i----------- /etc/passwd    (被锁定)
----i----------- /etc/shadow    (被锁定)
[root@localhost ~]# useradd lisi  (尝试创建用户)
useradd:无法打开 /etc/passwd    (无法加载文件,创建失败)

可见通过chattr +i可以锁定文件,同时解锁命令为chattr -i ,此时我们可以创建lisi用户。示例:

[root@localhost ~]# chattr -i /etc/passwd /etc/shadow
[root@localhost ~]# lsattr /etc/passwd /etc/shadow
---------------- /etc/passwd
---------------- /etc/shadow
[root@localhost ~]# useradd lisi
[root@localhost ~]# ls /home
dings02  lisi  

我们同时可以使用“chattr +i 文件”来锁定,防止关键文件被修改。

示例:

[root@localhost ~]# chattr +i /etc/passwd
[root@localhost ~]# lsattr /etc/passwd
----i----------- /etc/passwd
[root@localhost ~]# mv /etc/passwd /home
mv: 无法删除"/etc/passwd": 不允许的操作
二、 密码安全控制

密码安全控制主要从以下两个方面进行:

设置密码有效期

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

查看账户密码文件:

更改密码属性文件,配置文件位置:etc/login.defs。进入编辑,示例:

[root@localhost ~]# vim /etc/login.defs

进入编辑模式,“ESC"---->”shift+:“进入末行模式,输入/99999,查找到PASS_MAX_DAYS(修改更改密码最大周期)的位置。然后改为30(密码更改周期为30天),最后wq保存退出,如图:
Linux系统管理:账户安全控制及应用实验_第1张图片
此设置针对创建新用户,我们新建一个“zhaoliu”用户,然后查看密码文件 vim /etc/shadow,如图可见新用户密码周期属性更改成功:
Linux系统管理:账户安全控制及应用实验_第2张图片

针对已有用户的密码属性更改的方法如下:

命令:chage -M 30 wangwu,示例:
在这里插入图片描述
还有一种设置,指定用户在下一次登录时强制其进行重新设置密码,方法如下:

命令:chage -d 0 wangwu,示例:

[root@localhost ~]# chage -d 0 wangwu

用户wangwu登录时如下:
Linux系统管理:账户安全控制及应用实验_第3张图片
输入完成后:
Linux系统管理:账户安全控制及应用实验_第4张图片

三、 历史命令与终端自动注销

历史命令限制方式:

减少历史记录的命令条数

注销时自动清空命令历史

终端自动注销:

闲置xxx秒后自动注销

3.1 历史命令限制:

想要减少历史记录的命令条数,我们可以先进入/etc/profile环境变量配置文件中进行设置,保存退出后将其设置为生效,命令为:source /etc/profile,或者直接重启。示例:

[root@localhost ~]# vim /etc/profile
[root@localhost ~]# source /etc/profile   (使更改的配置文件生效)
[root@localhost ~]# history  (历史命令只保留了20条)
   10  cat /john
   11  cd /opt/john
   12  ls
   13  vim /etc/login.defs
   14  useradd lisi
   15  ls /home
   16  tail /etc/shadow
   17  useradd zhaoliu
   18  passwd zhaoliu 
   19  tail -3 /etc/shadow
   20  chage -M 30 zhaoliu
   21  tail -3 /etc/shadow
   22  chage -M 30 wangwu
   23  tail -3 /etc/shadow
   24  chage -d 0 wangwu
   25  echo "123123" | passwd --stdin wangwu
   26  vim etc/profile
   27  vim /etc/profile
   28  source /etc/profile
   29  history
[root@localhost ~]# 

Linux系统管理:账户安全控制及应用实验_第5张图片

以上针对于所有用户,如果我们想要指针对于用户进行设置,我们可以先进入用户的家目录,然后进入“.bash_logout 中进行设置。示例:

[root@localhost ~]# cd /home/wangwu
[root@localhost wangwu]# ls -a
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla
[root@localhost wangwu]# vim .bash_logout (此配置文件在用户注销时会进行加载)

# ~/.bash_logout
history -c   (注销时自动清除历史命令)
clear   (清除缓存)

~                                       
3.2 终端自动注销设置(闲置时)

针对于闲置时自动注销,我们同样可以在/etc/profile中进行配置,示例:
Linux系统管理:账户安全控制及应用实验_第6张图片

设置完成后设置其生效:

[root@localhost wangwu]# vim /etc/profile
[root@localhost wangwu]# source /etc/profile
[root@localhost wangwu]#  等待输入超时:自动登出

如上图可见,我们在设置生效后,在15秒后系统自动登出。

四、 账户安全切换

首先我们对PAM认证模块进行简要介绍:

我们一般使用su 用户来切换用户,当无意中泄露root密码后,就有普通用户登录管理员用户的潜在安全问题,此处我们介绍通过设置用户级别来限制普通用户的su切换。

为了加强su命令的使用控制,可以借助于PAM认证模块,只允许极个别用户使用su命令进行切换

PAM(Pluggable Authentication Modules)可插拔式认证模块,它是一种高效且灵活便利的用户级别的认证。

PAM认证一般遵循的顺序:Service(服务)---->PAM(配置文件)—>pam_*.so

PAM认真首先要确定是哪一项服务,然后加载对应额PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/etc/security下)进行安全认证

用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证

不同的应用程序所对应的PAM模块也是不同的。

查看PAM认证的构成:

查看某个程序是否支持PAM认证,可以用ls命令进行查看,以”su”为例:

[root@localhost wangwu]# ls /etc/pam.d | grep su
ksu
su
sudo
sudo-i
su-l

查看su的PAM配置文件:

[root@localhost wangwu]# cat /etc/pam.d/su

每一行都是一个独立的认证过程

每一行可以区分为三个字段:

认证类型

控制类型

PAM模块及参数

账户安全切换管理(su)

开启“su”功能的PAM认证模块:
Linux系统管理:账户安全控制及应用实验_第7张图片
PAM认证模块开启后,只有将普通用户添加到wheel组中,这个组中的用户才可以使用su进行切换。

查看wheel组:

[root@localhost ~]# grep "wheel" /etc/group
wheel:x:10:

我们现在有wangwu用户,现在新增一个lisi用户,并将此用户添加到wheel组中:

[root@localhost ~]# useradd lisi
[root@localhost ~]# passwd lisi
更改用户 lisi 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# gpasswd -a lisi wheel
正在将用户“lisi”加入到“wheel”组中
[root@localhost ~]# grep "wheel" /etc/group
wheel:x:10:lisi

此时wheel组中只有lisi用户,wangwu用户不在此组内。我们现在假设lisi、wangwu用户知晓管理员密码,然后分别在这两个用户中进行切换root用户操作:

[root@localhost ~]# su lisi
[lisi@localhost root]$ su root
密码:
[root@localhost ~]# su wangwu
[wangwu@localhost root]$ su root
密码:
su: 拒绝权限
[wangwu@localhost root]$ 

此实验证明,我们在开启su的PAM认证后,未被管理员添加到wheel组的用户,知道其他用户密码后也无法进行su切换操作。

以上为通过开启PAM认证来控制用户权限的方法

五、使用sudo机制提升权限

sudo命令的用途及用法

用途:以其他身份(例如root)执行授权的命令

格式:sudo 授权命令

配置sudo授权

“visudo” 或者 vim /etc/sudoers (内容相同,只是有无颜色区别)

记录格式: 用户 主机名列表=命令程序列表(可使用”which 命令“查找到命令程序的绝对路径)

我们现在有两个用户,lisi与wangwu,而处于wheel组的只有lisi,示例:

[root@localhost ~]# tail -3 /etc/passwd
dings02:x:1000:1000:dings02:/home/dings02:/bin/bash
wangwu:x:1001:1001::/home/wangwu:/bin/bash
lisi:x:1002:1002::/home/lisi:/bin/bash
[root@localhost ~]# grep "wheel" /etc/group
wheel:x:10:lisi

假设现在我们分别从这两个用户中通过提权去进行重新指定ifconfig(IP地址),实验如下:

我们先在lisi用户中查询、尝试更改IP地址:
Linux系统管理:账户安全控制及应用实验_第8张图片在lisi用户下使用sudo提权操作更改IP地址:
Linux系统管理:账户安全控制及应用实验_第9张图片实验结果为lisi可以更改,然后我们使用wangwu用户尝试使用sudo提权更改IP地址:
Linux系统管理:账户安全控制及应用实验_第10张图片
如图,wangwu用户无法进行操作,现在我们切换到root用户编辑sudo的配置文件,给与wangwu使用ipconfig命令功能的权限,输入vim /etc/sudoers 进入配置文件进行新增,如图:
Linux系统管理:账户安全控制及应用实验_第11张图片
在此配置文件我们同时可看到wheel组拥有所有的root权限,所以用户lisi可以通过提权更改IP地址,如图:
Linux系统管理:账户安全控制及应用实验_第12张图片
保存退出后,我们再切换回wangwu用户,再次尝试提权更改IP地址:
Linux系统管理:账户安全控制及应用实验_第13张图片
以上为通过设置sudo(提权)的配置文件来指定给与普通用户权限的管理方法。

六、 开关机安全控制

调整BIOS引导设置

将第一引导设备设为当前系统所在的硬盘

禁止从其他设备(光盘、U盘、网络)引导系统

将安全级别设为setup,并设置管理员密码

GRUB限制

使用grub2-mkpasswd-pbkdf2生成密钥

修改/etc/grub.d/00_header文件中,添加密码记录

生成新的grub.cfg配置文吉件

我们在正常开机时可以通过此界面进入grub菜单来设置grub的配置文件:
Linux系统管理:账户安全控制及应用实验_第14张图片
GRUB菜单:
Linux系统管理:账户安全控制及应用实验_第15张图片

可见正常情况下并不安全,对于这种情况,我们可以通过设置口令的方法来加一道“锁”去防范。

我们先进行备份两个文件,以防操作失败后可以进行恢复:

[root@localhost ~]# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
[root@localhost ~]# cp /etc/grub.d/00_header /etc/grub.d/00_header.bak

使用grub2-mkpasswd-pbkdf2 的形式进行哈希的密钥加密,生成密文:
Linux系统管理:账户安全控制及应用实验_第16张图片
这里我们的口令设置的是“123456”,“password is”之后我们复制的部分就是针对我们的口令“123456”使用哈希算法生成的密文。
然后我们在头文件中进行设置:

[root@localhost ~]# vim /etc/grub.d/00_header

使用G切换到行尾,然后o切换到下一行,添加配置:
Linux系统管理:账户安全控制及应用实验_第17张图片

创建grub中的配置

[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
/etc/grub.d/00_header: line 362: warning: here-document at line 359 delimited by end-of-file (wanted `EOF')
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-7a07272cf0604d959af555760e807dbf
Found initrd image: /boot/initramfs-0-rescue-7a07272cf0604d959af555760e807dbf.img
(配置成功)

最后进行验证,重启,init 6/reboot

如图可见我们想要进入grub菜单需要输入口令才可以进入:
Linux系统管理:账户安全控制及应用实验_第18张图片
以上为通过设置GRUB菜单的密文来增强账号安全性

七、终端登录安全控制

限制root只在安全终端登录

安全终端配置:/etc/securetty

禁止普通用户登录

建立/etc/nologin文件

删除nologin文件或重启后即恢复正常

命令:touch /etc/nologin 禁止普通用户登录

命令:rm -rf /etc/nologin 取消上述登录限制

我们一般在维护的时候会进行此类设置

7.1 限制root只在安全终端登录

安全终端配置文件: /etc/securetty

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

Linux系统管理:账户安全控制及应用实验_第19张图片

7.2 禁止普通用户登录

建立/etc/nologin文件

[root@localhost ~]# touch /etc/nologin

然后我们尝试登录wangwu用户
Linux系统管理:账户安全控制及应用实验_第20张图片

限制删除nologin文件

[root@localhost ~]# rm -rf /etc/nologin

再次尝试登录wangwu用户
Linux系统管理:账户安全控制及应用实验_第21张图片
登录成功

八、NMAP扫描

nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统。它是一款强大的网络扫描、安全检测的工具。

NMAP的扫描语法:

nmap [扫描类型] [选项] <扫描目标…>

常用的扫描类型:
Linux系统管理:账户安全控制及应用实验_第22张图片

我们常会使用netstat -natp 查看本机开启的TCP端口。

或者使用netstat -naup,查看本机开启的UDP端口

对于远程而言(例如Xshell),nmap是一个探测工具,同时也可以检测对方对外开启的哪些可以被连接的端口服务,命令:

[root@localhost ~]# nmap -sT 127.0.0.1

Starting Nmap 6.40 ( http://nmap.org ) at 2019-11-16 20:17 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0025s latency).
Not shown: 996 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp
111/tcp open  rpcbind
631/tcp open  ipp

Nmap done: 1 IP address (1 host up) scanned in 0.39 seconds

现在我们安装一个网站服务(httpd)端口号为80,开启服务后再使用以上的命令:

[root@localhost ~]# yum install httpd已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
..................省略部分安装过程
[root@localhost ~]# systemctl start httpd.service
(开启httpd服务)
[root@localhost ~]# nmap -sT 127.0.0.1

Starting Nmap 6.40 ( http://nmap.org ) at 2019-11-16 20:23 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0016s latency).
Not shown: 995 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp 
80/tcp  open  http   (探测到了对方刚刚开启服务的端口)
111/tcp open  rpcbind
631/tcp open  ipp

Nmap done: 1 IP address (1 host up) scanned in 0.24 seconds

同理,也可以探测UDP相对于的端口

[root@localhost ~]# nmap -sU 127.0.0.1

查看指定网段内已开启的主机数量

我们可以探测指定网段内已开启的主机,如图:

[root@localhost ~]# nmap -sP 192.168.15.0/24

Starting Nmap 6.40 ( http://nmap.org ) at 2019-11-16 20:28 CST
Nmap scan report for 192.168.15.1
Host is up (0.00071s latency).
MAC Address: 00:50:56:C0:00:08 (VMware)
Nmap scan report for 192.168.15.2
Host is up (0.00051s latency).
MAC Address: 00:50:56:FC:43:A9 (VMware)
Nmap scan report for 192.168.15.254
Host is up (0.00042s latency).
MAC Address: 00:50:56:F9:C9:09 (VMware)
Nmap scan report for 192.168.15.160
Host is up.
Nmap done: 256 IP addresses (4 hosts up) scanned in 1.99 seconds

查看其中一个主机的状态及具体开启了哪些端口,示例:

[root@localhost ~]# nmap -sT 192.168.15.2

Starting Nmap 6.40 ( http://nmap.org ) at 2019-11-16 20:33 CST
Nmap scan report for 192.168.15.2
Host is up (0.0094s latency).
Not shown: 999 closed ports
PORT   STATE    SERVICE
53/tcp filtered domain
MAC Address: 00:50:56:FC:43:A9 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 1.60 seconds

以上为nmap探测工具的基本使用方式,具体需要根据我们某一时刻的需要而进行使用~

总结:

本篇博客内容包含的各种配置文件位置及作用需要我们在日常学习、工作中能尽数熟悉,在编辑配置文件时,需注意不要使用中文输入法。

在我们实验过程中,可以把防火墙和增强型安全功能关闭,例如在nmap探测中就有可能导致探测不到指定主机的端口信息,关闭防火墙:systemctl stop firewalld.service 。关闭增强型安全功能:setenforce 0。

你可能感兴趣的:(linux系统管理)