第一篇:總結(jié)Linux系統(tǒng)下Web、FTP、SMTP服務(wù)器常見(jiàn)的故障和排除。
一:Linux系統(tǒng)下Web服務(wù)器常見(jiàn)的故障和排除
1、服務(wù)器響應(yīng)緩慢
如果服務(wù)器響應(yīng)緩慢,需要做的第一件事情就是判斷問(wèn)題來(lái)自服務(wù)器還是網(wǎng)絡(luò),第一個(gè)工具就是uptime。
uptime 會(huì)顯示服務(wù)器的平均負(fù)載,如果最后的這個(gè)數(shù)字高于 2 或者 3 ,問(wèn)題的原因就在于有一些進(jìn)程占用系統(tǒng)太多資源。如果這個(gè)數(shù)字不是很高,你就需要考慮網(wǎng)絡(luò)的因素了。
如果看到的高的負(fù)載的話,就需要使用 top 命令來(lái)確定那些進(jìn)程在消耗系統(tǒng)資源。
top 命令缺省顯示10條進(jìn)程,當(dāng)然你可以使用 top N 來(lái)指定需要查看的進(jìn)程數(shù)。
更加詳細(xì)的進(jìn)程列表可以使用 ps-auxw 命令
比較 Web 進(jìn)程的“硬”限制(Apache 編譯時(shí)的限制)和“軟”限制(httpd.conf的限制),如果兩者的數(shù)字接近,那么你就要考慮升級(jí)硬件或者重新編譯 Apache 了。
2、未授權(quán)登錄
如果擔(dān)心有非法用戶闖入系統(tǒng),最簡(jiǎn)單的辦法就是用 w 命令來(lái)檢查。
如果真的看到有非法用戶在你的系統(tǒng)上,可以立即 kill 他的進(jìn)程, 用 vipw 命令把他的口令修改為“*”,或者把 shell 改為 /sbin/nologin。
3、服務(wù)不能啟動(dòng)或者崩潰
如果 Web 服務(wù)器不能啟動(dòng)或者啟動(dòng)時(shí)崩潰,就需要使用 apachectl 命令來(lái)找到原因。首先用 apachectl configtest 命令檢查 httpd.conf 的合法性。但是 apachectl 并不是萬(wàn)能的。如果問(wèn)題依然不能解決,我們就應(yīng)該檢查錯(cuò)誤日志。另外,apachectl 檢查 /var/run/httpd.pid 文件來(lái)找到原來(lái)的進(jìn)程,如果進(jìn)程號(hào)不同,apachectl stop 命令不會(huì)工作。這種情況下就需要使用 ps 命令來(lái) kill 對(duì)應(yīng)的進(jìn)程。
4、網(wǎng)絡(luò)檢測(cè)
查找因?yàn)榫W(wǎng)絡(luò)問(wèn)題引起的原因時(shí),第一個(gè)簡(jiǎn)單的命令就是 ping。
如果 ping 的結(jié)果看起來(lái)很正常,或許就需要使用比較大的包來(lái)試一下,ping 的缺省包大小為 56 字節(jié),我們用-s 指定包大小為 2048 字節(jié)來(lái)試一下。采用大的包之后,返回時(shí)間延長(zhǎng)很正常,但是非常長(zhǎng)的時(shí)間返回或者包丟失就顯示網(wǎng)絡(luò)有問(wèn)題了。
5、交叉信號(hào)
如果懷疑服務(wù)器和交換機(jī)之間的網(wǎng)絡(luò)配置有問(wèn)題,可以采用 netstat-finet 命令來(lái)顯示打開(kāi)的端口以及連機(jī)的外部服務(wù)。
如果你關(guān)心自己的服務(wù)器是否遭到攻擊,就會(huì)顯示內(nèi)核的內(nèi)存使用超常,可以采用
netstat 的-m 參數(shù)來(lái)查看。
如果你發(fā)現(xiàn) httpd 的負(fù)載不是很重,但是網(wǎng)絡(luò)資源占用的內(nèi)存還是很大的話,可以考慮關(guān)閉一些服務(wù)和端口。
6、網(wǎng)絡(luò)問(wèn)題
如果網(wǎng)絡(luò)發(fā)生了問(wèn)題,就需要使用 ifconfig 命令來(lái)檢查網(wǎng)卡是否正常。這個(gè)命令會(huì)顯示網(wǎng)卡的 IP 地址,掩碼,雙工,速率等。
常見(jiàn)的問(wèn)題是網(wǎng)卡的速率或者雙工設(shè)置和交換機(jī)端口不一致。特別是設(shè)置了“autosense” 選項(xiàng),但是卻沒(méi)有成功??梢圆捎?/p>
ifconfig down eth0 [options]
來(lái)關(guān)閉。
7、權(quán)限問(wèn)題
有些稀奇古怪的問(wèn)題,很可能來(lái)自沒(méi)有剩余空間??梢圆捎?df 命令來(lái)檢查剩余的硬盤(pán)空間。一個(gè)簡(jiǎn)單的例子,就是 PHP 的session 無(wú)效了,原因就是寫(xiě)入 session 的文件系統(tǒng) /tmp 已經(jīng)滿了。
有些問(wèn)題就是沒(méi)有設(shè)置好權(quán)限,常見(jiàn)的問(wèn)題就是沒(méi)有為 CGI 腳本設(shè)置 x 權(quán)限,沒(méi)有為一些目錄設(shè)置 rx 權(quán)限。
8、常見(jiàn)的懷疑對(duì)象
如果有問(wèn)題發(fā)生,其實(shí)第一件事就應(yīng)該是檢查系統(tǒng)日志:/var/log/messages。
如果不能在 /var/log/ 目錄找到有些日志文件,可以查看 /etc/syslog.conf 的配置。
對(duì)于 Apache 來(lái)說(shuō),就需要檢查 [apache_dir]/logs/error _log 來(lái)確定不能啟動(dòng)的原因。二.Linux系統(tǒng)下FTP服務(wù)器常見(jiàn)的故障和排除
1.日志文件文件出現(xiàn)錯(cuò)誤信息“500 OOPS: vsFTPd: not found: directory given in 'secure_chroot_dir':/usr/share/empty”。解決方法:vsFTPd.conf 添加一行:
secure_chroot_dir=/opt/usr/share/empty 建 立一個(gè)目錄
mkdir /opt/usr/share/empty 然后關(guān)閉匿名登錄把 vsFTPd.conf 中的 anonymous_enable=YES 修改為
anonymous_enable=NO 2.怎么配置linux vsFTPd服務(wù)器來(lái)chroot虛擬用戶? 解決方法: 當(dāng)嘗試在vsFTPd下chroot虛擬用戶的時(shí) 候,需要這樣做:在vsFTPd.conf里 guest_enable=yes #virtual users are mapped to user FTP which owns all dirs guest_username=FTP #chroots the virtual user to his directory(user joe has directory joe)chroot_local_user=YES user_sub_token=$USER 關(guān) 鍵的事情是確保在/etc/passwd的FTP用戶的主目錄實(shí)際上包含在/var/FTP/$USER里的字符串$USER 守護(hù)進(jìn)程會(huì)做一個(gè)簡(jiǎn)單的字符串匹配比較,來(lái)決定到哪里替換用戶的名字。
3.vsFTP中怎樣限制用戶只能在自己的home目錄下? 解決方法: 有些時(shí)候你不想讓FTP用戶可以訪問(wèn)他自己home目錄之外 的其他文件。vsFTP守護(hù)進(jìn)程可以通過(guò)chroot配置這個(gè)策略。編輯/etc/vsFTPd/vsFTPd.conf文件,添加一行: chroot_local_user=YES 保 存之后記得重啟vsFTPd服務(wù): service vsFTPd restart 重啟服務(wù)之后,F(xiàn)TP所有用戶都將受限制,只能訪問(wèn)他們 home目錄的文件了。4.如何修改vsFTPd的默認(rèn)根目錄/var/FTP/pub到另一個(gè)目錄? 解決方法:修改FTP的根目錄只要修改/etc /vsFTPd/vsFTPd.conf文件即可: 加入如下兩行:
local_root=/var/004km.cne to blah FTP service 設(shè)置登錄FTP服務(wù)器是顯示的信息
4、設(shè)置客戶端登錄后所在的目錄
local_root=/var/ftp 設(shè)置本地用戶登錄后所在的目錄,默認(rèn)情況下沒(méi)有此項(xiàng),本地用戶登
錄FTP服務(wù)器后,所在目錄為用戶的家目錄 anon_root=/var/ftp 設(shè)置匿名用戶登錄FTP服務(wù)器時(shí)所在的目錄,若未指定默認(rèn)為/var/ftp
5、設(shè)置是否將所有的用戶鎖定在指定的FTP目錄
默認(rèn)情況下,匿名用戶會(huì)被鎖定在默認(rèn)的FTP目錄中,而本地用戶可以訪問(wèn)到自己的FTP目錄
以外的內(nèi)容。處于安全考慮,建議將本地用戶鎖定在指定的FTP目錄中。
chroot_list_enable=YES 設(shè)置是否啟用chroot_list_file配置項(xiàng)指定的用戶列表文件。chroot_local_user=YES 用于指定用戶列表文件中的用戶,是否允許切換到指定的FTP目錄>以外的其他目錄
chroot_list_file=/etc/vsftpd/chroot_list 用于指定用戶列表文件,改文件用于控制那>些用戶可以切換到指定的FTP目錄以外的其他目錄
當(dāng)chroot_list_enable=NO且chroot_local_user=NO 所有用戶都可以切換到指定的FTP目錄>以外的其他目錄
當(dāng)chroot_list_enable=YES且chroot_local_user=NO時(shí),在 /etc/vsftp/chroot_list文件>中列出的用戶可以切換到指定的FTP目錄以外的其他目錄,未在改文件中列出的用戶不可以>切換到指定目錄之外的其他目錄。
6、設(shè)置用戶訪問(wèn)控制
userlist_enable=YES /etc/vsftpd/user_list文件生效,取NO時(shí)不生效 userlist_deny=YES /etc/vsftpd/user_list文件中的用戶不能訪問(wèn)服務(wù)器 三:Linux系統(tǒng)下Web服務(wù)器常見(jiàn)的故障和排除
Linux下sendmail的smtp認(rèn)證的問(wèn)題及其解決方案
1,問(wèn)題的提出
為了防止垃圾郵件,通常管理員會(huì) 啟用郵件服務(wù)器的smtp認(rèn)證功能。但是發(fā)現(xiàn)在配置了smtp的認(rèn)證之后,如果客戶端不勾選“我的服務(wù)器需要認(rèn)證”,則客戶端同樣能夠發(fā)送郵件
2,質(zhì)疑
如果用戶都能夠不勾選認(rèn)證選項(xiàng)就進(jìn)行郵件的發(fā)送,還要smtp的認(rèn)證做什么?
3,測(cè)試環(huán)境 red hat Linux AS 4 sendmail 8.14,新建郵件用戶,測(cè)試的時(shí)候用這個(gè)用戶樣為自己發(fā)郵件
4,問(wèn)題的分析
分析中。。反復(fù)測(cè)始終。。
5,問(wèn)題的解決
1,發(fā)現(xiàn)問(wèn)題所在,通常配置smtp的方法
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl DAEMON_OPTIONS(`Port=submission, Name=MSA,ME=a')dnl 問(wèn)題就出現(xiàn)在了第一句話上(他的意思是只要通過(guò)其列出的認(rèn)證方法認(rèn)證的用戶,不通過(guò)smtp也可以發(fā)送郵件)2,初步方案
dnl #TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl DAEMON_OPTIONS(`Port=submission, Name=MSA,ME=a')dnl 注釋掉第一行的內(nèi)容,這樣只有通過(guò)認(rèn)證的用戶才能發(fā)送郵件了.3,第二方案,TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl dnl #DAEMON_OPTIONS(`Port=25, Name=MSA')dnl 這樣就強(qiáng)制所有使用該郵件服務(wù)器進(jìn)行郵件轉(zhuǎn)發(fā)的用戶在認(rèn)證后才能發(fā)郵件了。此時(shí)只有在發(fā)件人或收件人中至少有一方是服務(wù)器本地用戶是才予以發(fā)送,否則拒絕.4.注意問(wèn)題, 初步方案和第二方案中的access文件中必須保持只有127.0.0.1 是RELAY的,其它內(nèi)容都清空掉.不要忘記把它生成數(shù)據(jù)庫(kù)格式