วิธีปิด SELinux บน centos

ตรวจสอบว่า selinux ทำงานอยู่หรือไม่ด้วยคำสั่ง

#getenforce

หากมีระบบตอบกลับมาว่า Enforcing แสดงว่า selinux ทำงานอยู่
โดยในบทความนี่จะสอนการปิดระบบ selinux 2 วิธีคือ ปิด ถาวร และ ปิดชั่วคราว
การปิด selinux ชั่วคราว ให้พิมพ์คำสั่ง

#setenforce 0

การปิด selinux แบบถาวร ให้เข้าไปแก้ไขที่ไฟล์ /etc/sysconfig/selinux
แก้ข้อความ

SELINUX=enforcing

เป็น

SELINUX=disabled

จากนั้น reboot เครื่องครับ (หากไม่ต้องการ reboot ให้ใช้วิธีปิดแบบชั่วคราว)

Iptables allow ip from thailand

วิธีนี้ดัดแปลงมาจาก icez.net  เนื่องจากเห็นว่า iplist ของกระทู้ต้นฉบับไม่มีการอัพเดทแล้ว ผมจึงได้นำมาต่อยอดโดยให้ loop ดึง iplist ที่มีการปรับปรุง ip ล่าสุด ดังโค้ดตัวอย่างนี้

iptables -D INPUT -p tcp --dport 21 -j ALLOWTHAI
iptables -N ALLOWTHAI
iptables -F ALLOWTHAI
iptables -A ALLOWTHAI -j REJECT /
for i in `wget -qO - http://princenetwork.net/ipthailist.php`; do
iptables -I ALLOWTHAI -s $i -j ACCEPT
done
iptables -A INPUT -p tcp --dport 21 -j ALLOWTHAI

Directadmin Block IP ผ่าน Brute force monitor

ปกติผมเฉยๆ กับการแจ้งเตือนผ่าน DA ว่าโดน Brute force Attack อยู่แล้ว โดยปิดไปแล้วก็ไม่ได้สนใจอะไร

แต่ พอดีวันนี้มีลูกค้าแจ้งมาว่าโดน Brute force Attack เป็นจำนวนมาก อยากให้บล๊อกไปให้สิ้นซาก ผมเลยได้ลองเข้าไปอ่านคู่มือใน DA โดยเค้าให้เขียนสคริปชื่อ block_ip.sh  แล้วเก็บไว้ที่

/usr/local/directadmin/scripts/custom/block_ip.sh

จากนั้นใส่คำสั่งดังกล่าวเข้าไปในไฟล์

/sbin/iptables -A INPUT -s $ip -j DROP

เพียงแค่นี้เราก็สามารถกดปุ่ม Blocks IPs ผ่าน Brute Force Monitor ได้เลย
ปล.อย่าลืม chmod 700 ที่ไฟล์ block_ip.sh ด้วยนะครับ

chmod 700 /usr/local/directadmin/scripts/custom/block_ip.sh

เช็ค core ของ cpu แบบง่ายๆ ด้วย centos

สำหรับหลายๆท่านที่สงสัย เวลาจะ config ระบบต่างๆบน centos ระบบมักจะถามว่ามีกี่ core (worker_processes)
ในบทความนี้จะมีวิธีเช็คด้วยกัน 3 วิธี

1.คำสั่งนี้จะบอกเลยว่า cpu ของเรานั้นมีกี่ core

nproc

ตัวอย่างการแสดงผล

8

2.ส่วนคำสั่งนี้จะบอกรายละเอียดเกี่ยวกับชิพ cpu ของเราโดยคร่าวๆ

lscpu

ตัวอย่างการแสดงผล

Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 42
Stepping: 7
CPU MHz: 2909.835
BogoMIPS: 5819.67
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 6144K
NUMA node0 CPU(s): 0-3

3.คำสั่งนี้จะบอกรายละเอียดทุก core ใน cpu ของเรา

less /proc/cpuinfo

Centos Directadmin port 80 (Single Domain)

สำหรับหลายๆท่านที่มีปัญหา ติด firewall ของ มหาลัย,โรงเรียน,ที่ทำงาน และสถานที่ท่างๆ ทำให้ไม่สามารถ Login Directadmin ผ่านพอร์ต 2121 ได้ โดยวิธีดังต่อไปนี้จะช่วยให้ท่านสามารถ login ผ่านพอร์ต 80 ได้เลยเพียงแค่ให้ subdomain ขึ้นต้น

1.ตรวจเช็ตว่ามีการเปิดใช้ mod_proxy ไว้หรือยังด้วยคำสั่ง

httpd -l |grep proxy

หากมีการติดตั้งแล้วระบบจะขึ้นประมาณนี้

mod_proxy.c
mod_proxy_connect.c
mod_proxy_ftp.c
mod_proxy_http.c
mod_proxy_scgi.c
mod_proxy_ajp.c
mod_proxy_balancer.c

2.เข้าไปที่ data ของ user ที่เราจะแก้ไขโดเมน (เปลี่ยน test เป็น user ที่เราต้องการจะแก้ไข)

cd /usr/local/directadmin/data/users/test/http.conf

3.เปิดไฟล์ httpd.conf แล้วเพิ่มโค้ดนี้ไว้ล่างสุด
- แก้ไข XXX.XXX.XXX.XXX เป็น IP ของเครื่อง
- แก้ไข domain.com เป็นชื่อโดเมนที่จะให้เข้า directadmin ผ่านพอร์ต 80

<VirtualHost XXX.XXX.XXX.XXX:80>
ServerName cp.domain.com
ProxyRequests Off
ProxyPass / http://XXX.XXX.XXX.XXX:2222/
ProxyPassReverse / http://XXX.XXX.XXX.XXX:2222/
</VirtualHost>

4.ปรับปรุงไฟล์ directadmin.conf เพื่อให้ directadmin รองรับพอร์ต 80 ด้วย

vi /usr/local/directadmin/conf/directadmin.conf

จากนั้นเพิ่มโค้ดนี้ไว้ล่างสุด หรือหากมีค่าเป็น 1 ให้แก้เป็น 0

check_referer=0

5.Restart Directadmin และ httpd

service httpd restart
service directadmin restart

6.เพิ่ม A record ใน directadmin
ddd
7.ทดสอบเข้า directadmin ด้วย Url

http://cp.ชื่อโดเมน.com/

หมายเหตุ : เพิ่ม A record ใน Directadmin ต้องรอประมาณ 5-20 นาที

Fixed : Fatal error: session_start() บน Phpmyadmin เมื่อ Update Php 5.3

วันนี้เกิดอารมอยากอัพเกรด Roundcube แต่ติดปัญหาว่า ถ้าจะอัพเกรดต้อง php 5.3 แต่ใช้ php 5.2 อยู่
เลยจัด 5.3 มาเจอ error บน phpmyadmin อีกโดย error ที่ผมพบมีดังนี้

Fatal error: session_start() [function.session-start]: Failed to initialize storage module: files (path: ) in /var/www/html/phpMyAdmin-XXX/libraries/session.inc.php on line 96

ลองผิดลองถูกอยู่หลายครั้ง จนเข้าไปแก้ที่ php.ini หาคำว่า

;session.save_path = “/tmp”

จากนั้นแก้เป็น

session.save_path = “/tmp”

แล้วทำการ restart apache ด้วยคำสั่ง

service httpd restart

Upgrade phpmyadmin จาก 3 ไป 4 ด้วย Custombuild

สำหรับใครที่ใช้ Directadmin แล้วอยากจะอัพเกรด phpmyadmin จาก 3 ไป 4
แล้วเจอปัญหาอัพยังไงมันก็ไม่ไป 4 ผมเลยลองเช็ค custombuild ดูจึงได้รู้ว่ามัน phpmyadmin 4 มันรองรับเฉพาะ custombuild version 1.2 ขึ้นไป
วิธีแก้ไขง่ายๆ ก็แค่

cd /usr/local/directadmin/custombuild
./build set custombuild 1.2
./build update
./build set phpmyadmin_ver 4
./build phpmyadmin

แค่นี้จบครับ

Build exim by custombuild (Directadmin)

หลังจากที่งมมานานว่าทำไมเซิฟเวอร์ส่งเมล์ไม่ออก

Start exim ก็ได้ปกติ เลยตัดสินใจ Build ใหม่แมร่งเลย สรุปได้ซะงั้น = =

ด้วยคำสั่งดังนี้

cd /usr/local/directadmin/custombuild
./build update
./build set exim yes
./build exim

* การ Build ใหม่ไม่ใช่ทางแก้ปัญหาที่ดีที่สุด เมื่อเกิดเหตุใดๆ ก็อย่าลืมดู logs ให้แน่ใจก่อนนะครับ