11/25/2010

Iptables

block IP ต่างประเทศ ไม่ให้ FTP/SSH เข้ามาได้

#สั่งเคลีย Firewall ก่อน
iptables -F
#สั่งเคลีย Firewall ก่อน
iptables -X

##ส่วนนี้ใช้สำหรับlist ip ของ FTP มาจาก iplist ท่าน icez
iptables -N ftp_passfor i in `wget -qO – http://www.icez.net/files/thaiiplist`; doiptables -A ftp_pass -s $i -j ACCEPTdone

## ในส่วนนี้ทำไว้สำหรับ Block IP ในกรณีฉุกเฉินเช่นตอนโดนยิง
## วิธี Block ก็ iptables -A block_ip -s xx.xx.xx.xx -j DROP
iptables -N block_ipiptables -A INPUT -j block_ip

## ในส่วนนี้ทำไว้สำหรับ Block Email ดึงข้อมูลจาก www.spamhaus.orgiptables -N block_email
iptables -A INPUT -p tcp –dport 25 -j block_emailcurl -s http://www.spamhaus.org/drop/drop.lasso grep ^[1-9]cut -f 1 -d ‘ ‘ xargs -iX -n 1 /sbin/iptables -A block_email -s X -j DROP

#ป้องกัน scan Port หรือเปล่านะ
iptables -A INPUT -p tcp ! –syn -m state –state NEW -j DROP

#ตรวจเช็ค State Full
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

#เฉพาะ FTP เท่านั้นที่เราจะกรอง ก็สั่งให้กระโดดไป ftp_pass
iptables -A INPUT -p tcp –dport 21 -j ftp_pass
iptables -A INPUT -p tcp –dport 20 -j ACCEPT

#เปิด ให้เข้ามา access เฉพาะ Port ที่ต้องการ
iptables -A INPUT -p tcp –dport 22 -j ACCEPT
iptables -A INPUT -p tcp –dport 25 -j ACCEPT
iptables -A INPUT -p tcp –dport 110 -j ACCEPT
iptables -A INPUT -p tcp –dport 80 -j ACCEPT
iptables -A INPUT -p tcp –dport 443 -j ACCEPT
iptables -A INPUT -p tcp –dport 2222 -j ACCEPT
iptables -A INPUT -p udp –dport 53 -j ACCEPT

#ส่วนนี้ให้ดูจาก proftpd คือว่าเราเปิด port 21 ใช้ในการเชือมต่อ แต่ตอนรับส่งข้อมูลจะใช้ port 35000-35999
iptables -A INPUT -p tcp –dport 35000:35999 -j ACCEPT

# icmp ก็รับด้วยเดี่ยว ping ไม่เจอ
iptables -A INPUT -p icmp -j ACCEPT

#นอก เหนือจาก port ที่เราเปิด ก็ Block ซ่ะ (*** ระวังคำสั่งนี้ให้ดีครับ ถ้าทำบรรทัดนี้แล้วอาจจะ ssh ไม่ได้ ถ้าไม่มั่นใจให้เปิดเฉพาะ IP ตัวเองก่อน)
iptables -A INPUT -j DROP

11/17/2010

Network Tool : Ntop

การติดตั้ง ntop
ตรวจสอบไลบรารีพื้นฐานglibc,gcc,cpp,gawk,libtool,libpcap
ส่วนการแสดงกราฟ ได้แก่ gd ,gd-devel และ libpng ,libpng-devel

# rpm -q glibcglibc-2.5-12
ดาวน์โหลดโปรแกรม ntop ได้จากเว็บไซต์ http://sourceforge.net/projects/ntop/
# cd /tmp/
# tar zxvf ntop-3.2.gz
# cd ntop-3.2.gz
# ./configure
# make
# make install
# ntop
#http://IP:3000

Network Tool : BaCon (Bandwidth Controller)

คุณสมบัติของ BaCon (Bandwidth Controller)
  • สามารถควบคุมปริมาณข้อมูลในแบนด์วิดท์แบบอัตโนมัติ เพื่อให้สามารถใช้ในการรองรับบริการต่างๆในองค์กรได้อย่างมีประสิทธิภาพ
  • ควบคุมปริมาณแบนด์วิดท์เข้าออกเครือข่าย
  • ควบคุมปริมาณแบนด์วิดท์จำแนกตามประเภทของโปรแกรมที่ใช้งานอินเทอร์เน็ต
  • ควบคุมปริมาณแบนด์วิดท์จำแนกตามผู้ใช้
  • กำหนดลำดับความสำคัญ (Priority) ให้กับข้อมูลภายในเครือข่าย
  • กำหนดช่วงเวลาและตั้งเวลาการควบคุมได้
  • พัฒนาระบบการแสดงผลและการจัดเก็บข้อมูลลงในฐานข้อมูล (Database) ที่ผู้ใช้สามารถนำไปใช้ประกอบการตัดสินใจและแก้ข้อบกพร่องของเครือข่ายได้
  • การออกแบบ Interface อย่างง่ายในรูปแบบที่สามารถทำให้ผู้ใช้งานไม่จำเป็นต้องใช้ความรู้ด้านการจัดการบริหารเครือข่ายมากนักก็สามารถเลือกและควบคุมการทำงานในส่วนต่างๆ ของระบบบริหารจัด
  • การแบนด์วิดท์นี้ได้อย่างง่าย โดยผ่าน Web Interface
  • รองรับการใช้งานกับเครือข่าย IPv6

ความต้องการของระบบ
HARDWARE
regular PC computer with at least 2 network interface cards
SOFTWARELinux OS kernel 2.6.21 (fully tested on Fedora Core and LinuxSIS)
Firewall iptable 1.3.8
Netfilter layer7 2.18
web server
PHP
MySQL
ChartDirector
RRDTool

LDAP

LDAP (Lightweight Directory Access Protoco)

LDAP ย่อมาจาก Lightweight Directory Access Protocol คือ โปรโตคอลที่ช่วยให้เราเข้าถึงข้อมูลที่อยู่ใน Directory Service ซึ่งตรงนี้เราจะยังคงจำเพาะเจาะไปที่กลุ่มของ Directory Service ที่มีชื่อรวมกันว่า X.500 ซึ่งภายในกลุ่มของ X.500 ก็จะมีหลายๆ Directory Service เช่น

DAP (Directory Access Protocol)
DSP (Directory System Protocal)
DISP (Directory Information Shadowing Protocol)
DOP (Directory Operational Binding Management Protocol)

โดย LDAP นั้นก็จะวิ่งอยู่บน TCP/IP โปรโคคอลด้วยเช่นกัน ส่วนข้อมูลที่เก็บอยู่ใน Directory นั้นก็จะมีลักษณะเป็น "Entry" ซึ่ง Entry นี้ก็จะเป็นกลุ่มของ Attribute ที่มี Distinguished Name หรือเรียกสั้นๆ ว่า DN เพียงอันเดียว
-Attribute นั้นจะบอกว่า ข้อมูลที่อยู่ใน Directory นั้นมีชนิดของข้อมูล(Type) ว่าสามารถเป็นอะไรได้บ้าง เช่น ตัวอักษร ตัวเลข นอกจากนี้ Attrubute ก็ยังมีหน้าที่บอกได้ว่า ข้อมูลที่จะเอามาใส่นี้สามารถมีค่าได้กี่อัน กี่ค่า
-DN คือ ชื่อของ Entry ที่เค้ามาช่วยเราแยกแยะข้อมูลใน Directory

ที่มา : http://en.wikipedia.org/wiki/X.500

11/16/2010

ตัวอย่าง ประเภทของ server

Web Server(Apache)
FTP Server(ProFTPd/VSFTPd)
Mail Server(Sendmail/Postfix/Dovecot)
Database Server(MySQL/PostgreSQL)
File and Printer Server(Samba)
Proxy Server(Squid)
DNS Server(BIND)
DHCP Server(DHCPd)
Antivirus Server(ClamAV)
Streaming Server
RADIUS Server(FreeRADIUS)
Control Panel(ISPConfig)

11/09/2010

Linux - mount NTFS

Check NTFS package installed
# modprobe ntfs
# grep ntfs /proc/filesystems
ntfs

Mount NTFS
# mount -t ntfs /dev/device /mnt/mountpoint

9/23/2010

Asterisk kill line

>soft hangup [channel]

Asterisk hangup causes

http://gotoknow.org/blog/patrickz/157180

Q.931
http://en.wikipedia.org/wiki/Q.931

asterisk ลดสายค้าง

zapata.conf
...
[channels]

...

priindication=outofband
busydetect=yes
busycount=4
busypattern=500,500
callprogress=yes

....

9/22/2010

Mysql query command

-Use regular expressions in MySQL SELECT statements :

MySQL allows the following regular expression metacharacters

. match any character
? match zero or one
* match zero or more
+ match one or more
{n} match n times
{m,n} match m through n times
{n,} match n or more times
^ beginning of line
$ end of line
[[:<:]] match beginning of words [[:>:]] match ending of words
[:class:] match a character class
i.e., [:alpha:] for letters
[:space:] for whitespace
[:punct:] for punctuation
[:upper:] for upper case letters
[abc] match one of enclosed chars
[^xyz] match any char not enclosed
| separates alternatives

Etc.
SELECT * FROM events WHERE id REGEXP '5587$'
SELECT * FROM reviews WHERE description REGEXP '[[:<:]]excellent[[:>:]]'
SELECT something FROM table WHERE column REGEXP 'regexp'

-Describe the column structure of a MySQL table :
describe tablename;

-Display a list of databases on a MySQL server :
show databases;

-Change the MySQL root user password :
#mysqladmin -u root password PaSsWoRd

Mysql Save MySQL query results into a text or CSV file

SELECT order_id,product_name,qty
FROM orders
INTO OUTFILE '/tmp/orders.txt'

or

SELECT order_id,product_name,qty
FROM orders
INTO OUTFILE '/tmp/orders.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'

Import CSV file directly into MySQL

load data local infile 'uniq.csv' into table tblUniq
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
(uniqName, uniqCity, uniqComments)

9/03/2010

MSSQL : การทำ Performance Tuning SQL Query เบื้องต้น

ตอนนี้ผมจะได้กล่าวถึงสิ่งที่ควรปฏิบัติในการออกแบบ Database ซึ่งส่วนใหญ่จะหนักไปทาง data storage โดยพอจะสรุปเป็นข้อๆ ได้ดังนี้ครับ

1) ใช้ Normalization เพื่อ Optimize Transactional Process
การทำ Normalization นั้น จะช่วยในมุมการใช้คำสั่ง Insert, Update, Delete ครับ ทำให้เกิด Performance ที่ดีครับ แต่จะมีผลตรงกันข้ามกับคำสั่ง Select เพราะว่าใน Database หลายๆ ตัวที่ผมเคยเจออาจจะพบว่า Query เร็ว แต่ Insert ช้าก็ได้ครับ

2) แยกไฟล์ MDF และ LDF ไว้กันคนละ physical disk
โดยคำสั่ง Insert, Update, Delete จะกระทำกับไฟล์ LDF เป็นหลัก ทั้งนี้ในงาน multi-user ขนาดใหญ่แล้วจะเกิด load read-write อยู่บน physical disk ก้อนเดียวกัน ถ้าเป็นไปได้ก็ควรจะแยกไฟล์ MDF และ LDF ไว้คนละ physical disk ก็จะทำให้เกิดการแบ่ง load read-write ไปไว้คนละ physical disk (ผมเคยทำมาหลายงานแล้ว เร็วขึ้นมา 10 เท่าก็เคยเจอครับ)

3) แยก tempdb ไว้บน harddisk ก้อนใหม่
หลักการจะเหมือนกับการแยกไฟล์ MDF และ LDF ครับ คือการแยก load แต่ tempdb จะเป็น temp สำหรับ database ทุกก้อนที่อยู่ใน Server ครับ ลองคิดดูเล่นๆ สิครับว่า tempdb จะรับงานหนักแค่ไหน ถ้าเป็นไปได้ก็ควรแยก tempdb ไว้คนบน physical disk ต่างหากได้จะดีมากครับ

4) สำหรับ table ขนาดใหญ่ให้ใช้ Table partition
การทำ table partition เป็นการแยก load ทาง horizontal โดยจะทำได้ตั้งแต่ sql server 2005 ขึ้นไป เป็นวิธีการกระจาย load ที่ฉลาดมากที่สุดวิธีหนึ่ง โดยสามารถกำหนดเงื่อนไขในการแบ่ง table เช่น แบ่งตามปีที่ซื้อสินค้า, แบ่งตามแผนก เป็นต้น ส่วนวิธีการสร้าง table partition จะไว้เขียนในตอนต่อๆ ไปครับ

5) สำหรับ database ขนาดใหญ่ให้ใช้วิธีการแยกไฟล์ออกเป็นหลายๆ ไฟล์โดยใช้ File Group
หลักการจะเหมือนกับการทำ partition table แต่เป็นระดับ Database แทน โดยการแยก table กระจายไปแต่ละ physical disk แต่วิธีการแยกเราจะใช้ file group ซึ่งสามารถทำได้ทุกเวอร์ชั่นของ SQL Server

6) เมื่อใช้ Data type แบบ TEXT, NTEXT, IMAGE ให้แยกเก็บต่างหากจาก Table Storage
โดยปกติแล้วการเก็บข้อมูลของ column ที่มี data type เป็น text, ntext, image นั้นจะเก็บอยู่ใน page เดียวกับ column อื่นๆ เพราะฉะนั้น เวลาใช้คำสั่ง select ก็จะทำให้ sql server ไปอ่าน column เหล่านี้ขึ้นมาด้วย ซึ่งถือว่าเป็น column ที่พิเศษ ดังนันจึงควรจะทำการแยก column ที่เป็น text, ntext, image แยกออกมาต่างหาก เพื่อเพิ่ม performance โดยใช้คำสั่ง

EXEC sp_tableoption 'orders', 'text in row', 'ON'

7) พยายามใช้ constraint ที่เป้น built-in เช่น primary key, foreign key, check, default, unique แทนการเขียน trigger ขึ้นมาเอง
contraint ต่างๆ ที่มีอยู่แล้ว ทาง microsoft ได้ทำการทดสอบเรื่อง performance มาเป็นอย่างดีอยู่แล้ว พยายามใช้ built-in เป็นหลักเพื่อให้ได้ performance ที่ดี แต่ถ้า built-in ที่มีอยู่ ไม่สามารถตอบสนองสิ่งที่เราต้องการได้จริงๆ ถืงจะเริ่มนึกถึงการเขียน trigger ขึ้นมาใช้งานเองอีกทีนึงครับ

8) แยก Index ไว้คนละ Physical Disk โดยใช้ File Group
การสร้าง index จะทำให้การ access data ทำได้เร็ว แต่ก็ควรที่จะแยก index ไว้คนละ physical disk โดยใช้ file group เหมือนกันครับ รับรองว่าไม่ผิดหวัง

9) ใช้ Disk RAID เพื่อเพิ่ม Performance
สุดท้ายจริงๆ ถ้ามีงบประมาณมากหน่อย ก็อาจจะนึกถึงการซื้อ Hardware RAID Disk ซึ่งจะได้ performance ที่ดีแน่นอน

MSSQL : การกู้ข้อมูล SQL ที่ยังไม่ได้ Backup ด้วย Tail Log

สำหรับท่านที่ดูแลฐานข้อมูล Microsoft SQL Server อยู่ อาจจะเคยประสบปัญหาเกี่ยวกับฐานข้อมูลพังกันมาไม่มากก็น้อยหล่ะครับ ทีนี้เมื่อฐานข้อมูลพัง เราจะทำยังไงดีหล่ะครับ แน่นอน ก็คงจะนึกถึงชุด backup ล่าสุดที่เราได้เคย backup ไว้ แล้วก็พยายามจะ Restore ขึ้นมา แต่ก็เป็นอย่างที่คิดไว้แหล่ะครับ เราก็จะกู้ได้เฉพาะข้อมูลที่เราได้ backup ไปแล้วเท่านั้น ส่วนข้อมูลที่ยังไม่ได้ backup หล่ะ!!!

โครงสร้างของ SQL Database
อย่างที่หลายๆ ท่านทราบกันดีว่าใน 1 sql database จะต้องมีไฟล์ ดังนี้

Data File (.mdf)
Transaction Log File (.ldf)
ในไฟล์ ldf นี่แหล่ะครับ ที่จะยังมี data ที่เรายังไม่ได้ backup อยู่!!!

คำสั่งต่อไปนี้เป็นวิธีการกู้ข้อมูล โดยดึง data ที่อยู่ในไฟล์ ldf ขึ้นมาครับ แต่ต้องมีข้อแม้ว่าไฟล์ ldf จะต้องไม่เสียด้วยนะครับ (ถ้าเสียก็เศร้าหล่ะครับ)

BACKUP LOG AdventureWorks
TO Disk = ‘c:\backup\adv_log.bak’
WITH NO_TRUNCATE;
GO

8/23/2010

PHPmotion

PHPmotion Media Sharing CMS - PHPmotion is a free video sharing software that also has support for other types of media such as audio/mp3 sharing. The Content Managent System or (media cms application) will allow you to create and run your very own Video Sharing website, Music Sharing Site, Picture Sharing Site. With very little knowledge required you can now have a website just like youtube.com , dailymotion.com, veoh, hi5 and best of all, its 100% free to download and use.

http://phpmotion.com/content/view/13/47/

8/17/2010

TCP Port

This summary is not available. Please click here to view the post.