一、AIDE的作用
AIDE(Adevanced Intrusion Detection Environment) 高级非法***检测环境,是一个检测工具,主要用途是检查文件的完整性,当一个非法用户者进入了你的系统并且种植了病毒,通常会想办法来隐蔽这个病毒(除了自身的一些隐蔽特性外,他会尽量给你检查系统的过程设置障碍),通常会修改一些文件,比如管理员通常用ps -aux 来查看系统进程,那么很可能用自己经过修改的ps程序来替换掉你系统上的ps程序,以使用ps命令查不到正在运行的病毒程序。如果发现管理员正在运行crontab作业,也有可能替换掉crontab程序等,AIDE是一款免费的但功能也很强大的工具,主要就是审计计算机上的哪些文件被更改过。
AIDE能够构造一个指定文件的数据库,它使用aide.conf作为其配置文件。 AIDE数据库能够保存文件的各种属性,包括:权限(permission)、索引节点 序号(inode number)、所属用户(user)、所属用户组(group)、文件大小、最 后修改时间(mtime)、创建时间(ctime)、最后访问时间(atime)、增加的大小 以及连接数。AIDE还能够使用下列算法:sha1、md5、rmd160、tiger,以密 文形式建立每个文件的校验码或散列号。
注:rpm -V 也可以查看文件的修改状况,但是查看的信息不如AIDE的详细,且rpm -V 只能查看rpm包的信息。
二、安装AIDE
1、AIDE系统默认未被安装,需要通过手动安装:yum install aide
2、修改配置文件:vim /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
在配置文件中添加一条策略:策略名=默认规则 ,如下图。
为需要检测的文件添加该策略:文件名 策略名;若是某些文件不需要检测需要在前加!,如下图:!/usr/src
3、在/app目录下做一些修改操作后:aide --init/aide -i生成数据库(/var/lib/aide下)。
4、查看文件做了哪些修改操作 ,在该实验中提前修改/app/file1、file2、file3的数据:aide -C进行校验不同,查看修改的信息,会发现只显示file1和file2的数据发生了改变,而file3的数据更改后未被提示,这是因为在aide.conf文件中设置成不检测该文件。
更新数据库,会重新生成一会数据库,但结果不会覆盖原数据:aide -u 需要手动修改。
三、sudo
sudo系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具。减少root用户的登录和管理时间,同时也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用sudo,会提示x联系管理员。sudo可以提供日志,记录每个用户使用sudo操作。sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机 。
通过visudo命令编辑主配置文件,且具有语法检查功能 。
visudo与vim的不同的是其具备语法检测功能,但是不像vim有色彩功能,可以后续操作使其具备颜色。永久生效可以写如/etc/profile.d/下,soucre该文件。具体如下图操作。
当提示语法出错时,可输入e进入编辑模式。
主配置文件:/etc/sudoers 子配置文件:/etc/sudoers.d/
时间戳文件:/var/db/sudo
日志文件:/var/log/secure
配置文件支持使用通配符glob:
?:任意单一字符
* :匹配任意长度字符(不能匹配空)
[wxc]:匹配其中一个字符
[!wxc]:除了这三个字符的其它字符
\x : 转义 [[alpha]] :字母 示例: /bin/ls [[alpha]]*
配置文件规则有两类:1、别名定义:不是必须的
2、授权规则:必须的
规定的授权格式;用户 登入主机=(代表用户) 命令
注:登陆主机也可以是ip地址,且授权的命令必须是绝对路径,因为只要是命令写入文件里必须是绝对路径,脚本除外。另授权时大的权限要写在前,禁大的权限中的某些权限卸载其后。在匹配字符时*可以匹配任意字符但不包括空字符。
eg:解析ip地址、主机名
测试:新添一用户,使用普通用户liubei操作。如下图。
为用户授权一定要注意排错,因为不注意的话很可能会成为第二个root,下图所示就是一个因授权而产生的bug。
所以最好不要写太多选项,直接写要禁的内容。
别名规则
如果需要授权的用户/主机/命令较多,可以直接定义一个别名,写授权策略时可以直接引用
Users和runas: username /#uid/%group_name/ %#gid user_alias|runas_alias
host: ip或hostname /network(/netmask) /host_alias
command: command name directory sudoedit Cmnd_Alias
eg:设置用户别名(别名必须大写)
visudo通常都会把授权规则写在主配置文件,此为也可以直接vim /etc/sudoers.d/*或visudo -f,使用授权规则时需要输入用户密码。
5分钟“入场券”
sudo使用时间戳文件来完成类似“检票”的系统,默认存活期为5分钟的“入场券”5分钟一过需要重新输入密码验证身份。
默认“票”的存放路经/var/run/sudo/ts,下图操作先修改时间戳,在5分钟内时免密码可执行其相应的授权操作,时间超过需再次输入密码。
普通用户在下次执行所授权限时强制输入密码:sudo -k
删除"5分钟入场券"文件,强制再次使用输入密码:sudo -K
查看详细信息:sudo - V
给“5分钟入场卷“重新计时:sudo -v
sudo操作默认都是root身份执行,仿冒别的用户身份进行操作:sudo -u username,具体操作如下图。
TCP_Wrappers
默认工作在第四层(传输层)的TCP协议 ,对有状态连接的特定服务进行安全检测并实现访问控制;以库文件形式实现;某进程是否接受libwrap的控制取决于发起此进程的程序在编译时是否针对libwrap进行编译的。
判断服务程序是否能够由tcp_wrapper进行访问控制的方法:
ldd /PATH/TO/PROGRAM|grep libwrap.so ldd读取二进制文件内容
strings PATH/TO/PROGRAM|grep libwrap.so strings读取明文内容
eg:
查看二进制服务名如下图。
TCP_Wrappers的使用
默认存在两个配置文件:/etc/hosts.allow /etc/hosts.deny
检查顺序先读hosts.allow,再读hosts.deny(默认允许)
注意:一旦前面规则匹配,直接生效,将不再继续
来波实验操作:以ftp服务段/客服端,在黑名单中禁掉主机地址为192.168.219.135的访问。
在客户机中访问ftp服务器会出现如下图的情况。
在白名单中也可以添加拒绝的服务,如果同一条规则分别写入白名单和黑名单默认执行的时黑名单中的内容。
在白名单中下方图中的规则表示在192.168网段除了192.168.219.135地址拒绝所有主机的访问
– 在/etc/hosts.allow中添加,允许登录,并记录日志
– 在/etc/hosts.deny中添加,拒绝登录,并记录日志
– %c 客户端信息
– %s 服务器端信息
– %d 服务名
– %p 守护进程的PID
另:spawn写到allow表示允许写到deny表示拒绝
twist实际动作是拒绝访问,使用指定的操作替换当前服务,标准I/O和 ERROR发送到客户端,默认至/dev/null