• Linux系统中的“安全管理和操作控制”


    内容预知

     1.用户的账号安全管理

     1.1 系统账号的清理

     1.2 对用户账号进行操作

     1.2.1 对用户账号进行锁定

     1.2.2 对用户账号进行解锁

      1.2.3对用户账号进行删除

    1.3 对用户信息和用户密码文件进行保护 

     1.4 对用户密码进行控制操作

     1.4.1 对已经存在的用户账号进行控制

      1.4.2   对新建的用户密码默认设置

    2.历史命令和终端自动注销的安全管理

     2.1 历史命令的限制

     2.1.1 清除当前用户的历史命令

      2.1.2 对历史命令的默认配置进行修改

     2.2  设置终端自动注销

    2.3 限制终端的切换 

     2.4 禁止普通用户的登录

     3. 用户切换管理

    3.1 su命令的使用

    3.2 限制用户之间的切换

     3.2.1 wheel组的引入

      3.2.2  PAM 安全认证

     4. 授权用户管理

     4.1 sudo 命令运用前的配置

    4.2  普通用户使用授权命令 

     4.3 使用别名进行批量设置普通用户授权

     5.端口扫描工具

    5.1  namp工具

    5.2 ss与netstat

     总结


     1.用户的账号安全管理

     1.1 系统账号的清理

     在使用Linux系统的过程中,不仅仅是root用户和普通用户的创建,还有很多是系统运转过程中产生的系统用户。出于系统安全考虑,一般不给予系统用户登录的权限,将它们归类为非登录用户

     

    设置非登录用户的手段 :

     usermod -s /sbin/nologin 用户名     //通过usermod 修改登录shell

     1.2 对用户账号进行操作

     1.2.1 对用户账号进行锁定

    1. # 锁定方式
    2. usermod -L 用户名 //锁定用户
    3. passwd -l 用户名 //锁定用户

     锁定操作:

     1.2.2 对用户账号进行解锁

    1. 解锁方式
    2. passwd -u 用户名 //解锁用户
    3. usermod -U 用户名 //解锁用户

     

      1.2.3对用户账号进行删除

    1. userdel 用户名 //删除用户,但不删除用户的家目录
    2. userdel -r 用户名 //删除用户的同时,删除他的家目录

     

    1.3 对用户信息和用户密码文件进行保护 

    /etc/passwd:   用户详细信息文件

    /etc/shadow:   用户密码配置文件

    1. 重要文件保护命令:
    2. chattr +i 文件 #锁定
    3. chattr -i 文件 #解锁
    4. lsattr #查看文件锁定状态

     

     1.4 对用户密码进行控制操作

     1.4.1 对已经存在的用户账号进行控制

    chage  [选项]    用户名

    -M:密码保持有效的最大天数。

     

      -d:设置”最后一次修改密码的日期“。设置为 0 有特殊意思,表示用户应该在下次登录系统时更改密码。

     

     

      1.4.2   对新建的用户密码默认设置

    vim /etc/login.defs    //用户登录密码的默认配置

     

    2.历史命令和终端自动注销的安全管理

     2.1 历史命令的限制

     2.1.1 清除当前用户的历史命令

    history -c 命令只可以临时清除记录(其实所有的文件都还保存在.bash_history ),重启后记录还在。

    1. history //查看当前用户的历史命令
    2. history -c //清空当前用户的历史命令

      2.1.2 对历史命令的默认配置进行修改

     Linux中环境配置文件:

    /etc/profile此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从 /etc/profile.d 目录的配置文件中收集 shell 的设置。如果你有对 /etc/profile 有修改的话必须得 source (.)一下你的修改才会生效,此修改对每个用户都生效
     /etc/bashrc  

    为每一个运行 bash shell 的用户执行此文件。当 bash shell 被打开时,该文件被读取。如果你想对所有的使用 bash 的用户修改某个配置并在以后打开的 bash 都生效的话可以修改这个文件,修改这个文件不用重启,重新打开一个 bash 即可生效。
    Ubuntu没有此文件,与之对应的是/ect/bash.bashrc。

     ~/.bash_profile    每个用户都可使用该文件输入专用于自己使用的 shell 信息,当用户登录时,该文件仅仅执行一次!默认情况下,它设置一些环境变量,执行用户的~/ .bashrc 文件。 此文件类似于 /etc/profile,也是需要需要 source 才会生效,/etc/profile 对所有用户生效,~/.bash_profile 只对当前用户生效。~/.profile(由Bourne Shell和Korn Shell使用)和.login(由C Shell使用)两个文件是.bash_profile的同义词,目的是为了兼容其它Shell。
    ~/.bashrc该文件包含专用于你的 bash shell 的 bash 信息,当登录时以及每次打开新的 shell 时,该文件被读取。(每个用户都有一个 ~/.bashrc 文件,在用户目录下) 此文件类似于 /etc/bashrc,不需要重启就可以生效,重新打开一个 bash 即可生效,/etc/bashrc 对所有用户新打开的 bash 都生效,但 ~/.bashrc 只对当前用户新打开的 bash 生效。
    ~/.bashrc文件会在bash shell调用另一个bash shell时读取,也就是在shell中再键入bash命令启动一个新shell时就会去读该文件。这样可有效分离登录和子shell所需的环境。但一般 来说都会在/.bash_profile里调用/.bashrc脚本以便统一配置用户环境。 

    1. [root@localhost ~]#vim /etc/profile //打开配置环境
    2. export HISTSIZE=20 // 在/etc/profile 配置中插入, 表示限制历史命名为二十条
    3. [root@localhost ~]#source /etc/profile //刷新加载该配置文件

    自动清空的方式 :

    1. 1. 注销时自动清空历史命令
    2.  [root@localhost ~]# vim ~/.bash_logout
    3.  echo "" > ~/.bash_history
    4.  ​
    5.  2. 登录时自动清空历史命令
    6.  [root@localhost ~]# vim ~/.bashrc
    7.  echo "" > ~/.bash_history

     2.2  设置终端自动注销

    1. [root@localhost ~]# vi /etc/profile
    2. export TMOUT=n #设置登录后无操作退出登录超时时间(n秒后自动注销)

    2.3 限制终端的切换 

    vim   /etc/securetty

     

     2.4 禁止普通用户的登录

    1. [root@localhost ~]# touch /etc/nologin //禁止普通用户登录
    2. [root@localhost ~]# rm -rf /etc/nologin //取消普通用户登录限制

     禁止普通用户登录:

     

     解除普通用户登录的限制:

     3. 用户切换管理

    3.1 su命令的使用

      su 命令:可以在终端中切换已知密码的用户,root用户默认普通用户不需要密码。普通用户之间的切换需要密码的切换

    1. su 用户名
    2. whoami 查看当前使用的用户
    3. pwd 查看当前路径

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

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

     

    3.2 限制用户之间的切换

    限制用户切换的原因: 

     su 命令虽然方便了普通用户之间的来回切换,但是也存在着一定的安全隐患,如果某一个普通用户的密码泄露,就会成为其他用户的隐患,所以有时候要对一些用户进行切换的限制,防止造成信息泄露的损失

     3.2.1 wheel组的引入

     在Linux系统安装完成后,系统中存在一些PAM 认证模块,起着辅助使用系统的作用,而wheel认证模块,就是存在于模块配置中

     wheel组:wheel组相当于超级管理员用户组,此组内的成员拥有最高的系统权限,root用户相当于超级管理员账号,属于wheel组。

    vim /etc/pam.d/su    进入存放wheel组和默认root切换权限的配置

     限制普通用户互相切换的操作:

    结果演示: 

     

     允许选中的用户可以切换的设置:

      3.2.2  PAM 安全认证

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

     pam 认证的过程:Service(服务)--> PAM(配置文件)--> pam_*.so

     

    认证类型(module-type):

    • 认证管理(authentication management):接受用户名和密码,进而对该用户的密码进行认证;
    • 帐户管理(account management):检查帐户是否被允许登录系统,帐号是否已经过期,帐号的登录是否有时间段的限制等;
    • 密码管理(password management):用户修改密码时密码复杂度检查机制等功能;
    • 会话管理(session management):主要是提供对会话的管理和记账。
    • -type 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用。

     4. 授权用户管理

     4.1 sudo 命令运用前的配置

     授权是通过修改Linux系统中/etc/sudoers 的配置,在配置中可以指定用户拥有什么样的权力,而普通用户被授权后,普通用户通过sudo 命令以 root 身份去执行授权的命令

    1. vim /etc/sudoers //打开授权配置文件,写入配置需要强制保存(wq!)
    2. visudo // l快捷打开 /etc/sudoers

    插入配置的格式:

     实例演示:

    1. 用户名 主机host=(root) 绝对路径命令
    2. wangwu ALL=(root)/usr/bin/mount

    4.2  普通用户使用授权命令 

    1. mkdir ~/guazhai //通过wangwu用户在家目录下创建一个 guazhai的空文件
    2. sudo mount /dev/sr0 ~/guazhai //sudo 加配置的命令表中的命令,以root的身份去运行该授权命令

     

     注意:第一次执行需要验证密码,默认超时时长为5分钟,在此期间不再重复验证密码

     4.3 使用别名进行批量设置普通用户授权

     visudo 文件中由四种别名设置:

    • User_Alias(用户)
    • Host_Alias(登录主机)
    • Cmnd_Alias(命令)
    • Runas_Alias(代表用户)

     在生产场景中,一般不需要设置主机别名,在定义授权规则时可以通过ALL来匹配所有的主机。
    请注意上面定义的规范,有些规范虽然不是必需的,但最好能够按照系统的标准来进行配置,这样可以避免意外问题的发生。
    其实,主机名就是一个逻辑上的主机组,当多台服务器共享一个/etc/sudoers的时候就会用到这个主机别名。不过,在实际企业运维中,这个需求几乎是不存在的

    1. User_Alias USERS=wangwu,liuliu //批量设置 用户获权
    2. #Host_Alias HOST=localhost
    3. Cmnd_Alias CMNDS=/usr/sbin/*,!/usr/sbin/reboot,!/usr/sbin/poweroff,!/usr/sbin/init,!/usr/bin/rm
    4. //利用别名,批量设置命令
    5. USERS ALL=CMNDS
    6. //启用格式

     5.端口扫描工具

    5.1  namp工具

     检查并安装 namp工具:

    1. [root@localhost ~]# rpm -qa|grep nmap //查看nmap
    2. [root@localhost ~]# yum install -y nmap //安装nmap

     使用格式:

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

    -p指定扫描的端口。
    -n禁用反向DNS解析(以加快扫描速度)
    -sTTCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。
    -sUUDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。
    -sPICMP 扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描。

    5.2 ss与netstat

     

    n以数值形式显示IP
    l只查看监听状态的网络信息(LISTEN)
    t查看TCP协议相关的信息。
    p显示与网络连接相关联的进程号、进程名称信息(该选项需要root权限)
    a显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)。
    u显示UDP协议相关的信息。
    r显示路由表信息

     

     

     除此之外 ,还可以与grep组合使用,具体到某一个端口的查询:

    ss -ntlp|grep :80    //查看80端口的网络信息

     总结

     1. 用户账号的锁定和解锁。通过创建/etc/nologin  文件使普通用户无法登录

    2.通过修改/etc/profile  文件来限制命令条数,以及用户退出时间

    3.su命令的切换与sudo  对用户进行提权

    4.pam.d /su 建立wheel组,使普通用户无法任意切花

    5.ss 和nestat 产看本机具体信息,namp 查看网络端口具体信息

  • 相关阅读:
    记一次victoriaMetrics代理性能优化问题
    BUUCTF key不在这里
    计算机三级等级考试
    【N年测试总结】 测试入职一家新公司的工作开展思路
    D. AND, OR and square sum(二进制位+贪心)
    gridControlExport.ExportToXls(fileName) dev gridcontrol导出excel列宽问题
    多线程学习
    美摄科技对抗网络数字人解决方案
    Privacy Policy
    deepsort使用ONNX模型进行加速
  • 原文地址:https://blog.csdn.net/qq_62462797/article/details/126249724