Archive for the ‘Development’ Category
Posted by อัทศักดิ์ วงศ์กิตตะ on Tuesday, March 23rd, 2010
หายไปนานครับ วันี้เอาเรื่องเก่าๆมาหากินใหม่ IPTables ที่ทำๆอยู่ทุกวันนี้แหละครับ พอดีทำ Shell Script ทิ้งไว้เลยเอามาแจกจ่ายให้เพื่อนๆเอาไปใช้งาน หลายๆคนถามว่าทำไมต้องเขียนเอง ก็เหตุผลง่ายๆครับ เราเขียนเองเรารู้ทุกๆ rules ที่มันทำงานอย่างไร เวลาเกิดปัญหา เราสามารถแก้ไขปัญหาได้ รวดเร็ว มาดูความสามารถของ script firewall ตัวนี้ครับ
ความสามารถ:
– State full firewall
– สามารถกำหนด Interface ที่ทำงานได้
– สามารถกำหนด VIP IP ได้
– สามารถกำหนด Band IP ได้
– มีการเก็บ Log ลง syslog
– ป้องกันการ Scan port ได้
– ป้องกัน IP Spoofig
– ป้องกัน SSH Attatch
Continue reading “IPTables statefull firewall for Linux” »
Tags: centos, debian, firewall, INPUT, iptables, Linux, Shell
Posted in CentOS, debian, Development, Operating System, Shell script, ubuntu | 4 Comments »
Posted by อัทศักดิ์ วงศ์กิตตะ on Thursday, February 19th, 2009
สวัสดีครับ วันนี้จิบเบียร์แล้วก็มานั้งทบทวนเรื่องงานที่ทำ พอดีมีเรื่องเล็กๆน้่อยๆ ที่ผมเองทำและน่าจะเป็นประโยช์กับเพื่อนๆ เกี่ยวกับการตั้ง Reverse Proxy กับปัญหา เรื่อง IP ที่ show ใน app ของเรา
ปกติเวลาเราเขียน Apps หรือ พวกฟรี Webboard ทั้งหลายจะมีการ Check IP จาก
$_SERVER['REMOTE_ADDR'] และ $_SERVER['HTTP_X_FORWARDED_FOR'] หากเจอตัวแปล HTTP_X_FORWARDED_FOR ระบบจะทำการ Record IP จาก HTTP_X_FORWARDED_FOR ด้วย แต่หากว่าบางโปรแกรมที่เขียน จะเก็บแค่ REMOTE_ADDR ทำให้ IP ที่แสดงในโปรแกรมของเรา เป็น IP ของ Reverse Proxy แทน
Continue reading “แก้ปัญหา REMOTE_ADDR ใน Reverse Proxy” »
Tags: PHP, Proxy, Reverse Proxy, Web Server
Posted in Development, PHP | 6 Comments »
Posted by อัทศักดิ์ วงศ์กิตตะ on Friday, January 16th, 2009
ช่วงนี้ขยันครับกะจะปั่นบาความใหม่ๆสะหน่อย หลังจากไม่ได้เขียนมาสะนาน วันนี้เอาเรื่องเกี่ยวกับ Developer บ้างผมเองเป็นทั้ง System, Programing เลยยกเรื่องการเ้ข้ารหัสข้อมูลที่เป็นแบบ 2 way คือสามารถ เข้ารหัส และถอดกลับมาได้ และมีความปลอดภัยสูง
มาพูดเรื่อง PKI ก่อนนะครับ ส่วนตัวผมเองไม่ได้เรื่อง IT มาเรื่อง PKI ผมเองก็ได้แต่อ่านๆจากในเน็ต แล้วก็นำมาเล่าสู่กันฟัง ท่าสามารถหาข้อมูลที่ลึงมากกว่านี้ได้จาก Link ข้างล่าง “Public key infrastructure” คือการเข้ารหัสข้อมูล โดยใช้ กุญแจ 2 ลูกคือ Public Key และ Private Key หากเราเข้ารหัสข้อมูลโดยใช้ Private Key เราก็ต้องถอดรหัสโดยใช้ Public Key ในทางกลับกัน ถ้าเข้ารหัสด้วย Public Key ก็ต้องใช้ Private Key ถอดรหัสเท่านั้น
ทีนี้มาพูดถึงความปลอดภัย ตัว PKI เองสามารถเลือก bit การเข้ารหัสได้ตามที่เราต้องการ ตั้งแต่ 512, 1024, 2048 และสามารถเข้ารหัวได้สูงกว่านี้ ทำให้เป็นการยากที่จะถอดรหัสได้ ทุกๆวันนี้เราเองก็ใช้เทคโนโลยีนี้แทบทุกวัน โดยที่เราไม่รู้ตัว อย่างบัตร SmartCard เองก็ใช้ PKI ในการเข้ารหัส หรือ Card UBC เองก็ใช้เช่นกัน อีกตัวอย่างคือ เวลาเข้าเว็บไซด์ผ่าน https ระหว่าง Web Server และ Browser ก็จะมีการเข้ารหัสข้อมูล โดยใช้เทคโนโลยี PKI ในการเข้ารหัสเช่นกัน
Continue reading “PHP – 2 Way Encrypt by PKI” »
Tags: OpenSSL, PHP, PKI
Posted in Development, PHP | 1 Comment »
Posted by อัทศักดิ์ วงศ์กิตตะ on Monday, September 1st, 2008
คือมี case ที่ต้องทำ transparent proxy ครับ แต่ว่าเวลา proxy มีปัญหา ผมอยากให้ทำการ ปลด proxy ออกเอง ผมเลยเขียน shell script มาเพื่อทำการ ตรวจสอบว่า proxy ทำได้หรือเปล่า ถ้าทำงานได้ ก็จะเพิ่ม iptables ทำการสร้าง DNAT ไปยังเครื่อง Proxy ครับ
Continue reading “Check Transparent Proxy” »
Tags: iptables, Linux, Proxy, Shell script, Squid, Transparent, TransparentProxy
Posted in debian, Development, FreeBSD, Shell script | 1 Comment »
Posted by อัทศักดิ์ วงศ์กิตตะ on Sunday, August 24th, 2008
ตามที่ พรบ ได้กำหนดให้ “ผู้ให้บริการ” เก็บ log การใช้บริการ โชคดีที่ผมมี Revert Proxy วางไว้หน้า Web Server ทำให้สามารถเก็บ Log ได้ง่ายหน่อย ตัว script ที่ผมเขียนนี้ จะทำการ rotate log และ compress log ไว้ ใน version ต่อไป จะทำการ ftp ไปไว้ยัง Log Server อื่น แทนครับ 
Continue reading “พรบ. การกระทำความผิดเกี่ยวกับคอมพิวเตอร์ – Revert Proxy Log Rotate” »
Tags: Apache, Log, Proxy, Revert, Rotate, Squid, พรบ
Posted in debian, Development, Shell script | 3 Comments »
Posted by กวิน ชัยเลิศ on Tuesday, June 10th, 2008
เพื่อนๆ คงจะเคยประสบปัญหากับ source code หรือ text file ที่เต็มไปด้วย ^M (CTRL-M) โดยที่เราไม่ต้องการจะเห็นมัน
ผมมีวิธีลบ ^M ออกไปจาก file ด้วย VIM (editor เทพ!) มาแนะนำครับ
ตัวอย่าง file ที่เต็มไปด้วย ^M

Continue reading “ลบ ^M (CTRL-M) ออกจากไฟล์ หรือแทนที่ด้วย <newline> ด้วย VIM” »
Tags: CTRL-M, editor, vim, Windows, ^M
Posted in Development | 1 Comment »
Posted by อัทศักดิ์ วงศ์กิตตะ on Sunday, June 8th, 2008
วันนี้มีปัญหาขึ้นมาครับ เนื่องจาก MySQL Cluster ที่ใช้งบานนั้นลองทดสอบความเร็วแล้วสู้ MySQL แล้วใช้ Local Engine ไม่ได้เลย งานนี้เลยต้องหาทางออกครับ ผมเลยไปมอง เรื่อง MySQL Replication หลังจาก Setup และ Tuning เสร็จ ก็มาลองทดสอบความเร็ว มัน Query เร็วกว่า MySQL Cluster หลายเท่าเลยครับ
ทีนี้ก็มาดูเรื่อง Codeing ปัญหาคือมันเป็นโปรแกรมที่เค้าเขียนมานานละ ผมเข้าไปแก้อะไรไม่ค่อยได้ หรือถ้าแก้จริงๆ อยาจจะเป็น Bug อีกก็ได้ คิดไปๆมาๆ อ่าเจอทางออกแล้ว
ปัญหา
- MySQL Cluster ช้า ต้องไปใช้ MySQL Replication แทน
- แก้ Code ลำบาก เพระา code ค่อนข้างมาก
- Query ต้องเร็วและเพิ่ม MySQL Server ได้ในอนาคต
ทางแก้
- MyQL-Proxy ส่วนนี้ผมลองเอามาใช้แล้วครับ ลอง Query ดูมันก็ยังช้ากว่า Connect เข้า DB ตรงๆถึง 5 – 10 เท่า
- Edit Query ผมเลือกทางนี้ครับ แต่มันมีวิธีลักไก่หน่อย
แนวคิดคือต้องไม่ไปยุ่งกะ Code มาก ผมเลยทำการสร้าง php function ใหม่ขึ้นมาครับ โดยทำหน้าที่ check sql ก่อนที่จะ Query ว่าเป็น SELECT, UPDATE, INSERT, DELETE แล้วให้ function ที่สร้างขึ้นมา เลือกที่จะไป query กะ mysql เครื่องไหน
1. สร้าง function mysql_do_query
function mysql_do_query( $sql, $count_rw=null)
{
global $conn_ro, $count_rw, $count_ro;
if ( ! empty( $sql))
{
if ( ereg("^SELECT(.*)", strtoupper( $sql)))
{
$count_ro++;
return mysql_query( $sql, $conn_ro);
} else {
$count_rw++;
return mysql_query( $sql);
}
}
}
2. ทำการ edit *.php แล้วทำการ replace mysql_query -> mysql_do_query โดยผมใช้ คำสั่ง sed ใน shell script เพื่อแก้ไขไฟล์
#!/bin/bash
for fl in *.php; do
mv $fl $fl.old
sed 's/mysql_query/mysql_query/g' $fl.old > $fl
rm -f $fl.old
done
เสร็จแล้วก็รันครับ shell script จะทำการ find หา *.php แล้วทำการเปลี่ยน function ให้ ต่อไปเวลา ให้ programmer เขียน codeing ก็ให้ทำการ ใช้ function mysql_do_query() แทนครับ
Tags: MySQL, PHP
Posted in Development, Shell script | No Comments »
Posted by อัทศักดิ์ วงศ์กิตตะ on Saturday, May 31st, 2008
สวัสดีครับผม ว่าแล้ววันนี้ก็เขียน shell script ง่ายๆ เพื่อ backup mysql ลง NFS ที่ผม map ไว้ โดย script ที่เขียนขึ้นมานั้น จะมีข้อดีก็ตรงการตั้งเวลาในการลบ data เก่าทิ้งได้
#!/bin/sh
export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin
BACKUP_SRC=”/usr/home/mysql”
BACKUP_DST=”/data/backup/mysql”
LIMIT=7d
########################################
HOSTNAME=`uname -n`
DATE=`date +%Y%m%d`
DATE_DELETE=`date -v-${LIMIT} +%Y%m%d`
BACKUP_LOG=”${BACKUP_DST}/backup.log”
########################################
echo “=============================” >> ${BACKUP_LOG}
echo `date` >> ${BACKUP_LOG}
echo -n “delete expire backup data..” >> ${BACKUP_LOG}
rm -rf $BACKUP_DST/mysql-$DATE_DELETE 1> /dev/null 2> /dev/null
echo ” done” >> ${BACKUP_LOG}
echo -n “backup database..” >> ${BACKUP_LOG}
cp -Rp $BACKUP_SRC $BACKUP_DST/$DATE
echo ” done” >> ${BACKUP_LOG}
การทำงานของ script คือ ระบบจะทำการหาวันปัจจุบัน และวันที่ expire “DATE_DELETE=`date -v-${LIMIT} +%Y%m%d`” โดยจะลบวันจากปัจจุบันไปอีก 7 วัน แล้วก็ค่อย Delete ทิ้งครับผม ส่วนของวัน สามารถแก้่ไขได้ครับ เป็น 7d, 1m (1เดือน) ประมาณนี้ครับ
Tags: Backup, LIMIT, MySQL, Shell
Posted in Shell script | No Comments »
Posted by กวิน ชัยเลิศ on Friday, May 30th, 2008
เทคนิคสำหรับเปลี่ยน view source editor ของ IE (Windows Internet Exploper)
Run regedit
HKEY_LOCAL_MACHINE
|- Software
|– Microsoft
|— Internet Explorer
|—- View Source Editor
|—– Editor Name (Default) = C:\Program Files\Vim\vim71\gvim.exe
สร้างไฟล์ใหม่ชื่อ change-defaut-viewer.reg แล้ว copy ในข้อความข้างล่างนี้ไปใช้
1
2
3
4
| "C:\\Program Files\\Vim\\vim71\\gvim.exe" |
สำหรับบรรทัดสุดท้าย ให้เปลี่ยนเป็นที่อยู่ของ editor ที่ต้องการใช้สำหรับ view source
*แล้วพบกลับเทคนิคการใช้งาน VIM ที่นี่ … เร็วๆ นี้ครับ
Tags: editor, IE, Internet Explorer, vim, Windows
Posted in Development | No Comments »