在平时的工作环境中,网络中不时有搞怪man去搞一些破坏,如修改我们的二进制程序,洪水攻击等等,当我们遇到这些问题我们如何去解决它呢?
当一个入侵者进入了你的系统并且种植了木马,通常会想办法来隐蔽这个木马(除了木马自身的一些隐蔽特性外,他会尽量给你检查系统的过程设置障碍),通常入侵者会修改一些文件,比如管理员通常用ps -aux来查看系统进程,那么入侵者很可能用自己经过修改的ps程序来替换掉你系统上的ps程序,以使用ps命令查不到正在运行的木马程序。如果入侵者发现管理员正在运行crontab作业,也有可能替换掉crontab程序等等。所以由此可以看出对于系统文件或是关键文件的检查是很必要的。目前就系统完整性检查的工具用的比较多的有两款:Tripwire和AIDE,前者是一款商业软件,后者是一款免费的但功能也很强大的工具。
AIDE(Adevanced Intrusion Detection Environment)高级入侵检测环境)是一个入侵检测工具,主要用途是检查文件的完整性,审计计算机上的那些文件被更改过了。
AIDE能够构造一个指定文件的数据库,它使用aide.conf作为其配置文件。AIDE数据库能够保存文件的各种属性,包括:权限(permission)、索引节点序号(inode number)、所属用户(user)、所属用户组(group)、文件大小、最后修改时间(mtime)、创建时间(ctime)、最后访问时间(atime)、增加的大小以及连接数。AIDE还能够使用下列算法:sha1、md5、rmd160、tiger,以密文形式建立每个文件的校验码或散列号。
建议:这个数据库不应该保存那些经常变动的文件信息,例如:日志文件、邮件、/proc文件系统、用户起始目录以及临时目录。
[root@centos6~]#yum install -y aide
/etc/aide.conf
The location of the database to be read. aide检查是从下面的文件中读取
database=/var/lib/aide/aide.db.gz
The location of the database to be written.aide更新数据库是写到下面文件中
database_out=/var/lib/aide/aide.db.new.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 |
定义检测属性时可以组合定义,相当于alias作用。
选项 | 解释 |
---|---|
-i,–init | 初始化数据库 |
-C,–check | 检查数据库 |
-u,–update | 更新数据库 |
初始化数据库:
[root@centos6~]#aide --init
查看/var/lib/aide/
目录下是否生成数据库
检查数据库时,必须把命令该为aide.db.gz
才能检查数据库。
[root@centos6/var/lib/aide]#mv aide.db.new.gz aide.db.gz
[root@centos6~]#aide -C
更新数据库
[root@centos6~]#aide -u
在生产环境中,一个人的力量总是不够的,我们可以把一些任务分配别的人员协同操作,这样办事效率也提高了。但是我们又不想把所有的权限都分给小伙伴,所以sudo就解决了这样一个问题。sudo能够授权指定用户在指定主机上运行某些命令;如果未授权用户使用sudo尝试登录,会提示管理员。这样方便了我们的管理。
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。<摘自:百度>
(1)提供日志,记录每个用户使用sudo操作
(2)为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。
(3)sudo提供用户一个使用时长,相当于“入场券”,如果超时,重新登录。默认为5分钟(如果想修改,只能自己编译安装时候修改)。
(4)sudo提供专门的修改文件工具visudo,默认是vi界面,如果想使用vim功能,可以自定环境变量“export EDORIT=vim”
。
(5)自己创建文件的权限为440,如果你忘记修改权限,visudo命令可以自动修改完成。
(6)修改配置文件是同时打开一个,不能打开多个。并且配置文件不建议直接去修改。
/etc/sudoers/
和/etc/sudoers.d/*
(1)配置文件支持使用通配符
字符 | 含义 |
---|---|
? | 任意单个字符 |
* | 匹配任意长度 |
[] | 匹配单个字符 |
[!] | 除了的任意字符 |
| | 支持转义 |
(2)授权规则格式
用户 登入主机=(代表用户) 命令
选项 | 说明 |
---|---|
user | 运行命令着的身份 |
host | 通过哪些主机 |
(runas) | 以哪个用户身份运行 |
command | 运行哪些命令 |
user和runas格式
username
#uid
%group_name
%#group_name
User_Alias
Runas_Alias
host
ip或hostname
network
network/prefix(只有CentOS7支持)
Host_Alias
command
commandName
directory
sudoedit 可以对文件`/etc/sudoers`修改
CMD_Alias
注意:这里的命令一定要与执行的命令精确匹配,否则不成功。别名定义一定要大写字母开头,构成只能有字母和数字。
(3)别名
格式:Alias_Type NAME1 = item1, item2, item3 : NAME2 = item4, item5
注意:不同的别名之间需要使用冒号隔开。%wheel是一个组,权限和root一样,使用时一定要小心。如果在添加NOPASSWD不提供口令直接登录。sudo使用时登录需要认证,但是此时认证时运行者的口令。
时间戳文件/var/db/sudo/
日志文件/var/log/secure
(4)设定默认值defaults
示例:Defaults:laowang runas_default=tom
格式:sudo [-u user] COMMAND
选项 | 解释 |
---|
|-u|指定用户,默认root|
|-l|列出用户在主机上可用的和被禁止的命令|
|-v|再延长有效期5分钟,更新时间戳|
|-k|清除时间戳(197–01-01),西祠需要重新输入密码|
|-K|与-k类似,但还要删除时间戳文件|
|-b|在后台执行|
|-p|改变询问密码的提示符号 %p代表用户|
|-V|显示版本信息等配置信息|
注意:在sudoers文件中,如果定义文件后面添加“*”表示所有,即这个文件后面可以添加任意字符 ,言外之意,就是可以看到别的文件。
Transmission Control Protocol (TCP) Wrappers 为由 inetd 生成的服务提供了增强的安全性。TCP Wrappers 是一种对使用 /etc/inetd.sec 的替换方法。TCP Wrappers 提供防止主机名和主机地址欺骗的保护。欺骗是一种伪装成有效用户或主机以获得对系统进行未经授权的访问的方法。
(1)工作在第四层的TCP协议
(2)对有状态的特定服务进行安全检测并实现访问控制
(3)以库文件形式实现
(4)其进程是否接受libwrap的控制取决于发起此进程的程序在编译时是否针对libwrap进行编译的。
(1)先使用命令查看执行程序文件是哪个
which COMMAND
(2)使用命令ldd 对上述文件查找
ldd
which COMMAND|grep libwrap
1、配置文件
/etc/hosts.allow
和/etc/hosts.deny
2、检查顺序
在tcp_wrappers中检查顺序并不像前面的服务一样,前面的成功后面的就不再执行。而tcp_wrappers的检查顺序为
/etc/hosts.allow
–>/etc/hosts.deny
前面的规则一旦匹配成功,直接生效,将不再继续后面的执行;如果前面的没有成功,则继续向后执行。
3、基本语法
damon_list@host:client_list [:option:option…]
damon_list格式:
(1)单个应用程序的二进制文件名,而非服务名
(2)以逗号或空格分隔的应用程序文件名列表
(3)ALL 表示所有接受tcp_wrappers控制的服务程序
(4)主机有多个IP ,可用@hostIP来实现
如:[email protected]
client_host格式:
(1)以逗号或空格分隔的客户端列表
(2)基于IP地址
(3)基于主机名
(4)基于网络/掩码 192.168.159.0/255.255.255.0
(5)基于CIDR格式 192.168.159.0/24
(6)基于网络组 @munetwork
(7)内置ACL:ALL,LOCAL,KNOWN,UNKNOWN,PARANOID
expect用法