tcp-wrapper,PAM

tcp-wrapper:tcp的包装器,将接受wrapper的服务符合allow就放行,符合drop就丢弃,工作在能够接受其控制服务之前,是一个屏障。

tcp-wrapper是有libwrap.so库文件来实现

检测方式:
ldd $(which sshd) | grep libwrap,它属于动态连接,which后跟服务名称
string $(which sshd) | grep hosts,它属于静态连接。

动态连接:共享库文件,是二进制文件。
静态连接:直接做成程序的一部分,没有依赖关系

两个文件:/etc/hosts.allow,/etc/hosts.deny

定义格式:
daemon_lists:client_lists[:options:]
daemon_lists:服务的名字,是可执行程序的名字,多个中间用“,”隔开。ALL表所有
client_lists:
1、ip地址,例192.168.0.1
   网段,例192.168.0.,10.0.
2、network,例192.168.0.0/255.255.255.0必须使用长格式的
3、name的,例
www.magedu.com

检查的顺序:先检查allow,若定义有则放行,若没有就检查deny,若deny中有定义则直接拒绝,否则默认allow.

telnet的安装:
yum install telnet-server
service xinetd start
chkconfig telnet on
service xinetd restart
telnet拒绝root用户登录,可以先用普通用户登录在su到root用户

例:一台主机上有两个ip地址,定义仅允许访问位于192.168.0.181地址的telnet服务被192.168.0.1主机访问。
daemon@host明确那个端口
vim /etc/hosts.allow
[email protected]: 192.168.0.1
vim /etc/hosts.deny
in.telnetd: ALL

宏:ALL,LOCAL所有本地主机,UNKNOWN主机名称无法解析,KNOWN主机名解析,PARANOID正反向解析不匹配

更强大的宏:EXCEPT表示除了,例外
例:vsftp: ALL EXPECT 192.168.0

守护进程:
独立守护进程:完全实现自我管理,进程要时时运行,适合访问频率高的,例httpd,vsftpd,named
瞬时守护进程:平时并不启动,若用户访问则开启访问完后关闭,例telnet
超级守护进程:xinetd,它本身是一个独立守护进程,文件在/etc/xinetd.conf

所有瞬时守护进程受xinetd管理,有配置文件分段存放,分段目录在/etc/xinetd.d

例:vim /etc/xinetd.d/telnet
   service telnet 服务名称
  {
    disable = NO 开启服务
    flags   = REUSE
    socket_type = stream套接字类型,
    wait    = no当第一个用户进来,第二个用户不用等,即允许并发
    user    = root 登录的用户名
    server  = ... 对应的二进制程序文件的路径
    log_on_failure += USERD用户登录失败的记录日志,在原有之上在加上用户的id号

也可以加上别的选项:
per_source = 10 同一个ip最多并发多少个请求
only_from = 相当与acl的白名单,例:only_from = 192.168.0.0/24


用户的管理:
SA:系统管理员
DBA:数据库管理员
persona:类似进程的上下文

认证:通过用户名和密码的方式
授权:访问资源的权限
审计:类似用户名是否过期等

glibc:标准C库中的库文件,获取用户信息,将用户的用户名转换成对应的id号,即名称解析

Name Server Switch:名称服务转换,本身也是库,在/etc/nsswitch.conf,用一堆的库文件实现

nis:网络信息服务

可以用命令来显示file的文件
例:getent passwd或getent shadow
   getent passwd gentos显示个人信息

PAM:Pluggable Authentication Modules插入式认证模块,它本身只是一个框架,不具备认证功能,借助与模块来实现。

装载模块:modprobe,insmod
卸载模块:modprobe -r,rmmod
显示模块:lsmod
模块信息:modinfo

PAM的库文件:
/lib/security
若是64的系统则在/lib64/security

/etc/pam.d下软件实现认证的文件

两个配置文件:
/etc/pam.conf
/etc/pam.d/

对应应用程序在/etc/pam.d/
对每个字段的说明:
type:类别
 auth:认证用户的用户名和密码
 account:审计,用户帐号是否在有效期
 passwd:修改密码是否符合复杂度的要求
 session:建立会话,定义可以有多少个用户并发等

control:控制,说明一些成功或失败应采取什么的动作
 有两种方式:简单的和复杂的
 简单的:
 required若这一关不过则最终结果为不过,但后面还要检查
 requisite若这一关不过后面不用检查,则直接为不通过
 sufficient充分的,足够,只要这一关过了,则后面不用看直接过
 optional无意义的,凑数的
 include包含其他文件检查
 复杂的:[value=actio1 value2=action2 ...]

6中动作:
ok,done,bad,die,ignore,reset

module-path:模块的路径

module-arguments:模块参数

常见的模块:
1、pam_unix传统Unix的认证机制
    常用选项:nullok允许为空
    shadow维持以shadow方式存放密码
    md5加密以md5方式
    调用模块是要使用/etc/passwd/shadow认证

2、pam_permit直接允许访问

3、pam_deny直接拒绝访问

4、pam_cracklib.so检查密码是否符合复杂性要求等,尤其在改密码有用
 常用选项:minlen最短长度
      difok密码的重复,即过去用过的10不让再使用
      dcredit=N包含多少个数字
      ucredit=N包含多少个大写字母
      lcredit=N包含多少个小写字母
      ocredit=N包含多少个其他字符
      retry=N最多允许重试几次

5、pam_shells检查用户的shell是否合法,只要在/etc/shells即为合法

6、pam_securetty定义root只能通过那个终端登录
  凡在/etc/securetty都允许登录

7、pam_listfile.so使用一个简单文件来确定某个用户或组能否登录服务
 item=[tty|user|rhost|ruser|group|shell]
 sense=[allow|deny]
 例:指定某组的允许登录
 vim /etc/pam.d/system-auth-ac
  auth required pam_listfile.so intem=group sense=allow file=/etc/security/allow_group
 vim /etc/security/allow_group
  root添加组
  group

8、pam_rootok只要是管理员就行,经常用到su中
   /etc/pam.d/su

9、pam_limits组或用户能够获取资源的量
  /etc/security/limits.conf
 格式:<domain><type><item><value>
 domain:指定用户或某组中的用户,*表所有,@group
 type:软限制soft,硬限制hard,两者都是使用-
 item:nofile所允许打开文件的最大使用个数
      cpu:所允许最大使用cpu,单位是分钟
      nproc:最多允许运行进程的个数
      as:限制内存空间大小,单位是KB
 若为0为不做任何限制
 普通用户可以用ulimit命令来调整
 help ulimit查看命令的使用

 


你可能感兴趣的:(职场,pam,休闲)