美文网首页
sudo、TCP_Wrapper和PAM

sudo、TCP_Wrapper和PAM

作者: 一桥长书 | 来源:发表于2017-09-17 19:56 被阅读0次

    1 基本介绍

    sudo
    来自sudo包
    man 5 sudoers
    sudo 能够授权指定 用户在指定主机上运行某些命令 。 如果未授权用用 尝试使用 sudo ,会提示联系管理员
    sudo 可以提供日志,记录每个用户使用sudo 操作
    sudo 为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机
    sudo 使用时间戳文件来完成类似“检票”的 系统,默认 存活期为5 分钟的 “入场券”
    通过visudo 命令编辑配置文件,具有语法检查功能
    visudo –c  检查语法
    
    配置文件 /etc/suders,/etc/suduers.d
    时间戳文件:/var/db/sudo
    日志文件:/var/log/secure
    配置文件支持使用通配符glob:
      ?:任意单个一字符
      *: 匹配任意长度字符
    配置文件规则两类:
      1 别名定义:不是必须的
      2 授权规则:必须的
    
    root    ALL=(ALL)   ALL
    %wheel  ALL=(ALL)   ALL
    
    who 运行命令的身份 user
    where 通过哪些主机 host
    (whom) 以哪个用户的身份,runas
    which 运行那些命令 command
    
    配置项
        users  hosts=(RunAs) commands
        users
            username
            #uid
            user_alias
            %group_name
            %#gid
        hosts
            ip
            hostname
            netaddr
        command
            command name
            directory
            sudoedit
        Alias_Type NAME=item1,item2...
            Name 必须要全大写
            Alias_Type
                User_Alias
                Host_Alias
                Runas_Alias
                Which_Alias
    
    普通用户使用sudo命令,需要在命令的前面加 sudo,并且要与sudo的配置文件中的定义格式必须完全一致
    
    定义guest用户能够访问/var/log/message*的文件但是有不能其他文件
    guest ALL=(ALL) /bin/cat /var/log/messsage* !/bin/cat/ message* *
    

    2 tcp_wrapper

    工作在第四层(传输层)的TCP 协议
    对有状态连接的 特定 服务进行安全检测并实现访问控制
    以库文件形式实现
    某进程是否接受libwrap 的控制取决于发起此进程的程序在编译时是否针对libwrap 进行编译的
    判断服务程序是否能够由tcp_wrapper 进行访问控制的方法:
    ldd /PATH/TO/PROGRAM|grep libwrap.so
    strings PATH/TO/PROGRAM|grep libwrap.so
    
    配置文件 /etc/hosts.allow /etc/hosts.deny
    基本用法
      daemon_list@host: client_list [ :options :option… ]
        option
          deny: 主要用在 /etc/hosts.allow 定义"拒绝"规则 如:vsftpd:172.16.:deny
          allow:主要用在/etc/hosts.deny定义"允许"规则 如:vsftpd:172.16.: allow
          spawn: 启动一个外部程序完成执行的操作
          twist 实际动作是拒绝访问,使用指定的操作替换当前服务,标准I/O和ERROR发送到客户端默认至/dev/null
    tcpdmatch [-d] daemon[@host] client,如果在生产中,测试需要先写到其他文件中,然后使用-d 来调用
      -d 测试当前目录下的hosts.allow和hosts.deny文件
    定义访问或拒绝的事件的时候使用到一些特殊字符,需要用到转义
    例如:
      sshd:ALL: spawn echo "$(date +%%F) login attempt from %c  to %s,%d" >>/var/log/sshd.log
    
    仅开放本机两个IP 地址中的一个地址172.18.0.X 上绑定的sshd 和vsftpd 服务给172.18.0.0/16 网络中除了172.18.0.0/24 网络中的主机之外的所有主机,但允许172.18.0.100 访问, 每次的用户访问都要记录于日志文件中注:其中X 为学号
    allow
    vsftpd@172.18.0.23,sshd@172.18.0.23:172.18. EXCEPT 172.18.0. EXCEPT 172.18.0.100:spawn echo "$(date +%%F) login attempt from %c to %s,%d" >> /var/log/sshd.log
    deny
    vsftpd,sshd@172.18.0.23:172.18.0.
    vsftpd,sshd@all:all
    编写脚本/root/bin/checkip.sh ,每5 分钟检查一次,如果发
    现通过ssh 登录失败次数超过10 次,自动将此远程IP 放入Tcp
    Wrapper的黑名单中予以禁止防问
    #!/bash
    declare -a dos
    while :;do
    dos=(`awk '$0 ~ /Failed/{ip[$(NF-3)]++}END{for(i in ip){if(ip[i]>10)print i}}'  /var/log/secure `)
        for i in ${dos[@]};do
        [ `iptables -L -n | grep "\<$i\>" | wc -l` -ge 1 ] && { echo $i;continue; }
        iptables -A INPUT -s $i -j REJECT
        done
    sleep 5m
    done
    

    3 PAM 认证机制

    PAM:Pluggable Authentication Modules
    认证库:文本文件,MySQL ,NIS ,LDAP等 等
      Sun 公司于1995  年开发的 一种 与 认证 相关的通用框架 机制
      PAM 的 是关注如何为服务验证用户的 API, , 通过提供一些动态链接库和一套统一的API ,将系统提供的服务和该服务的认证方式分开
      使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方 式而无需更改服务程序
      一种认证框架,自身不做认证
    
    • PAM 认证机制
    PAM相关文件
      模块文件目录: /lib64/security/
      环境相关的设置:/etc/security/
      主配置文件 /etc/pam.conf,默认不存在
      为每一种应用模块提供一个装用的配置文件: /etc/pam.d/app_name
      注意:/etc/pam.d/存在 /etc/pam.conf将失效
    
    /etc/pam.d/文件的配置格式
      module_type control module args
    module_type: auth(账号认证和授权),password(密码规则),session(会话资源),account(系统资源)
    control:required(一票否决,但是还有检查),sufficient(一票通过),requisite(一票通过,后面不用检查),include(包含其他文件的同type的模块选者),optional(可选项,参考)
    
    具体使用请自行查看
    /user/share/doc/pam-*
    rpm -qd pam
    man –k pam_
    man 名 模块名 如 如man rootok
    《The Linux-PAM System Administrators' Guide》
    
    1 、限制centos 用户只能够在工作时间通过ssh 远程连接本机
    使用pam_time.so
      添加一行sshd;*;centos;MoTuWeThFr0900-1700到     /etc/security/time.conf
      在/etc/pam.d/sshd/加入
        account  required pam_time.so
    2 、限制只有admins 组内的用户可ssh
      使用pam_group.so模块
      编辑 /etc/security/group.conf 添加如下行
       sshd;*;*;Al0000-2400;distro
      编辑 /etc/pam.d/sshd,添加入下
       auth   required  pam_group.so
    

    相关文章

      网友评论

          本文标题:sudo、TCP_Wrapper和PAM

          本文链接:https://www.haomeiwen.com/subject/mssmsxtx.html