Linux教程Linux
首页
基础知识
Linux业界
Linux系统
Linux人物
Linux文化
Linux资讯
Linux综合
当前位置:
Linux教程
-
Linux
- 安全工具
安全工具
hubertzou 译
原文:LinuxFocus Georges Tarbouriech
摘要:
安全是系统管理员忧虑的主要问题之一,然而,由于internet引发的侵入危险变得越来越高.
据统计,如果联接的用户数量增加,骇客的数量随之增加.因此,安全工具呈指数增加.再一次多谢自由软件社区,因为他们给我们提供了我们能见到的最好的工具和大量的文档.
在本文结束部分的参考文献区你将会发现许多有趣的联接,显而易见地,本文将要提到的不可能没有疏漏之处,我提到的只是我挑选的一些好工具.
这篇文章不但写给个人用户,同样也是给系统管理员提供的,尽管一些工具是为保护主机和提高网络安全专门设计的.大部分工具可以在许多unix上工作(如果不是全部的unix上),不管这些unix是商业的还是免费的.
最后,这篇文章不是一篇"如何使你的网络或主机安全"的文章,而是一篇关于你能够(必须)用来提高一个网络或机器安全性的各种工具的介绍.
一、通用的工具
让我们把这部分称为"白帽子保护红帽子,击退黑帽子的工具(tools for whitehats to protect redhat from blackhats)":-).大多数linux发行版(不仅仅是redhat)都保含了一些好的安全工具,它们被用来使你的机器更加安全.
在这些工具中,我们能数出TCPWrapper,PAM,影子口令工具等,因为它们是发行版的一部份,你可以找到关于它们的许多东西:HOWTO,man手册,所以我们不想在它们身上化太多时间.
让我们从影子口令工具开始,简单来说,它们允许口令加密,文件/etc/passwd被文件/etc/shadow代替.
比影子口令工具更精致的是PAM,就象名字所说的那样,这是另外一种认证方法,被用来配置对服务的访问控制.
可以在一些文件中定义许多限制,这样能容易地进行管理.这些文件通常放在/etc/pam.d目录中.
TCPWrapper,简单来说,是通过ip地址或主机名来限制服务访问权限.倚靠两个文件来决定容许访问还是拒绝访问,这两个文件是/etc/host.allow和/etc/host.deny
TCPWrapper可以配置为两种工作模式:通过运行看守进程,或者是修改/etc/inetd.conf文件.如果你的unix系统没有包含TCPWrapper,你可以从
ftp://ftp.porcupine.org/pub/security/
获得它.
现在,我要告诉你们,为什么我不详悉介绍上面提到的这些工具,因为有一个工具可以完成上叙所有的功能,这就是
Bastille-Linux
,如果你只想安装一个安全工具,那么就安装它吧,目前的常见的linux版本还没有包含它, 但你可以到
http://bastille-linux.sourceforge.net
网站上下载.
顺便说一下,我们不会在本文介绍Bastille-Linux,这样做毫无意义,因为我的同事在九月份的LinuxFocus上有一篇相当不错的文章已经介绍了它.他已经介绍了所有的东西.去那看看吧,让我们把Bastille-Linux加入你生活中必不可少的重要工具中吧!
另外一个常用的来提高安全性的工具是
xinetd
,它存在于
http://www.xinetd.org
,对不起,我也不打算介绍它,同样是是因为我的同事在十一月份的LinuxFocus上做完了这项工作.
现在,让我们来看一看一些特别的东西.
二、防火墙工具
自由软件Linux带有把你机器变成防火墙的软件.2.2内核是iptables,而2.0内核则是ipfwadm.为了使iptables或ipfwadm工作,内核必需正确选择选项进行编译.关于这个问题,除了HOWTOS,还有很多相关文章,所以,同样我不打算多提.
简单地说,我们可以把防火墙看作包过滤工具,工作最重要的部分是关心防火墙的配置,同样,一个错误配置的防火墙会变得非常危险.
不管怎么说,防火墙相当重要.
举个例子来说,Bastille-Linux可以给你提供一个基于ipchains的防火墙.
如果你访问
http://www.linuxapps.com
,并在搜索区中键入"firewall",你至少能得到40个以上的答案.其中许多是基于ipchains或ipfwadm管理的图形化界面,另外一些是真正的大工具,含有大量的功能,举个例子,象T.REX,
http://www.opensourcefirewall.com
上的工具就是这样的东西.再提醒一次,一个防火墙在一个网络中必不可少,但是网络安全不能仅仅依靠它,告诉你,一个骇客可以在十五分钟之内攻破它.
三、端口扫描
在这里我们接触问题的核心部分,这个思想是:象一个骇客干的那样,使用同样的工具,来监测你机器或网络的弱点所在.
在这个领域,我们能够在两个伟大的工具上受益,但还有其它更多的.
第一个叫作
nmap
,你可以从
http://www.insecure.org
上下载到,同时还有大量的信息和链接等等.
用nmap你可以检查你的网络或机器哪些端口是开放的.当然,你可以用其它的命令做到这点,例如lsof或netstat,但是只能检测你自己的机器.显而易见的,nmap当然也可以检查你自己的机器.
nmap能提供给你许多信息,例如,它能告诉你运行的是哪种操作系统,通知你所开放的端口的危险性,最后,至少,nmap相当容易使用.
nmap既可在shell下运行,也可以通过一个叫nmapfe的图形界面来运行.这个图形界面是基于gtk库的,nmap的当前版本是2.53,它可以在许多unix平台上运行,提供原代码,rpm包,带或不带图形界面.
nmap是系统管理必不缺少的工具.
多谢Fyodor先生,以及恭贺他的伟大工作.
第二个叫作
nessus
,可从网站
http://www.nessus.org
上下载,nessus使用客户/服务器结构来工作,源代码遵循posix标准,能在许多unix版本上运行.甚至还有基于win32的客户端.nessus依赖nmap(要知道,没有nmap,nessus就不能运行),GUI客户端还需要GTK库函数的支持.
nessus当前版本是1.06,通过nessus,你可一用一个命令扫描整个网络.这个命令就是网络地址,例如,在目标框中键入192.168.1.0/24,将会扫描整个子网的255台机器.
尽管nessus比nmap复杂不少,但它不但容易使用,功能很多.比方说,它可以生成报告,比较各报告的差异...,另外一个功能相当有趣:nessus为端口扫描中发现的问题提供解决方案,只要这些机器是unix系统,这些建议通常有用,对其它操作系统,就没这么恰当,但这不是一个问题.
下面是一台非常容易受攻击的机器的例子
见图一,
nessus还有另一项伟大的功能,它可以运行插件,这样,每次在任何地方发现新的安全漏洞,它都可以很快升级.
nessus是另一个系统管理真的需要的工具,Deraison先生和Merci beaucoup做的棒极了.
两个工具都在一个linux机器和其它不同操作系统的网络中测试过,有Linux RH 6.2, Irix 6.5.7, Solaris 2.6, NeXTStep 3.3,QNX RT, BeOS 5.0, Amiga OS 3.5,Not Terminated 4.0.在大多数平台上测试结果给人留下深刻印象,当然Amiga系统没有真正被认证,(因为它看起来象一台打印机或路由器!),但是有谁现在的网络中还有这种操作系统呢(除了我们)?
不管怎么说,整些工具是今天网络中必须有的工具.
为了结束这个章节,让我们来提一提其它一些工具象SARA(
http://www-arc.com/sara/
),或者是它的父辈SATAN(
http://www.porcupine.org/satan/
)或AINT(
http://www.wwdsi.com
).它们不但是端口扫瞄器而且它们都对提高网络安全非常有用.
四、嗅探系统
有些工具能发现端口扫描或入侵.标准的系统管理不能没有这种工具(这有点偏执!).
第一套工具集来自算盘工程.你可以从
http://www.psionic.com
获得这些工具.其中包含三个工具:
logcheck,portsentry和hostsentry.
Logcheck
版本是1.1.1,portsentry版本是1.0,
hostsentry
版本是0.0.2alpha.
Portsentry
是一个端口扫描发现工具,就象名字所说的那样,如果端口被某处扫描,portsentrt就会立即堵赛主机,要么就是使用防火墙扔掉路由(或者是一个不用的ip地址),或者只要TCPWrapper安装在你机器上,就把骇客的ip地址写进文件/etc/hosts.deny中,反应相当有效率! Portsentry依赖一个主要的配置文件和一些特殊的文件,这些特殊文件是用来忽视一些主机(也就是不堵塞它们),或者是堵塞某些主机的某些端口。通过配置文件,你可以定义portsentry的工作方式。
首先,你要选择梆定到portsentry上的端口,是TCP还是UDP(或者两者都是),注意,如果你使用X11,就不能绑定到端口6000上!
按照你使用的unix系统,你有两种不同的操作方式来监视端口,现在只有linux支持先进模式。
下一步是堵塞选项,要么堵塞要么不堵塞扫描,或着运行外部命令。
接着选择扔掉路由,或者把攻击者重定向到一个网络上不使用的ip地址或者是防火墙上。
下一步是与TCPWrapper有关,那就是你得决定是不是写一个拒绝条目进文件/etc/hosts.deny中。
接下来你可以定义一个外部命令来运行,最后,你可以为扫描选一个触发器值,(缺省为0)。
以上就是你必须做的,我们假设你懂得关于日志记录的一切东西。因为,显而易见,所有的警告被记录下来。这意味着,如果你想把最终的警告放到/var/log/messages或var/log/syslog或/var/adm/messages等文件
之外的某个地方,你可以修改你的syslog.conf文件。
你可以选择在后台运行portsentry,这个选项取决于你得系统,在大多数unix版本上可以使用-tcp,-udp选项,在linux机器上可以用-atcp,-audp选项.(a代表先进)
让我们来看一看扫描一台运行有portsentry的机器时的结果.
如果你是一个每个星期看一次日志的系统管理员(你应该换个工作了),算盘工程提供了另外一个工具:logcheck.如果在日志中发现异常的现象时,这个工具通过cron任务和发邮件给管理员.
这个套件中最新的工具叫作hostsentry,看起来相当有趣,但我没有测试过.
如果你想要一个伟大,简单和高效的工具时,选portsentry!
谢谢Rowland先生,他的工作非常伟大,顺便说一下,我喜欢他的幽默.
另外一个系统管理员真的不可少的工具叫snort.
snort
是一个IDS(入侵检测系统)并且非常精确的轻量级的工具.你能从
http://www.snort.org
网站上下载1.6.3版本的snort.据说可以在任何能和libpcap工作的平台上运行.最好使用最新版的libpcap.顺便说一下,你可以得到win32版的snort.
snort可以分析ip数据流,提供非常健壮的日志功能.snort依赖规则脚本,你可以监视你想要监视的东西.
甚至提供给你一个规则数据库,这样,你就得做一个重要的决定:把探测器放在何处,或者你会提出,啦种流量要监控?今,出,在防火墙外还是内部?
我们宁愿建议在任何一个地方!!!这对我而言,是个严肃的问题,如果你是一个"标准"的系统管理员,探测器越多越好.
现在你决定监听某处,你必须选择应用的规则.snort带有许多基本的规则,后门,ddos,finger,ftp...这些规则被放在snort-lib文件中,你可以从snort的网站上得到新的和升级的规则.
你只要把snort设置好选项作为后台任务运行就可以了,如果要把snort当做守护进程运行,选项就是-D因为你可以重定向日志,所以你也能定义日志记录在哪里,甚至是另外一台机器.
在这篇文章中提到snort的所有功能是不可能的,这篇文章只能告诉你一部份.不管这么说,snort是另外一个你必不可少的工具.snort是非常伟大的工具.多谢Roesch先生.
一些免费工具:比方说
http://www.cs.tut.fi/~rammer/aide.html
介绍的AIDE.
五、加密
在这个领域有许多工具,我们不能全部说到它们,不管怎样,我们至少要说一说SSH,特别是免费版本的
openSSH
.从
http://www.openssh.com
上能得到它.现在版本是2.3.0,这个伟大的产品原先是在openbsd上开发的,现在可以运行在许多unix版本上.
openssh是telnet和其它远程命令如rsh,rlogin等的替代品.它包含scp这一ftp和rcp的替代品.openssh可以对网络上传输的数据进行加密.telnet,rsh等用明文传输,当然包含口令的传输!
所以,你不应该再使用上述工具,而应改用openssh.这有点强迫,就让我们少少法西斯吧!
问题是这种工具和加密法有关,有些国家非常严格,不容许这类软件.事情正在发生了变化,但是在许多国家你还是不能自由使用这些软件。举个例子来说,一段时间以前,如果你在象法国这类国家中使用ssh,你就被当作一个间谍,(根据国家人权法)幸运的是现在不是这样了,不管怎么说, 我建议在使用这类工具时先读一下有关
规定。你可以在
http://www2.epic.org/reports/crypto2000/countries.html
网页上找到不同国家关于这种情况的报告。
毕竟,加密是一个非常关注的话题,有许多工具可供考虑,让我们提一下
http://www.openssl.org
上的
openssl
(安全套接层),或者是
http://www.strongcrypto.com
上的Strong Crypto,一个公开原码的linux上的VPN工具。
vpn是另外一种解决方案,值得用另外一篇文章来详细介绍。(象上面题及的大多数工具)因此,我们不想在这里多说什么。
显而易见地,我们不会忘记提一下在
http://www.ietf.org/html.charters/openpgp-charter.html
网页上的
openPGP和网站
http://www.gnupg.org
中的
GNUpg
.
六、脚本
在这里,我们不想提什么工具,脚本编写是任何一个系统管理员的主要技能之一。在你管理网络时,shell脚本,perl脚本等都是你每天工作的一部份。
显而易见地,脚本可被用在任务自动执行上,但是,我们同样可以把它应用在安全监控上,每个系统管理员都有他自己的需要,而且他总是试图用适合他的方式来管理这些。这通常没那么容易,有一样东西能给你帮助:
订阅系统管理员杂志!这本杂志是系统管理员写给系统管理员的,提供给你许多程序和脚本,每一期甚至还配有一张电脑光碟,当然包含所有的程序和脚本。
这不是广告,只不过告诉大家一条找到提高安全的许多解决方案的图解。如果你是一个系统管理员,去
http://www.samag.com
看一看吧,你应该试一试,当然,这仅仅是一个建议。
七、还有什么
本文已相当多地讲述安全问题,但是,就如我们开始就说过,这篇文章不是一篇“如何使你的网络或主机安全”的文章。关于这个题目,一本书都不够,安全不仅仅依赖工具,也与许多行为有关,比如,一些通常的习惯让我们犯错。什么时候人们会明白M$ office文件实际上是一个安全炸弹,它们不但体形巨大,而且可能满是宏病毒。
wintel用户,请不要把word,execl文件作为邮件附件传递,此外,如果你收到它们,请不要打开它,这仅仅是一个建议,但是,你已经被警告过,它们和你收到或下载的可执行文件一样危险(在我看来,更危险)。顺便说一句,纯文本和html文件在大小上比office文件小得多,而且它们没有危险性。
当然,我知道wintel word这样工作:当你下载一个单独的驱动,它通常是可执行的,让我们承认,我们可以相信这个大公司...,但是你知道你下载下来的文件可能发生了什么?诚然,这样想有点偏执了,但是不是疯狂呢?为什么你认为许多文件有一个校正值来检验正确性呢?
下面所说的可能“伤害”许多人,但这是事实,JAVA是危险的!applet不安全,javascript不安全,虽然如此,有趣的是许多网站使用JAVA,此外,JAVA是当你访问网站时,浏览器经常死掉的问题根源。这是网站的目的吗?
更不要提来自M$的ActiveX了!
建议,用Rebol代替它。(
http://www.rebol.com
)
因为基于这样的事实:请新的internet专家,停止用wintel word和IE5来建站。我注意到,这样的网站四处蔓延,毕竟许多人用许多不同的操作系统和许多不同的浏览器联接internet,那样做,等于拒绝人们访问你的网站。internet的目标
是共享,使用专用的东西是无意义的,以我的粗见,当建设一个网站时,首先要做的是查清访问者是哪种操作系统,哪种浏览器...,但这只是我个人的观点。想一想吧,如果你用unix机器和netscape访问那样的网站,你连首页都看不到!
对不起,有点离题了。
另外一个重要的观点是不可能做到100%安全。我们离那还早呢。你所能做的仅仅是提高它,事实上,你有可能可以把我们提到的工具都用上,但是把后门开的大大的!别傻了,骇客们不会首先就去试图解开128位的密钥,但是他们可以在某个地方找到一个小漏洞。所以要小心suid或sgid程序,以及访问权限,运行的没用的服务,取消的账号等。
的unix版本有许多相似之处,它们有许多不同的安全隐患要关。有些就象个筛子一样漏洞百出,你必须注意到这点。比方说,有一个internet cable联接的M$是了不起的,但是你就会出现在骇客机器上的网上邻居上,M$将会把你出卖给骇客,我不是在开玩笑...
网络和计算机安全有一条很长的路要走,如果你对这个领域感兴趣,你每天都可以学到新东西。幸运的是,下面有一些资源可以利用。
参考
httpp://www.linuxsecurity.com
http://www.sans.org
http://www.infosyssec.org
http://www.securityfocus.com
http://www.cs.purdue.edu/coast/hotlist/
除了文中已经提到的,linuxfocus的其它文章都值得一读。
发布人:netbull 来自:Linux技术支持站点
Sentinel一个小巧的anti-sniffer工具
Beej"s 网络编程指南 Internet Sockets
tfn2k使用方法和对策
SMTP安全手册—理论基础
单机双Linux系统的安装
WWW的核心——HTTP协议
使用AotuMake轻松生成Makefile
Linux循序渐进(16)
一本 Linux 开发人员的必备书籍
通过TCP/IP堆栈特征探测远程操作系统
Linux下Windows磁盘分区(NTFS,FAT32)加载全攻略
Yahoo! and FreeBSD
编写支持基于代理的防火墙的应用程序
Linux下C 语言编程--1
强大的轻量级网络入侵检测系统SNORT
站点导航
Linux教程
Php
Linux
非技术类
指令大全
Shell
安装启动
Xwindow
Kde
Gnome
输入法类
美化汉化
网络配置
存储备份
杂项工具
编程技术
网络安全
内核技术
速度优化
Apache
Email
Ftp服务
Cvs服务
代理服务
Samba
域名服务
网络过滤
其他服务
Nfs
Oracle
Dhcp
Mysql
Ldap
RedHat
赞助商链接