zoukankan      html  css  js  c++  java
  • SUDO安全委派和安全模块

    sudo更换身份

       su  切换身份   使用su 切换身份必须首先直到被切换成用户的密码   如: su root  就必须要知道root的密码 这种机制安全性不高,容易泄露管理员密码

       1. sudo能够授权指定用户在指定主机上执行某些命令

       2. sudo 可以提供日志,记录每个用户使用sudo操作

       3. sudo 为系统管理员提供配置文件,允许系统管理员集中的管理用户的使用权限和使用的主机

       4. sudo 使用时间戳文件来完成类似"检票"系统,默认存活期为5分钟

       5. 使用sudo授权后普通用户就可以执行默认不能执行的操作 相当于提升普通用户的执行权限

    sudo配置

      配置文件:/etc/sudoers(不建议使用),    /etc/sudoers.d/

      时间戳文件:/var/db/sudo

      日志文件:/var/log/secure

      配置文件支持使用通配符glob: 

          ?:任意单一字符 

          * :匹配任意长度字符 

         [wxc]:匹配其中一个字符 

         [!wxc]:除了这三个字符的其它字符 

         x : 转义   

        [[alpha]] :字母 示例: /bin/ls [[alpha]]* 

       配置文件规则有两类:

          1、别名定义:不是必须的 

          2、授权规则:必须的 

    授权规则格式

       root              ALL=(ALL)               ALL

       yxh             192.168.30.7=(root)    /bin/mount      /dev/cdrom  /mnt/     

       执行格式 :   sudo  mount    /dev/cdrom   /mnt/     执行命令的时候必须和授权规则中写的命令保持完全一致 sudo  mount    /dev/cdrom   /mnt 执行失败  因为缺少最后的/

    sudo命令

      ls -l /usr/bin/sudo 

      sudo –i –u wang 切换身份 

      sudo [-u user] COMMAND 

         -V 显示版本信息等配置信息 

        -u user  默认为root 

        -l,ll 列出用户在主机上可用的和被禁止的命令 

        -v 再延长密码有效期限5分钟,更新时间戳 

        -k 清除时间戳(1970-01-01),下次需要重新输密码 

        -K 与-k类似,还要删除时间戳文件 

        -b 在后台执行指令 

        -p 改变询问密码的提示符号     示例:-p ”password on %h for user %p:"   

        user1 ALL=(user2)  ALL           第一个ALL表示所有主机  第二个ALL表示所有权限      表示user2有的权限全都赋给user1

        user2可以在终端执行               sudo  -u  user1   cat /etc/shadow             如果没有指定-u选项,默认代表root用户

    sudo别名和示例 

       Users和runas: 

           username 

           #uid 

          %group_name 

         %#gid 

          user_alias|runas_alias 

       host:

            ip或hostname 

            network(/netmask) 

            host_alias 

      command: 

            command name 

            directory 

            sudoedit 

            Cmnd_Alias

       别名有四种类型:User_Alias,   Runas_Alias,   Host_Alias ,Cmnd_Alias

       别名格式:[A-Z]([A-Z][0-9]_)*

       别名定义: Alias_Type NAME1 = item1, item2, item3 : NAME2 = item4, item5 

      示例1

        User_Alias NETADMIN= netuser1,netuser2

        Cmnd_Alias NETCMD = /usr/sbin/ip

        NETADMIN ALL=(root) NETCMD

    示例2

         User_Alias SYSADER=wang,mage,%admins

         User_Alias DISKADER=tom

         Host_Alias SERS=www.magedu.com,172.16.0.0/24

         Runas_Alias OP=root

         Cmnd_Alias SYDCMD=/bin/chown,/bin/chmod

         Cmnd_Alias DSKCMD=/sbin/parted,/sbin/fdisk

         SYSADER SERS= SYDCMD,DSKCMD

         DISKADER ALL=(OP) DSKCMD 

    示例3 排除特定场景

         user1     192.168.175.136,192.168.175.138=(root)       /usr/sbin/,    !/usr/sbin/useradd 

         user1     ALL=(ALL) /bin/cat /var/log/messages*

         安全隐患    sudo cat  /var/og/messages   /etc/passwd

         user1      ALL=(ALL) /bin/cat /var/log/messages*,        !/bin/cat /var/log/messages*   *  

         

    TCP_Wrappers介绍

       工作在第四层(传输层)的TCP协议   实现简单的防火墙功能

       对有状态连接的特定服务进行安全检测并实现访问控制

       以库文件形式实现   某进程是否接受libwrap的控制取决于发起此进程的程序在编译时是否针对 libwrap进行编译的  

       判断服务程序是否能够由tcp_wrapper进行访问控制的方法:不是所有服务都支持TCP_Wrappers

           ldd  /PATH/TO/PROGRAM     |   grep  libwrap.so 

           strings PATH/TO/PROGRAM  |   grep libwrap.so 

       配置文件:/etc/hosts.allow, /etc/hosts.deny 

      检查顺序:hosts.allow,hosts.deny(默认允许)   注意:一旦前面规则匹配,直接生效,将不再继续

      基本语法:  daemon_list@host: client_list  [ :options :option… ]  

      单个应用程序的二进制文件名,而非服务名.

      例如vsftpd    以逗号或空格分隔的应用程序文件名列表 如:sshd,vsftpd 

      ALL表示所有接受tcp_wrapper控制的服务程序

      主机有多个IP,可用@hostIP来实现控制 如: in.telnetd@192.168.0.254 

      EXCEPT用法:   

        示例:vsftpd: 172.16.   EXCEPT 172.16.100.0/24    EXCEPT 172.16.100.1 

    PAM认证机制 

          使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序

         一种认证框架,自身不做认证 

         PAM 是关注如何为服务验证用户的 API,通过提供一些动态链接库和一套统 一的API,将系统提供的服务和该服务的认证方式分开

         PAM相关文件

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

              环境相关的设置:/etc/security/

              主配置文件:  /etc/pam.conf     默认不存在

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

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

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

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

        PAM认证过程:

            1.使用者执行/usr/bin/passwd 程序,并输入密码

            2.passwd开始调用PAM模块,PAM模块会搜寻passwd程序的PAM相关设置文件, 这个设置文件一般是在/etc/pam.d/里边的与程序同名的文件,即PAM会搜寻

               /etc/pam.d/passwd此设置文件

           3.经由/etc/pam.d/passwd设定文件的数据,取用PAM所提供的相关模块来进行验证

           4.将验证结果回传给passwd这个程序,而passwd这个程序会根据PAM回传的结果决定下一个动作(重新输入密码或者通过验证)

       通用配置文件/etc/pam.conf格式   

               application  type  control    module-path     arguments

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

                                  type   control   module-path     arguments 

       服务名(application) telnet、login、ftp等

      服务名字“OTHER”代表所有没有在该文件中明确配置 的其它服务

      模块类型(module-type)

            control  PAM库该如何处理与该服务相关的PAM模块的成功或失败情况

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

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

            Auth 账号的认证和授权

            Account 与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务的访问时间,当前有效的系统资源(最多可以有多少个用户),限制用户的位置(例如:root用户只能从控制台登录)

           Password 用户修改密码时密码复杂度检查机制等功能

           Session 用户获取到服务之前或使用服务完成之后需要进行一些附加的操作, 如:记录打开/关闭数据的信息,监视目录等

           -type 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是 安装在系统上的模块有用 

     module-path: 模块路径

          相对路径:  /lib64/security目录下的模块可使用相对路径 如:pam_shells.so、pam_limits.so

          绝对路径:  模块通过读取配置文件完成用户对系统资源的使用控制 /etc/security/*.conf

          注意:  修改PAM配置文件将马上生效

          建议:编辑pam规则时,保持至少打开一个root会话,以防止root身份验证错误

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

    PAM模块示例 

      模块:pam_shells 

      功能:检查有效shell

      man pam_shells

      示例:不允许使用/bin/csh的用户本地登录

       vim /etc/pam.d/login     

             auth required pam_shells.so 

       vim /etc/shells   

              去掉 /bin/csh

       useradd –s /bin/csh testuser

       testuser将不可登录

       tail    /var/log/secure 

    示例:pam_limits.so 

       限制用户最多打开的文件数和运行进程数

         /etc/pam.d/system-auth 

         session     required      pam_limits.so

         vim /etc/security/limits.conf     

              apache   –    nofile 10240     apache用户可打开10240个文件

              student  hard   nproc   20     student用户不能运行超过20个进程 

         

  • 相关阅读:
    struts2实现的简单的Trie树
    从源码总结struts2命名空间的匹配规则
    Knockout2.x:ko.dataFor()、ko.contextFor()使用
    Reporting Services可選參數設置
    在.net CF中設置DataGrid中列的寬度
    VB.net 簡體繁體轉化代碼
    在SQL語句中獲取錯誤信息
    VS 2005 使用 Crystal report 發生載入報表失敗
    Lazarus一個奇怪的設置
    怎样用wince设备创建快捷方式
  • 原文地址:https://www.cnblogs.com/yxh168/p/9071342.html
Copyright © 2011-2022 走看看