AIDE,sudo,TCP_Wrappers,PAM认证等系统安全访问机制

AIDE

高级入侵检测环境:是一个入侵检测工具,主要用途是检查文件的完整性,审计计算机上的那些文件被更改过了。

AIDE能够构造一个指定文件的数据库,它使用aide.conf作为其配置文件。AIDE数据库能够保存文件的各种属性,包括:权限(permission)、索引节点序号(inode number)、所属用户(user)、所属用户组(group)、文件大小、最后修改时间(mtime)、创建时间(ctime)、最后访问时间(atime)、增加的大小以及连接数。AIDE还能够使用下列算法:sha1、md5、rmd160、tiger,以密文形式建立每个文件的校验码或散列号。

配置文件:/etc/aide.conf

# These are the default rules.
#p:      permissions
#i:      inode:
#n:      number of links
#u:      user
#g:      group
#s:      size
#b:      block count
#m:      mtime
#a:      atime
#c:      ctime
#S:      check for growing size
#acl:           Access Control Lists
#selinux        SELinux security context
#xattrs:        Extended file attributes
#md5:    md5 checksum
#sha1:   sha1 checksum
#sha256:        sha256 checksum
#sha512:        sha512 checksum
#rmd160: rmd160 checksum
#tiger:  tiger checksum
#haval:  haval checksum (MHASH only)
#gost:   gost checksum (MHASH only)
#crc32:  crc32 checksum (MHASH only)
#whirlpool:     whirlpool checksum (MHASH only)
#R:             p+i+n+u+g+s+m+c+acl+selinux+xattrs+md5
#L:             p+i+n+u+g+acl+selinux+xattrs
#E:             Empty group
#>:             Growing logfile p+u+g+i+n+S+acl+selinux+xattrs

1、安装

# yum install aide

2、配置需要监控的文件夹

[[email protected] ~]# vim /etc/aide.conf
/data/* R

3、生成数据库并改名为现在使用的文件名

[[email protected] ~]# cd /var/lib/aide/
[[email protected] aide]# aide --init
AIDE, version 0.14
### AIDE database at /var/lib/aide/aide.db.new.gz initialized.
[[email protected] aide]# ls
aide.db.new.gz
[[email protected] aide]# mv aide.db.new.gz aide.db.gz    

4、检查文件完整性,建议将aide数据库存放到安全的地方

# aide --check

5、更新数据库

# aide --update

sudo

能够授权指定用户在指定主机上代表指定用户执行某些指令。

sudo命令

  • -V 详细信息
  • -u username 代表的用户
  • -l 列出用户在主机上可用的命令
  • -v 刷新密码时间戳
  • -K 删除密码有效期时间戳
  • -k 重置时间戳到1970年
  • -b 在后台执行指令
  • -p 改变询问密码的提示符
  • %p 表示用户名
  • %h 表示主机名
  • -i -u username 切换身份

visudo:编辑/etc/sudoers

  -v:检查语法合格性

  -f file:编辑文件

配置文件:/etc/sudoers, /etc/sudoers.d/*,支持使用通配符

  授权格式:用户 主机=(代表用户) 命令

用户和代表用户:

  • username
  • #uid
  • %group_name
  • %#gid
  • user_alias|runas_alias

主机:

  • ip或hostname
  • network(/netmask)
  • host_alias

命令:

  • command name
  • directory
  • sudoedit
  • Cmnd_Alias
root    ALL=(ALL)   ALL  #系统默认为root用户开的后门,root用户可以在任意主机上以任意用户的身份执行任意操作

  别名:

    类型:User_Alias, Runas_Alias, Host_Alias ,Cmnd_Alias

    格式:必须以大小的A-Z开头,中间可以是大小的A-Z,数字和下划线

[[email protected] sudoers.d]# visudo -f netadmin
User_Alias NETADMIN = user1,user2,user3
Cmnd_Alias NETCMD = /sbin/ip,/sbin/route,/sbin/ifconfig,/bin/netstat,/usr/sbin/ss
Host_Alias HOST = 192.168.0.6
Runas_Alias OP = root

NETADMIN HOST=(OP) NETCMD

日志文件:/var/log/secure

*注意

user4 ALL=(root) /bin/cat /var/log/messages*

这样授权是错误的,以下命令也可以执行

# /bin/cat /var/log/messages /etc/shadow

所以我们如果想实现这样的需求就需要按照以下这样的写法:

dongfei ALL=(root) /bin/cat /var/log/messages*,!/bin/cat /var/log/messages* *
[[email protected] ~]$ sudo cat /var/log/messages /etc/shadow
Sorry, user dongfei is not allowed to execute ‘/bin/cat /var/log/messages /etc/shadow‘ as root on centos6.

TCP_Wrappers

作者:Wieste Venema

简介:工作在第四层(传输层)的TCP协议,对有状态连接的特定服务进行安全检测并实现访问控制;某进程是否接受libwrap的控制取决于发起此进程的程序在编译时是否针对libwrap进行编译。

检查sshd服务是否能够被TCP_Wrappers控制

[[email protected] ~]$ which sshd
/usr/sbin/sshd
[[email protected] ~]$ ldd /usr/sbin/sshd |grep libwrap.so
        libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f61ba6aa000) #sshd服务依赖libwrap.so库,可以被控制

配置文件:/etc/hosts.allow(白名单), /etc/hosts.deny(黑名单)

规则:先检查白名单,如果被白名单匹配则允许访问;如果白名单没有匹配到则交给黑名单匹配,如果匹配则拒绝;如果都没有匹配到则使用默认策略(默认允许)。

配置语法:服务列表@主机IP:客户端地址列表  [:选项]

服务列表@主机IP:

  1. 单个应用程序的二进制文件名,而非服务名,例如vsftpd
  2. 以逗号或空格分隔的应用程序文件名列表,如:sshd,vsftpd
  3. ALL表示所有接受tcp_wrapper控制的服务程序
  4. 主机有多个IP,可用@hostIP来实现控制

客户端列表:

  1. 以逗号或空格分隔的客户端列表
  2. 基于IP地址:192.168.10.1 192.168.1.
  3. 基于主机名:www.magedu.com .magedu.com 较少用
  4. 基于网络/掩码:192.168.0.0/255.255.255.0
  5. 基于net/prefixlen: 192.168.1.0/24(CentOS7)
  6. 基于网络组(NIS 域):@mynetwork
  7. 内置ACL:ALL,LOCAL,KNOWN,UNKNOWN,PARANOID
    • ALL 表示所有主机
    • LOACAL 表示本地网络,匹配任何主机名中不带"."的主机
    • UNKNOWN 不能将主机名解析为IP
    • KNOWN 能将主机名解析为IP
    • EXCEPT 排除

选项:

  1. deny 拒绝
  2. spawn 触发一个操作
  3. twist 实际动作是拒绝访问,使用指定的操作替换当前服务,标准I/O和ERROR发送到客户端,默认至/dev/null

tcpdmatch:在本地测试

tcpdmatch [-d] daemon[@host] client

-d 测试当前目录下的hosts.allow和hosts.deny

[[email protected] data]# cat hosts.allow
[[email protected] data]# cat hosts.deny
sshd:192.168.0.7
[[email protected] data]# tcpdmatch -d sshd 192.168.0.7 #如果客户端是192.168.0.7是否可以访问本机的sshd服务
client:   address  192.168.0.7
server:   process  sshd
access:   denied(拒绝)
[[email protected] data]# tcpdmatch -d sshd 192.168.0.8
client:   address  192.168.0.8
server:   process  sshd
access:   granted

PAM

它提供了对所有服务进行认证的中央机制,适用于login,远程登录(telnet,rlogin,fsh,ftp,点对点协议(PPP)),su等应用程序中。系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略;应用程序开发者通过在服务程序中使用PAM API(pam_xxxx( ))来实现对认证方法的调用;而PAM服务模块的开发者则利用PAM SPI来编写模块(主要是引出一些函数pam_sm_xxxx( )供PAM接口库调用),将不同的认证机制加入到系统中;PAM接口库(libpam)则读取配置文件,将应用程序和相应的PAM服务模块联系起来。

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

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

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

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

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.d/*格式

  module-type  control   module-path   arguments 

  • 模块类型(module-type)

    • Auth 账号的认证和授权
    • Account 与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务的访问时间,当前有效的系统资源(最多可以有多少个用户),限制用户的位置(例如:root用户只能从控制台登录)
    • Password 用户修改密码时密码复杂度检查机制等功能
    • Session 用户获取到服务之前或使用服务完成之后需要进行一些附加的操作,如:记录打开/关闭数据的信息,监视目录等
    • -type 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用
  • control PAM库该如何处理与该服务相关的PAM模块的成功或失败情况
    • required :一票否决,表示本模块必须返回成功才能通过认证,但是如果该模块返回失败,失败结果也不会立即通知用户,而是要等到同一type中的所有模块全部执行完毕再将失败结果返回给应用程序。即为必要条件
    • requisite :一票否决,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执行同一type内的任何模块,而是直接将控制权返回给应用程序。是一个必要条件
    • sufficient :一票通过,表明本模块返回成功则通过身份认证的要求,不必再执行同一type内的其它模块,但如果本模块返回失败可忽略,即为充分条件
    • optional :表明本模块是可选的,它的成功与否不会对身份认证起关键作用,其返回值一般被忽略
    • include: 调用其他的配置文件中定义的配置信息
  • module-path 用来指明本模块对应的程序文件的路径名
    • /lib64/security目录下的模块可使用相对路径
  • Arguments 用来传递给该模块的参数

pam_shells模块

pam_securetty.so模块

pam_nologin.so模块

pam_limits.so模块

个人学习笔记

原文地址:https://www.cnblogs.com/L-dongf/p/9070770.html

时间: 2024-11-05 14:53:05

AIDE,sudo,TCP_Wrappers,PAM认证等系统安全访问机制的相关文章

CentOS6.3下vsftpd通过pam认证实现虚拟用户文件共享

FTP的全称是File Transfer Protocol(文件传输协议),就是专门用来传输文件的协议.它工作在OSI模型的第七层,即是应用层,使用TCP传输而不是UDP.这样FTP客户端和服务器建立连接前就要经过一个"三次握手"的过程.FTP服务还有一个非常重要的特点是它可以独立于平台. LINUX下实现FTP服务的软件很多,最常见的有vsftpd,Wu-ftpd和Proftp等.Red Hat Enterprise Linux中默认安装的是vsftpd. 通常,访问FTP服务器时需

搭建vsftp pam认证

1.yum安装vsftpd程序: [[email protected] other]# yum install vsftpd -y 2.修改配置文件 [[email protected] other]# vi /etc/vsftpd/vsftpd.conf anonymous_enable=NO //是否允许anonymous登录FTP服务器,默认是允许的.local_enable=YES //是否允许本地用户登录FTP服务器,默认是允许write_enable=YES //是否允许用户具有在F

PAM认证机制

PAM:Pluggable Authentication Modules 认证库:文本文件,MySQL,NIS,LDAP等 PAM 是关注如何为服务验证用户的API,通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开 使得系统管理员可以灵活地根据需要给不同的服务配置不 同的认证方式而无需更改服务程序 它提供了对所有服务进行认证的中央机制,适用于login,远 程登录(telnet,rlogin,fsh,ftp,点对点协议(PPP)),su等 应用程序中.系统管理员通

什么是PAM认证

PAM(Pluggable Authentication Modules )是由 Sun 提出的一种用于实现应用程序的认证机制.其核心是一套共享库,目的是提供一个框架和一套编程接口,将认证工作由程序员交给管理员,PAM 允许管理员在多种认证方法之间作出选择,它能够改变本地认证方法而不需要重新编译与认证相关的应用程序,同时也便于向系统中添加新的认证手段. PAM 最初是集成在 Solaris 中,目前已移植到其它系统中,如 Linux.SunOS.HP-UX 9.0 等,并在 Linux 中得到广

Linux -- 加强Linux服务器安全-PAM认证

PAM(Pluggable Authentication Modules)即可插拔式认证模块,它是一种高效而且灵活便利的用户级别的认证方式,它也是当前Linux服务器普遍使用的认证方式.当然,在不同版本的Linux统中部署PAM认证是有所不同的,本文将以RHEL4版本为例进行解析. 1.部署PAM认证的必要性 我们知道一台Linux服务器会开许多不同的服务,这些服务中很多服务本身并没有认证功能,只是把认证交给用户名及密码.如果这样的话,那么所有服务都用Linux系统的用户名及密码来认证,对于服务

PAM 认证机制

v PAM:Pluggable Authentication Modules ü  认证库:文本文件,MySQL ,NIS ,LDAP等 等 ü Sun 公司于1995  年开发的 一种 与 认证 相关的通用框架 机制 ü PAM 是关注如何为服务验证用户的 API, 通过提供一些动 态链接库和一套统一的API ,将系统提供的服务和该服务的 认证方式分开 ü  使得系统管理员可以灵活地根据需要给不同的服务配置不 同的认证方式而无需更改服务程序 ü  一种认证框架,自身不做认证 v  它提供了对所

PAM认证

PAM(Pluggable Authentication Modules) Sun公司于1995年开发的一种与认证相关的通用框架机制:PAM. 可插入式认证模块,是实现认证工作的一个模块. 因为每个服务都用到不同的认证方式,所以就需要不同的认证库. 认证库有文本文件,MySQL数据库,NIS ,LDAP等,这些库所对应的系统模块位于/lib64/security/目录下的所有库文件(以".so"后缀的文件). PAM是关注如何为服务验证用户的API(应用程序接口),通过提供一些动态链接

Linux中pam认证详解(下)

Linux中pam认证详解(下) 在上一篇中详细的介绍了pam的介绍.pam认证原理.pam认证构成以及pam验证控制类型,下面向大家详细介绍一下常用的pam服务模块,以及pam认证的应用. 一.常用的pam服务模块 下面是Linux提供的PAM模块列表(只是其中一部分),这其中包含模块文件.模块功能描述和相关配置文件,具体如下: pam_access 提供logdaemon风格登录控制 /etc/security/access.conf pam_chroot 提供类似chroot命令的功能 p

nsswitch&PAM认证框架

一.nsswitch概述 1.nsswitch:network/name  service  switch nsswitch网路名称服务解析是通用框架,与各种类型存储进行交互的公共模块化实现: 实现:/usr/lib64/libnss*,/lib64/libnss* 框架模块:libnss:驱动模块:libnss_files- 2.配置文件:/etc/nsswitch.conf (1)格式 为每一种用到解析库的应用通过配置定义其位置,格式======解析库: store1  store2  -=