AIDE和sudo

AIDE和sudo

AIDE

AIDE可以用来检测系统文件是否被修改。

使用场景:当系统CPU利用特别高时,系统可能被种植了木马。
可能直接篡改top程序使得top程序...问题严重性不言而喻。
系统进程被杀死之后可能又会被激活进程。

解决办法:找到种植木马的主程序和系统漏洞。

比较简单处理方式:先将CPU利用率降下来
    ①先将进程杀死;然后建立一个与之同名的进程
    ②chattr  +i  filename <使文件不能在更改><文件的扩展属性>
        此方式可以临时降低CPU利用率
    ③然后在寻找木马程序和系统漏洞

当一个入侵者进入了你的系统并且种植了木马,通常会想办法来隐蔽这个木马(除了木马自身的一些隐蔽特性外,他会尽量给你检查系统的过程设置障碍,通常入侵者会修改一些文件,比如管理员通常用ps aux来查看系统进程,那么入侵者很可能用自己经过修改的ps程序来替换掉你系统上的ps程序,以使用ps命令查不到正在运行的木马程序。如果入侵者发现管理员正在运crontab作业,也有可能替换掉crontab程序等等。**由此可以看出对于系统文件或是关键文件的检查是很必要的。**目前就系统完整性检查的工具用的比较多的有两款:Tripwire和AIDE,前者是一款商业软件,后者是一款免费的但功能也很强大的工具。

AIDE

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

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

这个数据库不应该保存那些经常变动的文件信息,例如:日志文件、邮件、/proc文件系统、用户起始目录以及临时目录。AIDE保存经常不变的文件的属性。

在这里插入图片描述

样本库:原本文件的各种属性 ==> 数据库

AIDE 软件相关

(1) AIDE安装 --base源

  • yum install aide
  • 官方站点:http://sourceforge.net/projects/aide
软件包分析
~]# rpm -ql aide
/etc/aide.conf 配置文件  ==> 定义aide监控规则的文件(一般为不变的文件)
/usr/sbin/aide aide的主程序 将监控的文件的属性信息存放在数据库中
/var/lib/aide 样本数据库存放目录   
    定期人为的通过/var/lib/aide此工具将样本库中信息与现在文件的属性对比
/var/log/aide aide日志

(2)aide配置文件 /etc/aide.conf

配置文件分析:
example:    @@define DBDIR /var/lib/aide
    DBDIR = /var/lib/aide 样本库存放路径

database=file:@@{DBDIR}/aide.db.gz 样本数据库名称aide.db.gz

database_out=file:@@{DBDIR}/aide.db.new.gz 表示当定义完规则以
后,默认搜索定义的规则中监控的文件的属性生成一个新数据库文件,此时输
出的新的样本库文件

    但是样本库与当前文件比较的样本库为:aide.db.gz
因此比较时可能涉及到改名的问题。

监控的文件相关属性:
#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)

FIPSR = p+i+n+u+g+s+m+c+acl+selinux+xattrs+sha256
    DIPSR = 这些属性的集合
可以自己定义,属性的集合还可以相互引用。

监控范例:
/boot/   CONTENT_EX
/bin/    CONTENT_EX
/sbin/   CONTENT_EX
/lib/    CONTENT_EX
/lib64/  CONTENT_EX   <监控整个目录>

!/var/log/aide.log !表示不监控

(3) 监控规则即监控的文件定义完成之后,初始化默认的AIDE库:

  • /usr/local/bin/aide --init

(4)生成检查数据库(建议初始数据库存放到安全的地方)

  • cd /var/lib/aide
  • mv aide.db.new.gz aide.db.gz <将生成的文件导入样本库>
  • 比较时拿aide.db.gz这个文件作为样本库与现有文件对比

(5)检测:

  • /usr/local/bin/aide --check

(6)更新数据库

  • aide --update
    <生成新的aide.db.new.gz此文件>

(7)汇总:aide工具可以监控那些不常变化的但是重要的文件,结合计划任务比较合理。若有文件异常及时发送邮件。

sudo (superuser do)

sudo是用来切换用户身份的一种授权机制。有时希望普通用户具有一些管理性的任务时(但不让它切换root),可以采取sudo授权。

(1)sudo安装包:

  • 来自sudo包,man 5 sudoers <默认安装>
~]# rpm -ql sudo
/etc/sudoers sudo的主配置文件 定义授权规则 
/etc/sudoers.d/ 将定义规则放在此文件中,便于管理,也可以
/usr/bin/sudo 被授权的命令需要此程序来获取授权
    sudo执行命令时第一次默认需要输入口令验证,然后此口令有效期由时
    间限制

/var/db/sudo:时间戳文件
/var/log/secure: 日志文件 <此文件不属于sudo包>

(2)配置文件:定义授权规则

  • 最小授权原则
  • …/*的有bug
  • 授权命令时必须写命令绝对路径
  • 避免vim 直接修改造成文件破坏,visudo [-f] filename
    使用命令修改带有语法检查功能
    visudo 默认打开的是/etc/sudoers
    visudo -f /etc/sudoers.d/filename


    注意:visudo默认调用vi
    export EDITOR=vim 默认以vim打开
/etc/sudoers 的范例
root ALL=(ALL) ALL --> 当root的uid被篡改时,root用户仍然可以以
uid为0的用户用sudo 形式实现管理。
    直接 sudo -i 输入root口令,直接切换至管理员

授权规则的格式:
授权哪个用户  执行授权命令的哪些主机=(代表的用户) 授权哪些命令
users hosts=(runas) commands

示例:对user1用户 授权 挂载光盘命令
visudo -f  /etc/sudoers.d/test     
user1 ALL=(root) /bin/mount /dev/cdrom /mnt/

然后:切换user1 用户 使用sudo -l可查看自己被授权操作
[user1@ ..]$ sudo mount /dev/cdrom /mnt/ 
    注意:此后挂载的目录/mnt/只能以这种方式出现:/mnt 未被授权哦
配置文件编写:

1)配置文件支持使用通配符glob
?       任意单一字符
*       匹配任意长度字符
[wxc]   匹配其中一个字符
[!wxc]  除了这三个字符的其它字符
\x      转义

2)配置文件规则有两类
    ①别名定义:不是必须的
    ②授权规则:必须的

3)授权哪个用户  在哪些主机执行授权命令=(代表的用户) 授权命令
User和runas: 
    username
    #uid
    %group_name
    %#gid
    user_alias|runas_alias
host:
    ip或hostname
    network(/netmask)
    host_alias
command:
    command name
    directory
    sudoedit  授权可以编辑授权文件,危险授权
    Cmnd_Alias

4)别名:
别名有四种类型:User_Alias,Runas_Alias,Host_Alias,Cmnd_Alias
别名格式:[A-Z]([A-Z] [0-9]_)*  大写开头,大写数字下划线
    Alias_Type NAME1 = item1,item2,item3

5)注意: 通配符的*结尾时,注意授权漏洞
user1 ALL=(ALL) /bin/cat /var/log/messages*
    此时user用户执行:
    [user1@ ..]$ sudo cat /var/log/messages /etc/shadow

帮助文档<说明>:man sudoers  搜:/messages

6)授权执行的结果:
user1 ALL=(root) /bin/touch /data/*,!/bin/touch /data/* * 
    [user1@ ..]$ sudo touch /data/f1.txt
        创建文件的所有者所属组均为root(即你所代表的那个用户)

7)授权user1用户具有用户管理权限:不能使其具有修改root口令权限 -->!
user1 ALL=(root),/usr/sbin/usermod, /usr/bin/passwd [a-zA-Z]*, !/usr/bin/passwd root

8)授权可以编辑授权文件:危险授权
user1 ALL= sudoedit 
    不是直接vi 或者 vim 修改
    [user1@ ..]$ sudoedit 直接执行此文件可以修改授权文件

9)使用 ! 修复...* 的漏洞授权
    user1 ALL=(root) /bin/touch /data/*,!/bin/touch /data/* *

10)NOPASSWD:不希望用户输入口令验证时。
users hosts=(runas) NOPASSWD:commands

11)Defaults:user1 runas_default=tom
user1 ALL=(tom,jerry) ALL
    大多数时user1均代表tom用户,定义user1默认代表的用户
    省略写-u选项

(3)sudo命令

  • ll /usr/bin/sudo
    —s–x--x. 1 root root 147392 Oct 31 2018 /usr/bin/sudo

  • sudo –i –u user切换身份
    切换身份时输入自己的口令

  • sudo [-u user] COMMAND
    -V 显示版本信息等配置信息
    -u user 默认为root
    -l,ll 列出用户在主机上可用的和被禁止的命令
    -v 再延长密码有效期限5分钟,更新时间戳
    -k 清除时间戳(1970-01-01),下次需要重新输密码
    -K 与-k类似,还要删除时间戳文件
    -b 在后台执行指令
    -p 改变询问密码的提示符号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值