linux操作系统的安全配置

账号安全配置

  1. 基本安全配置
  • 系统账号清理锁定

    1. 超级用户 root

    2. 程序用户 登录shell--> /sbin/nologin

      对于一些长期不用的可以删除 userdel 用户名

    3. 普通用户 登录shell--> /etc/passwd

    4. 对于一些账号不能删除可以锁定
      usermod passwd

    usermod -L zhangsan #锁定
    passwd -S zhangsan  #查看状态
    
    usermod -U zhangsan  #解锁
    passwd -S zhangsan
    
    passwd -l zhangsan #锁定
    passwd -u zhangsan  #解锁
    
    1. +锁 +i 锁 -i 解锁 锁定之后即不可以写东西也不可以删东西

    使用lsattr查看文件锁定情况

    1. +a锁 -a锁(只适用于日志) 同i 锁定之后只可以写东西,不能删
      写东西时用echo "5678" >> 1.txt

    2. 密码安全控制

    为了降低密码暴力破解(穷举)风险,限制用户定期修改密码

    vim /etc/login.defs  //使用于新建用户
    chage -d 0 zhangsan  //下次登录必须修改密码
    

    1. 命令历史

    history #查看
    为了保险与安全,设置历史命令自动消除或者保留数量较少

    source /etc/profile  
    echo $HISTSIZE   #查看保留数量
    HISTSIZE=5 #设置保留数量
    

    除此之外还可以修改~/.bash_logout文件,添加清空命令的命令

    用户退出时自动清除命令

    1. 自动注销

    设置锁屏时间

  1. 用户切换与提权
  • su 切换用户

    root切换普通用户加‘-’不需要密码,且还是root的虚拟环境
    普通用户切换root时需要密码

    此时exit不是退出,可以理解成返回

  • 安全日志/var/log/secure #记录su验证,和shell的开启
    tail /var/log/secure

  • sudo 提权
    让普通用户拥有一部分的管理权限,默认的权限类型为440(rr-),在/etc/sudoers 文件中,只能用!强制保存

    visudo 提权

    visudo -c #会提示是否检查出错
    

    vim /etc/sudoers

    格式:user MACHINE=COMMANDS

    • 用户(user):直接授权用户名,或采用“%组名”的方式授权一个组
    • 主机(MACHINE):使用此配置文件的主机名称,一般为localhost
    • 命令(COMMANDS):允许授权的用户
    # sudo 语法
    user MACHINE=COMMANDS
    
    ## Syntax:
    ##
    ## 	user	MACHINE=COMMANDS
    ##
    ## The COMMANDS section may have other options added to it.
    ##
    ## Allow root to run any commands anywhere 
    root	ALL=(ALL) 	ALL
    
    -1.root:	用户
      
    -2.ALL:代表用户可以在哪台机器上执行指令,通常设置为ALL,如果设置为localhost代表在本机上执行指令。
      也可以设置为本机以外的其他IP地址或主机名,此时该/etc/sudoers虽然是在本机上配置的,但用户登录到本机 后仍然是无法执行命令的,如果把/etc/sudoers这个配置文件赋值到指定ip或主机名的那台机器上,就好用了
      配置文件中讲到:
      ## Next comes the main part: which users can run what software on 
      ## which machines (the sudoers file can be shared between multiple 
      ## systems).
      即/etc/sudoers文件可以在多个系统之间共享,如果我们设置成ALL的话就省事了,该文件复制到人任 意一台机器 上的完成的权限配置都一样
      
    -3.(All): 表示允许用户以哪个用户的权限做事情
    
    -4.ALL:	所有命令
      
    最终解释:root用户可以在所有主机上以任意用户身份执行所有命令
    
    root    ALL=(ALL)       ALL
    bibibi  ALL=(ALL)       ALL    
    # bibibi用户在任何机器上,可以以任何用户身份执行任何命令等同 于root用户
    user10  ALL=(ALL)       /bin/cp,/bin/touch
    # 只允许user10用户以root用户身份执行cp,touch命令
    lili 		ALL=(ALL) 	NOPASSWD: ALL # 免密
    egon01 ALL=(ALL) ALL,!/usr/bin/vim /test/a.txt 
    # !代表取反 
    egon02 ALL=(ALL) /usr/bin/passwd [a-zA-Z]*,/usr/bin/vim *,!/usr/bin/vim /test/a.txt # 可以编辑所有文件,除了/test/a.txt
      
    # 测试
    [bibibi@arther-linux ~]$ cat /etc/shadow
    cat: /etc/shadow: Permission denied
    [bibibi@arther-linux ~]$ sudo cat /etc/shadow
    [sudo] password for bibibi:  # 输入用户自己的密码
    # 执行成功
    
    ps: sudo 执行流程 
      1.普通用户执行sudo命令, 会检查/var/db/sudo是否存在时间戳缓存 
      2.如果存在则不需要输入密码, 否则需要输入用户与密码 
      3.输入密码会检测是否该用户是否拥有该权限 
      4.如果有则执行,否则报错退出      
    

    cat /var/lof/sudo查看sudo的日志

posted @ 2021-08-26 19:07  whml  阅读(460)  评论(0编辑  收藏  举报