尽管各种版本的Linux distribution附带了很多开放源的自由软件,但是仍然有大量的有用的工具没有被默认。包括在它们的安装光盘内,特别是有一些可以增强Linux 网络安全的工具包,它们大多也是开放源的自由软件。
这里简单地介绍一下几个增强Linux网络安全的工具。
1、sudo
sudo是系统管理员用来允许某些用户以root身份运行部分/全部系统命令的程序。一个明显的用途是增强了站点的安全性,如果你需要每天以root身份 做一些日常工作,经常执行一些固定的几个只有root身份才能执行的命令,那么用sudo对你是非常适合的。
sudo的主页在:http://www.courtesan.com/courtesan/products/sudo/
以Redhat为例,下面介绍一下安装及设置过程:
首先,你能从sudo主页上下载forRedhatLinux的rpmpackage.
它在ftp://ftp.freshmeat.net/pub/rpms/sudo/当前最新的稳定版本1.5.9p4。
执行#rpm-ivhsudo*进行安装,然后用/usr/sbin/visudo编辑/etc/sudoers文件。
如果系统提示你找不到/usr/bin/vi但实际上你在目录/bin下有vi程序,你需要
ln-sf/bin/vi/usr/bin/vi为vi在/usr/bin下创建符号链接。(注:我在Redhat6.1上遇到,Redhat5.x上没 有此问题)
另外,如果出现某些其它错误,你可能还需要#chmod700/var/run/sudo
下面是我的/etc/sudoers文件例子:
代码:
[root@sh-proxy/etc]#moresudoers
Host_AliasSERVER=sh-proxy
#Useraliasspecification
User_AliasADMIN=jephe,tome
#Cmndaliasspecification
Cmnd_AliasSHUTDOWN=/etc/halt,/etc/shutdown,/etc/reboot
ADMINSERVER=SHUTDOWN
jepheSERVER=/usr/bin/tail-f/var/log/maillog
jepheSERVER=/usr/bin/tail-f/var/log/messages
#Userprivilegespecification
rootALL=(ALL)ALL
既然我经常需要远程登录到服务器观察emaillog文件/var/log/maillog的变化,因此我加了这一行到/etc/sudoers, 这样我不需要经常登录作为root来完成我的日常工作,改善了安全性。
2、Sniffit
sniffit是一个有名的网络端口探测器,你可以配置它在后台运行以检测哪些Tcp/ip端口上用户的输入/输出信息。
最常用的功能是攻击者可以用它来检测你的23(telnet)和110(pop3)端口上的数据传送以轻松得到你的登录口令和mail帐号密码, sniffit基本上是被破坏者所利用的工具,但是既然想知道如何增强你的站点的安全性,首先你应该知晓闯入者们所使用的各种工具。
sniffit的主页在http://reptile.rug.ac.be/~coder/sniffit/sniffit.html你能从那里下 载最新的版本,安装是非常容易的,就在根目录运行#tarxvfzsniff*解开所有文件到对应目录。
你能运行sniffit-i以交互式图形界面查看所有在指定网络接口上的输入/输出信息。
如:为了得到所有用户通过某接口a.b.c.d接收邮件时所输入的pop3帐号和密码,你能运行
#sniffit-p110-ta.b.c.d&
#sniffit-p110-sa.b.c.d&
记录文件放在目录/usr/doc/sniffit*下面:
logfile根据访问者的IP地址,随机高端端口号和用来检测的网络接口IP地址和检测端口来命名。它利用了tcp/ip协议天生的虚弱性,因 为普通的 telnet和pop3所传的用户名和密码信息都是明文,不带任何方式的加密。因此对telnet/ftp.你可以用ssh/scp来替代. sniffit检测到的ssh/scp信息基本上是一堆乱码,因此你不需要担心ssh所传送的用户名和口令信息会被第三方所窃取。
3、ttysnoop(s)
ttysnoop是一个重定向对一个终端号的所有输入/输出到另一个终端的程序。目前我所知道的它的所在网站为http: //uscan.cjb.net, 但是始终连不上去,从其它途径我得到了ttysnoop-0.12c-5,地址是http: //rpmfind.net/linux/RPM/contrib/libc6/i386/ttysnoop-0.12c-5.i386.html这个版 本好象还不能支持shadowpassword,安装后你需要手动创建目录/var/spool/ttysnoop测试这个程序是有趣的,下面是相关指 令:
首先改/etc/inetd.conf中的in.telnetd默认调用login登录程序为/sbin/ttysnoops,象下面这样:
代码:
[root@jephe/etc]#moreinetd.conf|grepin.telnetd
telnetstreamtcpnowaitroot/usr/sbin/tcpdin.telnetd-L/sbin/ttysnoops
更改后一定要运行killall-HUPinetd使之生效,确保不要使用阴影口令,用#pwunconv禁止阴影口令。
再编辑文件/etc/snooptab默认配置就可以了。
代码:
[root@jephe/etc]#moresnooptab
ttyS1/dev/tty7login/bin/login
ttyS2/dev/tty8login/bin/login
*socketlogin/bin/login
最后,如果在某个终端上有人登录进来(你可以用w命令查看它在哪个终端),如登录终端设备为ttyp0,则你可以登录进服务器打入 #/bin/ttysnoopttyp0(提示输入root口令,再次,上面提到的这个版本不支持阴影口令)以监视用户的登录窗口。
4、nmap
nmap是用来对一个比较大的网络进行端口扫描的工具,它能检测该服务器有哪些tcp/ip端口目前正处于打开状态。你可以运行它来确保已经禁止掉不该打 开的不安全的端口号。
nmap的主页在http://www.insecure.org/nmap/index.html
下面给出一个简单的例子:
代码:
[root@sh-proxy/etc]#/usr/local/bin/nmappublic.sta.net.cn
StartingnmapV.2.12byFyodor(fyodor@dhp.com,www.insecure.org/nmap/)
Interestingportsonpublic.sta.net.cn(202.96.199.97):
PortStateProtocolService
21opentcpftp
23opentcptelnet
25opentcpsmtp
109opentcppop-2
110opentcppop-3
143opentcpimap2
513opentcplogin
514opentcpshell
7000opentcpafs3-fileserver
Nmapruncompleted–1IPaddress(1hostup)scannedin15seconds
5、Johntheripper
在Linux中,密码以hash格式被存储,你不能反向从该hash数据表中分析出密码,但可以以一组单词hash后和它进行比较,如相同则就猜测 出密 码。故起一个很难被猜测的密码是非常关键的。一般地你决不能用字典存在的某个单词作为密码,那是相当容易被猜测出来的。另外也不能用一些常见的有规则性的 字母数字排列来作为密码,以123abc等。
Johntheripper是一个高效的易于使用的密码猜测程序,其主页在http://www.openwall.com/john/
下载tar.gz格式的forUNIX的程序,然后用tarxvfzjohn*.tar.gz解开到任一目录下。进入src目录,打入 makelinux -x86-any-elf(我用redhat6.1)后会在run目录下生成几个执行文件,包括主程序john。现在要Crack密码就运行. /john/etc/passwd即可。
John也可以Crack由htpasswd生成的用于验证apache用户的密码,如果你用htpasswd- capachepasswduser创建 了一个用户user,并生成了密码,你也可以用 johnapachepasswd来进行猜测。John在猜测密码时输出在终端上,并把猜测出的密码存于john.pot文件中。
另一个passwordCracker是大家知道的经典的Cracker.主页在http://www.users.dircon.co.uk /~crypto/
6、Logcheck
Logcheck是用来自动检查系统安全入侵事件和非正常活动记录的工具,它分析各种Linuxlog文件,
象/var/log/messages,/var/log/secure,/var/log/maillog等等,然后生成一个可能有安全问题的问题报告 自动发送email给管理员。你能设置它基于每小时,或者每天用crond来自动运行。
logcheck工具的主页在http://www.psionic.com/abacus/logcheck/下载后用 tarxvfzlogcheck*解开到一临时目录如/tmp下,然后用./makelinux自动生成相应的文件到 /usr/local/etc,/usr/local/bin/等目录下,你可能更改设置如发送通知能谁的邮件帐号,默认发送到root,你能设置 root的邮件别名帐号到一批人,更改设置让其忽略某些类型的消息如你的邮件记录文件中的plug-gw,因为plug-gw做反向IP查找,若找不到则 记录一个警告消息到/var/log/maillog,logcheck默认记录下所有这些警告发送给你,你可以通过设置忽略掉它们。
利用logcheck工具分析你的所有logfile,避免了你每天经常手动地检查它们,节省了时间,提高了效率。
7、Tripwire
Tripwire是一个用来检验文件完整性的非常有用的工具,你能定义哪些文件/目录需要被检验,不过默认设置能满足大多数的要求,它运行在四种模 下:数 据库生成模式,数据库更新模式,文件完整性检查,互动式数据库更新。当初始化数据库生成的时候,它生成对现有文件的各种信息的数据库文件,万一以后你的系 统文件或者各种配置文件被意外地改变,替换,删除,它将每天基于原始的数据库对现有文件进行比较发现哪些文件被更改,你能根据email的结果判断是否有 系统入侵等意外事件。
Tripwire的主页在http://www.tripwiresecurity.com,tripwire-1.2.3的版本你能免费使用。如 果你使用RedhatLinux6.1,你也能得到最新的为6.1重建的Tripwire-1.2.3
(http://rufus.w3.org/linux/RPM/powertools/6.1/i386/tripwire- 1.2-3.i386.html)当你手动更改了系统中的配置文件或程序时,你能手动再次生成一次数据库文件,运行tripwire- initialize在当前目录下创建 databases目录并在该目录下生成新的系统数据库文件,然后cp到/var/spool/tripwire目录中覆盖旧的。
代码:
while(!Search(MeiMei))
printf(“;)”);
printf(“:)”);
(完)
这里简单地介绍一下几个增强Linux网络安全的工具。
1、sudo
sudo是系统管理员用来允许某些用户以root身份运行部分/全部系统命令的程序。一个明显的用途是增强了站点的安全性,如果你需要每天以root身份 做一些日常工作,经常执行一些固定的几个只有root身份才能执行的命令,那么用sudo对你是非常适合的。
sudo的主页在:http://www.courtesan.com/courtesan/products/sudo/
以Redhat为例,下面介绍一下安装及设置过程:
首先,你能从sudo主页上下载forRedhatLinux的rpmpackage.
它在ftp://ftp.freshmeat.net/pub/rpms/sudo/当前最新的稳定版本1.5.9p4。
执行#rpm-ivhsudo*进行安装,然后用/usr/sbin/visudo编辑/etc/sudoers文件。
如果系统提示你找不到/usr/bin/vi但实际上你在目录/bin下有vi程序,你需要
ln-sf/bin/vi/usr/bin/vi为vi在/usr/bin下创建符号链接。(注:我在Redhat6.1上遇到,Redhat5.x上没 有此问题)
另外,如果出现某些其它错误,你可能还需要#chmod700/var/run/sudo
下面是我的/etc/sudoers文件例子:
代码:
[root@sh-proxy/etc]#moresudoers
Host_AliasSERVER=sh-proxy
#Useraliasspecification
User_AliasADMIN=jephe,tome
#Cmndaliasspecification
Cmnd_AliasSHUTDOWN=/etc/halt,/etc/shutdown,/etc/reboot
ADMINSERVER=SHUTDOWN
jepheSERVER=/usr/bin/tail-f/var/log/maillog
jepheSERVER=/usr/bin/tail-f/var/log/messages
#Userprivilegespecification
rootALL=(ALL)ALL
既然我经常需要远程登录到服务器观察emaillog文件/var/log/maillog的变化,因此我加了这一行到/etc/sudoers, 这样我不需要经常登录作为root来完成我的日常工作,改善了安全性。
2、Sniffit
sniffit是一个有名的网络端口探测器,你可以配置它在后台运行以检测哪些Tcp/ip端口上用户的输入/输出信息。
最常用的功能是攻击者可以用它来检测你的23(telnet)和110(pop3)端口上的数据传送以轻松得到你的登录口令和mail帐号密码, sniffit基本上是被破坏者所利用的工具,但是既然想知道如何增强你的站点的安全性,首先你应该知晓闯入者们所使用的各种工具。
sniffit的主页在http://reptile.rug.ac.be/~coder/sniffit/sniffit.html你能从那里下 载最新的版本,安装是非常容易的,就在根目录运行#tarxvfzsniff*解开所有文件到对应目录。
你能运行sniffit-i以交互式图形界面查看所有在指定网络接口上的输入/输出信息。
如:为了得到所有用户通过某接口a.b.c.d接收邮件时所输入的pop3帐号和密码,你能运行
#sniffit-p110-ta.b.c.d&
#sniffit-p110-sa.b.c.d&
记录文件放在目录/usr/doc/sniffit*下面:
logfile根据访问者的IP地址,随机高端端口号和用来检测的网络接口IP地址和检测端口来命名。它利用了tcp/ip协议天生的虚弱性,因 为普通的 telnet和pop3所传的用户名和密码信息都是明文,不带任何方式的加密。因此对telnet/ftp.你可以用ssh/scp来替代. sniffit检测到的ssh/scp信息基本上是一堆乱码,因此你不需要担心ssh所传送的用户名和口令信息会被第三方所窃取。
3、ttysnoop(s)
ttysnoop是一个重定向对一个终端号的所有输入/输出到另一个终端的程序。目前我所知道的它的所在网站为http: //uscan.cjb.net, 但是始终连不上去,从其它途径我得到了ttysnoop-0.12c-5,地址是http: //rpmfind.net/linux/RPM/contrib/libc6/i386/ttysnoop-0.12c-5.i386.html这个版 本好象还不能支持shadowpassword,安装后你需要手动创建目录/var/spool/ttysnoop测试这个程序是有趣的,下面是相关指 令:
首先改/etc/inetd.conf中的in.telnetd默认调用login登录程序为/sbin/ttysnoops,象下面这样:
代码:
[root@jephe/etc]#moreinetd.conf|grepin.telnetd
telnetstreamtcpnowaitroot/usr/sbin/tcpdin.telnetd-L/sbin/ttysnoops
更改后一定要运行killall-HUPinetd使之生效,确保不要使用阴影口令,用#pwunconv禁止阴影口令。
再编辑文件/etc/snooptab默认配置就可以了。
代码:
[root@jephe/etc]#moresnooptab
ttyS1/dev/tty7login/bin/login
ttyS2/dev/tty8login/bin/login
*socketlogin/bin/login
最后,如果在某个终端上有人登录进来(你可以用w命令查看它在哪个终端),如登录终端设备为ttyp0,则你可以登录进服务器打入 #/bin/ttysnoopttyp0(提示输入root口令,再次,上面提到的这个版本不支持阴影口令)以监视用户的登录窗口。
4、nmap
nmap是用来对一个比较大的网络进行端口扫描的工具,它能检测该服务器有哪些tcp/ip端口目前正处于打开状态。你可以运行它来确保已经禁止掉不该打 开的不安全的端口号。
nmap的主页在http://www.insecure.org/nmap/index.html
下面给出一个简单的例子:
代码:
[root@sh-proxy/etc]#/usr/local/bin/nmappublic.sta.net.cn
StartingnmapV.2.12byFyodor(fyodor@dhp.com,www.insecure.org/nmap/)
Interestingportsonpublic.sta.net.cn(202.96.199.97):
PortStateProtocolService
21opentcpftp
23opentcptelnet
25opentcpsmtp
109opentcppop-2
110opentcppop-3
143opentcpimap2
513opentcplogin
514opentcpshell
7000opentcpafs3-fileserver
Nmapruncompleted–1IPaddress(1hostup)scannedin15seconds
5、Johntheripper
在Linux中,密码以hash格式被存储,你不能反向从该hash数据表中分析出密码,但可以以一组单词hash后和它进行比较,如相同则就猜测 出密 码。故起一个很难被猜测的密码是非常关键的。一般地你决不能用字典存在的某个单词作为密码,那是相当容易被猜测出来的。另外也不能用一些常见的有规则性的 字母数字排列来作为密码,以123abc等。
Johntheripper是一个高效的易于使用的密码猜测程序,其主页在http://www.openwall.com/john/
下载tar.gz格式的forUNIX的程序,然后用tarxvfzjohn*.tar.gz解开到任一目录下。进入src目录,打入 makelinux -x86-any-elf(我用redhat6.1)后会在run目录下生成几个执行文件,包括主程序john。现在要Crack密码就运行. /john/etc/passwd即可。
John也可以Crack由htpasswd生成的用于验证apache用户的密码,如果你用htpasswd- capachepasswduser创建 了一个用户user,并生成了密码,你也可以用 johnapachepasswd来进行猜测。John在猜测密码时输出在终端上,并把猜测出的密码存于john.pot文件中。
另一个passwordCracker是大家知道的经典的Cracker.主页在http://www.users.dircon.co.uk /~crypto/
6、Logcheck
Logcheck是用来自动检查系统安全入侵事件和非正常活动记录的工具,它分析各种Linuxlog文件,
象/var/log/messages,/var/log/secure,/var/log/maillog等等,然后生成一个可能有安全问题的问题报告 自动发送email给管理员。你能设置它基于每小时,或者每天用crond来自动运行。
logcheck工具的主页在http://www.psionic.com/abacus/logcheck/下载后用 tarxvfzlogcheck*解开到一临时目录如/tmp下,然后用./makelinux自动生成相应的文件到 /usr/local/etc,/usr/local/bin/等目录下,你可能更改设置如发送通知能谁的邮件帐号,默认发送到root,你能设置 root的邮件别名帐号到一批人,更改设置让其忽略某些类型的消息如你的邮件记录文件中的plug-gw,因为plug-gw做反向IP查找,若找不到则 记录一个警告消息到/var/log/maillog,logcheck默认记录下所有这些警告发送给你,你可以通过设置忽略掉它们。
利用logcheck工具分析你的所有logfile,避免了你每天经常手动地检查它们,节省了时间,提高了效率。
7、Tripwire
Tripwire是一个用来检验文件完整性的非常有用的工具,你能定义哪些文件/目录需要被检验,不过默认设置能满足大多数的要求,它运行在四种模 下:数 据库生成模式,数据库更新模式,文件完整性检查,互动式数据库更新。当初始化数据库生成的时候,它生成对现有文件的各种信息的数据库文件,万一以后你的系 统文件或者各种配置文件被意外地改变,替换,删除,它将每天基于原始的数据库对现有文件进行比较发现哪些文件被更改,你能根据email的结果判断是否有 系统入侵等意外事件。
Tripwire的主页在http://www.tripwiresecurity.com,tripwire-1.2.3的版本你能免费使用。如 果你使用RedhatLinux6.1,你也能得到最新的为6.1重建的Tripwire-1.2.3
(http://rufus.w3.org/linux/RPM/powertools/6.1/i386/tripwire- 1.2-3.i386.html)当你手动更改了系统中的配置文件或程序时,你能手动再次生成一次数据库文件,运行tripwire- initialize在当前目录下创建 databases目录并在该目录下生成新的系统数据库文件,然后cp到/var/spool/tripwire目录中覆盖旧的。
代码:
while(!Search(MeiMei))
printf(“;)”);
printf(“:)”);
(完)