Apache General Security Tips

ID
TM0004-06

Apache web server ၏ security နှင့်ပတ်သက်သော ယေဘူယျ သိသင့်သိအပ်သောအကြောင်းအရာများ ရွေးချယ်ကောက်နုတ်တင်ပြ ထားခြင်းဖြစ်ပါတယ်။

၁။ Web server ကို Update မှန်မှန်လုပ်ခြင်း

သင့်အနေဖြင့် ပုံမှန်အချိန်အပိုင်းအခြားအတိုင်း သင်၏ web server ကို အမြဲတစေ Update ပြုလုပ်သင့်ပါတယ်။ Update ပြုလုပ်တော့မည်ဆိုရင်လည်း သင့်၏ web server မှာရှိတဲ့ modules များ (သို့မဟုတ်) dependencies များနှင့်လည်း ထိခိုက်မှုမရှိအောင် လည်း ဂရုစိုက်သင့်ပါတယ်။ နောက်ပြီးတော့ Web server နှင့်အတူ PHP ကို အသုံးပြုထားလျှင် ၎င်း PHP ပါ Update ပြုလုပ်သင့် ပါတယ်။ လုံခြုံရေးဆိုင်ရာအားနည်း ချက်များဟာ အချိန်တိုင်းမှာ တွေ့ရှိနေပြီး သင့်အနေဖြင့်လည်း အဆိုပါအားနည်း ချက်များနှင့် ပတ်သက်၍ အမြဲတစေအဆင်သင့် ရှိနေရပါမယ်။ နောက်ပြီး Web server မှာ attacker တစ်ယောက်၏ ထိန်းချုပ်ခြင်းခံရခြင်း (သို့မဟုတ်) compromise ဖြစ်နေခြင်းမှာ HTTPServer Code ကြောင့်တင်မဟုတ်ပဲ Add-on code ၊ CGI script (သို့မဟုတ်) Operating System ၏အားနည်းချက်များလည်း ပါဝင်တယ်။ ထို့ကြောင့် လည်း system ပိုင်းဆိုင်ရာ Update များ ၊ software update များပါ ပြုလုပ်သင့်ပါသည်။


၂။ မလိုအပ်သည့် service များ ပိတ်ထားခြင်း

Apache HTTP Server ၏ အဓိက တစ်ခုဖြစ်သော httpd.conf ထဲရှိ အောက်ဖော်ပြပါ တချို့သော apache services များကို သင့် Web Server တွင် အသုံး ပြုခြင်းမရှိလျှင် disable ပြုလုပ်သင့်သည်။ ၎င်းတို့မှာ ဥပမာအားဖြင့် Directory browsing ၊Server side includes၊ CGI execution၊ Symbolic links စသည်တို့ကို disable လုပ်သင့်ပါသည်။


၃။ မှန်ကန်သည့် user နှင့် group များဖွဲ့၍ အသုံးပြုခြင်း

ပထမဆုံးအနေဖြင့် apache web server ကို root user အနေဖြင့် အသုံးမပြုသင့်ပါ။ ဘာကြောင့်လဲဆိုတော့ apache server သာ crack ဖြစ်ခဲ့မယ်ဆိုရင် attacker တစ်ယောက်အနေဖြင့် system ၏ root permission အထိပါ ရရှိနိုင်တဲ့ အတွက်ကြောင့် ဒါဟာ အလွန်အရေးပါတဲ့ အခြေအနေပါ။ ဘာကြောင့်လဲ ဆိုတော့ apache နဲ့ MySQL တို့ဟာ တူညီတဲ့ user/group မှာ အလုပ်လုပ်နေတာ ဖြစ်ပြီး အဲ့ဒီထဲကမှ apache ပဲဖြစ်ဖြစ် MySQL ပဲဖြစ်ဖြစ် လုံခြုံရေးဆိုင်ရာ အားနည်းချက်များ ဖြစ်ခဲ့ပြီဆိုရင် apache မှတဆင့် MySQL အထိပါ တိုက်ခိုက်ခြင်းခံရနိုင်ပါသည်။ ထိုအခြေအနေများ မဖြစ်ပေါ်စေရန် httpd.conf ဖိုင်တွင် အောက်ပါအတိုင်းထည့်လိုက်ပါ။

User apache

Group apache

မိမိသတ်မှတ်လိုသည့် User Name နှင့် Group Name များကို ထည့်သွင်း ထားသင့်ပါသည်။ တကယ်လို့ user နဲ့ group မရှိကြောင်း error ပြခဲ့ရင် apache user နဲ့ apache group ကို အသစ်ထပ်လုပ်လိုက်ပါ။


၄။ အသုံးမပြုလိုသည့် modules များကို disable ပြုလုပ်ခြင်း

Apache web server တစ်ခုတွင် modules များစွာပါဝင်ပါသည်။ ထိုကြောင့် မိမိ web server တွင် modules ဘယ်လောက်များများ ဘယ ် modules တွေ အလုပ်လုပ် နေသည်ကို သိစေရန်အတွက် terminal တွင် ဒီcommand ကို grep -n loadmodule httpd.conf ဟူသည့် command ကို apache configuration ဖိုင်တွေရှိသော directory အတွင်းမှာ သွားပြီး root user အနေဖြင့် ရိုက်ထည့်ကြည့်ပါ။ မိမိ server တွင် modules ဘယ်လောက် အလုပ်လုပ်နေသည်ကို တွေ့ရပါမယ်။ ဥပမာ line နံပါတ် 119 Include /etc/apache2/sysconfig.d /loadmodule.conf လို့တွေ့တယ်ဆိုရင် terminal တွင် vi /etc/apache2/sysconfig.d/loadmodule.conf လို့ ရိုက်ထည့်၍ မိမိအသုံးမပြုလို သည့် modules များရှေ့တွင် '#' character ထည့်၍ disable ပြုလုပ်နိုင်ပါသည်။


၅။ Document root အပြင်ဘက်ထိ browsing လုပ်ခြင်းကို ခွင့်မပြုခြင်း

Document root အပြင်ဘက်ထိ browsing လုပ်ခြင်းကို ခွင့်မပြုသင့်ပါ။ ဥပမာအားဖြင့်
# cd /; ln -s / public_html
Accessing http://localhost/~root/
ထိုသို့လုပ်ခြင်းဖြင့် client ကို မိမိ filesystem တစ်ခုလုံးကို ခွင့်ပြုလိုက်သလို ဖြစ်သွားသည်။ ထိုသို့မဖြစ်စေရန် သင့်ရဲ့ server configuration တွင်

 

<Directory/>
Order Deny,Allow 

Deny from all 

</Directory>


လို့ ရေးရပါမည်။ အဲလိုလုပ်ခြင်းဖြင့် filesystem location ကို default access လုပ်ခြင်းမှတာဆီးခြင်းဖြစ်သည်။ တကယ်လို့ ကိုယ်ပေးချင်တဲ့ directory ကို တခြားလူ တွေကို access လုပ်ခွင့်ပေးချင်ရင်တော့ အောက်ပါအတိုင်း ရေးထားရပါမယ်။

<Directory /usr/users/*/public_html>

Order Deny,Allow 

Allow from all 

</Directory>

၆။ Web Server ကို Request လုပ်တဲ့ ပမာဏအား ကန့်သတ်ခြင်း

DDoS (Distributed Denial of Services)တိုက်ခိုက်ခြင်းမှ ကာကွယ်ရန်အတွက် web server ဆီ request လုပ်တဲ့ size ပမာဏကို ကန့်သတ်သင့်ပါတယ်။ ဒါကလဲ သင့်ရဲ့ web site ၏ traffic လိုအပ်ချက်ပေါ်မူတည်ပါတယ်။ Default အရဆိုရင် ကိုယ့်ရဲ့ web server ဆီ request လုပ်တဲ့ size ပမာဏကတော့ unlimited ပါ။


၇။ Apache ၏ version number ကို ဖျောက်ထားခြင်း

Version number ကို ဖျောက်ထားခြင်းအားဖြင့် hacker တစ်ယောက်ဟာ မိမိရဲ့ web server ကို ဘယ်လိုလွယ်လွယ်ကူကူ မြန်မြန်ဆန်ဆနhacking လုပ်ခြင်းမှ တစ်စိတ်တစ်ပိုင်း ကာကွယ်နိုင်ပါလိမ့်မယ်။ Apache version number ကိုဖျောက်ရန် အတွက် document root Directory tag ထဲမှာ ဒီလိုထည့်ကြည့်ပါ။

ServerSignature Off

ServerTokens Prod

၈။ Logs တွေကို စောင့်ကြည့်ခြင်း

သင့်ရဲ့ web server မှာ ဘာတွေဖြစ်နေလဲ ဘယ်သူတွေက ခွင့်မပြုတဲ့ လမ်းကြောင်းတွေကို access လုပ်နေသလဲဆိုတာသိနိုင်ရန်အတွက် log ဖိုင်တွေကို အမြဲတစေ စောင့်ကြည့်စစ်ဆေးသင့်သည်။ ဥပမာအားဖြင့်
grep -c "/jsp/source.jsp?/jsp/ /jsp/source.jsp??" access_log
grep "client denied" error_log | tail -n 10
ပထမဆုံးတစ်ခုကတော့ Apache Tomcat Source.JSP Malformed Request Information Disclosure Vulnerability ကို exploit လုပ်ဖို့ ကြိုးစားနေတဲ့ တိုက်ခိုက်မှုကို စာရင်းထုတ်ပြတာဖြစ်ပြီး ဒုတိယကတော့ denied လုပ်ခြင်းခံရတဲ့ နောက်ဆုံး user ဆယ်ယောက်က စာရင်းလုပ်ပြတာဖြစ်တယ်။
ဥပမာ

[Thu Jul 11 17:18:39 2002] [error] [client foo.example.com] client denied by server configuration: /usr/

local/apache/htdocs/.htpasswd

အပေါ်က log data ကိုကြည့်ခြင်းအားဖြင့် client တစ်ယောက်က server ရဲ့ /usr/local/apache/htdocs/.htpasswd ဖိုင်ကို access လုပ်ဖို့ကြိုးစားနေတာဖြစ်ပြီး တကယ်လို့ အဲဒီ client က .htpasswd ဖိုင်ကို ရရှိခဲ့မယ်ဆိုရင် အောက်ကအတိုင်း log data ကိုရရှိမယ်ဖြစ်တယ်။

foo.example.com - - [12/Jul/2002:01:59:13 +0200] "GET /.htpasswd HTTP/1.1"
အဲဒီလို မဖြစ်ရန်အတွက် သင့်ရဲ့ access log ထဲတွင် အောက်ဖော်ပြပါအတိုင်း ရေးထားသင့်ပါတယ်။

 

<Files ".ht*">
Order allow,deny 

Deny from all

</Files>

 
အထက်ဖော်ပြသော အကြောင်းအရာမှာ General Security Tips များသာဖြစ်ပါသည်။ ဆက်လက်၍ Apache web server ၏ vulnerabilities များကို document version အလိုက် ထပ်မံကြိုးစားတင်ပြသွားမည်ဖြစ်ပါသည ်။