• 账号安全基本措施1


    一、系统账号清理

    1.1 将用户设置为无法登录

    useradd -s /sbin/nologin lisi

    shell类型设置为/sbin/nologin用户将无法使用bash或其他shell来登录系统。

    1.2 锁定用户。passwd -l 用户名

    正常情况下是可以送普通用户切换到其他普通用户的

    当锁定密码后passwd -l lisi就用普通用户zhangsan登录不进去了

    exit退到root用户,再解锁lisi用户,passwd -uf lisi,又可以登录进去

    1.3 删除账户

    删除账户使用userdel -r 用户名。-r连家目录一起删除

    1.4 锁定配置文件

    锁定配置文件可用chattr +i /etc/passwd /etc/shadow命令

    使用lsattr /etc/passwd /etc/shadow查看

    被锁定的文件无法修改,包括root用户。

    可用chattr -i /etc/passwd /etc/shadow 解锁

    二、密码安全控制

    2.1 设置密码规则chage

    可以修改/etc/login.defs中的内容来设置密码规则:vim /etc/login.defs

    第一行代表自1970年1月1日过99999天密码过期

    第二行代表从上次修改密码后多少天后可再次修改

    第三行代表密码的长度不低于5位

    第四行代表密码过期前几天提醒用户

    可以看到新建的用户自1970年1月1日99999天后才过期,意味着永不过期

    可通过chage命令修改

    强制lisi用户下一次登录修改密码,且符合密码要求的复杂性!

    设置密码有效期:

    chage -M 30 lisi。第五字段

    三、命令历史

    可以使用history查看历史命令。

    但考虑安全问题,一般不想让别人看到做了哪些操作,所以会清除历史命令

    (1)历史命令的记录条数由HISTSIZE控制,默认是1000条。可以修改/etc/profile文件中的HISTSIZE变量值,可以影响系统中的所有用户。设置20条历史命令。

    vim /etc/profile

    修改完之后,执行一下命令 启用:source /etc/profile

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

    (3)可以把.bash_history的文件清空,该文件存放历史命令。清空:echo " " > .bash_history

    由于history -c清空了历史文件,此时按上键只有cat .bash_history命令。

    但这些方法不能彻底清除历史命令。可以写在开机启动文件.bashrc里面。

    vim ~/.bashrc

    这样一开启就会清空存放历史命令的文件。

    四、切换用户

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

    登录式切换:会读取该用户的配置文件,登录到自己的家目录。su - 用户名

    非登录式切换:不会读取用户的配置文件。su 用户名

    [root@localhost ~]# su zhangsan                # 非登录式切换
    [zhangsan@localhost root]$ pwd                #还是在root下
    /root
    [zhangsan@localhost root]$ exit
    exit
    [root@localhost ~]# su - zhangsan             # 登录式切换
    上一次登录:四 4月 18 22:41:29 CST 2024pts/0 上
    [zhangsan@localhost ~]$ pwd                #在自己的家目录下
    /home/zhangsan

    说明:如果是root用户su切换用户时是不需要密码的,其他普通用户切换普通用户是需要密码的。

    限制使用su命令的用户

    默认所有用户都能使用su命令。

    将用户加入到wheel组:gpasswd -a lisi wheel

     打开vim /etc/pam.d/su

    第一列TYPE验证类型,验证是否能登录。

    第二列控制位是否通过。

    第三列调用的功能

    第二行pam_rootok.so验证是否为uid为0的用户。也就是root用户可以直接登录不需要输入密码。

    第六行中pam_wheel.so use_uid只有在wheel组内的用户才能使用su命令,root也会被禁用su

    关闭第二行,开启第六行。也就是只有whell组中的用户才能使用su命令。

      root用户没有加入wheel组中,无法使用su命令。

     我们将root和lisi都加入到wheel组中。

    到此:root,lisi都在wheel组中,zhangsan不在wheel组中。

    五、PAM安全认证(可插拔式认证模块)

    5.1 PAM相关文件

    pam是一种高效而且灵活便利的用户级别的认证方式。

    模块文件目录:/usr/lib64/security/*.so

    特定模块相关的设置文件:/etc/security/

    1.主配置文件:/etc/pam.conf。默认不存在,一般不使用主配置

    2.为每种应用模块提供一个专用的配置文件:/etc/pam.d/APP_NAME

    3.注意:如/etc/pam.d存在,/etc/pam.conf将失效

    可以通过rpm -qi pam 查看当前系统pam

    rpm -ql pam 查看模块

    ls /usr/lib64/security/*.so | wc -l可以看到有60个模块是二进制文件,不会直接修改。

    打开配置文件:vim /etc/pam.d/su

    5.2 PAM工作原理

    Service(服务)→PAM(配置文件)→pam_*.so

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

    5.3 专用配置文件/etc/pam.d/格式

    我们查看 cat /etc/pam.d/system-auth文件

    第一列代表模块类型module-type

    Auth账号的认证和授权,是谁张三?李四?王五?。Account账户的有效性。passwd用户密码策略,如有效期,长度等。session用户会话期间的控制,最多打开几个文件。

    第二列代表控制位Control

    required一票否决权,

    requisite一票否决权

    sufficient一票通过

    equired和requisite optional

    第三列代表PAM模块

    module-path:用来指明本模块对应的程序文件的路径名

    Arguments:用来传递给该模块的参数。

    5.4 shell模块

    功能:检查有效shell

    pam_shells.so只允许规定的shell类型通过,规定是在/etc/shells文件中存在的类型通过。

    打开文件:vim /etc/pam.d/su

    第一行添加auth required pam_shells.so

    规定的文件中,去掉/bin/tcsh

    创建一个用户,指定shell类型是/bin/csh。由于在/etc/shells文件中,我们删除了/bin/csh。可以看到lisi是无法登录的。

    5.5 limit

    功能:在用户级别实现对其可使用的资源的限制,例如:可打开的文件数量,可运行的进程数量,可用内存空间

    显示当前所有的资源限制。可以看到打开的文件个数是1024。

    通过命令ulimit -n 10000修改后

    该修改是临时修改的。可以看到一些信息,以及选项-u设置最大用户进程数等。

    要是永久修改,可以vim /etc/security/limits.conf

    *代表所有用户。type限制类型。item进程打开的文件数量。value,个数

    添加一条:

    切换时用完全切换。可以看到用户进程和终端。

    5.6 pam_nologin.so模块

    功能:如果/etc/nologin文件存在,将导致非root用户不能登陆,当该用户登陆时,会显示/etc/nologin文件内容,并拒绝登陆

  • 相关阅读:
    Hadoop单个节点的磁盘均衡
    【目标检测】从头到尾教你安装MMDetection(超详细版本)
    基于STM32单片机和AD9850的智能DDS函数信号发生器
    65.AutoML-1
    mysql 在eclipse在配置
    Bi-Modal Progressive Mask Attention for Fine-Grained Recognition
    机器学习-(手推)线性回归-最小二乘法(矩阵表达)、几何意义
    MobPush for ReactNative
    Java并发编程学习一:线程基础
    计算机毕业设计Java校园社团管理平台(源码+系统+mysql数据库+Lw文档)
  • 原文地址:https://blog.csdn.net/2301_78327423/article/details/137933857