1、本书讲述了linux安全的方方面面,并且以一问一答的方式介绍,思路清晰。文中提供了很多有益的安全提示,是Linux系统维护人员的必备参考书。通过本书,你能了解到linux安全的整体概念,从系统安全到应用安全,从单机安全到网络安全。但安全问题是一个不断变化不断更新的过程而不是一个解决方案,所以本书只是提到当时为人所发现的安全问题的介绍,新出现的安全问题可参考该书网站的更新和网上的安全警告。第一章 linux安全问题概述 粘着位(Sticky bit)如果用户对目录有写权限,则可以删除其中的文件和子目录,即使该用户不是这些文件的所有者,而且也没有读或写许可。粘着位出现执行许可的位置上,用t表示,设
2、置了该位后,其它用户就不以删除不属于他的文件和目录。但是该目录下的目录不继承该权限,要再设置才可使用。# chmod 1770 xxx 文件属性chattr命令修改lsattr命令列出文件属性文件属性定义A 不要更新atime文件,当在笔记本电脑或NFS上限制磁盘I/0流量时,很有用,除2.0系列外,这一属性不被其它内核支持。a 文件仅能以追加方式打开,只有root才能设置这个属性。c 文件保存在磁盘时,内核将自动压缩该文件。d 文件标记,使其不能被转储。i 文件不能被修改,删除或重命名,不能创建任何指向它的链接,并不能写入任何数据。s 删除文件时,相应的磁盘存储块清零。S 修改文件时,对其写
3、入进行同步。u 删除文件时,保存其内容。 Ulimit命令设置限制 可以把命令加到profile文件里,也可以在/etc/security/limits.conf文件中定义限制。命令参数-a 显示所有限制-c core文件大小的上限-d 进程数据段大小的上限-f shell所能创建的文件大小的上限-m 驻留内存大小的上限-s 堆栈大小的上限-t 每秒可占用的CPU时间上限-p 管道大小-n 打开文件数的上限-u 进程数的上限-v 虚拟内存的上限除可用Ulimit命令设置外,也可以在/etc/security/limits.conf文件中定义限制。domino type item valuedo
4、mino是以符号开头的用户名或组名,*表示所有用户,type设置为hard or soft。item指定想限制的资源。如cpu,core nproc or maxlogins。value是相应的限制值。 信号# kill -TERM XXXX 终止信号# kill -HUP HTTPD 重读配置信号 特权端口root用户是可绑定端口小于1024的惟一用户。可以信任来自于远程机器端口小于1024的连接。第二章 预防措施与从入侵中恢复 系统安全简单的FIND命令 # find / (-perm -02000 -o -perm -4000 ) -ls 可以找出系统中所有的setuserid and
5、setgroupid程序。在最严格的情况下,可以去掉除/bin/su外所有已安装程序的setXid位。系统安全扫描工具 cops tiger Nabou 扫描检测器黑客入侵系统前所做的第一件事就是从网络上扫描系统,扫描检测器能及时获知,是一个良好的入侵检测系统(IDS)Klaxon Courtney Scanlogd PortSentry 加固系统Bastille项目创建了一组模块来加固新近发布的REDHAT。在安装完系统后可运行该补丁,在什么时候都可运行,不必要一定是刚安装完系统。加固的方法是:1、下载源代码到/root目录并解包。以root身份动行InteractiveBastille.p
6、l脚本。在回答完问题后,程序将做出相应改动。配置完成后,该工具把其保存在BackEnd.pl中,如果希望加固同样配置的服务器,将它复制到新服务器并运行AutomatedBastille.pl即可。Openwall Linux补丁它是一个内核补丁。要这些补丁起作用,用户必须重新编译和安装新的打上补丁的内核。在某些情况下,这些内核补丁和标准linux不完全兼容,因此在决定使用前必须确信理解其含义。LIDS它包括内核级的端口扫描检测程序和安全警告程序。是内核补丁(现在适用于2.2.X和2.4.X,但以后将不再支持2.2)和系统管理工具。其特性包括:1、高级文件保护,甚至root也不能发现和处置受LI
7、DS保护的文件。2、进程保护,内核拒绝向受保护的进程发送信号(例如SIGKILL),进程也可以被完全隐藏起来,在/proc下不会存在任何痕迹。3、更好的访问控制,更有效地使用与特权相关的权能,包括禁止root更改这些权能。4、内置式端口扫描检测,内置于内核的扫描程序能够检测到Nmap,SATAN等工具的绝大部分扫描。要安装LIDS,必须下载最新的linux内核正式版和LIDS源代码。使用LIDS给内核打上补丁,然后重新编译内核。 日志文件分析syslogd消信可标记为特定的功能和级别,在/etc/syslog.conf文件中可以根据这两个选项来设置消信的去向。syslogd功能 描述auth
8、安全性/验证消息(负面)authpriv 安全性/验证消息cron cron and atdaemon 其它系统守护进程(sshd,xinetd,pppd等)kern 内核消息lpr 行打印系统mail 邮件子系统(sendmail,postfix,qmail等)news Usenet新闻消息syslog 内部syslog消息user 一般用户级消息uucp UUCP子系统local0-local7 自定义的级别日志级别 描述emerg 系统已不可用alert 必须马上采取行动crit 危急err 错误warning 警告notice 普通但重要的情形info 通知消息debug 调试消息sy
9、slog.conf每一行的配置格式为facility.loglevel logtarget,所有字段用tab隔开例子:daemon.notice /var/log/daemon.log 把程序发送过来的功能为daemon,优先级为notice或更高级别的所有日志消息记录到/var/log/daemon.log文件中,可以使用*号表示匹配所有功能或日志级别。目标 描述/path/to/filename 将消息附加到所指定文件的文件尾,这是最常用的情形。loghost 写到loghost机器上的syslog服务器。可方便把日志发来多台机器上,|/path/to/named_pipe 写到指定的命名
10、管道(便于用外部程序过滤消息)。user1,user2 写到所列用户。* 写到所有登录用户。/dev/console 写到已命名的终端。 日志文件许可应设置日志只为root所有和写入,同时能够被log组(或你所希望的组)读取,而其他用户没有任何权限。一个用户在输入用户名的地方使用了口令,在登录失败时,将会把用户名(在此例中为口令,因为用户失误)记录到日志中。然后创建一个属于log组的虚构用户,并让所有日志检查程序以该用户而不是root运行。日志检查程序不应当以root用户运行。可以通过日志分析软件开监控日志,如logcheck,swatch和logsurfer。但最好的工具还是管理员自已写的脚
11、本。 文件系统完整性检查修改文件系统是黑客在侵入系统之后经常要做的一件事情,下面列出了经常被修改的一些文件:类型 例子服务器配置文件 /etc/inetd.conf,/etc/ftpaccess网络配置文件 /etc/host.conf,/etc/sysconfig/network系统配置文件 /etc/ld.so.conf,/etc/nsswitch.confcrontab /etc/cron.daily/*,/var/spool/cron/rootsetuserid程序 /bin/su,/bin/ping,usr/bin/chfn,/sbin/dumpsetgroupid程序 /sbin/
12、netreport,/usr/bin/lpr,/usr/bin/write,/usr/bin/man如果知道机器何时被入侵,就可以判断修改时,并了解哪些东西被修改了,例如想知道在9月17日发生的侵入事件中被修改的所有文件,可以执行如下命令:# touch 09170000 /tmp/comparison# find / ( -newer /tmp/comparison -o -cnewer /tmp/comparison ) -ls但记住,检查文件时间所给出的统计结果是不可靠的,touch命令可以更改任何文件的修改时间(mtime)和访问时间(atime). 校验和校验和是一个使用数学算法生成
13、的字符串,可以用来判断两个文件是否相同,即使在一个文件中只改动了一位,它们的校验和也会不同。通常用md5sum命令。# md5sum xxx 文件许可通过检查文件许可,用户可以知道修改发生的时间,并判断其行为是合法,意外还是恶意的,同时确定其对系统的影响。 生成校验和与许可数据库在黑客入侵系统前生成文件的校验和,下面是一个快捷的perl脚本,能够使用户生成自已的文件许可和校验和数据库(文本)。#!/usr/bin/perluse MD5;require find.pl;$md5 = new MD5;dirs = ARGV;for $dir ( dirs ) find($dir);sub wan
14、ted push files,$name;for $name ( sort files ) ($uid,$gid) = (stat $name)4,5; $stat = sprintf %0o,(stat _)2; unless ( -f $name ) printf $statt$uid $gidtttttt$namen; next; $md5-reset(); open FILE,$name or print(STDERR Cant open file $namen),next; $md5-addfile(FILE); close FILE; $checksum = $md5-hexdig
15、est(); printf $statt$uid $gid $checksumt$namen;生成的数据库尽量不要放在本机上,要放在其它机器上或一次写多次读(CDR)的机器上。现有的文件完整性工具 Tripwire AIDE Nabou 如何知道系统何时被黑发现系统被入侵的方法:1、主页变化2、磁盘空间的急剧减少 用df工具查看磁盘使用情况3、频繁地使用网络 使用netstat -na 或lsof输出,检查存在什么连接4、来自其它管理员的联系 当你的机器被用于攻击其它机器时5、混杂模式的网络接口 如果黑客想嗅探系统中可用的网络服务,会把网络接口设置为混杂模式(捕获所有的包)。请检查 ifcon
16、fig -a输出的promisc以确定接口模式。6、抹去/截断的日志文件 检查syslog7、被破坏的utmp/wtmp 8、系统中存在的新用户 黑客通常使用与现存的用户名相近的名称以减少被发现的机会,例如与lp近似的lpr或uucp1等。或者黑客方言中的名字,如t00r and own3d.9、正在运行的陌生程序 10、不能解释的CPU使用情况 11、本地用户的远程帐号被破解12、“看起来古怪”的事情 被入侵后应采取的措施制止损害1、 关闭所有网络接口,使黑客对系统丧失了交互行为的能力,但那些正在运行的进程仍然2、 会继续运行。3、 将系统切换到单用户模式,关闭所有正式的root进程和所有用
17、户进程,任何剩下的进程4、 可能就来自于黑客。3、使用未被损害的linux启动盘重启系统。以只读模式加载系统,检查系统,以查看黑客所动的手脚。4、进行严重损害的控制。 破坏估计以只读模式挂上所有分区,并记录所发现的任何事情。1、找到可疑的文件和目录 口令文件,黑客工具和任何你没有放置在系统中的目录。这些目录在你重启前可能是不可见的。2、定位新的setuserid程序 任何新的setXid程序(尤其是属于root的)都极有可疑。3、检查时间戳 检查黑客入侵之后发生变化的文件。4、阅读日志文件 检查所有日志文件。5、验证校验和 比较黑客入侵前后的校验和数据库。6、验证所安装的软件包 确认正确的版本
18、,黑客可以把软件降级,以让系统使用不安全的版本。7、手工验证配置文件 快速浏览,以确定变化,如web以root用户运行,或在/etc/inetd.conf中出现了额外的服务器。8、备份文件 9、特殊工具 有很多工具可以帮助检查系统,最新的是组件是coroners toolkit。10、通知权威机构。 在线恢复在确定了黑客行为后,有两个选择,1、堵上漏洞并对系统被篡改部份启用备份;2、重新安装系统。最安全的方法是完全重新安装系统。仅仅堵上发现的漏洞并继续运行通常要快得多,但是,你可能并不能确定黑客在系统中所做的所有事情。黑客可留下在几个月后才发作的时间炸弹,也可能修改了系统二进制代码,使其运行不
19、稳定。因此,我们建议的把黑客从系统中清除出去的最好方法如下:1、对重要文件进行备份。2、完全格式化所有驱动器,(这也是对系统进行任何改变的最佳时间,例如添加硬盘或改变分区大小,要充分利用停工期的有利条件)3、从头安装linux版本,并且只包含那此必需的东西。4、对已安装的软件包进行完全升级。5、生成校验和并将之保存在安全的地方。6、对配置文件进行必要的手工修改。不要仅仅从备份中复制这些文件,它们可能已经被改变。7、从备份中复制必要的文件。8、重新检查从备份中安装的文件,确认其没有被破坏的迹像。9、使用另一种方法计算文件系统的校验和。10、第一次启用网络。对于实际或觉察到的攻击,常用的对策是取消
20、发动攻击的机器与本机通信的能力。具体做法有如下几种:1、使用tcp封装器,拒绝来自黑客ip的连接。2、使用iptables规则,退回/拒绝来自该ip地址的包。3、创建拒绝路由表以使本机不能和相应的ip地址通信,此时,仍然可以收到来自源地址的包,但不能响应,从而破坏相互间的通信。4、在防火墙上创建类似的拒绝访问列表。第三章 对机器和网络踩点 在线搜索新闻组/邮件列表搜索internet上有很多新闻组/邮件列表或论坛,是向知识渊博的人请教问题的好地方,但也可能在完全无意识下泄露了系统信息。比如公司的网络拓扑结构,安全配置情况,电话号码,管理员名字,个人信息等。对策:对所发贴子要再三审读,删除任何有
21、可能被黑客利用的信息。或使用与系统不相关的帐号发送邮件,比如申请的免费邮箱。whois数据库 ping扫射ping扫射是指ping指定网络中的所有ip,如果机器正在监听ip地址,就会回应ping。从而就知道它处于活动状态。有黑客通过这种方法列出所有正在运行的机器,然后决定攻击目标。有两种不同的ping主机方法:ICMP ping and echo ping。可以用一些工具加速ping。其中两个最有意义:Fping and NmapICMP ping方法:源机器向目的机器发送icmp echo request.如果目标机器正在运行,则会响应icmp echo reply。# ping -c 3
22、targetecho ping方法:以udp or tcp包连接到目标机器的回显端口(端口7),如果机器在运行状态,该端口直接回显发送过来的信息。# telnet echoFping是一个直接了当的ping工具,可以在命令行列出需要ping的机器,也可以用文件方式# Fping -a /dev/nullNmap是一种多用途的扫描工具,内置了ping扫描功能。# nmap -sP 192.168.10.0/24ping扫射对策通过配置机器(iptables等)来拒绝进入的echo request包和出去的echo reply包。从而避免响应icmp echo request。关闭本机回显服务。在
23、/etc/inetd.conf中注释掉以下两行echo stream tcp nowait root internalecho dgram udp wait root internal再重启inetd。 dns问题在linux上,最好的dns服务器是bind,它有几个版本,如果你是先锋派,bind9.x是最佳选择,4.x是最稳定版本,8.x则是一个不错的过滤,大部分站点都是用这个版本。请保持bind的版本是最新,最为它的安全漏洞较多,而且一旦发现漏洞,就会很被黑客利用。尽量不要在配置文件中包含hinfo and txt信息。 区域传送一般情况下,为了保证dns总是可以,每个域中,都有一个主dn
24、s机器,而其它都是次级dns,每当dns区域发生变化时,次级dns机器就从主机器复制全部内容。系统成为次级dns的方法是在named.conf中添加如下内容:zone type slave;file slave/;masters xxx.xxx.xxx.xxx;但是黑客也可以攫取区域文件(如果没有采取措施),下例给出使用host命令列出整个域中所有NS,A和PTR记录的方法。# host -t ns # host -l 对策:配置主名字服务器时,使之不允许除次级服务器外机器的区域传送。在全局默认选项中设置如下:option . allow-transfer xxx.xxx.xxx.xxx; .
25、警告:必须确保在主和从服务器上都禁止区域传送,因为从服务器也能接受区域传送请求。任何未经授权的区域传送都会被syslog记录下来。反解析是指从ip到域名的过程。可以用host命令实现。如果大量使用真实的主机名,会给黑客知道机器的功能。所以最好在PTR记录中使用一般的反解析名如:xxx-xxx-xxx-. 端口扫描黑客会运行一个或多个端口扫描工具来了解目标系统提供的服务。工具主要有netcat,strobe,nmap(best)。玩转nmap可以学到很多东西。包括自已的系统,也包括网络方面。 网络漏洞扫描程序iss,satan,Nessus 加密文件系统CFS,TCFS,BestCrypt,PP
26、DD,Encrypted第四章 社交工程、特洛伊木马和其他黑客伎俩第五章 物理攻击 物理攻击小结1、不要把口令或访问ID记在别人可以看到的地方。2、不要把电话本,组织结构图,备忘录,内部手册,会议安排或内部安全策略遗忘在容量被阅读或偷窃的地方。3、在丢弃打印文档,电子介质或客户数据时必须谨慎从事,把敏感材料标记为“敏感”,在处理前粉碎敏感的文件和手册。抹去电子介质中的数据,并且把所有的垃圾箱放置在照明状况良好的保护区域。4、在标记网络设施时必须谨慎。将这些信息记录在清楚的网络图中,并将其锁起来。5、 使用好的屏幕保护程序,确保带有口令,并且在运行时隐藏屏幕内容。将延迟时间设置6、 为合理值-在
27、合理时间后就运行它。6、必须离开系统时,锁定屏幕。7、 使用便携机时,必须尽可能在所有时间都将其带在身边。对窃贼的那些把它从你身过分8、 开的诡计保持警惕。对进入工作场所的每个便携机贴上标签,在带离时对其进行安全检查。8、避免使用双重启动系统,linux的安全性取决于机器中安装的安全性最差的系统。9、在启动加载时程序中设置保护口令,防止可能获得root权限的非法重启方式。10、设置BIOS口令,以防止其被修改。11,将所有敏感系统放在加锁的房间,以防止破坏。12、使用好的加密文件系统可以防止那些获得系统权限的人看到机密数据。这应当作为安全防卫的底线。第六章 网络攻击 合法的tcp标志组合标志组
28、合 含义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请求)11 TTL超时1
29、2 参数问题13 请求时间戳14 响应时间戳17 地址掩码请求18 地址掩码响应 攻击错误配置的NFS导出为了保护文件系统不被非法访问,应当让防火墙阻塞NFS,通过阻止对NFS(2049端口)的进入连接可以做到这一点。如果内部确实需要,确保它只导出必需的文件系统。例如,在允许远程加载用户主目录时,使用/home 替代/。为了验证是否正确配置了NFS,检查/etc/exports和/etc/dfs/dfstab以确信没有以读写权限向外导出任何东西。 攻击Nestscape默认配置SuiteSpot是一个工具用于管理web服务器,其中包含实现这一功能的java and javascript cod
30、e.它将Nestscape服务器的用户名和口令配置保存在服务根目录下的文件中,默认可被任何人读取。位于/web_server root/admin-serv/config/admpw。在网络上使用web浏览器并将url指向该文件,就可获得。文件格式为user:password。虽然这个文件是加密的,但可以对口令进行蛮力攻击。所以应保护admpw文件, 攻击配置错误的Squid服务器Squid可以被错误地配置成允许外部地址作为访问内部系统的代理。这使攻击者能够以该服务器为代理来察看或访问内部网络,即使其地址不能被路由。squid.conf文件的一个错误配置如下:tcp_incoming_addr
31、ess tcp_outgoing_address udp_incoming_address udp_outgoing_address 对策:首先设置正确的防火墙规则以阻塞外部地址对端口3128(代理端口)的连接。然后编辑配置文件,确信下面这些内容的正确性。tcp_incoming_address tcp_outgoing_address udp_incoming_address udp_outgoing_address x windows system它使用端口6000-6063攻击错误的X 配置。xhost工具用于保障X的基本安全性,用户可以使用这一程序指定允许连接本地X服务器的系统。如果不
32、带参数执行,则列出所有允许连接的系统,可以通过如下命令添加新和系统。# xhost + 如果省略system and name,则任何系统都可以建立连接。这样入侵者可以通过xkey程序记录用户在X窗口介面上的所有击键序列。另一个类似程序是xscan,可以扫描网络以查找X系统的漏洞。对策:主要是在防火墙上阻塞端口6000-6063。# ipchains -A input -p tcp -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0 6000:-6063如果不允许阻塞,可以-auth参数启动xinit程序。则系统将在认证时使用“magic cookies”。或者以ssh传送X会
33、话。使用X11的ssh时,远程root用户对本地X服务器拥有全部权限。在双方信任时才使用X11的ssh。 默认口令Prianhared hat提供的用于linux 服务器的Prianha虚拟服务器和平衡软件包。在Prianha-gui程序的0.4.12版中存在一个名为prianha的帐号,其默认口令为q。对策是修改所有系统和网络设备的默认口令。 嗅探网络信息嗅探器工作时,将网卡设置成所谓的混杂模式,在该模式下,网卡会将每个帧的数据都传送给协议而不检查其MAC地址。这样,系统中的嗅探器就能够检查帧中的数据,并摘取感兴趣的信息。其中包括报头信息或其它信息,如口令和用户名。很多协议以未加密方式发送敏
34、感信息,因此黑客就能够使用嗅探器获是系统的访问权限。如telnet,ftp,http中的口令和用户名都直接在网络上传播,此外,一些基于web的管理工具也以一般的http协议来传送用户名和口令,例如webmin就是这样的。避免受到嗅探器危害的最好办法是不要在网络上以未经加密的方式传送用户名和口令,通过使用ssh 代替telnet,用https代替http传送敏感信息可大大加强安全性。 常见的嗅探器tcpdump,hunt,linux-sniff,snort 口令猜测在大多数linux中,口令长度被限制在8个字符。如果只能使用小写字母,则总畏惧26的8次方(大约2090亿)种组合,如果允许使用大写
35、字母和数字,则有62的8次方(大约218万亿)种组合。对策:保护系统帐号,关闭finger and rwho服务。限制root只能从控制台登录。可以通过修改/etc/securetty文件做到这一点。这个文件列出了root可以登录的tty(终端),在该文件中只包括tty1-tty6,就能限制root只能从控制台登录。如果从该文件中删除所有行。则任何人在获得root权限前必须首先以其他用户登录,然后使用su。修改/etc/login.def中的最小口令长度。 缓冲区溢出漏洞当开发者在程序中采用错误的方法编写操作代码时,则可能导致缓冲区溢出。罪魁祸首多半是标准C语言中的字符串函数。例如strcat
36、(),strcpy(),sprintf(),vsprintf(),scanf() and gets()。这些函数在执行前不检查参数的大小。常见的攻击所针对的程序有rpc.mountd(nfs),rpc.statd(nsf),imapd/popd,wu-ftp。一旦对系统尝试了缓冲区溢出攻击,通常会从日志消息中看到这类行为。对策:对于不必要服务,关闭它们,或者在防火墙阻塞对其访问。如果服务是必须的,就只有一个对策,就是使系统应用最新的补丁。netstat,lsof工具能识别系统中运行的进程序,打开的端口等信息。但这些程序都不可靠,可能会被黑客替换。可以用nmap从外部扫描系统以训别服务,因为从外
37、部扫描,所以不会被黑客在系统中所做的手脚所欺骗。# nmap -sT -O xxxx 对本系统进行tcp扫描。# nmap -sU -O xxxx 对本系统进行udp扫描。第七章 恶意使用网络 DNS攻击bind缓冲欺诈dns是一个分布式系统,使用缓存来降低网络负载,在BIND8.1.1 和4.9.6版中存在一个问题,即它们没有验证接收自其它名字服务器的信息的合法性。黑客利用这个漏洞可以在目村服务器中插入伪造记录,引导客户到黑客的机器上来。从而捕获口令和敏感信息。 路由问题源路由,允许发送者指定数据包到达目的地前在internet上经由的路径。这一特点对于网络勘探很有用,但也能用来绕过安全网关
38、和地址转换。# cat /proc/sys/net/ipv4/conf/eth0/accept_source_route 0 表示不允许 1 表示允许 不正确的ip转发/proc/sys/net/ipv4/ip_forward文件配置ip转发。0 表示禁止 1 表示允许。这个功能对于防火墙和ip伪装网关是必要,但对于名字服务器,邮件服务器或堡垒主机则不必要。可能如下禁止:# echo 0 /proc/sys/net/ipv4/ip_forward /etc/sysctl.conf的 net.ipv4.ip_forward = 0控制系统启动时是否允许。 Hunt同时具有数据包嗅探和会话劫持功能
39、。对策:采用openssh。 dsniff是一组优秀的网络审计,测试和嗅探工具。 sshmitm对客户端伪装成ssh服务器,而对服务器伪装成ssh客户端,默认时,它将记录所有用户名和口令。对策:sshmitm依赖于用户忽略对ssh主机密钥的检查,当第一次连接服务器时,将会在$home/.ssh/known_hosts中添加主机密钥。应当比较这份密钥与实际服务器密钥(通常在文件/etc/ssh/ssh_host_key.pub or /etc/ssh_host_key/.pub中)的一致性。如果两者不匹配,则说明黑客已经介入过刚才的会话。并获得了口令,应马上断开连接,并通知系统管理员重新设置口令
40、,以防止帐号被黑客滥用。为了防止在无意中使用潜在不安全连接,应配置ssh进行强制的主机密钥检查。即将如下几行写入到$home/.ssh/config的起始处。Host *StrictHostKeyChecking yes也可以将系统的全局ssh_config文件配置成StrictHostKeyChecking.目前,Sshmitm仅支持ssh版本1,但并不保证支持ssh版本2的软件不在开发中。 Webmitm它的工作方式和sshmitm很相似,它监听端口80(http),和443(https)。中继对于实际服务器的web请求。并将结果返回给客户端。因为webmitm没有真实的ssl服务器证书和
41、密钥,所以必须伪造一个。因此,当第一次运行webmitm时,它将生成一个与openssl相关的ssl密钥和证书。当用户连接https站点时,其浏览器将试图验证所得到的ssl证书,而webmitm服务器所创建的证书未经浏览器数据中保存的某一可信官方机构颁发签名。因此浏览器将弹出一系列对话框,以确认用户是否要连接到可能的欺骗站点。如果用户点击并忽略所有警告,就能够像一切正常那样访问web站点。然而,该会话实际上流经webmitm程序,使用其能访问所有数据。对策:和sshmitm一样,比技术问题更重要的是用户培训。当浏览器给出众多Are you sure?这样有价值的提问时,不要简单的点击Yes。 SYN潮涌攻击根据tcp/ip协议的规定,在收到最初的SYN数据包时,服务器TCP协议栈将相应的半连接