2005/Sep/05

เอ้า..... ไม่ได้บ่นใน blog มานาน กลับมาถึงก็บ่นซะเลย ย้าย Office ไมมันยุ่งงี้ว้า......

ไม่น่าเชื่อว่ากะอีแค่ย้ายห้องทำงานเนี่ย มันต้อง Setup อะไรกันนักหนา ไหนจะรื้อกำแพง ซื้อโต๊ะ เก้าอี้ (เชื่อมั๊ยว่าไม่มีของต้องรอ) จัด Layout Office ยังๆ แค่นั้นยังไม่พอ ทั้งระบบโทรศัพท์ ระบบ LAN แถมต้องมานั่งดูแลช่างอาคารเดินสายอีก เดินเสร็จก็ต้องมาตรวจรับงานอีก นี่ยังไม่รวมห้อง Server ที่ต้องทำพื้นยก รางเดินสาย ระบบไฟฟ้า ระบบแอร์ เว้ย....... ไหงมันเยอะงี้วะ รู้งี้ไม่ย้ายดีกว่า =_=!!

แต่ก็นะ จ่ายไปแล้วนิหว่า กัดฟันทนต่อปาย.....

ไว้คราวหน้าจะมาบ่นให้อ่านต่อนะครับ พ่อแม่พี่น้อง

2005/Jul/25

iptables ชื่อนี้ หลายคนอาจคุ้นหู แต่อีกหลายคนอาจงง... มันคืออะไรฟร่ะ
ผมตอบให้ก็ได้ iptables คือชื่อของ freeware ตัวนึงซึ่งทำงานอยู่บน Linux มีหน้าที่ในการตรวจสอบ package ต่างๆ ที่เข้ามายังเครื่อง Linux ตัวนั้น รวมทั้งสามารถทำหน้าที่ในการส่งต่อ เปลี่ยนแปลง package ใดๆ ก็ตามที่เข้ามาได้ด้วย (ง่ายๆ ก็คือ เอาไว้ทำ Firewall หน่ะละ)

มาถึงตรงนี้ หลายๆ คน (ถ้ายังอยากอ่านต่อนะ) อาจจะถามว่าแล้วมันงานยังไง? เรื่องนี้ช่างหัวมันไปก่อน ไว้ว่างๆ จะมีโม้ให้ฟังวันหลัง (วอนมือลิงแล้วมั๊ยละตรู T_T) เรามาดูกันเลยดีกว่าว่าจะใช้มันยังไง เหอๆ

เอาละก่อนจะเริ่มเรามารู้กันซักกะติ๊ดว่า ไอ้เวลาที่เครื่อง Linux ของเราจะคุยกะชาวบ้านชาวช่องเนี่ย มันคุยยังไงของมันหว่า มาดูรูปแรกกัน

[เครื่องชาวบ้าน] <===> [เครื่องตูเอง] <===> [เครื่องชาวบ้านอีกคน]

ไอ้เส้น === เนี่ย มันเป็นส่วนที่แสดงถึง protocal (คำสั่งหรือข้อกำหนดนั่นละ) ว่ากะลังคุยกันด้วย protocal อะไร ถ้ามันคุยกันคนละข้อกำหนด (ก็คนละภาษานั่นละ) มันก็คุยกันไม่รู้เรื่อง ละทีนี้ไอ้ protocal ที่นิยมกันสุดๆ ในขณะนี้ (และคงนิยมไปอีกสามชาติเศษ) คือ TCP/IP (เริ่มคุ้นกันยัง?)

ทีนี้ถามต่อไปว่าแล้วไอ้เจ้า iptables เนี่ยมันทำงานอยู่ตรงไหร มันก็จะอยู่ตรงประมาณ < หรือว่า > นั่นละครับ คือเป็นปราการด่านสุดท้าย (ของท่านชาย) ที่คอยกั่นระหว่างเครื่องเรา กะเครื่องชาวบ้าน

ทีนี้มาดูกันว่าแล้วเราจะสั่งให้มันทำงานได้ยังไง ก่อนอื่นต้องบอกก่อนว่าคุณต้องมี Linux Fedora/Redhat ก่อน (หรือจะยี่ห้ออื่นก็ได้ไม่ว่ากัน แต่ไปงมหาวิธีกันเอาเองนะ)

ปล. ก่อนลงมือกระทำตามข้อความใดๆ ต่อจากนี้กรุณาอ่านให้จบก่อน แล้วค่อยทำตาม แล้วก็กรุณาตั้งสติด้วยว่ากำลังจะทำอะไร ถ้าจะให้ดีจดไว้ด้วยนะครับ ว่าทำอะไรไปบ้าง ติดปัญหาตรงไหน จะได้แก้ได้ง่ายหน่อย

เอาละมาว่ากันต่อถ้ามี Fedora/Redhat แล้ว ต่อไปก็ต้องมี package ของ iptables ด้วย ซึ่ง check ได้ด้วยวิธีนี้

> rpm -q iptables
ถ้ามันมี มันจะมี output ออกมาประมาณนี้
> iptables-1.2.9-2.3.1

แต่ถ้าไม่มันก็จะแสดงออกมาประมาณนี้
> package iptables is not installed
ซึ่งก็แปลว่าเราก็ต้องจัดการลงมันซะด้วยคำสั่งนี้

> yum install iptables
แล้วก็ตามวิธีการนั้นบนหน้าจอไป (ถามอะไรก็ตอบ yes sir!! ไปซะให้หมด)

หลังจากลงเสร็จ เราก็มาเริ่มกันเลยดีกว่า
ก่อนอื่น สมมุติว่าเราอยากจะปิดเครื่องเราโดยสมบูรณ์แบบ แบบว่าชาตินี้ข้าไม่ต้องการคุยกะชาวบ้าน ชาวช่องอีกเลย ก็ให้สั่งว่า
> iptables -A INPUT -i eth0 -j DROP
ถ้าสั่งแบบนี้ แปลว่าเราไม่รับ package ใดๆ ที่เข้ามาทาง eth0 เลย (ก็ไม่ฟังชาวบ้านหน่ะละ)

note: eth0 ก็คือ LAN Card ตัวที่ 1 ของเรา ถ้ามีตัวอื่นๆ อีกก็ไล่ไปเรื่อย
note2: ถ้าไม่ได้อยู่หน้า console อย่าไปสั่ง command นี้เชียว เดี๋ยวจะเป็นเรื่อง

ทีนี้มันเป็นไปได้หรือ? ที่จะไม่คุยกะชาวบ้านชาวช่องเลย คำตอบคือ เป็นไปไม่ได้ครับ แล้วทีนี้จะทำไงละ? ก็ต้องปิดเป็นจุดๆ ไป เช่น สมมุติว่า เราไม่อยากให้ชาวบ้านเค้า ping เราเจอ เราก็จะสั่งว่า

> iptables -A INPUT -p icmp -j DROP
มันแปลว่า ถ้ามีอะไรก็ตามที่เป็น icmp เข้ามา ก็ให้ drop ทิ้งไป ไม่ต้องสนใจ ที่นี้ ถ้าสมมุติว่าเรามี LAN Card หลายตัว เกิดอยากปิดแค่บางตัวจะทำยังไง เราก็ต้องผสมคำสั่งเข้าไปซิครับ ย้อนกลับไปดูอันบนกันหน่อย ผมมี -i eth0 อยู่ใช่ม่ะ? เราก็เอาไอ้ -i eth0 นี่ละ มาใส่เข้าไปเลย กลายเป็น

> iptables -A INPUT -i eth0 -p icmp -j DROP
คราวนี้มันก็จะแปลได้ว่า ถ้ามี icmp เข้ามาทาง eth0 เมื่อไหรให้ drop ทิ้งไป แต่ถ้ามาทางอื่นๆ ก็ไม่ต้องทำอะไร (คือปล่อยไปตามปกติ)

คราวนี้มาดูความหมายกันมั่งว่าไอ้ parameter แต่ละตัวเนี่ย มันคืออะไรกันบ้าง? เริ่มจาก

: -A INPUT ไอ้เข้า -A INPUT เนี่ย มันหมายถึงขาเข้า ทีนี้มีขาเข้ามันก็ต้องมีขาออก ก็เปลี่ยนจาก -A INPUT เป็น -A OUTPUT เท่านั้นเองครับ ถ้าเราใช้ -A ต่อๆ กันหลายๆ คำสั่ง มันก็จะเอา rule ไปต่อท้ายเรื่อยๆ ถ้าหากต้องการแทรก ให้ใช้ -I INPUT 1 แทน ซึ่งถ้าใส่ 1 มันจะเติมเข้าไปเป็นตัวแรกสุดเลย

: -i eth0 ใช้ได้กะ -A INPUT เท่านั้น เอาไว้ระบุว่าจะให้ดู package ที่ LAN Card ตัวไหน อีกตัวที่เป็นไปได้คือ -o eth0 ก็จะใช้ได้กะ -A OUTPUT เท่านั้นเหมือนกัน

: -p icmp ไอ้ตัวนี้ละที่จะเป็นตัวกำหนดเลยว่าเราจะ monitor protocal ประเภทไหน เช่น icmp (ping), tcp, udp หรือว่าอื่นๆ ถ้าเป็น tcp หรือว่า udp เราสามารถกำหนด port เพิ่มเติมได้ด้วย parameter -dport 80 หรือ -sport 80 สองตัวนี้ต่างกันตรงที่ว่า ตัวนึงไว้ใช้กะ -A INPUT (-dport 80) ส่วนอีกตัวไว้ใช้กะ -A OUTPUT (-sport 80)

: -J DROP ไอ้เจ้าตัวนี้ละสำคัญที่สุด มันจะเป็นตัวที่บอกว่า ถ้ามี package เข้ามาตามเงื่อนไขที่ระบุไว้ในบรรทัดนี้แล้ว จะให้ทำยังไง เป็นไปได้คือ DROP, ACCEPT, REJECT, REDIRECT ซึ่งที่เราสนใจจะมีสองตัวคือ DROP กะ ACCEPT ความหมายก็ตามชื่อมันเลย DROP ก็ช่างหัวมัน ทิ้งไปโล้ด ส่วน ACCEPT ก็รับมาเข้ามาแล้วจะจัดการยังไงต่อเป็นอีกเรื่องนึง

: -F อันนี้รุนแรงสุดละ มันคือคำสั่งที่จะลบ rule ทั้งหมดที่เคยทำไว้ ถ้าเกิดทำๆ ไปแล้วเจ๊งก็สามารถ reset ได้ด้วยวิธีนี้ครับ

เอาละครับ ร่ายยาวมาพอสมควร คราวหน้าค่อยมาต่อ
เจอกันเมื่อชาติต้องการครับ :)

edit @ 2005/07/30 00:55:35
edit @ 2005/07/30 00:58:20

2005/Jul/25

ผมนอนไม่หลับครับพ่อแม่พี่น้อง....ทำไงดี?

หลายๆ ตำราว่าไว้ว่าให้นอนนับแกะ นับแพะ นับวัว หรือแม้กระทั่งนอนนับ ยานอวกาศ และอื่นๆ อีกสารพัน แล้วแต่จะจินตนาการได้ นับไปเรื่อยๆ เดี๋ยวก็หลับเอง

และอีกหลายๆ ตำราว่าไว้ว่าให้หาอะไรอุ่นๆ กิน จะได้อุ่นท้อง จะได้หลับสบาย

ไอ้ตัวผมมันก็ลองมาทั้งสองวิธีแล้ว แต่ก็ยังนอนไม่หลับ แย่แล้ว...ทำไงดี?

ใครมีไอเดีย เก๋ไก๋ ไฉไล มานำเสนอบ้างครับ เผื่อผมจะนอนหลับง่ายๆ กะเค้าบ้าง?