正如那只让人爱不释手的小企鹅一样,从诞生的那一刻起,Linux就以有一副亲近可人的面孔吸引了全球数以万计电脑爱好者的目光。如今,从桌面到服务器,从操作系统到嵌入式系统,从零散的应用到整个产业的初见雏形,Linux都呈现出蓬勃发展的趋势。随之而来的是,业界许多大公司对Linux专业人才的渴求也急剧上升!一批有影响力的著名大公司如IBM、HP、Dell、联想、浪潮等都有急剧扩招Linux人才的倾向。同时,在实际应用中,有的用户玩腻了Windows操作系统,想学习一下Linux,却害怕Linux的重新分区;有的用户已经安装了多个操作系统,可是需要切换操作系统的时候只能重新启动……如何快速玩转Linux操作系统成为了一个既热门又敏感的话题。
怎么办?实用才是硬道理。本专题通过用架设虚拟机网络实验环境,在讲解服务器配置时配合实用的网络管理软件Webmin,别出新意,使用户在Windows下就能完成Linux服务器的安装!前面我们已经讲了《Linux服务器傻瓜式安装完全接触(上)》今天我们讲第下半部份。
三、免费而稳定:Web服务器和FTP服务器的安装
为什么要采用Linux操作系统作为网络服务器?答案是:稳定性高、成本低。比较优秀的解决方案是采用Linux操作系统,再配备Apache服务器软件,就可以构造一个稳定高速的网站了。
小知识:1995年4月,最早的Apache(0.6.2版)由Apache Group公布发行。Apache Group 是一个完全通过Internet进行运作的非盈利机构,由它来决定Apache Web服务器的标准。目前,Apache是世界排名第一的Web服务器,根据Netcraft(www.netsraft.co.uk)所作的调查,世界上百分之五十以上的Web服务器在使用Apache。
1、比IIS更优秀:安装和启动Apache服务器
和Windows中安装了IIS一样,Redhat Linux服务器一般自带了Apache服务器。如果没有安装,可以单击“系统设置”进入“添加/删除应用程序”,然后系统会进行系统软件包状态检查。在“万维网服务器”选项上打钩,点“细节”可以看到许多和本服务器相关联的额外软件包,选定相关的软件包。安装时,就能把和这些软件包安装进去。当然,这其中就包括Apache服务器了。可见,安装过程和IIS等Windows下的Web服务器十分类似。
第1步:回到Webmin的服务器管理界面中,点击第一个图标就可以进入Apache服务器的管理界面。在“服务器”图标的下方,有如下子菜单:“模块配置”、“应用修改”、“停止/启动Apache”、“搜索文档”。然后,可以看到整个配置界面分为两个部分,一个是全局配置,一个是虚拟服务器配置。如图17所示。
图 17
第2步:打开全局配置下的“网络和地址”图标,在“监听地址和端口”选项后,设置服务器的IP地址和https地址,并输入端口,如80、443。当然,用户也可以自己定义或修改端口。设置完毕,单击“保存”按钮。
第3步:如果需要增加虚拟服务器,可以通过Apache服务器主界面中的“创建新的虚拟服务器”选项进行设置。首先指定地址和端口,然后单击“根文件”右边的按钮,选择“/var/www/html”,在“服务器名称”中填入类似的地址,如“www.test.com1”。设置完毕。
第4步:在缺省服务器的下方出现了一个虚拟服务器,旁边的注释说明了服务器的详细情况。点击此虚拟服务器的图标,即可进入其设置界面。如图18所示。
图 18
除了通过Webmin进行配置外,用户还可以通过Redhat Linux上的设置工具进行修改。打开Redhat Linux中“应用程序”菜单上的“系统设置”菜单,选择“服务器设置”上的“HTTP”,也可以对虚拟主机进行修改,效果是一样的。如图19所示,单击“编辑”按钮就可以对虚拟主机的属性进行修改了。此外,还可以进行服务器、调整性能等方面的操作。
图 19
第5步:配置完成后,点“启动Apache”,打开页面即可进行测试。
2、在Apache上配置动态程序环境
现在,很多电子商务站点几乎都是动态程序。Apache也提供了对PHP、CGI等程序的支持。下面,以PHP动态网页为例进行讲解。
第1步:单击“系统设置”进入“添加/删除应用程序”,然后系统会进行系统软件包状态检查。在“万维网服务器”选项上打钩,点“细节”可以看到许多和PHP程序相关联的额外软件包,建议将所有和PHP相关的软件包都选中并安装。如图20所示。
图 20
第2步:设置/etc/httpd/conf.d/php.conf配置文件。安装好PHP之后,使用文本编辑器打开php.conf配置文件。也可以直接通过Webmin打开Apache服务中的“编辑配置文件”图标,选择/etc/httpd/conf.d/php.conf文件,单击“编辑文件中的指令”按钮,进行编辑(#号后面是注释)。修改后的文件如下所示:
#
SetOutputFileter PHP
# AddType application/x-httpd-php-source .phps
|
第3步:重新启动httpd服务。仅仅更改Apache的配置文件是不够的,这样PHP程序还是不能运行,还要修改/etc/php.ini文件中的如下选项,修改“register_globals=off”为“register_globals=On”。这样PHP程序就可以运行了。
3、一步到位:Redhat Linux下的FTP服务器安装
在Redhat Linux中,系统在默认安装模式下安装了vsftpd。在文本模式下运行vsftpd的命令为:“service vsftpd start”。Vsftpd服务也可以在图形模式下开启,步骤为:依次打开“主菜单”下的“系统设置”,选择“服务器设置”中的“服务”,拉动滚动条找到vsftpd选项,选中后点击“开始”,即可启动vsftpd服务。如果将复选框选中,则每次启动Linux系统都会自动运行vsftpd服务。如图21所示。
图 21
这样,就可以通过各种方式来访问这个FTP服务器了。一般情况下,输入默认的主机地址、用户、密码即可正常访问。如果出现连接不上,就要考虑一下Linux服务器上的防火墙等问题。现在,Linux下比较常用的免费FTP服务器软件还有Wu-FTP和ProFTP,其中,ProFTP的的功能十分强大,越来越多的站点选择它来构筑安全高效的FTP站点。有兴趣的读者可以一试,下载地址为:ftp://ftp.proftpd.net。
四、更简单高效:Linux邮件服务器的安装和安全
在网络管理员的日常工作中,邮件服务器扮演着一个非常重要的角色,从局域网的安全防范到操作系统的稳定运行,都离不开电子邮件。目前,有许多的程序可以作为邮件传输代理,但Linux下的Sendmail则是其中最重要的一个,事实证明,它可以支持数千甚至更多的用户,而且站用的系统资源相当少。
1、Sendmail邮件服务器的安装和配置
默认情况下,Sendmail服务器安装程序在安装光盘,可以选择安装。单击“系统设置”进入“添加/删除应用程序”,然后系统会进行系统软件包状态检查。选中服务器栏下的“邮件服务器”选项。在文本模式下,用“/etc/rc.d/init.d/sendmail start”命令启动Sendmail,也可以在图形界面下直接启动Sendmail服务。下面是Sendmail邮件服务器的配置方法。
第1步:现在,打开Webmin“服务器”中的“Sendmail配置”一栏,单击进入。也可以通过Windows下的IE浏览器打开,如图22所示。
图 22
第2步:打开“本地域(Cw)”,这个区域是设置邮件服务器负责收发的网域。默认值是localhost.localdomain和localhost。现在它负责本机的信件转发。如果要让它负责新的转发,则要加入地址,如“cndes.net”。然后单击“保存”按钮。
第3步:因为现在假设的服务器名是www.cndes.net,所以本服务器负责的邮件会成为xxx@www.cndes.net,这样就比较麻烦了。如果只显示比较简单的域名,如xxx@cndes.net,就要设置域名伪装。以前这些设置都要通过修改配置文件来完成,十分麻烦。现在通过“域名伪装(CM)”就可以了。如图23所示。
图 23
第4步:邮件用户的管理也很简单,在Sendmail中,合法的主机用户就是邮件账户,管理邮件账户的方法和管理系统用户方法一致,可以通过用户管理器来管理账户。启动用户管理器的方法是:点击“主菜单”下的系统设置,选择“用户和群组”,就可以进行账户管理了。
第5步:本地测试。打开Redhat自带的Evolution电子邮件客户端程序进行收发测试。设置两个默认的帐户cndes@cndes.net和root@cndes.net,然后cndes给root发送了一封测试邮件。如图24所示。
图 24
第6步:配置供客户端使用邮件软件远程收取邮件的服务。现在,很多用户都习惯利用Outlook等Windows下的软件收发邮件。为了让用户能够访问Sendmail服务器中的邮件,就需要安装IMAP或者POP服务,这样用户就可以将电子邮件从主机取回到自己的电脑中阅读。在Redhat Linux中,这两个软件是捆绑在一起的。首先要检查/usr/sbin目录下是否有ipop3d或imapd文件。如果没有,则需要自行安装。
第7步:安装ipop3d、imapd文件后,需要打开POP3的连接端口。方法是打开/etc/xinetd.d/下面的ipop3文件,将disable的值修改为no。
第8步:重新启动xinetd使配置生效。使用命令:“/etc/init.d/xinetd restart”。这样,一个稳定高效的Linux邮件服务器就可以开始运行了。细心的用户留意一下许多公司的“招聘广告”就会发现,学会配置Linux邮件服务器已经成为高薪的必备条件之一。使用此方法后,我们也许会沾沾自喜:原来配置Linux邮件服务器如此简单!
小提示:现在运行在Linux环境下免费的邮件服务器有若干种选择,比较常见的有Sendmail、Qmail、Postfix、exim及Zmailer等等。Linux下的Postfix邮件服务器也是一款性能十分卓越的邮件服务器,它快速、易于管理、安全性高,同时和Sendmail邮件服务器的兼容性也很不错。
2、Linux邮件服务器的安全管理
随着互连网的普及,邮件服务器受攻击的可能性也越来越大。目前,因特网上的邮件服务器所受攻击主要有两类:第一类是中继利用(Relay),即远程任何攻击者都可以利用邮件服务器向任何地址发邮件,久而久之,你的机器不仅成为发送垃圾邮件的帮凶,也会使网络国际流量激增,就好像个人信誉降低一样,很可能被网上的很多邮件服务器所拒绝。另一类攻击称为垃圾邮件(Spam),即人们常说的邮件,是指在很短时间内服务器可能接收大量无用的邮件,从而使邮件服务器不堪重负而瘫痪。
如何让服务器防止中继利用?如何拒收从外部发来的垃圾邮件?或者设置能阻止一些非法的SMTP认证?从这个问题着手,我们来看看在Linux下进行邮箱管理的一些典型问题,并探讨一些行之有效的方法。
(1)拒收特定的IP和发件人。
在实践中,许多垃圾邮件制造者利用一些工具使发件人的邮件地址变成随机地址,一般的方法就起不到作用了。针对这种情况,我们可以通过查看邮件日志和网络的SMTP(25)端口的连接情况,找出数目比较高的IP和连接数比较高的IP,用防火墙来对这些IP进行拒收,从网络层就拒收这些垃圾邮件,同时也有相当高的效率。
(2)设置垃圾邮件控制规则。
Sendmail的垃圾邮件控制功可以拒收来自某些地址的邮件,而且也防止其他人使用系统转发垃圾邮件。用户可以增加添加垃圾邮件控制规则以拒收特定的邮件来源,并且也允许本网络上的其它计算机通过本系统转发邮件的规则。单击“Sendmail配置”下的“垃圾邮件控制”图标,就可以在Sendmail中设置控制规则了。软件还提供了“手工编辑 /etc/mail/access”的方式。如图25所示。
图 25
(3)使用Anti-Spam软件。
这项技术的基本原理是定时分析日志,发现有发信频率过多的用户就放到badmailfrom文件中。现在有很多的Anti-Spam软件,如Spamassassin,Kaspersky Anti-Spam。
(4)使用实时黑洞列表。
RBL(Realtime Blackhole List)是实时黑洞列表,是国际上比较流行的反垃圾邮件技术,可以采用RBL来使邮件服务器拒收在列表中已知的垃圾邮件发送服务器所发送的垃圾邮件。邮件系统的管理是一个循序渐进的过程,采取上面的措施,就可以制止住相当部分的垃圾邮件,这将有利于邮件服务器的负载降低、带宽占有减少和工作效率提高,从而有利于整个网络的高效运行。
五、更上一层楼:Linux服务器的安全实践
网络安全实践中,防火墙(Firewall)是被经常强调的重点,它的基本功能是过滤并阻挡本地网络与Internet之间的数据传送。另外,无论是网络管理员还是黑客,对数据截获分析都十分重视,因此,在进阶提高部分,我们也将使用直观简单的方式对这两部分内容进行讲解。
1、iptables :Linux服务器下的优秀防火墙
Linux提供了一个非常优秀的防火墙工具—iptables,它完全免费、功能强大、使用灵活、可以对流入和流出的信息进行细化控制,能够在一台低配置机器上很好地运行。
(1)安装和启动
一般情况下,iptables已经包含在Linux发行版中,运行iptables --version来查看系统是否安装了iptables。如果系统没有安装iptables,则可以从http://www.netfilter.org下载。使用中可以运行man iptables来查看所有命令和选项的完整介绍,或者运行iptables -help来查看一个快速帮助。
iptables服务也可以在图形模式下开启,步骤为:依次打开“主菜单”下的“系统设置”,选择“服务器设置”中的“服务”,拉动滚动条找到iptables选项,选中后点击“开始”,即可启动防火墙服务;如果不想使用防火墙,点击“停止”即可。如图26所示。
图 26
(2)使用实例分析
iptables功能十分强大,它可以检测到源地址和目的地址、源端口和目的端口及流入数据包的顺序,即iptables记住了在现有连接中,哪些数据包已经被允许接收。这使得暂时性的端口只有在需要时才会被打开,并且会拒绝所有永久性占用端口的请求,大大地加强了安全性。下面是关于iptables防火墙的一些应用实例。
实际应用中,如果要阻止来自某一特定IP范围内的数据包,因为该IP地址范围被管理员怀疑有大量恶意攻击者在活动:
# iptables -t filter -A INPUT -s xxx.xxx.xxx.0/24 -j DROP |
也可以很轻易地阻止所有流向攻击者IP地址的数据包,该命令稍有不同:
# iptables -t filter -A OUTPUT -d xxx.xxx.xxx.0/24 -j DROP |
注意这里的A选项,使用它说明是给现有的链添加规则。网络上的恶意攻击者总是在变化的,因此需要不断改变IP。假设一个网上攻击者转移到新的IP地址,而原来的IP地址被分配给一些清白的用户,那么这时这些用户的数据包将无法通过网络。这种情况下,可以使用带-D选项的命令来删除现有的规则:
# iptables -t filter -D OUTPUT -d 192.168.10.0/24 -j DROP |
一旦测试结果令人满意,就可以将上述测试结果保存为脚本。可以使用“iptables-save > iptables-script”命令来实现,现在,信息包过滤表中的所有规则都被保存在文件iptables-script中。无论何时再次引导系统,都可以使用 iptables-restore 命令将规则集从该脚本文件恢复到信息包过滤表,命令为“iptables-restore iptables-script”。
创建一个具有很好灵活性、可以抵御各种意外事件的规则需要大量的时间。对于那些没有时间这样做的人,最基本的原则是“先拒绝所有的数据包,然后再允许需要的”。下面来为每一个链设置缺省的规则:
# iptables -P INPUT DROP
# iptables -P FORWARD DROP # iptables -P OUTPUT ACCEPT |
这里选项-P用于设置链的策略,只有三个内建的链才有策略。这些策略可以让信息毫无限制地流出,但不允许信息流入。
最后需要提示的是:功能强大的iptables防火墙是完全免费的,这对于那些想要功能卓越而又想节省费用的用户来说,是一种比较理想的选择。
2、在Linux下利用TCPDump进行网络管理
对于网络管理员来说,要保证整个网络的正常运行,就必须随时了解网络中存在的异常流量、网络阻塞等现象。打个比方,一部电话的装置,可以用来双方通话的内容,而计算机网络嗅探器则可以计算机程序在网络上发送和接收到的数据。但是,计算机所传送的数据是大量的二进制数据。因此,一个网络程序也必须使用特定的网络协议来分析数据,进行正确的解码。如图27所示,就是一个Windows下的嗅探器。
图 27
那么,对于钟爱Linux的网络安全爱好者来说,能否找到这样一款强大的Linux下的嗅探器呢?TCPDump就是一款免费的网络分析工具,它可以将网络中传送的数据包的“头”完全截获下来提供分析,它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
(1)安装和启动
在Linux下TCPDump的安装十分简单,一种是以rpm包的形式来进行安装,另一种是以源程序的形式安装。以rpm包的安装方法比较简单,通过rpm命令可以直接安装,rpm包是将软件编译后打包成二进制的格式,不需要修改任何东西。安装时,以超级用户登录,参考命令如下:#rpm -ivh TCPDump.rpm。这样,TCPDump就可以顺利地安装到Linux系统中。不过,现在较高版本的Linux操作系统都自带了这个工具,关于TCPDump更详细的信息,可以查看Man TCPDump。
普通情况下,不带参数执行TCPDump,即:#TCPDump,截获的是通过第一个网络界面的数据包。直接启动TCPDump将监视第一个网络界面上所有流过的数据包。如图28所示。
图 28
从上面的输出结果来看,TCPDump的基本输出格式为:“系统时间 来源主机.端口 > 目标主机.端口 数据包参数”。仔细观察,我们会发现,和上面的Windows界面相比,数据包格式有很多相似之处,这样也有助于我们来了解这个软件的使用方法。
(2)参数分析
TCPDump支持多种不同参数,如使用-i参数指定TCPDump监听的网络界面,这在计算机具有多个网络界面时非常有用;使用-c参数可以指定要监听的数据包数量;使用-w参数指定将监听到的数据包写入文件中保存,等等。然而,在数据的海洋中,TCPDump中更复杂的参数主要是用于过滤。这是为什么呢?
因为在实际操作中,网络中流量很大,如果将所有的数据包都截留下来,数据量就会很大,反而不容易发现所需要的数据包。如果不带任何参数,TCPDump就会搜索系统中所有的网络接口,并显示它截获的所有数据,这些数据对我们不一定全都需要,而且数据太多不利于分析。所以,我们应当先想好需要哪些数据,TCPDump的语法为:
TCPDump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面 >][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][- w<数据包文件>][输出数据栏位]
在实际使用中,我们可以灵活应用。现列举几个比较常用的例子:
1、截获所有192.168.10.1的主机收到的和发出的所有数据包。命令为:
TCPDump host 192.168.10.1 |
实际效果如图29所示。
图 29
2、截获主机192.168.10.1和主机192.168.10.2或192.168.10.3的通信,使用命令(在命令行中适用括号时,一定要):
#tcpdump host 192.168.10.1 and \ (192.168.10.2 or 192.168.10.3 \) |
3、如果想要获取主机192.168.10.123接收或发出的telnet包,使用如下命令:
#tcpdump tcp port 23 host 192.168.10.123 |
4、获取主机192.168.10.1除了和主机192.168.10.2之外所有主机通信的ip包,使用命令:
#tcpdump ip host 192.168.10.1 and ! 192.168.10.2 |
3、Linux服务器实例分析
通过上面的操作了解,相信很多电脑爱好者在Linux技术上有了一个质的飞跃。下面,我们综合运用这些方法来解决一个Linux服务器上安装问题。下面是一个针对邮件服务器的网络故障分析。某单位的局域网中有一台Sendmail邮件服务器,收发邮件等基本功能正常,但在使用中发现一个普遍的怪现象:在PC机上发邮件时,连接邮件服务器后,要等待很长时间才能开始工作。从检测来看,网络连接没有问题,邮件服务器和PC性能都没有问题,问题可能出在哪里呢?
为了查找问题的所在,可以采用以下的测试方法。首先,我们在PC机client上发送邮件,同时在邮件服务器server上使用TCPDump对这个client的数据包进行捕获分析,如下:
#TCPDump host client
TCPDump: listening on hme0 23:41:30.040578 client.1065 > server.smtp: S 1087965815:1087965815(0) win 64240 (DF) 23:41:30.040613 server.smtp > client.1065: S 99285900:99285900(0) ack 1087965816 win 10136 (DF) 23:41:30.040960 client.1065 > server.smtp: . ack 1 win 64240 (DF) |
然后,通过分析数据,我们看到双方顺利的完成了会话,也就是说,到目前为止,整个状态属于正常的现象。沿着这个思路,我们往下看:
23:41:30.048862 server.33152 > client.113: S 99370916:99370916(0) win 8760 (DF)
23:41:40.161052 server.33152 > client.113: S 99370916:99370916(0) win 8760 (DF) 23:41:56.061130 server.33152 > client.113: R 99370917:99370917(0) win 8760 (DF) 23:41:56.070108 server.smtp > client.1065: P 1:109(108) ack 1 win 10136 (DF) |
通过分析就可以判断问题所在了。原来,问题在于:我们看到server端试图连接client的113端口,要求认证,但是没有收到client端的回应,server端重复尝试了3次,费时26秒后,才放弃认证请求,并主动发送了reset标志的数据包,开始push后面的数据;而正是在这个过程中所花费的26秒时间,造成了发送邮件时漫长的等待情况。问题找到后,通过修改服务器端的Sendmail配置,再次测试,看到邮件服务器不再进行113端口的认证尝试,而是在三次检测后直接push数据,问题得到完美的解决。
实际上,Linux中还有很多优秀的服务器功能,如DNS 服务器、CVS服务器、DHCP服务器、数据库服务器、Samba网络服务器等。正是这些优秀的功能组合,再加上完全免费的优势,使得Linux的功能越来越强大,并逐渐在激烈的操作系统市场中占据了一席之地。通过本文的讲解,相信很多用户一定会更加喜爱Linux操作系统。文章到这里,我们又想起了那只让人爱不释手的小企鹅,毫无疑问,正是它欢快自由的脚步,我们才领略到Linux世界的无穷魅力。