频道栏目
首页 > 资讯 > Linux > 正文

五个顶级Linux安全工具

08-03-20        来源:[db:作者]  
收藏   我要投稿

来源:51 CTO
首先,没有哪个程序能做到让你的网络或服务器永久地安全,安全是一个不断改进、评估、再改进的持续过程,幸运的是,在linux下有许多好的工具在这个过程中能帮助你,在这篇文章中,我将向你推荐5款我最喜爱的安全工具,它们能帮助你预防,检查,响应入侵行为。尽管它更容易预防随时可能发生的问题,但某些时候你遇到问题时,你还是需要检查和响应的,这就意味着在形式危及你需要它们之前,你得先熟悉它们的用法。

1、Nmap

为了评估一个机器的是否容易遵守攻击,你需要知道有多少服务是暴露给攻击者的。有一个优秀的工具就是Fyodor的网络映射器Nmap,Debian用户可以通过apt-get install nmap来获取它,务必要运行它检查服务器上究竟运行了些什么服务—即使你认为你已经知道了也要运行,很明显,如果ssh端口已经关闭,那么通过ssh密码猜测就对你没什么影响。

Nmap最简单的用法就是在你本地的网络上探测主机,在这个实例中,我们要求nmap发送ICMP echo请求包(ping)到某段ip地址范围内的所有主机:

$ nmap -sP 10.0.0.1-254
Starting nmap 3.81 ( http://www.insecure.org/nmap/ )
       at 2006-11-01 14:46
NZDT
Host 10.0.0.25 appears to be up.
MAC Address: 00:0C:F1:AE:E6:08 (Intel)
Host 10.0.0.51 appears to be up.
MAC Address: 08:00:09:9A:1A:AA (Hewlett Packard)
Host 10.0.0.70 appears to be up.
MAC Address: 00:0F:EA:64:4E:1E (Giga-Byte Tech Co.)
...

不过nmap最常用的是用来探测哪个服务正在运行。因为TCP建立一个连接使用了3次握手,我们能检查到无真实连接到它们但又被打开的端口,这就是著名的SYN或半打开扫描,当用root登陆执行时这是默认的模式,如果作为一个正常用户执行,nmap尝试全连接来测试是否每个端口是否是打开的。(题外话:在半打开模式下,我们发送初始化SYN数据包并监听响应,RST表明端口是关闭的,SYN+ACK表示端口是打开的,如果没有收到响应,nmap标记这个端口是被过滤了,某些防火墙会丢掉不该有的数据包,产生一个过滤状态标记,其他的将发送RST使得端口看起来是关闭的)典型地,如果一个服务器正在监听你不希望监听的端口,你应该仔细检查一下:

#nmap -sS 10.0.0.89
Starting nmap 3.81 ( http://www.insecure.org/nmap/ )
          at 2006-11-01 14:52
NZDT
Interesting ports on 10.0.0.89:
(The 1637 ports scanned but not shown
below are in state: closed)
PORT      STATE SERVICE
21/tcp    open  ftp
22/tcp    open  ssh
42/tcp    open  nameserver
80/tcp    open  http
110/tcp   open  pop3
...

Fyodor也添加了许多服务的指纹,你可以要求nmap标识出特定的服务,在命令后加上-sV选项即可:

# nmap -sV 10.0.0.89
Starting nmap 3.81 ( http://www.insecure.org/nmap/ )
        at 2006-11-01 14:47
NZDT
Interesting ports on 10.0.0.89:
(The 1637 ports scanned but not shown
below are in state: closed)
PORT      STATE SERVICE           VERSION
21/tcp    open  ftp?
22/tcp    open  ssh               OpenSSH 3.8.1p1
Debian-8.sarge.4 (protocol 2.0)
42/tcp    open  nameserver?
80/tcp    open  http              Apache httpd 1.3.33
((Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.10-16)
110/tcp   open  pop3?
...
其他难以置信的用法是操作系统的探测,在命令后加上-O参数即可,如果这个机器有至少一个端口打开和至少一个端口关闭的话,你就能准确地获取操作系统的信息:

# nmap -O -sS 10.0.0.89
Starting nmap 3.81 ( http://www.insecure.org/nmap/ )
         at 2006-11-02 09:02
NZDT
Interesting ports on 10.0.0.89:
(The 1637 ports scanned but not shown
below are in state: closed)
PORT      STATE SERVICE
21/tcp    open  ftp
...
Device type: general purpose
Running: Linux 2.4.X|2.5.X|2.6.X
OS details: Linux 2.5.25 - 2.6.3 or
Gentoo 1.2 Linux 2.4.19 rc1-rc7), Linux 2.6.3 - 2.6.8
Uptime 30.906 days (since Mon Oct  2 11:18:59 2006)

因此,请使用nmap在你的网络上检查所有机器,看是否存在有临时安装的但又被忘记删除的服务,你也可以用它从你的网络范围之外来检查你的防火墙是否正确地配置了。

2、OpenSSH

当你关心你的网络时,你需要一个安全的办法来管理你的机器,这就意味着不能使用telnet或rcp,或其他任何无保护措施进行数据和密码传输的协议,OpenSSH是大多数人选择用来替代telnet/rcp的协议,它在传输过程中对所有数据都进行加密处理,并且在连接的另一端校验每一个数据包是否被欺骗,Debian用户可以通过apt-get install openssh-server来获取它。

首先,我建议转换到另一个端口,仅使用密语,不是密码,或者用基础规则审核你的密码,记住sshd保护数据的传输—这就意味着如果你的访问控制非常弱的话,攻击者能够用一个安全的方法控制你的机器,这应该不是你想要的,我见过太多的Linux通过临时帐户被泄密,如upload/upload。要改变这个端口,编辑/etc/ssh/sshd_config文件,修改#Port 22为Port 12345,然后重新启动服务。

在下面的例子中,我们展示如何用密语替代密码,你在这里要做的是允许你客户端机器用户帐户能读取和写入远程机器的任何文件。

你可以忽略密语和不使用ssh-agent(ssh-add命令),登陆客户端兵输入下面的命令:

client% ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key【译者注:输入密钥保存的位置路径】
(/usr/local/sss/jriden/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):【译者注:输入密语】
MY PASSPHRASE
Enter same passphrase again: MY PASSPHRASE【译者注:再输入一次密语】
Your identification has been saved in
/usr/local/sss/jriden/.ssh/id_rsa.
Your public key has been saved in
/usr/local/sss/jriden/.ssh/id_rsa.pub.
The key fingerprint is:
75:65:36:2b:ed:38:9f:4a:6d:c4:d8:ec:25:ed:ff:31
jriden@its-dev2
client% ssh-add
Enter passphrase for /usr/local/sss/jriden
/.ssh/id_rsa:【译者注:给你的证书输入密语】
MY PASSPHRASE
Identity added: /usr/local/sss/jriden/.ssh/id_rsa
(/usr/local/sss/jriden/.ssh/id_rsa)
client%

现在,取得~/.ssh/id_rsa.pub,将其内容添加到服务器上~/.ssh/authorized_keys中或者~/.ssh/authorized_keys2中,确保移除了无关的新行,它们可能导致复制和粘贴变慢:

client% scp server:~/testfile .
The authenticity of host server (130.123.128.86)
cant be established.
RSA key fingerprint is
97:7b:e0:12:c2:f8:8e:05:cc:2b:74:50:9b:00:28:0e.
Are you sure you want to continue connecting
(yes/no)? yes
Warning: Permanently added server,130.123.128.86
(RSA) to the list
of known hosts.
testfile
|***************************************************|
81940       00:00

这里之所以出现提示是因为服务器是一个不认识的主机,这是ssh尝试与主机欺骗的格斗,下一次连接的时候就不会出现这个提示了。

3、Tcpdump

tcpdump可能是检查网络通讯原始数据构成最著名的应用程序了,Debian用户可以通过apt-get install tcpdump来获取,tcpdump文件就是著名的pcap文件,因为pcap是实现包捕获的库。

在这个例子中,我们dump来自源端口53或目标端口53的所有通讯,意味着,所有的DNS通讯,我使用的-n参数,如果你想更详细一点,你可以使用src port 53或者dst port 53,除此之外,tcpdump尝试ip地址到域名的解析,以便于打印出比较友好的名字,那些DNS请求也将在我们的捕获中显示出来:

# tcpdump -n port 53
tcpdump: verbose output suppressed,
use -v or -vv for full protocol
decode
listening on eth0, link-type EN10MB (Ethernet),
capture size 96 bytes
11:19:58.302298 IP 192.168.0.8.1037 >
192.168.128.1.53:  36224+ A?
www.slashdot.org. (34)
11:19:58.360227 IP 192.168.128.1.53 >
192.168.0.8.1037:  36224 1/5/5 A
66.35.250.151 (239)
...

相关TAG标签
上一篇:对趋势科技等数万网站被攻击的分析
下一篇:编程制作管理员登陆报警器
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站