Linux黑客技术大暴光.docx
- 文档编号:4154078
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:67
- 大小:67.96KB
Linux黑客技术大暴光.docx
《Linux黑客技术大暴光.docx》由会员分享,可在线阅读,更多相关《Linux黑客技术大暴光.docx(67页珍藏版)》请在冰豆网上搜索。
Linux黑客技术大暴光
本书讲述了linux安全的方方面面,并且以一问一答的方式介绍,思路清晰。
文中提供了很
多有益的安全提示,是Linux系统维护人员的必备参考书。
通过本书,你能了解到linux安
全的整体概念,从系统安全到应用安全,从单机安全到网络安全。
但安全问题是一个不断变
化不断更新的过程而不是一个解决方案,所以本书只是提到当时为人所发现的安全问题的介
绍,新出现的安全问题可参考该书网站的更新和网上的安全警告。
第一章linux安全问题概述
粘着位(Stickybit)
如果用户对目录有写权限,则可以删除其中的文件和子目录,即使该用户不是这些文件的所
有者,而且也没有读或写许可。
粘着位出现执行许可的位置上,用t表示,设置了该位后,
其它用户就不以删除不属于他的文件和目录。
但是该目录下的目录不继承该权限,要再设置
才可使用。
#chmod1770xxx
文件属性
chattr命令修改
lsattr命令列出文件属性
文件属性定义
A不要更新atime文件,当在笔记本电脑或NFS上限制磁盘I/0流量时,很有用,除2.0
系列外,这一属性不被其它内核支持。
a文件仅能以追加方式打开,只有root才能设置这个属性。
c文件保存在磁盘时,内核将自动压缩该文件。
d文件标记,使其不能被转储。
i文件不能被修改,删除或重命名,不能创建任何指向它的链接,并不能写入任何数据。
s删除文件时,相应的磁盘存储块清零。
S修改文件时,对其写入进行同步。
u删除文件时,保存其内容。
Ulimit命令
设置限制可以把命令加到profile文件里,也可以在/etc/security/limits.conf文件中定义
限制。
命令参数
-a显示所有限制
-ccore文件大小的上限
-d进程数据段大小的上限
-fshell所能创建的文件大小的上限
-m驻留内存大小的上限
-s堆栈大小的上限
-t每秒可占用的CPU时间上限
-p管道大小
-n打开文件数的上限
-u进程数的上限
-v虚拟内存的上限
除可用Ulimit命令设置外,也可以在/etc/security/limits.conf文件中定义限制。
dominotypeitemvalue
domino是以符号@开头的用户名或组名,*表示所有用户,type设置为hardorsoft。
item指
定想限制的资源。
如cpu,corenprocormaxlogins
。
value是相应的限制值。
信号
#kill-TERMXXXX终止信号
#kill-HUPHTTPD重读配置信号
特权端口
root用户是可绑定端口小于1024的惟一用户。
可以信任来自于远程机器端口小于1024的连
接。
第二章预防措施与从入侵中恢复
系统安全
简单的FIND命令
#find/\(-perm-02000-o-perm-4000\)-ls可以找出系统中所有的setuseridandsetgroupid
程序。
在最严格的情况下,可以去掉除/bin/su外所有已安装程序的setXid位。
系统安全扫描工具copstigerNabou
扫描检测器
黑客入侵系统前所做的第一件事就是从网络上扫描系统,扫描检测器能及时获知,是一个良
好的入侵检测系统(IDS)
KlaxonCourtneyScanlogdPortSentry
加固系统
Bastille项目创建了一组模块来加固新近发布的REDHAT。
在安装完系统后可运行该补丁,
在什么时候都可运行,不必要一定是刚安装完系统。
加固的方法是:
1、下载源代码到/root目录并解包。
以root身份动行InteractiveBastille.pl脚
本。
在回答完问题后,程序将做出相应改动。
配置完成后,该工具把其保存在BackEnd.pl
中,如果希望加固同样配置的服务器,将它复制到新服务器并运行AutomatedBastille.pl即可。
OpenwallLinux补丁
它是一个内核补丁。
要这些补丁起作用,用户必须重新编译和安装新的打上补丁的内核。
在
某些情况下,这些内核补丁和标准linux不完全兼容,因此在决定使用前必须确信理解其含
义。
LIDS
它包括内核级的端口扫描检测程序和安全警告程序。
是内核补丁(现在适用于2.2.X和2.4.X,
但以后将不再支持2.2)和系统管理工具。
其特性包括:
1、高级文件保护,甚至root也不能发现和处置受LIDS保护的文件。
2、进程保护,内核拒绝向受保护的进程发送信号(例如SIGKILL),进程也可以被完全隐
藏起来,在/proc下不会存在任何痕迹。
3、更好的访问控制,更有效地使用与特权相关的权能,包括禁止root更改这些权能。
4、内置式端口扫描检测,内置于内核的扫描程序能够检测到Nmap,SATAN等工具的绝大
部分扫描。
要安装LIDS,必须下载最新的linux内核正式版和LIDS源代码。
使用LIDS给内核打上补丁,
然后重新编译内核。
日志文件分析
syslogd消信可标记为特定的功能和级别,在/etc/syslog.conf文件中可以根据这两个选项来设
置消信的去向。
syslogd功能描述
auth安全性/验证消息(负面)
authpriv安全性/验证消息
croncronandat
daemon其它系统守护进程(sshd,xinetd,pppd等)
kern内核消息
lpr行打印系统
mail邮件子系统(sendmail,postfix,qmail等)
newsUsenet新闻消息
syslog内部syslog消息
user一般用户级消息
uucpUUCP子系统
local0-local7自定义的级别
日志级别描述
emerg系统已不可用
alert必须马上采取行动
crit危急
err错误
warning警告
notice普通但重要的情形
info通知消息
debug调试消息
syslog.conf每一行的配置格式为
facility.loglevellogtarget,所有字段用tab隔开
例子:
daemon.notice/var/log/daemon.log把程序发送过来的功能为daemon,优先级为notice
或更高级别的所有日志消息记录到/var/log/daemon.log文件中,可以使用*号表示匹配所有功
能或日志级别。
目标描述
/path/to/filename将消息附加到所指定文件的文件尾,这是最常用的情形。
@loghost写到loghost机器上的syslog服务器。
可方便把日志发来多台机器上,
|/path/to/named_pipe写到指定的命名管道(便于用外部程序过滤消息)。
user1,user2写到所列用户。
*写到所有登录用户。
/dev/console写到已命名的终端。
日志文件许可
应设置日志只为root所有和写入,同时能够被log组(或你所希望的组)读取,而其他用户
没有任何权限。
一个用户在输入用户名的地方使用了口令,在登录失败时,将会把用户名(在
此例中为口令,因为用户失误)记录到日志中。
然后创建一个属于log组的虚构用户,并让
所有日志检查程序以该用户而不是root运行。
日志检查程序不应当以root用户运行。
可以通过日志分析软件开监控日志,如logcheck,swatch和logsurfer。
但最好的工具还是管理
员自已写的脚本。
文件系统完整性检查
修改文件系统是黑客在侵入系统之后经常要做的一件事情,下面列出了经常被修改的一些文
件:
类型例子
服务器配置文件/etc/inetd.conf,/etc/ftpaccess
网络配置文件/etc/host.conf,/etc/sysconfig/network
系统配置文件/etc/ld.so.conf,/etc/nsswitch.conf
crontab/etc/cron.daily/*,/var/spool/cron/root
setuserid程序/bin/su,/bin/ping,usr/bin/chfn,/sbin/dump
setgroupid程序/sbin/netreport,/usr/bin/lpr,/usr/bin/write,/usr/bin/man
如果知道机器何时被入侵,就可以判断修改时,并了解哪些东西被修改了,例如想知道在9
月17日发生的侵入事件中被修改的所有文件,可以执行如下命令:
#touch09170000/tmp/comparison
#find/\(-newer/tmp/comparison-o-cnewer/tmp/comparison\)-ls
但记住,检查文件时间所给出的统计结果是不可靠的,touch命令可以更改任何文件的修改
时间(mtime)和访问时间(atime).
校验和
校验和是一个使用数学算法生成的字符串,可以用来判断两个文件是否相同,即使在一个文
件中只改动了一位,它们的校验和也会不同。
通常
用md5sum命令。
#md5sumxxx
文件许可
通过检查文件许可,用户可以知道修改发生的时间,并判断其行为是合法,意外还是恶意的,
同时确定其对系统的影响。
生成校验和与许可数据库
在黑客入侵系统前生成文件的校验和,下面是一个快捷的perl脚本,能够使用户生成自已
的文件许可和校验和数据库(文本)。
#!
/usr/bin/perl
useMD5;
require'find.pl';
$md5=newMD5;
@dirs=@ARGV;
for$dir(@dirs){find($dir);}
subwanted{push@files,$name;}
for$name(sort@files){
($uid,$gid)=(stat$name)[4,5];
$stat=sprintf"%0o",(stat_)[2];
unless(-f$name){
printf"$stat\t$uid$gid\t\t\t\t\t\t$name\n";
next;
}
$md5->reset();
openFILE,$nameorprint(STDERR"Can'topenfile$name\n"),next;
$md5->addfile(FILE);
closeFILE;
$checksum=$md5->hexdigest();
printf"$stat\t$uid$gid$checksum\t$name\n";
}
生成的数据库尽量不要放在本机上,要放在其它机器上或一次写多次读(CDR)的机器上。
现有的文件完整性工具TripwireAIDENabou
如何知道系统何时被黑
发现系统被入侵的方法:
1、主页变化
2、磁盘空间的急剧减少用df工具查看磁盘使用情况
3、频繁地使用网络使用netstat-na或lsof输出,检查存在什么连接
4、来自其它管理员的联系当你的机器被用于攻击其它机器时
5、混杂模式的网络接口如果黑客想嗅探系统中可用的网络服务,会把网络接口设置
为混杂模式(捕获所有的包)。
请检查ifconfig-a输出的promisc以确定接
口模式。
6、抹去/截断的日志文件检查syslog
7、被破坏的utmp/wtmp
8、系统中存在的新用户黑客通常使用与现存的用户名相近的名称以减少被发现的
机会,例如与lp近似的lpr或uucp1等。
或者
黑客方言中的名字,如t00randown3d.
9、正在运行的陌生程序
10、不能解释的CPU使用情况
11、本地用户的远程帐号被破解
12、“看起来古怪”的事情
被入侵后应采取的措施
制止损害
1、关闭所有网络接口,使黑客对系统丧失了交互行为的能力,但那些正在运行的进程仍然
2、会继续运行。
3、将系统切换到单用户模式,关闭所有正式的root进程和所有用户进程,任何剩下的进程
4、可能就来自于黑客。
3、使用未被损害的linux启动盘重启系统。
以只读模式加载系统,检查系统,以查看黑客
所动的手脚。
4、进行严重损害的控制。
破坏估计
以只读模式挂上所有分区,并记录所发现的任何事情。
1、找到可疑的文件和目录口令文件,黑客工具和任何你没有放置在系统中的目录。
这
些目录在你重启前可能是不可见的。
2、定位新的setuserid程序任何新的setXid程序(尤其是属于root的)都极有可疑。
3、检查时间戳检查黑客入侵之后发生变化的文件。
4、阅读日志文件检查所有日志文件。
5、验证校验和比较黑客入侵前后的校验和数据库。
6、验证所安装的软件包确认正确的版本,黑客可以把软件降级,以让系统使用不安
全的版本。
7、手工验证配置文件快速浏览,以确定变化,如web以root用户运行,或在
/etc/inetd.conf中出现了额外的服务器。
8、备份文件
9、特殊工具有很多工具可以帮助检查系统,最新的是组件是coronerstoolkit。
10、通知权威机构。
在线恢复
在确定了黑客行为后,有两个选择,1、堵上漏洞并对系统被篡改部份启用备份;2、重新安
装系统。
最安全的方法是完全重新安装系统。
仅仅堵上发现的漏洞并继续运行通常要快得多,但是,你可能并不能确定黑客在系统中所做
的所有事情。
黑客可留下在几个月后才发作的时间炸弹,也可能修改了系统二进制代码,使
其运行不稳定。
因此,我们建议的把黑客从系统中清除出去的最好方法如下:
1、对重要文件进行备份。
2、完全格式化所有驱动器,(这也是对系统进行任何改变的最佳时间,例如添加硬盘或改变
分区大小,要充分利用停工期的有利条件)
3、从头安装linux版本,并且只包含那此必需的东西。
4、对已安装的软件包进行完全升级。
5、生成校验和并将之保存在安全的地方。
6、对配置文件进行必要的手工修改。
不要仅仅从备份中复制这些文件,它们可能已经被改
变。
7、从备份中复制必要的文件。
8、重新检查从备份中安装的文件,确认其没有被破坏的迹像。
9、使用另一种方法计算文件系统的校验和。
10、第一次启用网络。
对于实际或觉察到的攻击,常用的对策是取消发动攻击的机器与本机通信的能力。
具体做法
有如下几种:
1、使用tcp封装器,拒绝来自黑客ip的连接。
2、使用iptables规则,退回/拒绝来自该ip地址的包。
3、创建拒绝路由表以使本机不能和相应的ip地址通信,此时,仍然可以收到来自源地址的
包,但不能响应,从而破坏相互间的通信。
4、在防火墙上创建类似的拒绝访问列表。
第三章对机器和网络踩点
在线搜索
新闻组/邮件列表搜索
internet上有很多新闻组/邮件列表或论坛,是向知识渊博的人请教问题的好地方,但也可能
在完全无意识下泄露了系统信息。
比如公司的网络拓扑结构,安全配置情况,电话号码,管
理员名字,个人信息等。
对策:
对所发贴子要再三审读,删除任何有可能被黑客利用的信息。
或使用与系统不相关的帐号发
送邮件,比如申请的免费邮箱。
whois数据库
ping扫射
ping扫射是指ping指定网络中的所有ip,如果机器正在监听ip地址,就会回应ping。
从而
就知道它处于活动状态。
有黑客通过这种方法列出所有正在运行的机器,然后决定攻击目标。
有两种不同的ping主机方法:
ICMPpingandechoping。
可以用一些工具加速ping。
其中两
个最有意义:
FpingandNmap
ICMPping方法:
源机器向目的机器发送icmpechorequest.如果目标机器正在运行,则会响
应icmpechoreply。
#ping-c3target
echoping方法:
以udportcp包连接到目标机器的回显端口(端口7),如果机器在运行状态,
该端口直接回显发送过来的信息。
#telnetecho
Fping是一个直接了当的ping工具,可以在命令行列出需要ping的机器,也可以用文件方
式
#Fping-a 如果要扫描整个网络(192.168.10.X),必须提供IP列表,在命令行用perl语句可以容量实 现。 #perl-e'for(1..254){print"192.168.10.$_\n"}'|fping-a-q2>/dev/null Nmap是一种多用途的扫描工具,内置了ping扫描功能。 #nmap-sP192.168.10.0/24 ping扫射对策 通过配置机器(iptables等)来拒绝进入的echorequest包和出去的echoreply包。 从而避免 响应icmpechorequest。 关闭本机回显服务。 在/etc/inetd.conf中注释掉以下两行 echostreamtcpnowaitrootinternal echodgramudpwaitrootinternal 再重启inetd。 dns问题 在linux上,最好的dns服务器是bind,它有几个版本,如果你是先锋派,bind9.x是最佳选择, 4.x是最稳定版本,8.x则是一个不错的过滤,大部分站点都是用这个版本。 请保持bind的 版本是最新,最为它的安全漏洞较多,而且一旦发现漏洞,就会很被黑客利用。 尽量不要在配置文件中包含hinfoandtxt信息。 区域传送 一般情况下,为了保证dns总是可以,每个域中,都有一个主dns机器,而其它都是次级dns, 每当dns区域发生变化时,次级dns机器就从主机器复制全部内容。 系统成为次级dns的方 法是在named.conf中添加如下内容: zone""{ typeslave; file"slave/"; masters{xxx.xxx.xxx.xxx}; }; 但是黑客也可以攫取区域文件(如果没有采取措施),下例给出使用host命令列出整个域中 所有NS,A和PTR记录的方法。 #host-tns #host-l 对策: 配置主名字服务器时,使之不允许除次级服务器外机器的区域传送。 在全局默认选项中设置 如下: option{ .... allow-transfer{xxx.xxx.xxx.xxx}; ... } 警告: 必须确保在主和从服务器上都禁止区域传送,因为从服务器也能接受区域传送请求。 任何XX的区域传送都会被syslog记录下来。 反解析是指从ip到域名的过程。 可以用host命令实现。 如果大量使用真实的主机名,会给 黑客知道机器的功能。 所以最好在PTR记录中使用一般的反解析名如: xxx-xxx-xxx-. 端口扫描 黑客会运行一个或多个端口扫描工具来了解目标系统提供的服务。 工具主要有 netcat,strobe,nmap(best)。 玩转nmap可以学到很多东西。 包括自已的系统,也包括网络方面。 网络漏洞扫描程序 iss,satan,Nessus 加密文件系统 CFS,TCFS,BestCrypt,PPDD,Encrypted 第四章社交工程、特洛伊木马和其他黑客伎俩 第五章物理攻击 物理攻击小结 1、不要把口令或访问ID记在别人可以看到的地方。 2、不要把电话本,组织结构图,备忘录,内部手册,会议安排或内部安全策略遗忘在容量 被阅读或偷窃的地方。 3、在丢弃打印文档,电子介质或客户数据时必须谨慎从事,把敏感材料标记为“敏感”,在 处理前粉碎敏感的文件和手册。 抹去电子介质中的数据,并且把所有的垃圾箱放置在照明状 况良好的保护区域。 4、在标记网络设施时必须谨慎。 将这些信息记录在清楚的网络图中,并将其锁起来。 5、使用好的屏幕保护程序,确保带有口令,并且在运行时隐藏屏幕内容。 将延迟时间设置 6、为合理值---在合理时间后就运行它。 6、必须离开系统时,锁定屏幕。 7、使用便携机时,必须尽可能在所有时间都将其带在身边。 对窃贼的那些把它从你身过分 8、开的诡计保持警惕。 对进入工作场所的每个便携机贴上标签,在带离时对其进行安全检查。 8、避免使用双重启动系统,linux的安全性取决于机器中安装的安全性最差的系统。 9、在启动加载时程序中设置保护口令,防止可能获得root权限的非法重启方式。 10、设置BIOS口令,以防止其被修改。 11,将所有敏感系统放在加锁的房间,以防止破坏。 12、使用好的加密文件系统可以防止那些获得系统权限的人看到机密数据。 这应当作为安全防卫的底线。 第六章网络攻击 合法的tcp标志组合 标志组合含义 SYN这是tcp连接的第一个数据包,表示希望与目标系统建立连接。 SYN|ACK目标系统通过确认原始消息和发送SYN信息来响应SYN数据包。 ACK在连接建立期间的每一个数据包都要设置其ACK位,以确认前面收到的数据 包。 FIN在连接准备关闭时,发送FIN给对方。 FIN|ACK这一组合用于确认第一个FIN包,并完成关闭步骤。 RST当系统接收到不期望的数据包时,发送RST包重置连接---例如,系统在未发出SYN 的情况下收到SYN|ACK。 ICMP类型代码 类型代码ICMP消息 0回波响应(响应PING) 3目的地址不可到达 4源终结 5重定向 8回波(PING请求) 11TTL超时 12参数问题 13请求时间戳 14响应时间戳 17地址掩码请求 18地址掩码响应 攻击错误配置的NFS导出 为了保护文件系统不被非法访问,应当让防火墙阻塞NFS,通过阻止对NFS(2049端口) 的进入连接可以做到这一点。 如果内部确实需要,确保它只导出必需的文件系统。 例如,在 允许远程加载用户主目录时,使用/home替代/。 为了验证是否正确配置了NFS,检查 /etc/exports和/etc/dfs/dfstab以确信没有以读写权限向外导出任何东西。 攻击Nestscape默认配置 SuiteSpot是一个工具用于管理web服务器,其中包含实现这一功能的javaandjavascriptcode. 它将Nestscape服务器的用户名和口令配置保存在服务根目录下的文件中,默认可被任何人 读取。 位于/web_serverroot/admin-serv/config/admpw。 在网络上使用web浏览器并将url指 向该文件,就可获得。 文件格式为user: password。 虽然这个文件是加密的,但可以对口令进 行蛮力攻击。 所以应保护admpw文件, 攻击配置错误的Squid服务器 Squid可以被错误地配置成允许外部地址作为访问内部系统的代理。 这使攻击者能够以该服 务器为代理来察
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 黑客技术 暴光