Category: Linux

แก้ PATH ผิดชีวิตก็เปลี่ยน

ขอบคุณพี่หน่อยมากครับที่ช่วยให้ผมได้แก้ปัญหา Server ในรอบ 2 ปีเลยก็ว่าได้
Linux ก็มี PATH
Windows ก็มี PATH

ส่วนใหญ่ตัวแปร PATH จะใช้เก็บไดเร็กทอรี execute file ของพวกโปรแกรมต่างๆ ไว้เพื่อให้เรียกใช้ง่ายได้ง่ายไม่ต้อง /xxx/yyy/zzz ให้ยุ่งยากเสียเวลา แต่ถ้าคุณเพิ่ม PATH ผิดละก็ทำให้งานงอกได้เหมือนกันนะครับ

ตัวอย่างเช่นกรณีวันนี้
ใครสักคนต้องการที่จะติดตั้ง tomcat ไว้ใช้งานบน server แต่ปรากฏว่าเขาได้แก้ไขไฟล์ config บางตัวผิดพลาดทำให้เรียกคำสั่ง ls, cat หรือคำสั่งควบคุม service ต่างๆ ไม่ได้เลย ที่จริงก็ยังเรียกได้แต่ต้องพิมพ์ PATH เต็มๆ เข้าไป
เมื่อได้รับสายจากพี่ชายที่อยู่แดนไกล แล้วพี่เขาบอกว่า น้องกิว server พี่เรียกทำสั่งๆ ต่างไม่ได้เลย ประเด็นแรกที่ผมโฟกัสไปก็คือเจ้า PATH นี่แหละ ต้องมีอะไรผิดปกติแน่ๆ ปัญหามีอยู่อย่างเดียวคือตอนที่พี่แกโทรมาผมนั่งกิน Sukishi อยู่กับภรรยา เบื้องต้นให้พี่เค้าสองสั่งคำสั่งต่างๆ ด้วย path เต็มๆ ก็ยังสามารถสั่งได้ปัญหามาจาก PATH ผิดชัวๆ

หลังจากเช็คบิลตัวเบาๆ ออกจากร้านก็กลับมาเปิด 3g กากๆ remote ไปดู
สิ่งแรกที่ผมทำคือ
/bin/echo $PATH

[root@PDCSERVER ~]# echo $PATH
/opt/tomcat/bin::/root/bin

ดูเสร็จรู้เลย /bin /sbin ไม่รู้หายไปไหนหมดเช็ค .bash_profile .bash_rc ก็ปกติดี
ลอง last กับ history ดูก็พบว่ามีคน remote มาลง tomcat แล้วก็ได้ฝังไฟล์ script.sh ไว้ที่ /etc/profile.d
ลองตามไปเปิดดู

[root@PDCSERVER ~]# /bin/cat /etc/profile.d/script.sh
#!/bin/bash
CATALINA_HOME=/opt/tomcat
PATH=$CATALINA_HOME/bin:$PATHcd
export PATH CATALINA_HOME
export CLASSPATH=.

ผมเดาเอาว่าคนแก้คงต้องการแก้เป็น
[root@PDCSERVER ~]# cat /etc/profile.d/script.sh
#!/bin/bash
CATALINA_HOME=/opt/tomcat
PATH=$CATALINA_HOME/bin::$PATH
export PATH CATALINA_HOME
export CLASSPATH=.

สิ่งที่ทำให้ผิดพลาดคือ : หายไปตัวนึงแล้วก็เผลอกด cd ตามหลัง $PATH
หลังจากลองแก้ดู แล้ว login เข้าไปยัง Server ใหม่ก็ใช้งาน PATH ได้ตามปกติครับ

[root@PDCSERVER ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

PATH กลับมาแล้ว
จบข่าว

ประเด็นที่ผมอยากโฟกัสอีกเรื่องนึงครับสำหรับทำ Troubleshooting คือการหาสาเหตุที่แท้จริงของปัญหาไม่ใช่แก้ปัญหาที่ปลายน้ำ อย่างเช่นกรณีนี้เรื่อง PATH ผิดที่จริงแก้ไขง่ายมากแค่

export PATH=/bin::/sbin::/usr/bin::/usr/sbin::$PATH

จะต้องการให้ชี้ไปไหนก็ใส่ๆ ไปครับแต่มันยังไม่จบแค่นั้น เราควรหาสาเหตุที่แท้จริงว่าทำไมมันจึงเกิดปัญหานั้น อย่างที่ผมเจอดีตรงที่มี keyword tomcat โผล่อยู่ใน PATH ผมเลยพอเดาไว้ว่าน่าจะมาจากมันนี่แหละ แต่มันแอบอยู่ตรงไหนหละ ผมจึง history ไปดูก็พบกับ config /etc/profile.d/script.sh และนี่แหละครับสาเหตุต้นตอของปัญหานี้ แก้ให้ถูกซะจะได้ไม่ต้องมานั่ง export ทุกครั้งที่ login ที่จริงผมคิดไปถึงเรื่อง server โดน hack ด้วยซ้ำแต่ที่ดู last log กับ history ก็ยังไม่ถือว่าเลวร้าย

ขอบคุณที่สนใจอ่าน

Share/Save

Leave a Comment June 3, 2015

วิธีแก้ปัญหา HDMI ของการ์ดจอ ATI ไม่มีเสียงบน Ubuntu (สำหรับ External Monitor)

สวัสดีชาวโลกครับ หลังจากที่ไม่ได้อัพเดทบล็อกประมาณชาติกว่า เพราะตอนนี้กระผมได้เลิกสายงานอาชีพไอที มาประกอบธุรกิจส่วนตัวที่บ้านที่ใต้เสียแล้วครับ วันเวลาผ่านไปอะไรๆ ก็เปลี่ยนตาม แต่มีสิ่งนึงที่ไม่ได้เปลี่ยนไปจากใจผมนั้นก็คือ รักที่จะศึกษาอะไรใหม่ๆ วันนี้ก็เช่นกัน หลังจากที่ Ubuntu เพิ่งปล่อย Release 13.10 มาเมื่อไม่นานนี้ ก็ต้องลองซะหน่อย ไม่งั้นวิชาครั้งสมัยพระเจ้าเหาคงได้เข้าหม้อกันหมด ต้องหาอะไรใหม่ๆ เล่นบ้าง

หลังจากพร่ามบ่นมาเสียนานก็มาเข้าเรื่องของเรากันดีกว่าครับ เรื่องของเรื่องมีอยู่ว่ากระผมติดตั้ง Ubuntu 13.10 ใหม่ และผมก็เพิ่งโหลด Series ฝรั่งมาเรื่องนึง(Prison Break) รู้สึกว่าดูใน Notebook ไม่มันเลยต้องการจะต่อเข้ากับทีวีที่บ้านผ่านพอร์ต HDMI ปัญหามีอยุ่ว่า ต่อได้ภาพขึ้นแต่เสียงไม่ยักมาแฮะ เลยเป็นสาเหตุให้กระผมต้องหาวิธีแก้ ซึ่งรู้สึกว่าปัญหานี้จะเป็นปัญหามาจาก bug ของ kernal เวอร์ชั่น 3.x ทำให้ใน Sound Settings มองไม่เป็น Sound Card ATI/HDMI ลอง Search ไปเจอคำถามและคำตอบจาก forum ฝรั่งได้คำตอบมาว่าต้อง update parameter ของ grub ก็จะใช้งานได้ ผมไม่รอรีรีบทำตามขั้นตอนมีอยู่ว่า

1. ให้เพิ่งบรรทัดนี้เข้าไปใน /etc/default/grub

GRUB_CMDLINE_LINUX=”radeon.audio=1″

2. จากนั้นให้ใช้คำสั่ง

sudo update-grub

3. reboot ครับ หลังจาก Reboot เครื่องเราก็จะมองเห็น Sound Card ATI/HDMI ในเมนู Sound Settings แล้วครับ

เท่านี้ผมก็ดูหนัง ดูซีรีย์ได้สบายแฮแล้วครับ

ขอบคุณข้อมูลดีๆ จาก : http://askubuntu.com/questions/285920/no-sound-through-hdmi-out-13-04

Leave a Comment October 19, 2013

Transfer file ด้วยคำสั่ง nc

เมื่อกี้ remote ไป dr-site ของลูกค้า เพื่อที่จะ transfer ไฟล์ iso ไปไว้ที่ main site อีกที โดย iso อยู่ที่เครื่องฝั่ง dr เครื่อง server เป็น linux ทั้งคู่ลอง winscp ไฟล์จากเครื่อง vCenter ไฟล์ iso ขนาดประมาณ 4 GB ที่ต้องการไปยัง main site ใช้เวลาเกือบ 10 ชม. เน็ตจะกากอะไรขนาดนั้น เลยเปลี่ยนวิธีจาก ssh มาเป็นอะไรก็ได้ที่ให้ความเร็วมากกว่า ก็มาเจอคำสั่ง nc หรือ netcat ซึ่งจริงๆ แล้วมันมีประโยชน์มากเลยทำอะไรๆ ได้หลายอย่างทั้งเช็ค port เครื่องปลายทางได้เหมือน telnet และความสามารถอีกล้นหลาม แต่หนึ่งในหลายๆ ความเก่งของมันก็คือสามารถที่จะ stream ข้อมูลหรือ transfer ข้อมูลได้รวดเร็วเพราะไม่มีการเข้ารหัส(แลกกับความเร็ว) เครื่องที่ยังไม่มี nc สามารถติดตั้งได้โดยใช้คำสั่ง yum install nc สำหรับค่าย Redhat และ apt-get install nc สำหรับ Debian และ Ubuntu

ขั้นตอนสำหรับการ Transfer ข้อมูลมีประมาณนี้ครับ

1. nc มันเป็นโปรแกรม Client – Server หมายความว่าต้องมี nc ฝั่งใดฝั่งหนึ่งทำหน้าที่เป็น Server และอีกฝั่งเป็น Client ขั้นตอนของผมคือทำเครื่องฝั่ง main site เป็น Server โดยใช้คำสั่ง

root@MAIN-Serv01:~# nc -l 2389 > myfile.iso

คำสั่ง nc -l 2389 > myfile.iso หมายความว่าให้ nc เปิด socket หรือ port 2389 เพื่อรับข้อมูล ซึ่งจริงๆ แล้วหมายเลข port จะเป็นอะไรก็ได้ที่ไม่ซ้ำกับ service อื่นๆ ที่เราให้บริการ และเมื่อมีข้อมูลวิ่งเข้ามาที่ port 2389 ให้มัน redirect standard input เข้าไปยังไฟล์ myfile.iso

2. เมื่อฝั่ง Serve เราเปิด port รอไว้แล้วก็เหลือแค่ Client ส่งข้อมูลไปหาเครื่องปลายทาง

root@DR-Serv01:~# cat myfile.iso | nc 10.40.1.152 2389

ส่วนใหญ่เราใช้คำสั่ง cat เพื่อดูข้อมูลที่อยู่ภายในไฟล์ แต่เมื่อเราใส่ pipe output ไปยัง nc ให้ส่งข้อมุลไปยังไอพีปลายทางก็สามารถประยุกต์ใช้กับการส่งไฟล์ได้
ที่เหลือก็คือรอให้ส่งข้อมูลเสร็จครับ
3. เมื่อเสร็จแล้วระบบจะคืน prompt มาให้ก็ลองตรวจสอบไฟล์ได้เลยครับ ส่วนผมก็ลอง mount ไฟล์ iso ที่ trasnfer มาก็พบว่าใช้งานได้ปกติเลยครับ

ลองเอาไปประยุกต์ใช้กันดูนะครับ

Leave a Comment January 9, 2013

Shell Script สำหรับเช็ค Status ของ Symantec Security Information Manager

บันทึกกันลืม เรื่องมันมีอยู่ว่า ssim ที่ใช้อยู่ mount nas storage มาใช้แล้วมันเกิด error อยู่บ่อยๆ ผมเลยจำเป็นต้องเขียน shell script เพื่อตรวจสอบว่ามี service ไหนตายบ้างหรือเปล่า ถ้าตายก็ให้มัน restart service ของ ssim ทั้งหมด

ตัวอย่างคำสั่ง status เมื่อมี error นันคือมี column STATUS มี service ที่สถานะเป็น OFF หรือ column EXIT มีบรรทัดที่ไม่เป็น 0 ส่วนใหญ่จะเป็น code 143

[root@logserv ~]# status NAME PID PORT UPTIME MAXUPTIME #START STATUS EXIT sesmanager 23583 0 0d00:24 0d00:24 1 UP 0 sesevents 24705 0 0d00:23 0d00:23 1 UP 0 rxregistry 22933 55550 0d00:25 0d00:25 1 UP 0 simdbmu 29543 10030 0d00:21 0d00:21 1 UP 0 dimserver 24514 55560 0d00:24 0d00:24 1 UP 0 simserver 26829 10010 0d00:22 0d00:22 1 UP 0 icesvc 26956 55562 0d00:22 0d00:22 1 UP 0 assetsvc 24362 55557 0d00:24 0d00:24 1 UP 0 kbsvc 28853 55566 0d00:21 0d00:21 1 UP 0 querysvc 25970 55569 0d00:23 0d00:23 1 UP 0 rulesvc 25224 55559 0d00:23 0d00:23 1 UP 0 configurationsvc 23687 55571 0d00:24 0d00:24 1 UP 0 notificationsvc 25382 55558 0d00:23 0d00:23 1 UP 0 schedulersvc 28272 55561 0d00:21 0d00:21 1 UP 0 ticketsvc 26202 55567 0d00:23 0d00:23 1 UP 0 eventfindersvc 28114 55568 0d00:22 0d00:22 1 UP 0 statsvc 27757 55570 0d00:22 0d00:22 1 UP 0 wsrf 28932 0 0d00:21 0d00:21 1 UP 143 ------------------------------- IBM DB2 (PID 21815 21814 21813 21600 21599 21598) is running. ------------------------------- IBM LDAP (PID 22100) is running. ------------------------------- IBM HTTP Server (PID 22706 22705 22702 22689) is running. ------------------------------- The SSIM Agent (pid 23453) is running. -------------------------------

ตัวอย่าง script

#!/bin/bash STATUSCMD=/usr/sbin/status STATUSFILE=/tmp/ssim-status.tmp $STATUSCMD > $STATUSFILE STATUS0=$(grep 'UP\|OFF' $STATUSFILE | awk '{print $7}' | grep -v 'STATUS\|UP' | uniq) STATUS1=$(grep 'UP\|OFF' $STATUSFILE | awk '{print $8}' | grep -v '0\|EXIT' | uniq) if [ "$STATUS0" == "$STATUS1" ]; then echo "Service Health Normal" else echo "Service not normal will restart all service" /opt/Symantec/simserver/bin/stopservices.sh --all && /opt/Symantec/simserver/bin/startservices.sh --all fi

save script เป็น .sh แล้วเอาไปยัดใส่ crontab ผมตั้งไว้ให้เช็คทุก 30 เป็นอันเสร็จพิธี
หลักการทำงานคือ script จะทำการตรวจสอบว่ามี service ไหนมี status เป็น OFF หรือมี EXIT code ไม่เป็น 0 ถ้า script ตรวจพบ มันก็จะ restart service ใหม่ทั้งหมด

Leave a Comment December 19, 2012

วิธีแก้ปัญหา Ubuntu 12.10 Kernel 3.5.0-18 ไม่เจอ Wireless

ผมใช้ Notebook Dell Inspiron N4010 chip wireless เป็น Broadcom Corporation BCM4313 แล้วเจอปัญหาหลัง Upgrade Kernel เป็น version 3.5.0-18 แล้ว wireless หายก็ไปเจอวิธีแก้ใน
เขาเขียนไว้ว่า

sudo modprobe -r b43 ssb wl sudo apt-get remove bcmwl-kernel-source sudo apt-get install build-essential dkms linux-headers-generic sudo apt-get install bcmwl-kernel-source

ทำตามนี้ wireless ก็กลับมาใช้งานได้เลยครับ
ใครเจอปัญหาอยู่ก็ลองทำตามนี้ดูนะครับ

Leave a Comment November 7, 2012

ให้การติดตั้ง Dependency Library เป็นเรื่องง่ายๆ ด้วย yum whatprovides

วันนี้มีทิปของคำสั่ง yum มาฝากครับ สำหรับใครที่เคยใช้คำสั่ง yum ก็คงรู้ดีว่ามันช่วยให้ชีวิตของเราสะดวกสบายแค่ไหนในเรื่องช่วยติดตั้ง packages ต่างๆ yum ติดตั้งโน้นนี่นั้นแสนสบาย แต่ก็เชื่อเหลือเกินว่าชีวิตเราคงไม่สะดวกราบรื่นสักเท่าไรนัก นานๆ ทีจะมี package third-party มาให้เราลงซึ่งส่วนใหญ่จะมาเป็น .rpm และแน่นอนว่าไอ้ .rpm นี่อาจสร้างปัญหาให้คุณได้หากมันต้องการ dependency library เช่นอาจจะฟ้อง error ว่าหา library นี้ไม่เจอบ้างหละ ต้องติดตั้ง library นี้ก่อนบ้างละ ดังตัวอย่าง

[root@DR-SERVER ~]# rpm -Uvh arcserverha_rhel6_x86_64.rpm libc.so.6 is needed by ARCserveRHA-16.1-2.3124.x86_64 libc.so.6(GLIBC_2.0) is needed by ARCserveRHA-16.1-2.3124.x86_64 libc.so.6(GLIBC_2.1) is needed by ARCserveRHA-16.1-2.3124.x86_64 libc.so.6(GLIBC_2.1.2) is needed by ARCserveRHA-16.1-2.3124.x86_64 libc.so.6(GLIBC_2.1.3) is needed by ARCserveRHA-16.1-2.3124.x86_64 libc.so.6(GLIBC_2.2) is needed by ARCserveRHA-16.1-2.3124.x86_64 libc.so.6(GLIBC_2.3) is needed by ARCserveRHA-16.1-2.3124.x86_64 libdl.so.2 is needed by ARCserveRHA-16.1-2.3124.x86_64 libdl.so.2(GLIBC_2.0) is needed by ARCserveRHA-16.1-2.3124.x86_64 libdl.so.2(GLIBC_2.1) is needed by ARCserveRHA-16.1-2.3124.x86_64 libgcc_s.so.1 is needed by ARCserveRHA-16.1-2.3124.x86_64 libgcc_s.so.1(GCC_3.0) is needed by ARCserveRHA-16.1-2.3124.x86_64 libgcc_s.so.1(GLIBC_2.0) is needed by ARCserveRHA-16.1-2.3124.x86_64 libm.so.6 is needed by ARCserveRHA-16.1-2.3124.x86_64 libpam.so.0 is needed by ARCserveRHA-16.1-2.3124.x86_64 libpam.so.0(LIBPAM_1.0) is needed by ARCserveRHA-16.1-2.3124.x86_64 libpthread.so.0 is needed by ARCserveRHA-16.1-2.3124.x86_64 libpthread.so.0(GLIBC_2.0) is needed by ARCserveRHA-16.1-2.3124.x86_64 libpthread.so.0(GLIBC_2.1) is needed by ARCserveRHA-16.1-2.3124.x86_64 libpthread.so.0(GLIBC_2.2) is needed by ARCserveRHA-16.1-2.3124.x86_64 libpthread.so.0(GLIBC_2.3.2) is needed by ARCserveRHA-16.1-2.3124.x86_64 libresolv.so.2 is needed by ARCserveRHA-16.1-2.3124.x86_64 libresolv.so.2(GLIBC_2.2) is needed by ARCserveRHA-16.1-2.3124.x86_64 libstdc++.so.6 is needed by ARCserveRHA-16.1-2.3124.x86_64 libstdc++.so.6(CXXABI_1.3) is needed by ARCserveRHA-16.1-2.3124.x86_64 libstdc++.so.6(GLIBCXX_3.4) is needed by ARCserveRHA-16.1-2.3124.x86_64

จะลงแค่ package เดียวพี่แกเล่นซะยาวเลย จาก error ฟ้องว่ามันต้องการ libc.so.6 libdl.so.2 และ library อีก 3-4 ตัว จะทำยังไงละทีนี้ ปกติเราก็จะเอาชื่อ library ที่เจอไป search หา .rpm ใน internet มาติดตั้งเพิ่มเติมแต่วันนี้เราจะลองหา library ที่มันต้องการผ่านคำสั่ง yum กันดูครับโดยใช้คำสั่ง

yum whatprovides <ชื่อ library>

ตัวอย่าง

[root@DR-SERVER ~]# yum whatprovides libc.so.6 Loaded plugins: product-id, refresh-packagekit, subscription-manager Updating Red Hat repositories. Repository 'rhel6' is missing name in configuration, using id glibc-2.12-1.25.el6.i686 : The GNU libc libraries Repo : rhel6 Matched from: Other : libc.so.6

สังเกตชื่อ package ที่มี library libc.so.6 ได้จากบรรทัดที่ขีดเส้นใต้ครับ ที่เหลือเราก็แค่สั่ง yum install ชื่อ package นั้นเราก็จะได้ library libc.so.6 มาใช้งานแล้ว เช่น

[root@DR-SERVER ~]# yum install glibc-2.12-1.25.el6.i686

มันต้องการกี่ตัวก็ yum whatprovides ไปจนครับนะครับ
บ๊ายบาย

1 Comment November 1, 2012

วิธีแก้ SuPHP บน Kloxo 6.1.12 ไม่ Work ขึ้น Internal Server Error 500

เรื่องโดยสรุปของปัญหานี้ก็มีอยู่ว่า SuPHP ของ Kloxo มันยังไม่สเถียรนั้นเองครับ วิธีแก้ไขเบื้องต้นตอนนี้ก็ทำได้โดย Downgrade version ของ PHP ลงมา
ขั้นตอน
1. ssh ไปยัง server ของคุณ
2. ใช้คำสั่ง

yum list php

ถ้ามันบอกมาว่าเป็นเวอร์ชัน php.i386(x86_64) 5.2.17-13 แสดงว่าคุณติดตั้ง patch ล่าสุด(แต่ไม่ work)แล้ว และนี่ก็เป็นสาเหตุทำให้เกิด error ดังกล่าวต้อง Downgrade มันลงมาซะ
3. ใช้คำสั่งนี้เพื่อ Downgrade ได้เลยครับ

yum downgrade php* --disablerepo=* --enablerepo=lxcenter-updates

4. ทีนี้ก็ลองกลับไปเลือก mode php ให้เป็น suphp ดูครับ แล้วก็อย่าเผลอสั่ง yum update อีกละ
ถ้าจะ update ระบบให้สั่ง yum upgrade เป็นราย package ไปแทนครับ
จบ

แหล่งข้อมูล : http://www.dewesh.com/server-management/how-to-get-suphp-working-on-kloxo-6-1-12/

2 Comments September 22, 2012

Kloxo php.ini trick

วันนี้มี trick kloxo มาฝากครับ

คือปกติแล้ว kloxo จะมีไฟล์ /etc/php.ini เป็นไฟล์ Global

ถ้าหากเราเข้าไปแก้อะไรในไฟล์ /etc/php.ini ก็ตาม เช่น เข้าไปแก้ expose_php = Off

แก้เสร็จแล้วเข้าไปคลิกหน้าแก้ไข admin => Server => localhost > PHP Config ผ่านหน้า Web GUI ของ Kloxo ค่าของ expose_php จะกลับไปเป็น expose_php = On อีกครั้งเพราะเป็นค่า Default ของ Kloxo แก้แล้ว แก้อีก ตามแก้กันไม่หวาดไม่ไหว สุดท้ายต้องหาคำตอบให้ได้ว่าต้องแก้ที่ไหน สุดท้ายไปได้คำตอบจาก comment นี้ครับ

http://forum.lxcenter.org/index.php?t=msg&th=13702&goto=73506&#msg_73506

ใน path /usr/local/lxlabs/kloxo/file/phpini จะมีไฟล์ php.ini.template-x.x อยู่ 4 ไฟล์

[root@webinter phpini]# ls -l
total 128
-rw-r–r– 1 lxlabs lxlabs 1038 Feb 23 2012 htaccesstemp
-rw-r–r– 1 lxlabs lxlabs 1458 Feb 23 2012 php.ini.temp
-rw-r–r– 1 lxlabs lxlabs 38659 Sep 7 13:46 php.ini.template-4.3
-rw-r–r– 1 lxlabs lxlabs 38735 Sep 7 13:45 php.ini.template-5.1
-rw-r–r– 1 lxlabs lxlabs 38873 Sep 7 13:45 php.ini.template-5.2

ผมต้องการให้ค่าของ expose_php = On เป็น expose_php = Off ทั้งหมด
ผมก็เข้าไปแก้ทั้ง 4 ไฟล์หมดเลยครับ
ทดสอบโดยการคลิกตรง admin => Server => localhost > PHP Config จากหน้า Web GUI แล้วเข้าไปดูในไฟล์ /etc/php.ini ว่าค่าของ expose_php เป็น Off หรือเปล่า
จบ

Leave a Comment September 7, 2012

Solved : Kloxo error libwrap refused connection to ftp (libwrap=pure-ftpd) from xxx.xxx.xxx.xxx

หากคุณเป็นคนหนึ่งที่ใช้ Kloxo เป็น Hosting Control Panel แล้วเจอปัญหา Client FTP เข้าไปใช้งานไม่ได้ ดู log /var/log/messages แล้วเจอ error

Aug 26 15:48:38 webinter xinetd[8593]: libwrap refused connection to ftp (libwrap=pure-ftpd) from 10.8.0.6
Aug 26 15:48:38 webinter xinetd[8593]: FAIL: ftp libwrap from=10.8.0.6
Aug 26 15:48:38 webinter xinetd[11217]: START: ftp pid=8593 from=10.8.0.6
Aug 26 15:48:38 webinter xinetd[11217]: EXIT: ftp status=0 pid=8593 duration=0(sec)

ให้คุณ login เข้า kloxo ด้วย user admin หรือแจ้ง admin ให้ไปตรวจสอบที่ admin => Security => Lxguard => Connections
ตรวจสอบที่แท็บ Connections ว่ามี IP ไหนโดน Block อยู่หรือเปล่าถ้ามีคุณก็แค่ Remove IP นั้นออกจาก List ก็สามารถ Login ได้แล้วครับ
สาเหตุเกิดจาก User Login ด้วย Username Password ผิดเกินกว่าจำนวนครั้งที่กำหนดไว้ใน Lxguard ครับ
หวังว่าคงมีประโยชน์กับผู้อ่านนะครับ

Leave a Comment August 29, 2012

Apache Security TIP

เมื่อคืนลองใช้ nikto scan เว็บ Server ที่เพิ่งทำเสร็จ ผลปรากฏว่าเจอช่องโหลดตามนี้
เปิด ServerTokens OS ไว้ทำให้รู้ว่ารันด้วย OS และใช้ Apache เวอร์ชั่นอะไร
เปิด Method TRACE ไว้ซึ่งอาจทำให้โดน XSS ได้
เปิด expose_php On ไว้ทำให้ทราบว่าใช้ PHP เวอร์ชั่นอะไร
และ Scan เจอว่าอนุญาตให้อ่าน ETag header ได้

วิธีแก้ปัญหาของผมมี 3 ขั้นตอนครับ
1. เข้าไปแก้ไฟล์ /etc/httpd/conf/httpd.conf
โดยแก้

ServerTokens On

ให้เป็น

ServerTokens ProductOnly

เพื่อให้ Apache แสดงเฉพาะชื่อโปรดัก Apache อย่างเดียวไม่ให้แสดง OS และเวอร์ชั่นของ Apache

2. ปิด Method TRACE และ Etag โดยสร้างไฟล์ /etc/httpd/conf.d/security_tunning.conf โดยมีเนื้อหาไฟล์ดังนี้

#Diable Method TRACE
TraceEnable Off

#Disable ETag
Header unset ETag
FileETag None

3. ปิด expose_php On เป็น expose_php Off ซะโดยแก้ไขไฟล์ /etc/php.ini ให้เป็น

expose_php Off

จากนั้นก็สั่ง Restart Apache หรือ httpd สักหนึ่งรอบเป็นอันเสร็จลอง Scan ใหม่อีกรอบ
อยากให้ง่ายกว่านี้ก็ติดตั้ง mod_security เลยครับ
แต่เนื่องด้่วยบางเว็บไซต์ของผมไม่สามารถทำงานได้หลังรัน mod_security ซึ่งไม่สามารถรันมันได้
หวังว่าคงเป็นประโยชน์กับท่านผู้ดูแลระบบที่เจอปัญหาเดียวกันนะครับ

แหล่งข้อมูล :
http://www.ducea.com/2007/10/22/apache-tips-disable-the-http-trace-method/
http://www.askapache.com/htaccess/apache-speed-etags.html

Leave a Comment August 26, 2012


Recent Entries

Random Posts

Social Network

Tag Cloud

Calendar

March 2017
S M T W T F S
« Jun    
 1234
567891011
12131415161718
19202122232425
262728293031  

Twitter: imrgill

RSS LinuxToday

RSS HowToForge

RSS UbuntuClub

RSS Blognone

RSS PowerWindowsBlog

Tag

Categories

Archives

Blogroll