บทความนี้จะเป็นการสอนวิธีการติดตั้ง Mod_ruid2 สำหรับ apache server ในการป้องกันการแก้ไขไฟล์จาก user อื่นๆ ที่อยู่ในเครื่อง พูดง่ายๆ ก็คือป้องกัน hacker ที่จะมาโจมตีเว็บไซต์ หรือ vps server ของคุณครับ ขอบคุณบทความดีๆ จาก [email protected] ที่เขียนบทความดีๆ ให้อ่านครับ นอกเหนือจากนี้ ยังสามารถทำให้ wordpress มีความปลอดภัยมากยิ่งขึ้นและสามารถติดตั้ง plugin theme โดยที่ไม่ต้องตั้งค่า ftp แต่อย่างใด
วิธีการ ทีละบรรทัดนะครับ ใจเย็นๆ
#Download and Complie
yum -y install libcap-devel
cd /root
wget -O mod_ruid2-0.9.8.tar.bz2 "http://downloads.sourceforge.net/project/mod-ruid/mod_ruid2/mod_ruid2-0.9.8.tar.bz2?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fmod-ruid%2Ffiles%2F&ts=1395735189&use_mirror=cznic"
tar xjf mod_ruid2-0.9.8.tar.bz2
cd mod_ruid2-0.9.8
apxs -a -i -l cap -c mod_ruid2.c
cd /usr/local/directadmin/data/templates/
cp virtual_host2* custom/
chown -R diradmin:diradmin custom/
echo "action=rewrite&value=httpd">>/usr/local/directadmin/data/task.queue
/usr/local/directadmin/dataskq d800
ทีนี้ เราลองเช็คดูครับว่า httpd โหลดมอดูลเข้าไปแล้วหรือยัง ด้วยคำสั่ง
grep 'mod_ruid2'/etc/httpd/conf/httpd.conf
ถ้าใช้ได้ จะเจอประมาณนี้เป้น output ครับ
LoadModule ruid2_module /usr/lib/apache/mod_ruid2.so
แล้วรัน
chown -R webapps:webapps /var/www/html
เพื่อให้ เมลกระรอก,roundcube และ phpmyadmin ใช้งานได้
และแก้ไข httpd config นิดหน่อยครับ
เปิดไฟล์ /etc/httpd/httpd.conf แล้วเพิ่มตัวหนาลงไปในคอนฟิคส่วนนี้ครับ
(ถ้าไม่เจอ จะอยู่ใน /etc/httpd/conf/extra/httpd-directories.conf)
<Directory “/var/www/html”>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
<IfModule mod_suphp.c>
suPHP_Engine On
suPHP_UserGroup webapps webapps
</IfModule>
RUidGid webapps webapps
</Directory>
แล้ว RESTART HTTPD หนึ่งที เป็นอันเสร็จพิธี ทีนี้ลองสร้าง user ขึ้นมาเทสครับ ลงพวก CMS อะไรก็ได้ที่ require 777 chmod มันจะไม่ require อีกต่อไปแล้ว
ทีนี้ในระบบเก่าคุณอาจจะมี user ที่มีไฟล์เป้น owner apache อยู่ มันอาจจะมีปัญหา ให้แก้ด้วยสคริปตามบรรทัดด้านล่างได้เลยครับ
สคริปต์จะเข้าไปเช็ค permission และแก้ไขทั้งหมดให้เป็น permission ของ user ไม่ world-readable อีกต่อไป
**** ก่อนรันคุณต้องมั่นใจว่าทำตัวหนาด้านบนผ่านแล้วนะครับ ไม่งั้นละก็ คุณรับโทรศัพท์สนุกแน่ครับ ****
cd /usr/local/directadmin/scripts &&./set_permissions.sh user_homes
find /home/*/domains/*/public_html -type d -print0 | xargs -0 chmod 755
find /home/*/domains/*/public_html -type f -print0 | xargs -0 chmod 644
find /home/*/domains/*/public_html -type f -name '*.cgi*'-exec chmod 755{} \;
find /home/*/domains/*/public_html -type f -name '*.pl*'-exec chmod 755{} \;
find /home/*/domains/*/public_html -type f -name '*.pm*'-exec chmod 755{} \;
cd /usr/local/directadmin/data/users &&for i in`ls`;do{ chown -R $i:$i /home/$i/domains/*/public_html;}; done;