Computer-Network

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/24

เอาละครับ หลังจากคราวที่แล้วที่อ่านผมบ่นเรื่อง CSLox เจ้ากรรมไปแล้ว คราวนี้เรามาว่ากันเรื่องมีประโยชน์กันมั่งดีกว่า...

ผมเชื่อว่าหลายๆ ท่านที่เข้ามาอ่านคงเป็นนักเล่น MSN Messenger ตัวฉกาจกันทีเดียว ซึ่งไอ้เจ้า MSN Messenger เนี่ยถ้าใช้ให้เป็นมันก็มีคุณอนันต์เลย ไม่ว่าจะเป็นการช่วยให้ประหยัดงบประมาณทางด้านการติดต่อ หรือช่วยให้เราทำงาน จีบสาว จีบหนุ่มได้สะดวกสบายมาก

แต่....เคยนึกกันบ้างหรือไม่ว่า ไอ้ข้อความที่เราส่งไป ส่งมาเนี่ย ถ้ามีใครซักคนที่อาจจะหวังดี แต่ประสงค์ร้ายเข้ามาแอบดักเอาไปได้เนี่ย เค้าก็รู้หมดเลยซิครับ ว่าเราคุย (หรือจีบ) กะคู่สนทนาด้วยข้อความอะไรกันบ้าง หรือแม้กระทั่งบางทีเราเผลอส่ง username + password หรือแม้กระทั่งเบอร์โทรฯ เบอร์บัตรเครดิต ไปให้คู่สนทนาซะยังงั้น โดยที่อาจจะไม่ทันนึก หรือว่านึกไม่ถึงว่ามีคนดักฟัง(อ่าน) ข้อความของเราอยู่นะ คราวนี้จะ ไอ้โม่งมันก็หวานดิครับ เอาเบอร์บัตรเครดิต เบอร์โทรเรา ไปใช้ตามสะดวกเลย จับมือใครดมก็ไม่ได้ เผลอๆ เราไปแหวเอากะคู่สนทนาซะอีกว่าเอาเบอร์โทร หรือว่าเบอร์บัตรเราไปใช้เหรอ... กลายเป็นคดีความไปซะอีก

แล้วทีนี้จะทำยังไงกันดีละ? เพราะว่าไอ้เจ้าตัว MSN Messenger เนี่ย มันก็ไม่ได้มี function ที่จะช่วยเราได้ในเรื่องนี้ซะด้วยซิ ดังนั้น วันนี้ผมจึงขอนำเสนอ แต่น แตน แต้น.... Freeware ตัวนึงที่ชื่อว่า SimpLite for MSN by Secway
ซึ่งไอ้เจ้า Freeware ตัวนี้ มันจะทำหน้าที่เหมือนกันเป็น Sock Proxy อยู่ในเครื่องเรา ทำหน้าที่ Encrypt (เข้ารหัส) ข้อความต่างๆ ระหว่างเรากับคู่สนทนาที่มีโปรแกรมตัวนี้ลงไว้เหมือนกัน

ดังนั้น ถ้าหากว่าเราต้องการจะส่งข้อความ หรือข้อมูลที่คิดว่ามีความสำคัญแล้วนะก็ สละเวลาซักนิดส่ง Link ไปให้ฝั่งตรงข้าม Install แล้วค่อยส่งข้อมูลที่ว่าไป เชื่อว่าจะช่วยให้เรามั่นใจได้อีกนิดว่า ข้อความที่ส่งไปเนี่ย รับรองว่าถึึงดักไปได้ก็อ่านไม่ออกแน่นอนครับ แล้วคราวนี้ ถ้าเกิดว่ามีใครแอบเอาไปใช้อีกละก็ เชิญไปแห้วเอากะคู่สนทนาของคุณได้เลยครับ :p

อ้อเกือบลืม... หลังจากลงไอ้เจ้า SimpLite for MSN เสร็จแล้ว อย่าลืม Signoff MSN และ SignOn อีกครั้งนะครับ ไม่งั้นมันไม่ทำงานจริงๆ ด้วยนะเอ้า....

ไว้วันหลังจะมาโม้เรื่องวิธีการ Install ให้ฟังนะครับ :)

2005/Jul/24

ไอ้ CSLox เจ้ากรรมเนี่ย เมื่อไหรมันจะแก้ปัญหา link ต่างประเทศได้ซะทีว้อย...... คนทำ hosting นะครับเจ้านาย....ย จ่ายเงินนะ ไม่ได้มาขออยู่ฟรี ลูกค้าหนีหมดอีแบบนี้ ไม่รู้จะทำ rate limit กันไปหาพระแสงของ้าวอะไรมิทราบ

ถ้าจะทำก็ทำให้มันดีๆ หน่อยเด้.... เอา Switch L7 มา fillter เป็น port ไปก็ได้ แต่ขอเหอ ได้ port 80 กะ port 25 เนี่ย ขอให้มันใช้งานได้ไวๆ หน่อยเหรอเจ้าพระคุ๊ณ...... ลูกค้าต่างประเทศจะได้ดู web + รับส่งเมล์ได้ไวๆ หน่อย ไม่ใช่อืดกว่า modem 28.8 k แบบนี้

ถ้ามันวุ่นวายมากนัก เดี๋ยวพ่อย้ายไปอยู่ isp อื่นซะเลย

เออ..... บ่นมาตั้งนานลืมทักทายท่านผู้อ่านไปซะนิ ไหนๆ ก็อ่านที่ผมบ่นไปกันแล้วนิ ทนอ่านต่อไปอีกหน่อยละกัน

ที่นี่ ถ้าผมมีเวลาพอจะเข้ามาบ่นเรื่องราวสารพันเกี่ยวกับเรื่องต่างๆ ในวงการคอมให้ฟัง จะว่าโม้ก็โม้เหอ แต่จะพยายามเข้ามาบ่นให้ฟังกันเรื่อยๆ แล้วกันนะครับ :)



edit @ 2005/07/24 02:53:26
edit @ 2005/07/24 04:39:34