tcp_wrappersudonsswitchpam

古人学问无遗力,少壮工夫老始成。这篇文章主要讲述tcp_wrappersudonsswitchpam相关的知识,希望能为你提供帮助。
下面介绍的是服务与安全管理的tcp_wrapper、sudo、nsswitch、pam


一、tcp_wrapper
1、tcp_wrapper基础 --------------------tcp封装器
  tcp_wrapper依赖的库文件:libwrap.so
(1)、判断是否受tcp_wrapper访问控制:动态链接(libwrap.so库文件)、静态链接(strings命令)
  动态链接至libwrap.so库的应用程序:# ldd /PATH/TO/APP_FILE | grep libwrap
  静态库文件应用程序:# strings COMMAND
(2)、常见的基于tcp_wrapper访问控制的服务:sshd,vsftpd
  几种服务:openssh、http、mysql、vsftpd、nfs、samba


2、tcp_wrappers的配置文件 ----------------------/etc/hosts.allow、/etc/hosts.deny
  格式:daemon_list : client_list [[[: option] : option] ...]


(1)、daemon_list --------------应用程序文件名(/usr/sbin/*)
  daemon_list的三种方式:单个程序文件名、多个程序文件名(逗号隔开)、所有应用程序(ALL)


(2)、client_list ------------3种方式
  单个IP地址或主机名、网络地址、访问控制列表
  client_list的四种访问控制列表:ALL、KNOWN、UNKNOWN、PARANOID


(3)、: option --------------3类选项
  option的三类选项为:deny、allow、spawn
  spawn:%c -------------------客户端信息
          %s -------------------服务端信息


例:
daemon_list:ALL -------------所有的应用程序(进程)
client_list:172.16.0.0/255.255.0.0
              172.16.
              ALL ------------所有的主机
              KNOWN ----------能正常访问的主机
              UNKNOWN ---------不能正常访问的主机
: option:deny:拒绝访问规则,hosts.allow文件中
          allow:允许访问规则,hosts.deny文件中
          spawn:生成、发起、执行


例:
vsftpd : 172.16.0.0/16 : allow ---------------/etc/host.allow(默认允许)
vsftpd : ALL EXCEPT 172.16. EXCEPT 172.16.67.1 ------------------/etc/hosts.deny(默认拒绝)


例:针对sshd、vsftpd服务进行记录
sshd, vsftpd : ALL : spawn /bin/echo $(/bin/date) %c attempt login %s > > /var/log/tcpwrapper.log




二、sudo
1、sudo基础 ---------------以root用户身份执行
  sudo的授权配置文件:/etc/sudoers


2、配置文件内容 ---------------/etc/sudoers
  /etc/sudoers内容有两类:、别名的定义、用户规格(授权)
(1)、别名定义 --------------别名全大写
  格式:Alias_Type ALIASNAME = item1, item2, ...
  Alias_Type:User_Alias、Host_Alias、Runas_Alias、Cmnd_Alias:
  Alias_Type -------------使用驼峰式
  ALIASNAME -------------使用全大写 
  例:User_Alias USERADMINUSERS = tom, jerry, centos, suse, %myclass -----------------“%”在别名定义中,表示组。
      Cmnd_Alias USERADMINCOMMANDS = /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/passwd [a-zA-Z0-9]*, ! /usr/bin/passwd root, /usr/sbin/usermod


(2)、用户规格(授权项): -----------------编辑/etc/sudoers,每行只有一个授权
  格式为:who   where=(whom)   what
  格式各部分解释如下:
  who ----------授权的目标用户(5种方式)
      username ---------------单个用户名称
      #uid ------------单个用户UID
      %groupname ------------指定组内的所有账户
      %#gid -----------指定知道的GID的组,其内的所有用户账户
      user_alias -------------定义过的别名
   
  where --------------授权的客户端主机(3种)
      ip/hostname ------------单个主机
      Network Address --------------网络地址
      host_alias -------------定义过的别名


  whom -----------------真实身份,一般为root


  what -------------授权运行的命令
      command -------------单个命令
      directory ------------目录下的所有命令
      sudoedit ---------------授权可以执行sudo命令的用户
      cmnd_alias ----------定义过的别名


例:little ALL=(root) /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/passwd [a-zA-Z0-9]*, ! /usr/bin/passwd root 
例:little ALL=(root) /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/su ! /usr/bin/su root


注:visudo命令:-----------------编辑/etc/sudoers文件,具有【语法纠错】功能


(3)、sudo命令:----------------用户授权
  格式:sudo [option]... command
  常用选项:
  -u user --------------指定用户身份
  -l[l] [command] ------------------显示能以sudo运行的所有命令


(4)、授权中的标签
  PASSWD --------------要有密码
  NOPASSWD -------------可以没有密码


  例:Cmnd_Alias USERADMINCOMMANDS = NOPASSWD: /usr/sbin/useradd, PASSWD: /usr/sbin/userdel, /usr/bin/passwd [a-zA-Z0-9]*, ! /usr/bin/passwd root, /usr/sbin/usermod


sudo的特殊命令:passwd、su、sudo、sudoedit




三、nsswitch
1、nsswitch基础 ---------------名称服务开关
  名称解析:将自然语言,解析为机器语言的数字符号。
  解析:根据关键字查找存储库,找出与关键字相关的信息。
  通用框架:应用程序的调用接口
  Linux中实现名称解析的通用框架:库(/lib64/libnss*, /usr/lib64/libnss*)


2、解析库应用程序的配置文件 ----------/etc/nsswitch.conf
  格式:db: store_format1 store_format2 ....


  查找键的返回状态:(4种)success、notfound、unavail、tryagain
  状态返回值的响应:return、continue
3、getent命令 ------------从名称服务器得到响应
  格式:getent database [key]




四、pam
1、pam基础 --------------通用的认证框架
  Linux中实现pam的通用框架:库(/lib64/security/*)


2、配置文件 -------------/lib64/security/*
  pam的配置文件有两种:全局配置文件、专用配置文件。其中,全局配置文件已经废弃。
(1)、全局认证配置文件 -------------------/etc/pam.conf
  格式:application   type   control   module-path   module-arguments


(2)、专用配置文件 ------------------/etc/pam.d/*APP_NAME*
  格式:type   control   module-path   module-arguments
  type:
    auth ---------------认证、授权
    account ------------账号管理,与认证无关
    password ------------用户修改密码时,密码的复杂度
    session -------------附加操作


  control:
    required ----------------没有被满足,认证一定失败,认证过程并不中断
    requisite ---------------没有被满足,认证一定失败,立即中断
    sufficient ------------条件被满足,认证成功,立即中断
    optional -------------不影响认证
    include ----------------其他的配置文件包含到当前位置,类似复制
    substack ---------------复制,并在子栈运行,不影响主栈


  module-path ---------------可以是相对路径、绝对路径


  module-arguments ------------默认模块参数


例:auth required pam_shells.so --------------------pam_shells.so模块的认证
       
3、pam_limits.so模块 -------------限制用户会话过程中对各种系统资源的使用情况
  格式:pam_limits.so [ change_uid ] [ conf=/path/to/limits.conf ] [ debug ] [ utmp_early ] [ noaudit ]
   
  配置文件: --------------/etc/security/limits.conf、 /etc/security/limits.d/*
  格式:< domain> < type> < item> < value>
  doemain: ----------------用户名/组名
    username ---------------单个用户名称
    %groupname/@groupname ------------指定组内的所有账户
   
  type: ----------------软/硬限制,不同于磁盘配额中的软限制和硬限制
    hard:------------硬限制
    soft:------------软限制
    -:--------------任意


  item:
    core:-------------文件大小 (KB)
    date:--------------最大数据大小(KB) 
    fsize:---------------最大文件大小(KB)
    memlock:-------------最大可用内存空间(KB)
    nofile:---------------最大可以打开的文件数量 
    rss:--------------最大可驻留空间(KB) 
    stack:-----------------最大堆栈空间(KB)
    cpu:-----------------最大CPU使用时间(MIN)
    nproc:-----------------最大运行进程数
    as:--------------地址空间限制
    locks:--------------最大锁定文件数目
    nice:--------------nice值
    maxlogins:--------------用户可以登录到系统最多次数 


  value:-----------------具体值


例:-------------/etc/security/limits.conf
    @student hard nproc 20
    @faculty soft nproc 20
    @faculty hard nproc 50
    ftp hard nproc 0
    @student - maxlogins 4


4、pam_listfile.so模块 ------------------------实现基于用户/组、主机名/IP、终端的访问控制
  格式:pam_listfile.so   item=[tty|user|rhost|ruser|group|shell]   sense=[allow|deny]   file=/path/filename onerr=[succeed|fail] [ apply=[user|@group] ] [ quiet ]
  常用选项:
  item=[tty|user|rhost|ruser|group|shell]:----------------对哪些列出的目标或者条件采用规则  
  sense=[allow|deny]:----------在配置文件中找到符合条件的项目时的控制方式。如果没有找到符合条件的项目,则一般验证都会通过  
  file=/path/filename:--------------------指定配置文件的全路径名称
  onerr=[succeed|fail]:-------------------当出现错误时的缺省返回值 
  apply=[user|@group]:----------------规则适用的用户类型(用户或者组)
  quiet 


例:auth required pam_listfile.so \ 
          onerr=succeed item=user sense=deny file=/etc/ftpusers
例:auth required pam_listfile.so \
          onerr=fail item=user sense=allow file=/etc/loginusers


5、pam_time.so模块 -------------------提供基于时间的控制,用户只能在某个时间段内才能登录
  格式:pam_time.so [ debug ] [ noaudit ]
  常用选项:
  debug:
  noaudit:
   
  配置文件:/etc/security/time.conf
  格式:services; ttys; users; times


例:login ; tty* & !ttyp* ; !root ; !Al0000-2400
例:games ; * ; !waster ; Wd0000-2400 | Wk1800-0800
例:
# vim /etc/security/time.conf
login ; tty3 ; user1 ; al0100-0200   user1       1点到2点才能登录
login ; tty3 ; user1 ; all
sshd ; * ;   *   ;   al0100-0200
【tcp_wrappersudonsswitchpam】


    推荐阅读