Linux Red Hat 7.2 架網站指南 ------------------------------------------ 不限時數 計時制adsl 變動ip 架站看這邊 你一定是急著用redhat 連網吧 小弟的說明內有寫連網設定的方法 由於為了安全的理由 是有一定的順序啟動程式 所以就依順序寫下來 意即先設好hosts.allow 及 hosts.deny 並組態好並啟動防火牆 在啟動防火牆之前 .就連線到網際網路 你的主機完全暴露在駭客的面前 安裝前請先以red hat 跑expert模式的fdisk 請分割如下 第一磁區給win98 fat32 vfat 6.5gb 第2磁區 ext3 7.0gb 第3磁區win fat32 ext 4.3gb 第四磁區linux swap 2048mb(最大值) 第五磁區 winfat32 邏輯磁碟4.3gb 畫好分割表後寫入重開機,以ghost重灌win98後升級xp(而不是全新安裝xp) 以下說的都是免先付費,你也可不付費 為了安全的理由 (避免駭客用你的主機攻擊第三地主機) 請勿到其它不能信任的網站或ftp台下載 先以xp上網至 所以要下載是因為redhat7.2內附的adsl-setup少一個script 如果是固定IP 不需下載 點網站的download或到下面這個網址 http://www.roaringpenguin.com/pppoe/#download 下載這兩個檔啊 rp-pppoe-3.3-1.i386.rpm rp-pppoe-gui-3.3-1.i386.rpm 至members.dyndns.org 點選sign up下的secure 以加密https傳送申請會員, 請收電子郵件啟動帳號,回members.dyndns.org 在該站上進行一些設定 以secure登入並設定新密碼,及取一個你的dynamic domain Name,並核選啟用wildcard 至apache.org下載apache_1.3.23.tar.gz 至php.net下載php-4.1.2.tar.gz 至mysql.com下載 MySQL-3.23.49a-1.i386.rpm MySQL-client-3.23.49a-1.i386.rpm MySQL-shared-3.23.49a-1.i386.rpm 在安裝red hat 7.2須注意的 Network configuration 請勿核選 DHCP 及 Activate on Boot 在hostname欄位中填你申請的domain name如your.homeip.net 如果要支援中文檔名 請勿於安裝Red Hat 過程時指定自動掛載 Windows 的分割區 安裝語系時, 預設值並沒有把中文Chinese-Traditional(ROC Taiwan)裝進去 請清除English(US)核選ROC Taiwan 安裝套件時,請選Everything後,請注意其下方, 核選Select Indivisual,按Next 核選radio button 平面展開flat view , 清除anonftpd, apache* php* mysql* logwatch tripwire telnet-server wuftpd mrtg rwall* ruser* rwho* finger finger-server rwho xinetd snmp ncftp wget nmap nc lsof netstat logwatch ncftp ucd-snmp* nmap 為了防止駭客入侵不要一些服務(本文末有說明) 其中kde-i18n只要保留kde-i18n-big5即可 將/etc/sendmail.cf #O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA 改為 O DaemonPortOptions=Port=smtp,Addr=0.0.0.0, Name=MTA 在/etc/mail/access 只有這三行(避免駭客經由你的主機cgi發垃圾信spam) localhost.localdomain RELAY localhost RELAY 127.0.0.1 RELAY 等red hat安裝完畢後 請在shell下ntsysv指令清除sendmail xinetd syslogd xinetd及sshd的*號按ok (不聆聽telnet 23埠及sendmail 25埠) 須先於mnt資料夾下建立win資料夾及data資料夾 以指令 mount -o iocharset=cp950 -t vfat /dev/hda1 /mnt/win mount -o iocharset=cp950 -t vfat /dev/hda5 /mnt/data 此例為 windows os裝於 /dev/hda1 此例為 windows ap裝於 /dev/hda5 邏輯磁碟 接下來的順序不可前後顛倒, 修改/etc/hosts.deny 加入下1行 ALL: ALL <--拒絕所有的主機 修改/etc/hosts.allow 加入下兩行 ALL: 127.0.0.1 your.homeip.net <--允許你使用本機機器的所有服務 httpd: ALL (只有開給user瀏覽網站) *註:如果與hosts.deny衝突,hosts.allow此檔有優先權 請在文字指令下鎖死三檔 chattr +i /etc/hosts.allow chattr +i /etc/hosts.deny chattr +i /etc/hosts 重新開機 動態IP防火牆設法之一(port80) KDE-系統-firewall-config 選浮動式按鈕Options ICMP 選 Restricted就好(不要ping) 別人ping你的主機 會延長回應時間拖累系統速度 Default Policies input --> Accept output --> Accept forward --> deny 選浮動式按鈕Rules按New Source 將!左邊的方格全選 Destination Dst Device 填入eth0(以只有一張網路卡為例) Dst Ports 80 將!左邊的方格全選 Protocol 選* -->deny chain 選 input 核選only connected 核選bidirectional 按apply 再按ok 防火牆設法之二(port8080)<--red hat建議的方式 設定防火牆組態參考網址 http://www.redhat.com/docs/manuals/linux/RHL-7.2-Manual/custom-guide/ch-gnomelokkit.html 此設定不支援Port 80(apache的預設值) 請將httpd.conf的Port 80改為8080 KDE選單-->Programs--系統--Lokkit 按是->下個->選Low Security-->選Yes(信任網路卡連網) -->選No(沒有Dhcp)-->選Yes-->Enable Incoming Service -->還是選Yes(如果你是用其它主機架Internet 網站,此機器只是做區域網路網頁伺服器選No) -->選No(不准外來的SMTP送信進來)-->選No(不准SSH)-->選No(不准Telnet) 啟動防火牆參考網址 http://www.redhat.com/docs/manuals/linux/RHL-7.2-Manual/custom-guide/activate-firewall.html 啟動防火牆 /sbin/service ipchains restart 使用者需在網址欄指定Port 如your.homeip.net:8080 才能進入你的web站 從掛載的win磁區找到先前下載的rp-pppoe 安裝rp-pppoe 安裝方法 rpm -Uvh rp-pppoe-3.3-1.i386.rpm rp-pppoe-gui-3.3-1.i386.rpm 手動執行 /usr/bin/tkpppoe 設定 basic username 輸入使用者名稱勿加@yourisp.net(加在下一欄但不要@) network yourisp.net password yourpasswd 請選浮動活頁Nic and Dns ethernet interface 填eth0(以只有一張螃蟹卡為例) dns setup specify p dns 168.95.1.1 s dns 168.95.192.1(此以hinet網域名主機位址為例) options 請核選Use synchronous ppp firewalling 選standalone(以只有一台電腦為例) 按ok, 請先手動啟動 按start鍵 此時拉開mozilla瀏覽器即可上網 下載netscape 6.2.1安裝到/usr/lib/netscape ==以下的步驟為必要============= 目的:更新redhat核心及kde字型 先於shell執行rhn_register 註冊redhat 執行up2date =============================== 先依序安裝mysql rpm -Uvh MySQL-3.23.49a-1.i386.rpm 安裝後出現教你怎麼設超級網管root的密碼畫面,安裝程式並啟動mysql 而且每次開機都會載入mysql rpm -Uvh MySQL-client-3.23.49a-1.i386.rpm rpm -Uvh MySQL-shared-3.23.49a-1.i386.rpm 安裝php前須對apache組態 偽裝apache版本 tar xvzf apache_1.3.23.tar.gz 編輯 apache_1.3.23/src/include/httpd.h 字串搜尋BASEREVISION 改1.3.23成別的版本 對資料夾更名成apache_1.3.*(*為數字) % cd apache_1.3.* % ./configure 偽裝php版本 tar xvzf php-4.1.2.tar.gz 編輯 php-4.1.1/main/php_version.h 改你要的版本號碼,別忘了同時改資料夾名稱 % cd ../php-4.0.* 以下兩行請打成同一行(空一格),如行數不夠讓它自動轉行勿按enter鍵 % ./configure --with-mysql --with-apache=../apache_1.3.x --enable-i18n --enable-mbregex % make % make install $ cd ../apache_1.3.x $ ./configure --prefix=/www --activate-module=src/modules/php4/libphp4.a $ make $ make install 此時apache已安裝安成,但請稍候啟動apache $ cd ../php-4.1.x $ cp php.ini-dist /usr/local/lib/php.ini 編輯 /usr/local/lib/php.ini 此檔(初學者勿改). 編輯/www/conf/httpd.conf 加入一行 AddType application/x-httpd-php .php .php3 拒絕為網站目錄表列時 最末一行簽上web伺服器軟體名稱與版本 改變ServerSignature off cgi的危險在chmod 777時,遠端可以輸入可執行的perl腳本 .cgi檔建議改為755,輸出文檔與存放文檔的資料夾改為666,圖檔放在/htdocs/下 ============================================= cgi修改後,再次存檔執行時會出現 500 Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Message: Failed to create CGI process. 那是因為以記事本等純文字編輯軟體時 使cgi的文檔最末一行有空行 如果你是使用red hat 7.2 的advanced editor 那請於最末一行按倒退鍵 消去空白行即可 ============================================== 下一行增加#號意指關閉 任何資料夾下若副檔名為.cgi .pl時視為cgi可執行角本 這個功能 #AddHandler cgi-script .cgi .pl 請限定可執行cgi的資料夾 將下一行#號去掉,網址加上/cgi-bin/即為絕對路徑的別名 ScriptAlias /cgi-bin/ "/www/cgi-bin/" 如何讓他們無法利用雙句點斜線及捷徑(符號連結) 透過cgi來攻擊web主機, 取得/etc/passwd檔 改變可ExecCGI及使.htaccess作用 < Directory "/www/cgi-bin" > AllowOverride None <--- 這裡None改為Limit Options None <--- 這裡None改為ExecCGI 並加上SymLinksIfOwnerMatch Order allow,deny Allow from all 以?U為如果你的CGI程式需要一個子目錄的例子 < Directory "/www/cgi-bin/lb5000" > AllowOverride Limit Options ExecCGI SymLinksIfOwnerMatch Order allow,deny Allow from all < /Directory > < Directory "/www/cgi-bin/mkaki" > AllowOverride Limit Options ExecCGI SymLinksIfOwnerMatch Order allow,deny Allow from all < /Directory > < Directory "/www/htdocs" > 注意此行下的AllowOverride None 使.htaccess作用 AllowOverride None <--- 這裡None改為Limit < Directory / > 注意此行下的AllowOverride None 使.htaccess作用 AllowOverride None <--- 這裡None改為Limit 在下行加上index.php index.php3 index.htm為進入目錄時 DirectoryIndex index.html index.php index.php3 index.htm 資料夾經過選擇的檔案表列 以下為例,當index.html不存在時,表列list資料夾內檔案及子資料夾 < Directory "/www/htdocs/list" > Options Indexes ... 搜尋此行 IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t 加上要忽略表列的子資料夾名稱或檔名(可支援萬用字元*) 如希望表列時不要加上robots.txt 可以加上robot*,如下行 IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t robot* shtml的危險在不受httpd.conf的控制便可執行cgi程式與指定前往的資料夾 如果要啟動shtml必須將下兩行的#去掉 #AddType text/html .shtml #AddHandler server-parsed .shtml 如果是網站主目錄要放shtml檔如下所例 < Directory "/www/htdocs" > Options Indexes MultiViews SymLinksIfOwnerMatch IncludesNOEXEC 醬子就可以避免駭客用shtml檔寫一個perl腳本以現有cgi為途徑遞到你的cgi-bin資料夾 有關robots.txt 通常自己增一文字檔放在/www/htdocs下 加上如下兩行 User-agent: * 適用搜尋引擎robots程式的所有類別 Disallow: / 網站內容全部不允許發佈在搜尋引擎包括cgi 隱藏robots.txt加下五行至httpd.conf < Files ~ "^\robots.txt" > Order allow,deny Deny from all Satisfy All < /Files > robots.txt 應該讓搜尋引擎存取 原文只是一個示範 啟動apache /www/bin/apachectl start 編輯/etc/rc.d/rc.local文字檔 加入此行 /www/bin/apachectl start 以後每次開機就會載入apache與php 此時在瀏覽器輸入yourhost.domain.org 應該可以看到apache在你htdocs資料夾下的預設首頁 但是只有你的機器看得到你的網站 至http://clients.dyndns.org/unix.php 下載客戶端ddclient程式 依ddclient README檔案 將ddclient複製到/usr/sbin下 將sample_etc_ddclient.conf改名為ddclient.conf 編輯ddclient.conf 為下一行去除#號 use=web, web=checkip.dyndns.org/, web-skip='IP Address' .. 改login為你在dyndns.org的username 去除#號 password為你在dyndns.org的password 去??#號 wildcard=yes 去除#號 在## dyndns.org dynamic addresses一節 中下面第五行的 your-dynamic-host.dyndns.org請改為你的主機名稱 如your.homeip.net 改好將ddclient.conf放在/etc下 請手動啟動 /usr/sbin/ddclient start 最後啟動防火牆 方法之一 將kde-->系統-->防火牆config對話方塊打開 先按apply再按activate鍵 方法之二 <--red hat建議的方式 /sbin/service ipchains restart =============================================== 每次開機後必須先啟動tkpppoe adsl連線 /usr/bin/tkpppoe 按start鍵 小弟反對啟動redhat交由開機程式rc.local自動連上網路 在啟動防火牆之前 你的主機完全暴露在駭客的面前 再啟動ddclient 報告更動ip給dyndns.org主機 /usr/sbin/ddclient start *如果這樣不能上你的網站 一定是apache沒有啟動 /www/bin/apachectl start 最後啟動防火牆 方法之一 將kde-->系統-->防火牆config對話方塊打開 先按apply再按activate鍵 方法之二 <--red hat建議的方式 /sbin/service ipchains restart ============================= 如果有更新httpd.conf那麼除了要重新啟動apache /www/bin/apachectl restart 還要再啟動防火牆 方法之一 將kde-->系統-->防火牆config對話方塊打開 先按apply再按activate鍵 方法之二 <--red hat建議的方式 /sbin/service ipchains restart ================================== 有關.htaceess 通常自己增一文字檔放在要禁止存取的各目錄 如放.htaccess在/www/htdocs下 內容如 < Limit GET > order allow,deny allow from all deny from 61.33.208.65 deny from 61.36.1.133 < /Limit > 通常自己增一文字檔放在要禁止存取的各目錄下 如放.htaccess在/www/cgi-bin下 內容如 < Limit GET PUT POST > order allow,deny allow from all deny from 61.33.208.65 deny from 61.36.1.133 deny from 61.40.240.74 deny from 61.70.74.210 < /Limit > 高竿的駭客往往是透過入侵中國大陸的主機 植入可連續攻擊的腳本,及在看不見的網頁頁框安裝木馬,來攻擊你的web server 所列ip僅為舉例多是木馬網站以攻擊nt xp 2000為主 大陸的主機有一部份是被來自各地的駭客嫁禍的. 你能想像聆聽某銀行的連接埠居然是你的電腦嗎? 當然不是你做的, 但駭客可以在你的機器留下攻擊第三台電腦的證據 讓你百口莫辯. 這就是為什麼網路上可以匿名就儘量匿名的原因. whois 是linux指令 方法是於shell文字模式下 whois xxxx.com即得nic的註冊資料 我們向dyndns.org註冊的是不需要用身份證號碼計算程式來假造資料的 因為跟本就不用填 ^___^