Monday, December 19, 2011

How To Install IonCube Loader on Centos

Go to http://www.ioncube.com/loaders.php
Download
wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
tar xvfz ioncube_loaders_lin_x86.tar.gz
tar xvfz ioncube_loaders_lin_x86.tar.gz
cd ioncube
Copy loader-wizard.php to location you can access on a web browser.
I then get told that there is an updated script so I down load the latest and update it.
wget http://www.ioncube.com/loader-wizard/loader-wizard.tgz
tar xvfz loader-wizard.tgz
cp this file to a folder you can access from a browser.
Then follow the instructions;
mkdir /usr/local/ioncube
Copy the downloaded files to /usr/local/ioncube
cp * /usr/local/ioncube
cd /etc/php.d
Download ioncube.ini from from the link on loader-wizard.php page.
But the ioncube.ini in /etc/php.d
Restart you httpd server
service httpd restart
Click on the test link and make sure everything works
Then remove the loader-wizard.php from the folder that is browserable.

บทความ: การติดตั้ง ionCube Loader บน Linux

บทความ: การติดตั้ง ionCube Loader บน Linux

ionCube Loader เป็น extension ของ PHP มีไว้สำหรับถอดรหัสไฟล์ PHP ที่เข้ารหัสด้วย ionCube PHP Encoder

วิธีการติดตั้ง ionCube Loader มีดังนี้
  • - ตรวจสอบว่าเครื่องของคุณใช้ PHP เวอร์ชั่นอะไร, ใช้ Linux 32bit หรือ 64bit, เปิด Thread Safety หรือเปล่า
  • - ต่อไปก็ดาวน์โหลด ionCube Loader โดยเลือกจาก OS ที่ใช้ ถ้าใช้ Linux 32bit ให้เลือก Linux (x86) ถ้าใช้ Linux 64bit ให้เลือก Linux (x86-64) ตัวอย่าง wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
  • - แตกไฟล์ออกมาด้วย tar -zxvf ioncube_loaders_lin_x86-64.tar.gz
  • - คัดลอกไฟล์ ioncube-encoded-file.php ioncube-loader-helper.php ไปไว้ที่ web directory ตัวอย่าง cp -f ioncube/ioncube-encoded-file.php ioncube/ioncube-loader-helper.php /home/username/public_html
  • - ย้าย ioncube โดยใช้คำสั่ง mv ioncube /usr/local
  • - หลังจากนั้นเข้าไปแก้ไขไฟล์ php.ini nano /usr/local/lib/php.ini มองหาบรรทัดที่มีการตั้ง zend optimizer แล้วเพิ่ม zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.2.so ในการเลือกไฟล์ตรงนี้ต้องดูว่าเครื่องคุณใช้ php เวอร์ชั่นอะไร และเปิด Thread Safety หรือไม่ ตัวอย่างนี้เป็น php v5.2 และปิด Thread Safety ถ้าเปิด Thread Safety ให้เลือกไฟล์ ioncube_loader_lin_5.2_ts.so
  • - หลังจากนั้นก็ทำการ restart apache /etc/init.d/httpd restart
  • - เข้าไปที่หน้าเว็บของเราที่คัดลอกไฟล์ ioncube-loader-helper.php ไปไว้ ตัวอย่าง http://www.yourdomain.com/ioncube-loader-helper.php ถ้าไม่มีอะไรผิดพลาดก็จะพบข้อความดังรูป

http://www.picohosting.com/howto/ioncube

Tuesday, December 6, 2011

install webmin รวมทั้ง โปรแกรมต่างๆ

 # กำหนด name server ไปยัง opendns
echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "nameserver 8.8.4.4" >> /etc/resolv.conf

# ปิด selinux
setenforce 0
sed 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config > /etc/selinux/config-new
/bin/cp -f /etc/selinux/config-new /etc/selinux/config

# สร้างไฟล์ webmin.repo สำหรับ install webmin
echo "[Webmin]" > /etc/yum.repos.d/webmin.repo
echo "name=Webmin Distribution Neutral" >> /etc/yum.repos.d/webmin.repo
echo "baseurl=http://download.webmin.com/download/yum" >> /etc/yum.repos.d/webmin.repo
echo "enabled=1" >> /etc/yum.repos.d/webmin.repo


wget http://prdownloads.sourceforge.net/webadmin/webmin-1.570-1.noarch.rpm
rpm -U webmin-1.570-1.noarch.rpm

# install โปรแกรมต่างๆ รวมทั้ง webmin
yum -y install bind ntp httpd mysql mysql-devel mysql-server iptables sendmail php php-bcmath php-cli php-common php-devel php-gd php-imap php-mbstring php-mcrypt php-mhash php-mysql php-odbc php-pdo php-pear php-snmp php-soap php-tidy php-xml php-xmlrpc webmin perl-libwww-perl perl-Net-SSLeay libxml2 libxml2-devel perl


-----------------------------------------------------------------
เมื่อ copy เสร็จแล้ว ก็ให้สลับไปที่หน้าโปรแกรม Putty แล้วคลิกขวาเพื่อ Paste ข้อความลงไปเลยครับ แล้วก็กด Enter ที่คีย์บอร์ดอีกหนึ่งครั้ง VPS ของคุณจะทำงานอยู่สักพัก ระหว่างนี้มันจะเช็คเวอร์ชั่นของโปรแกรมทั้งหลายที่จะลง แล้วก็ทำการดาวน์โหลดมาลง ดังนั้นอาจจะนานนิดนึง รอจนมันทำงานเสร็จ มันจะขึ้นพรอมท์ที่มีเครื่องหมาย # อีกครั้ง ดังรูปครับ


ลงเสร็จแล้ว
ถ้าเห็นข้อความว่า Complete! ก็แสดงว่าลงสำเร็จครับ
หมายเหตุ ถ้าเห็นข้อความอย่างอื่น เช่น Error Downloading Packages ก็แสดงว่าไม่สำเร็จ ให้ลงโปรแกรมใหม่โดย Copy ข้อความแล้วมา Paste ลงไปอีกครั้งครับ (อย่าลืมกด Enter ทิ้งท้ายนะครับ เดี๋ยวมันไม่ทำงาน)
ตั้งค่าโปรแกรมต่างๆให้เรียบร้อย
เนื่องจากโปรแกรมต่างๆ เราต้องจัดการให้มันทำงานอัตโนมัติทุกครั้งที่มีการ restart เครื่อง ดังนั้นเราจึงต้อง copy ข้อความสีเขียวด้านล่าง (อีกแล้ว)
# ตั้งเวลาเครื่องให้ถูกต้อง
ntpdate time.nist.gov

# ปิด service ที่ไม่จำเป็น
service iptables stop
service ip6tables stop
service bluetooth stop
chkconfig iptables off
chkconfig ip6tables off
chkconfig bluetooth off

# เปิด service ที่จำเป็น
service mysqld restart
service httpd restart
service named restart
service ntpd restart
service sendmail restart
chkconfig mysqld on
chkconfig httpd on
chkconfig named on
chkconfig ntpd on
chkconfig sendmail on

เสร็จแล้วก็สลับหน้าจอมาที่ Putty แล้วก็คลิกขวา เพื่อวางคำสั่งเหล่านี้ แล้วกดปุ่ม Enter บนคีย์บอร์ดอีกที รอแป๊บเดียวก็จะขึ้นพรอมต์ดังรูป
ตั้งค่าเรียบร้อย
เท่านี้ก็เสร็จสิ้นการตั้งค่าโปรแกรมต่างๆแล้วครับ
ลองเข้า Webmin
เมื่อทุกอย่างพร้อม ก็ให้เปิด Browser เช่น Internet Explorer หรือ Firefox ของคุณขึ้นมา แล้วพิมพ์ address ว่า https://หมายเลข IP ของเครื่องคุณ:10000 แล้วก็กด Enter ครับ เช่นเครื่องคุณมี IP เป็น 192.168.1.102 ก็ให้เข้าไปที่ https://192.168.1.102:10000
ถ้าพบว่า Browser มีการเตือนเรื่อง Certificate ดังรูป ก็ให้เลือก Continue to this website นะครับ
หน้าจอเตือน Certificate
เมื่อกดข้ามเรื่องการเช็ค Certificate แล้ว จะพบกับหน้าจอโปรแกรม Webmin ดังรูปครับ
หน้าจอโปรแกรม Webmin
เรียบร้อยแล้ว
ถ้าเห็นอย่างนี้ก็ดีใจด้วยครับ เพราะคุณได้ผ่านขั้นตอนที่น่ากลัวสำหรับคนทั่วๆไปได้แล้ว นั่นคือการลง Control Panel หลังจากนี้ก็ไม่มีอะไรยากแล้วครับ เนื่องจากสามารถทำผ่านหน้าเว็บได้หมด ซึ่งผมจะมาแนะนำในตอนต่อๆไปครับ

Friday, November 25, 2011

Installing IonCube loader with Zend Optimizer

This is a common request we get for Ioncube to be installed. It’s generally not an issue, but when you factor in other optimization plugins like Zend and eAccelerator, a common misconception is that the three don’t get along. It’s very easy to install Ioncube into a PHP installation that already has Zend and eAccelerator.
This tutorial is specific to cPanel, assuming that you are using php 5.2.x with Zend 3.x.x.
If you need help installing eAccelerator, you can see this tutorial. For help with installing Zend, you can go here. The versions in both these tutorials are outdated, so you’ll probably want to apply the instructions to the newest versions available.
Go to http://www.ioncube.com/loader_download.php and pick your download. This example assumes that you are using php 5.2.
cd /usr/src
wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
tar -xvzf ioncube_loaders_lin_x86.tar.gz
cd ioncube
Copy the loader config to the user’s public_html or another location where you can access it from a browser.
cp ioncube-loader-helper.php /home/username/public_html
Now in your browser go to the loader file that you just copied. This file will tell you exactly which extension you need to use. Choose the ‘php.ini Installation Instructions’ link, and you should see something like this after the php config output:
zend_extension = /<path>/ioncube_loader_lin_5.2.so
Move the ioncube directory to a more permanent location:
mv /usr/src/ioncube /usr/local
chown -Rf root:root /usr/local/ioncube
Edit the php.ini and add look for this section (may not be exact):
[Zend]
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.0.1
zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.0.1
zend_optimizer.version=3.0.1
zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so
Above this section, add this line:
zend_extension=/usr/local/ioncube/ioncube_loader_lin_5.2.so
Of course, make sure that the .so file is the one that the loader helper told you to use! After that is added, STOP and then START Apache to make sure that it’s loading. You should now see IonCube in your phpinfo file.
If you’re using eAccelerator, you shouldn’t need to change the location of the plugin loader in your php.ini.
Note that if Apache doesn’t start, it’s probably because of the order in which you have Zend and ioncube loading.  The lines for Ioncube should be above those for Zend optimizer.
Lastly, you should test your IonCube installation to make sure that it can decode its own files. In the original ‘ioncube’ directory that you moved, there’s a test ‘ioncube-encoded-file.php’ file that you can load through a browser to make sure that it works.

วิธีลง Ioncube บน Centos

#wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
แตกไฟล์ซะ
#tar -zxvf ioncube_loaders_lin_x86.tar.gz
แล้วเข้าไปใน โฟลเดอร์ ioncube
#cd ioncube
ทำการ copy file ioncube-loader-helper.php ไปวางยัง PATH ของเว็บไซต์ที่ต้องการใช้ ioncube ในโฟลเดอร์ scripts นั้นๆเลย
#cp ioncube-loader-helper.php /home/test/domains/yourdomain.com/public_html/โฟลเดอร์สคริป/
ออกมาข้างนอก โฟลเดอร์ ioncube
# cd ..
แล้วทำการย้ายโฟลเดอร์ ioncube ไปไว้ที่ /usr/local/
#mv ioncube /usr/local/
จัดการแก้ไขไฟล์ php.ini
#nano /usr/local/lib/php.ini
หรือ ถ้าใช้ DirectAdmin ก็เข้าไปแก้ไขที่ File Editor
เพิ่มบันทัดข้างล่างนี้เข้าไป แล้ว Save
ที่ผมใส่ ioncube_loader_lin_4.4.so ลงไป เนื่องจากผมใช้ php4.4 ดังนั้นก่อน config ต้องเลือกใช้ให้ถูกตัว ถูกต้องด้วย
zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.2.so
เสร็จก็ restart webserver
#service httpd restart
แล้วลองไปเปิด http://www.yourdomain.com/โฟลเดอร์สคริป/ioncube-loader-helper.php ดู รัน test ถ้าไม่มี Error อะไรก็ผ่านครับ

การติดตั้ง ionCube Loader บน Linux

วิธีการติดตั้ง ionCube Loader มีดังนี้
  • - ตรวจสอบว่าเครื่องของคุณใช้ PHP เวอร์ชั่นอะไร, ใช้ Linux 32bit หรือ 64bit, เปิด Thread Safety หรือเปล่า
  • - ต่อไปก็ดาวน์โหลด ionCube Loader โดยเลือกจาก OS ที่ใช้ ถ้าใช้ Linux 32bit ให้เลือก Linux (x86) ถ้าใช้ Linux 64bit ให้เลือก Linux (x86-64) ตัวอย่าง wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
  • - แตกไฟล์ออกมาด้วย tar -zxvf ioncube_loaders_lin_x86-64.tar.gz
  • - คัดลอกไฟล์ ioncube-encoded-file.php ioncube-loader-helper.php ไปไว้ที่ web directory ตัวอย่าง cp -f ioncube/ioncube-encoded-file.php ioncube/ioncube-loader-helper.php /home/username/public_html
  • - ย้าย ioncube โดยใช้คำสั่ง mv ioncube /usr/local
  • - หลังจากนั้นเข้าไปแก้ไขไฟล์ php.ini nano /usr/local/lib/php.ini มองหาบรรทัดที่มีการตั้ง zend optimizer แล้วเพิ่ม zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.2.so ในการเลือกไฟล์ตรงนี้ต้องดูว่าเครื่องคุณใช้ php เวอร์ชั่นอะไร และเปิด Thread Safety หรือไม่ ตัวอย่างนี้เป็น php v5.2 และปิด Thread Safety ถ้าเปิด Thread Safety ให้เลือกไฟล์ ioncube_loader_lin_5.2_ts.so
  • - หลังจากนั้นก็ทำการ restart apache /etc/init.d/httpd restart
  • - เข้าไปที่หน้าเว็บของเราที่คัดลอกไฟล์ ioncube-loader-helper.php ไปไว้ ตัวอย่าง http://www.yourdomain.com/ioncube-loader-helper.php ถ้าไม่มีอะไรผิดพลาดก็จะพบข้อความดังรูป

ใครที่นำบทความไปเผยแพร่ที่เว็บไซต์อื่น กรุณาทำลิ้งค์กลับมายังบทความต้นฉบับด้วยนะครับ

Wednesday, November 23, 2011

การแก้ไข ip address บน Linux ( CentOS , Redhat )

การแก้ไข ip บนเครื่อง Linux
ทำได้ดังนี้
1. ใช้โปรแกรม Editor เช่น vi editor แก้ไขไฟล์ /etc/sysconfig/network-scripts/ifcfg-eth0 ( กรณีเป็น Ethernet 0 )
change ip address linux vi
2. แก้ไข GATEWAY ได้ที่ไฟล์ /etc/sysconfig/network ( กรณีใส่ GATEWAY ไว้ที่ interface แล้วไม่ต้องใส่อีก )
3. ใช้คำสั่ง service network restart เพื่อ restart ให้ใช้ ip ใหม่
4. ใช้คำสั่ง ifconfig เพื่อดู ว่า ip address ของเราตอนนี้เป็น ip อะไรแล้ว
5. ทดสอบ ping ไปยังเครื่องอื่นในวงเดียวกัน และ default gateway เพื่อทดสอบดูว่าสามารถไปได้ไหม
6. จำไว้ว่า default gateway ต้องเป็น network วงเดียวกันเท่านั้น
7. กรณีแก้ชั่วคราวสามารถใช้คำสั่งนี้ได้
ifconfig eth0 192.168.1.5 netmask 255.255.255.0 up
แต่จำไว้ว่าแบบนี้ ip address จะกลับไปเป็นตาม ip ที่อยู่ใน configure file กรณี boot เครื่องใหม่

Tuesday, November 22, 2011

การลบ user แปลกปลอมใน CentOS เนื่องจากดูเหมือนถูกบุกรุก hosting


วันนี้ ไล่ตรวจสอบระบบ hosting พบว่า hoting เครื่องหนึ่งมี process แปลก ๆ เข้ามา run (ตรวจสอบด้วยคำสั่ง top ปกตินี่แหละครับ) ซึ่ง process แปลก ๆ นั้นมักจะมี pid เหมือน process ทั่ว ๆ ไป แต่ตรงส่วน command จะเป็นตัวเลขแปลก ๆ ครับ จากนั้นก็ไล่ตรวจสอบต่อไปว่า path shell อยู่ที่ไหน ด้วยคำสั่ง
vi /etc/passwd
ให้ค้นหาชื่อ user ที่เป็นปัญหา เช่นหาก user ชื่อ noto จะเจอ path ประมาณนี้ครับ
noto:x:1023:1023:/var/www/vhost/noto:/bin/bash (กรณีนี้ของ hosting แน๊กซ่าเครื่องนี้ใช้ PLESK เป็นระบบ control panel ครับ)
พอลอง cd เข้าไปดูพบไฟล์แปลก ๆ เพียบเลยครับ รวมถึงไฟล์พวก .ssh .ssh2 .shosts .rhosts หรือ folder พวก eggdrop ก็เป็นอันสรุปได้ว่า น่าจะถูกเจาะระบบเข้ามาที่ hosting ครับ วิธีการแก้ไขก็ทำดังนี้ครับ
passwd -l noto (ทำการ lock password ไว้ก่อนครับ)
จากนั้นหากเรารู้ตำแหน่งของ home directory ของ shell จากไฟล์ /etc/passwd แล้วเราก็เข้าไปลบทิ้งทั้ง directory เลยครับ ในกรณีนี้คือ /var/www/vhosts/noto ก็ใช้คำสั่ง
rm -Rf /var/www/vhosts/noto
จากนั้นแก้ไข path shell ใหม่ เพื่อป้องกันการเข้ามาระบบอีกครั้งของผู้บุกรุกครับ
vi /etc/passwd โดยแก้ช่องสุดท้ายเปน /dev/null ครับ
เช่นแก้ไขจาก noto:x:1023:1023:/var/www/vhost/noto:/bin/bash เป็น noto:x:1023:1023:/var/www/vhost/noto:/dev/null
จากนั้นให้ kill process ที่ยังคงทำงานอยู่ของ user ดังกล่าว ซึ่งจะทำการเป็น backdoor ไว้ค่อยติดต่อกับภายนอก
ps aux | grep -i ^noto (ตรง ^noto คือชื่อ user ครับ)
ก็จะพบ process หลายตัวครับก็ให้ทำการ kill -9 pid นั้น ๆ ออกครับ
kill -9 13958
เท่านี้ก็เป็นการลบ user ที่ไม่ต้องการออกไปแล้วครับ และป้องกันการโจมตีอีกครั้งด้วครับ ส่วนสาเหตุอาจจะมีบาง user เปิดช่องโหว่ให้สามารถเข้ามาสร้างไฟล์ได้ ซึ่งก็ต้องตรวจสอบดูกันต่อไปครับ

How to : การ Setup PPPoE แบบ Bridge mode บน CentOS 5.3

การ Setup PPPoE  แบบ Bridge mode บน CentOS 5.3 คงอธิบายยาว หน่อยเพราะเป็น ระบบ manual ทั้งหมด
หากใครติดตั้ง CC อยู่ แล้วไม่ต้องอ่านก็ได้ ไล่ดู copy list file ทั้งหมดด้านล่างแล้ว copy เอามาใส่ทับได้เลย
1. ตรวจสอบ interface eth1 กันก่อน หลังใช้คำสั่ง more ดูหน้าตาควรเป็น แบบนี้
  1. more /etc/sysconfig/network-scripts/ifcfg-eth1
  2. # Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
  3. DEVICE=eth1
  4. BOOTPROTO=static
  5. BROADCAST=192.168.2.255
  6. HWADDR=00:0C:29:39:56:80
  7. IPADDR=192.168.2.254
  8. NETMASK=255.255.255.0
  9. NETWORK=192.168.2.0
  10. ONBOOT=yes

ส่วนที่ทำ สีแดงไว้ไม่จำเป็นต้องเหมือนผม มันขึ่นอยู่กับ class ip ที่ตั้งไว้ตอนแรก กับ ค่า MAC ADDRESS ของ Card Lan ใบนั้น
2. แก้ไข ค่า eth0 และ eth2 (จากบทความ How to : การติดตั้ง CentOS 5.3 เพื่อรองรับ ระบบ multiwan ผมมี Card อยู่ 3 ใบ eth0 eth1 eth2)
แก้ไข eth0
  1. nano /etc/sysconfig/network-scripts/ifcfg-eth0

แก้ไขค่าเก่าให้เหลือแค่ 3 บรรทัดนี้
  1. DEVICE=eth0
  2. HWADDR=00:0C:29:39:56:76
  3. ONBOOT=yes

กด Ctrl+x และกด y เพื่อ save และออกมาครับ
ส่วนที่ทำ สีแดงไว้ไม่จำเป็นต้องเหมือนผม ใช้ตามค่า MAC ADDRESS ของ Card Lan ใบนั้น ปกติ ถ้ามันเห็นจะมีค่านี้ใส่ติดมาให้ตั้งแต่แรกไม่ต้องลบออกครับ
ทำแบบนี้เช่นเดียวกันกับ eth2
  1. nano /etc/sysconfig/network-scripts/ifcfg-eth2

แก้ไข ให้เหลือ 3 บรรทัดสำคัญ
  1. DEVICE=eth2
  2. HWADDR=00:0C:29:39:56:8A
  3. ONBOOT=yes 

กด Ctrl+x และกด y เพื่อ save และออกมาครับ
ส่วนที่ทำ สีแดงไว้ไม่จำเป็นต้องเหมือนผม ใช้ตามค่า MAC ADDRESS ของ Card Lan ใบนั้น ปกติ ถ้ามันเห็นจะมีค่านี้ใส่ติดมาให้ตั้งแต่แรกไม่ต้องลบออกครับ
เสร็จแล้วสั่ง service network restart
  1. service network restart
  2. Shutting down interface eth0:                              [  OK  ]
  3. Shutting down interface eth1:                              [  OK  ]
  4. Shutting down interface eth2:                              [  OK  ]
  5. Shutting down loopback interface:                       [  OK  ]
  6. Disabling IPv4 packet forwarding:  net.ipv4.ip_forward = 0                          [  OK  ]
  7. Bringing up loopback interface:                            [  OK  ]
  8. Bringing up interface eth0:                                   [  OK  ]
  9. Bringing up interface eth1:                                   [  OK  ]
  10. Bringing up interface eth2:                                   [  OK  ]

สั่ง ifconfig chek interface ดู
  1. ifconfig
  2. eth0      Link encap:Ethernet  HWaddr 00:0C:29:39:56:76
  3. inet6 addr: fe80::20c:29ff:fe39:5676/64 Scope:Link
  4. UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  5. RX packets:902 errors:0 dropped:0 overruns:0 frame:0
  6. TX packets:207 errors:0 dropped:0 overruns:0 carrier:0
  7. collisions:0 txqueuelen:1000
  8. RX bytes:91878 (89.7 KiB)  TX bytes:35488 (34.6 KiB)
  9. Interrupt:59 Base address:0x2000
  10.  
  11. eth1      Link encap:Ethernet  HWaddr 00:0C:29:39:56:80
  12. inet addr:192.168.232.253  Bcast:192.168.232.255  Mask:255.255.255.0
  13. inet6 addr: fe80::20c:29ff:fe39:5680/64 Scope:Link
  14. UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  15. RX packets:286 errors:0 dropped:0 overruns:0 frame:0
  16. TX packets:340 errors:0 dropped:0 overruns:0 carrier:0
  17. collisions:0 txqueuelen:1000
  18. RX bytes:27164 (26.5 KiB)  TX bytes:57425 (56.0 KiB)
  19. Interrupt:67 Base address:0x2080
  20.  
  21. eth2      Link encap:Ethernet  HWaddr 00:0C:29:39:56:8A
  22. inet6 addr: fe80::20c:29ff:fe39:568a/64 Scope:Link
  23. UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  24. RX packets:723 errors:0 dropped:0 overruns:0 frame:0
  25. TX packets:200 errors:0 dropped:0 overruns:0 carrier:0
  26. collisions:0 txqueuelen:1000
  27. RX bytes:53721 (52.4 KiB)  TX bytes:40694 (39.7 KiB)
  28. Interrupt:75 Base address:0x2400
  29.  
  30. lo        Link encap:Local Loopback
  31. inet addr:127.0.0.1  Mask:255.0.0.0
  32. inet6 addr: ::1/128 Scope:Host
  33. UP LOOPBACK RUNNING  MTU:16436  Metric:1
  34. RX packets:19 errors:0 dropped:0 overruns:0 frame:0
  35. TX packets:19 errors:0 dropped:0 overruns:0 carrier:0
  36. collisions:0 txqueuelen:0
  37. RX bytes:1517 (1.4 KiB)  TX bytes:1517 (1.4 KiB)

ขึ้นแบบนี้ เท่ากับว่า พร้อมการ Setup PPPoE แบบ Bridge mode แล้ว เสร็จครึ่งแรก 3. นำสาย Lan (RJ-45) เสียบเข้า กับ eth0 และ eth2 แบบนี้
Modem-01 ==== สาย lan (RJ-45) ==== Eth0
Eth1 เสียบเข้า Switch อยู่แล้วไม่ต้องไปยุ่งอะไรกับมัน
Modem-02 ==== สาย lan (RJ-45) ==== Eth2
แบบเดียวกับการต่อ ของ CC นั่นหล่ะ ครับ
4. ทำการ ใส่ user และ Password ของ ADSL แต่หละเส้น ผมใช้ manual หมด หากมีของที่ Copy มาจาก CC อยู่แล้ว เอามาใส่ได้เลย

  1. nano /etc/ppp/chap-secrets

ใส่ user pass เรียงตามนี้ไปเลยครับเข้าใจง่ายดี
  1. "032389XXX@platinumcyber"       *       "032389XXX" #PPP0
  2. "h1r66XXX@maxnet"       *       "XXXXXXXX" #PPP1

ตัวสีแดงหละสีเขียวไม่ต้องใส่ไปนะครับอธิบายให้เห็นว่า ppp0 อยู่บนสุด ppp1 อยู่อันที่สอง
  1. nano /etc/ppp/pap-secrets

ใส่เหมือนกันเลย
  1. "032389XXX@platinumcyber"       *       "032389XXX" #PPP0
  2. "h1r66XXX@maxnet"       *       "XXXXXXXX" #PPP1

ตัวสีแดงหละสีเขียวไม่ต้องใส่ไปนะครับอธิบายให้เห็นว่า ppp0 อยู่บนสุด ppp1 อยู่อันที่สอง
5. ต่อเลยครับสร้าง scripts เวลาสั่ง network restart ได้ทำการ dial ADSL ให้เรา Auto
  1. touch /etc/sysconfig/network-scripts/ifcfg-ppp0
  2. touch /etc/sysconfig/network-scripts/ifcfg-ppp1
ใส่ค่า

  1. nano /etc/sysconfig/network-scripts/ifcfg-ppp0

ใส่ค่าตามนี้สำหรับ ppp0
  1. DEVICE="ppp0"
  2. TYPE="xDSL"
  3. USERCTL="no"
  4. BOOTPROTO="dialup"
  5. NAME="DSLppp0"
  6. ONBOOT="yes"
  7. PIDFILE="/var/run/pppoe-ppp0.pid"
  8. FIREWALL="NONE"
  9. PING="."
  10. PPPOE_TIMEOUT="80"
  11. LCP_FAILURE="5"
  12. LCP_INTERVAL="20"
  13. CLAMPMSS="1412"
  14. CONNECT_POLL="6"
  15. CONNECT_TIMEOUT="80"
  16. DEFROUTE="no"
  17. SYNCHRONOUS="no"
  18. ETH="eth0"
  19. PROVIDER="DSLppp0"
  20. USER="0032389XXX@platinumcyber"
  21. PEERDNS="no"

ต้องเหมือนกับ user ที่ใส่ไว้ใน chap-secrets ที่ทำไว้ก่อนหน้าทุกตัว
  1. nano /etc/sysconfig/network-scripts/ifcfg-ppp1

ใส่ค่าตามนี้สำหรับ ppp1
  1. DEVICE="ppp1"
  2. TYPE="xDSL"
  3. USERCTL="no"
  4. BOOTPROTO="dialup"
  5. NAME="DSLppp1"
  6. ONBOOT="yes"
  7. PIDFILE="/var/run/pppoe-ppp1.pid"
  8. FIREWALL="NONE"
  9. PING="."
  10. PPPOE_TIMEOUT="80"
  11. LCP_FAILURE="5"
  12. LCP_INTERVAL="20"
  13. CLAMPMSS="1412"
  14. CONNECT_POLL="6"
  15. CONNECT_TIMEOUT="80"
  16. DEFROUTE="yes"
  17. SYNCHRONOUS="no"
  18. ETH="eth2"
  19. PROVIDER="DSLppp1"
  20. USER="h1r66XXX@maxnet"
  21. PEERDNS="no"

ต้องเหมือนกับ user ที่ใส่ไว้ใน chap-secrets ที่ทำไว้ก่อนหน้าทุกตัว
เสร็จส่วนของการตั้งค่า ADSL สำหรับ CentOS 5.3 ครับ ทดสอบสั่ง service network restart
  1. service network restart

หากทำถูกต้องหมดจะขึ้นแบบนี้
  1. ติดไว้ก่อนครับพอดีมีคนใช้งาน อยู่เลยสั่งให้ตอนนี้ไม่ได้เดี่ยวเอามาใส่ให้ทีหลังครับ

สำหรับท่านที่ มี CC อยู่แล้วสามารถ copy file ดังต่อไปนี้มาทับที่เดียวกันได้เลยครับ
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth1
/etc/sysconfig/network-scripts/ifcfg-eth2
/etc/sysconfig/network-scripts/ifcfg-ppp0
/etc/sysconfig/network-scripts/ifcfg-ppp1
/etc/ppp/chap-secrets
/etc/ppp/pap-secrets

CentOS : การใช้งาน CentOS Linux แบบมือโปร

การปรับแต่งค่าทางเครือข่าย (Network Configuration)
ผู้ที่ต้องการติดตั้งเซิร์ฟเวอร์จริงจำเป็นต้องเตรียมข้อมูลเกียวกับ IP Address โดยสิ่งที่ต้องเตรียมมีดังนี้
o Hostname
o IP Address
o Subnet Mask
o Gateway
o DNS
สำหรับวิธีการปรับแต่งให้ผู้อ่านคลิกไปที่เมนู System > Administration > Network หลังจากนั้นให้คลิกที่แท็บ Devices แล้วคลิกปุ่ม Edit เพื่อกำหนดรายละเอียดของ LAN Card กำหนดหมายเลข IP Address, Subnet mask, Gateway, คลิกแท็ป DNS เพื่อกำหนด Name Server ของศูนย์บริการที่ใช้งานอยู่, คลิกที่แท็บ Hosts เพื่อกำหนดชื่อ Host สำหรับเครือข่ายภายใน, เสร็จแล้วให้ทำการคลิกที่แท็บ Devices แล้วคลิกที่ปุ่ม Deactivate และ Activate อีกครั้ง เพื่อปรับค่า LAN Card ใหม่โดยไม่ต้องบู๊ตระบบใหม่ คุณสามารถตรวจสอบรายละเอียดไอพีผ่านทางหน้าต่าง Terminal โดยใช้คำสั่ง ifconfig

กำหนดรายละเอียดของ LAN Card

กำหนดรายละเอียด IP Address

กำหนดรายละเอียด DNS

กำหนดชื่อ Host
ตรวจสอบรายละเอียด IP ด้วยคำสั่ง ifconfig

============
Tips.
กรณีที่ผู้ใช้ต้องการกำหนดค่าทางเครือข่ายต่างๆ ผ่านทางหน้าต่าง Terminal โดยตรงสามารถทำได้เช่นเดียวกันโดยเข้าการเข้าไปแก้ไขไฟล์ต่างๆ เหล่านี้
o /etc/hosts ไฟล์สำหรับกำหนดชื่อโฮสต์ใช้ภายในเครือข่าย
o /etc/host.conf ไฟล์สำหรับเรียกใช้เนมเซิร์ฟเวอร์
o /etc/resolv.conf ไฟล์สำหรับตั้งค่าโดเมนเนม (DNS) ที่ใช้งานอยู่
o /etc/sysconfig/network ไฟล์สำหรับปรับตั้งชื่อเครื่องสำหรับใช้นอกเครือข่าย และหมายเลขของ Gateway
o /etc/sysconfig/network-scripts/ifcfg-eth0 ไฟล์สำหรับปรับรายละเอียดของ LAN card ใบที่ 1
o /etc/sysconfig/network-scripts/ifcfg-eth1 ไฟล์สำหรับปรับรายละเอียดของ LAN card ใบที่ 2 (กรณีมี LAN Card ติดตั้งอยู่สองใบ)
หลังจากกำหนดค่าทางเครือข่ายแล้วสามารถสั่ง Restart LAN Card ด้วยคำสั่ง
# service network restart [enter]
หรือกรณีต้องการตรวจสอบสถานะดูว่าตอนนี้เซอร์วิสอะไรถูกใช้งานอยู่บ้างสามารถใช้คำสั่ง
# service --status-all [enter]
================


credit : http://www.arnut.com/b/CentOSUsing7

Tuesday, October 25, 2011

DMZ คือ

knowledge
Demilitarized Zone (DMZ)
    ในกรณีที่ผู้ใช้บริการมี Server ต่าง ๆ อยู่ด้วย ในที่นี่สมมุติว่ามี Web Server, FTP Server, DNS Server , Proxy Server, Mail Server และ MySQL  Serer แล้วเราจะทำอย่างไรล่ะ
วิธีการที่นิยมกันคือการเพิ่มโซนของเครือข่ายมาอีกโซนหนึ่งนั่นคือ Demilitarized Zone (DMZ) ซึ่งถ้าแปลตรง ๆ ก็คือ "เขตปลอดทหาร" เช่น ที่กำหนดขึ้นที่เขตแดนระหว่างประเทศเกาหลีเหนือและประเทศเกาหลีใต้ในระหว่าง การสงบศึกชั่วคราวของสงครามเกาหลี
สำหรับในเรื่อง Network Security แล้ว DMZ เป็นคำจำกัดความของโซนอีกประเภทหนึ่งที่ไม่ใช่ทั้ง Internal (เครือข่ายภายใน) และ External (เครือข่ายภายนอกหรือเครือข่ายอินเตอร์เน็ต) แต่หมายถึงเครือข่ายที่ต้องมีการสื่อสารกับทั้งเครือข่ายภายในและเครือข่าย ภายนอกนั่นเอง  และดังนั้นผมจึงได้จัดให้ Server ทั้ง 5 ซึ่งต้องติตต่อกับทั้งเครือข่ายภายในและเครือข่ายภายนอกให้อยู่ใน DMZ ดังรูปที่ 3
อาจจะสงสัยบ้างว่าถ้ามี DHCP Server ด้วยจะเอาไว้ตรงไหน  เนื่องจาก DHCP Server ไม่ต้องมีการติดต่อสื่อสารกับเครือข่ายภายนอก จึงสามารถวางไว้ที่เครือข่ายภายในได้เลยครับ หรือถ้า Gateway มี Spec สูงหน่อย ก็สามารถวางไว้บน gateway เลยก็ได้ครับ
รูปที่ 3 การทำไฟร์วอลล์แบบที่มี DMZ ที่จัดแบ่งไอพีไม่ถูกต้อง
จาก รูปข้างบนนี้ผมลองทำดูแล้วมีปัญหาครับ คือ Linux ไม่ยอมรับลักษณะที่มีการ์ดแลนด์ 2 การ์ดแต่มีค่า IP อยู่ในวงเดียวกันนั่นคือการ์ด 202.129.48.162 กับการ์ด 202.29.48.163 ซึ่งเป็น IP ที่อยู่ในวงเดียวกันคืออยู่ในวง 202.129.48.160/28
เมื่อเป็นแบบนี้วิธีการแก้ปัญหาก็สามารถทำได้ด้วยการแบ่ง subnet ออกเป็น 2 subnet คือแบ่งไอพีวงแลนที่ได้จาก ISP เป็น 2 วงแลนนั่นเอง โดยวงแลนวงที่หนึ่งจะให้เป็นของ External และวงที่สองเป็นของ DMZ ซึ่งสามารถแบ่งได้เป็นดังนี้ :
วงที่ 1 : 202.129.48.160/29 ซึ่งจะมีไอพีเป็น 8 ไอพีที่อยู่ในช่วง 202.129.48.160 ถึง 202.129.48.167 แต่จะใช้งานได้จริงเป็น 6 ip คือ 202.129.48.161 ถึง 202.129.48.166
วงที่ 2 : 202.129.48.168/29 ซึ่งจะมีไอพีเป็น 8 ไอพีที่อยู่ในช่วง 202.129.48.168 ถึง 202.129.48.175 แต่จะใช้งานได้จริงเป็น 6 ip คือ 202.129.48.169 ถึง 202.129.48.174และแล้วก็จะได้รูปแบบของการจัดวางเครือข่ายทั้งหมดใหม่เป็น ดังรูปที่ 4
รูปที่ 4 การทำไฟร์วอลล์แบบที่มี DMZ ที่ถูกต้อง
เพื่อ ความสะดวกในการทำ ipchains เราควรจัดทำตารางแอคเซสรูลขึ้นมาก่อน  เพื่อแสดงความต้องการในการใช้งานว่าเราต้องการจะยอมรับหรือปฏิเสธแอปปลิเค ชันอันไหนบ้าง  โดยความต้องการในที่นี้ขออ้างถึงรูปที่ 4 และได้ดังตารางต่อไปนี้ :
ลำดับ
Source
Destination
Service
Port No.
Action
1
internal
any
เป็นการทำ NAT (MASQ)

forward
2
internal
any
ftp
21 tcp
accept
3
internal
any
dns
53 udp
accept
4
dmz
any
dns
53 udp
accept
5
any
dmz
dns
53 udp
accept
6
any
any
http
80 tcp
accept
7
Internal
any
telnet
23 tcp
accept
8
any (external)
internal
telnet
23 tcp
reject
9
any
any
smtp
25 tcp
accept
10
internal
any
pop3
110 tcp
accept
11
Intenal
any
imap
143 tcp
accept
12
Internal
any
https
443 tcp
accept
13
Internal
any
ping
icmp
accept
14
ไม่ใช่ Internal
any
webcache (proxy)
8080 tcp
reject
15
any (external)
dmz
ping
icmp
reject
16
any
any
tcp port 0-1023
0-1023 tcp
reject
17
any
any
tcp Network File System (NFS)
2049 tcp
reject
18
any
any
udp port 0-1023
0-1023 udp
reject
19
any
any
udp Network File System (NFS)
2049 udp
reject
20
internal
any
ดักจับโฮสต์ภายในที่ติดโปรแกรม SubSeven
2773 tcp
reject
21
internal
any
ดักจับโฮสต์ภายในที่ติดโปรแกรม SubSeven
6771 tcp
reject
22
internal
any
ดักจับโฮสต์ภายในที่ติดโปรแกรม SubSeven
6713 tcp
reject
23
internal
any
ดักจับโฮสต์ภายในที่ติดโปรแกรม SubSeven
7215 tcp
reject
24
internal
any
ดักจับโฮสต์ภายในที่ติดโปรแกรม SubSeven
27374 tcp
reject
25
internal
any
ดักจับโฮสต์ภายในที่ติดโปรแกรม SubSeven
27573 tcp
reject
26
internal
any
ดักจับโฮสต์ภายในที่ติดโปรแกรม SubSeven
54283 tcp
reject
27
any
dmz
x windows system
6000-6009 tcp
reject
28
any
dmz
X Font Service
7100 tcp
reject
29
intenal
any
ดักจับโฮสต์ภายในที่ติดโปรแกรม Back Orifice 2000
8787 tcp
reject
30
internal
any
ดักจับโฮสต์ภายในที่ติดโปรแกรม Back Orifice 2000
54320-54321
reject
1:#ipchains -A forward -s 192.168.1.0/24 -d 0/0 -j MASQ
2:#ipchains -A input -s 192.168.1.0/24 -d 0/0 21 -p tcp -y -j ACCEPT
3.:#ipchains -A input -s 192.168.1.0/24 -d 0/0 53 -p udp -j ACCEPT
4:#ipchains -A input -s 202.129.48.168/29 -d 0/0 53 -p udp -j ACCEPT
5:#ipchains -A input -s 0/0 -d 202.129.48.168/29 53 -p udp -j ACCEPT
6:#ipchains -A input -s 0/0 -d 0/0 80 -p tcp -y -j ACCEPT
7:#ipchains -A input -s 192.168.1.0/24 -d 0/0 23 -p tcp -y -j ACCEPT
8:#ipchains -A input -s 0/0 -d 202.129.48.168/29 23 -p tcp -y  -j REJECT
9:#ipchains -A input -s 0/0 -d 0/0 25 -p tcp -y -j ACCEPT
10:#ipchains -A input -s 192.168.1.0/24 -d 0/0 110 -p tcp -y -j ACCEPT
11:#ipchains -A input -s 192.168.1.0/24 -d 0/0 143 -p tcp -y -j ACCEPT
12:#ipchains -A input -s 192.168.1.0/24 -d 0/0 443 -p tcp -y -j ACCEPT
13:#ipchains -A input -s 192.168.1.0/24 -d 0/0 -p icmp --icmp-type ping -j ACCEPT
14: #ipchains -A input -s ! 192.168.1.0/24 -d 0/0 8080 -p tcp -y -j REJECT
15:#ipchains -A input -s 0/0 -d 202.129.48.168/29 -p icmp --icmp-type ping -j REJECT
16:#ipchains -A input -s 0/0 -d 0/0 0:1023 -p tcp -y -j REJECT
17:#ipchains -A input -s 0/0 -d 0/0 2049 -p tcp -y -j REJECT
18:#ipchains -A input -s 0/0 -d 0/0 0:1023 -p udp -j REJECT
19:#ipchains -A input -s 0/0 -d 0/0 2049 -p udp -j REJECT
20:#ipchains -A input -s 192.168.1.0/24 -d 0/0 2773 -p tcp -y -j REJECT
21:#ipchains -A input -s 192.168.1.0/24 -d 0/0 6771 -p tcp -y -j REJECT
22:#ipchains -A input -s 192.168.1.0/24 -d 0/0 6713 -p tcp -y -j REJECT
23#ipchains -A input -s 192.168.1.0/24 -d 0/0 7215 -p tcp -y -j REJECT
24:#ipchains -A input -s 192.168.1.0/24 -d 0/0 27374 -p tcp -y -j REJECT
25:#ipchains -A input -s 192.168.1.0/24 -d 0/0 27573 -p tcp -y -j REJECT
26:#ipchains -A input -s 192.168.1.0/24 -d 0/0 54283 -p tcp -y -j REJECT
27:#ipchains -A input -s 0/0 -d 202.129.48.168/29 6000:6009 -p tcp -y -j REJECT
28:#ipchains -A input -s 0/0 -d 202.129.48.168/29 7100 -p tcp -y -j REJECT
29:#ipchains -A input -s 192.168.0.1/24 -d 0/0 8787 -p tcp -y -j REJECT
30:#ipchains -A input -s 192.168.0.1/24 -d 0/0 54320:54321 -p udp -j REJECT
:
ความหมายแต่ละบรรทัด:
1.ทำ NAT ให้เครือข่ายภายในเพื่อจะให้สามารถออกสู่เครือข่ายภายนอกได้
2.อนุญาตให้เครือข่ายภายใน ftp ไปที่ไหนก็ได้
3.อนุญาตให้เครือข่ายภายในใช้ DNS ของที่ไหนก็ได้
4.อนุญาต ให้ DMZ ไปใช้ DNS ของที่ไหนก็ได้  ซึ่งตรงนี้เป็นการอนุญาตให้ทั้งเครือข่าย  จริง ๆ แล้วอาจจะอนุญาตให้เฉพาะ Proxy Server กับ DNS Sever ก็พอแล้ว โดยให้ระบุ IP address ของ Server ไปได้เลย นั่นคือต้องใช้คำสั่งนี้สองบรรทัดนะ
5.อนุญาตให้ต้นทางที่ไหนก็ได้มาใช้ DNS ใน DMZ ได้  ซึ่งไอพีของปลายทางสามารถจะระบุเฉพาะ IP ของ DNS Server ไปเลยก็ได้
6.อนุญาตให้ใช้ http ไม่ว่าจะเป็นต้นทางและปลายทางที่ไหน
7.อนุญาตให้เครือข่ายภายในสามารถจะ telnet ไปที่ไหนก็ได้
8.ไม่ อนุญาตให้ต้นทางที่ไหนก็ได้ telnet เข้ามา DMZ ได้ แต่เมื่อย้อนไปดูข้อ 7 ก็สรุปว่าอนุญาตให้เฉพาะเครือข่ายภายในเท่านั้นที่ telnet เข้า DMZ ได้
9.อนุญาตให้ต้นทางที่ไหนสามารถใช้ smtp ที่ปลายทางที่ไหนก็ได้
10.อนุญาตให้เครือข่ายภายในไปใช้ pop3 ที่ปลายทางที่ไหนก็ได้
11.อนุญาตให้เครือข่ายภายในไปใช้ imap ณ ปลายทางที่ไหนก็ได้
12.อนุญาตให้เครือข่ายภายในไปใช้ https ณ ปลายทางที่ไหนก็ได้
13.อนุญาตให้เครือข่ายภายใน ping ไปที่ไหนก็ได้
14.ไม่อนุญาตให้เครือข่ายที่นอกเหนือจากเครือข่ายภายในสามารถใช้งาน Proxy Server ได้
15.ไม่ อนุญาตให้ทุกที่ ping เข้ามาใน DMZ แต่เมื่อย้อนไปดูข้อ 13 แล้ว สรุปเป็นว่าอนุญาตให้เฉพาะเครือข่ายภายในเท่านั้นที่ ping เข้า dmz ได้
16.ห้ามการใช้งานที่พอร์ต 0-1023 tcp ไม่ว่าจะเป็นต้นทางและปลายทางที่ไหน แต่จะอนุญาตให้เฉพาะกฎข้อก่อนหน้านี้เท่านั้น
17.ห้ามการใช้งาน tcp Network File System (NFS) ไม่ว่าจะเป็นต้นทางและปลายทางที่ไหน
18.ห้ามการใช้งานที่พอร์ต 0-1023 udp ไม่ว่าจะเป็นต้นทางและปลายทางที่ไหน แต่จะอนุญาตให้เฉพาะกฎข้อก่อนหน้านี้เท่านั้น
19.ห้ามการใช้งาน udp Network File System (NFS) ไม่ว่าจะเป็นต้นทางและปลายทางที่ไหน
20-26 ดักจับโฮสต์ภายในที่ติดโปรแกรม SubSeven
27.ห้ามต้นทางที่ไหนก็แล้วแต่  ติดต่อเข้าไปยัง x windows system ของ DMZ
28.ไม่อนุญาตให้ใช้งาน tcp พอร์ต 7100 (X Font Service) ไม่ว่าจะเป็นต้นทางและปลายทางที่ไหน
29-30 ดักจับโฮสต์ภายในที่ติดโปรแกรม Back Orifice 2000

ที่มา http://www.tkc.ac.th/osunun/technology/linux/gateway_firewall.html

 
Design by GURU