แฝงตัวตามเวปบอร์ดต่างๆคอยถามเค้า รู้อะไรก็ตอบเค้าไป อย่างน้อยก็ฉลาดขึ้นทุกวันๆ
ผมเองเริ่มจากความรู้ทางคอมพิวเตอร์เป็นศูนย์ พอจะรู้อะไร ก็จะเอามาเล่าสู่กันฟัง
ในภาษาแบบบ้านๆ ให้คนที่เพิ่งเริ่มต้นสนใจการเป็นแอดมินดูแลระบบคอมพ์
ไม่ว่าจะในองค์กรเล็กหรือใหญ่ได้มาเรียนรู้ไปด้วยกัน
หวังว่าความรู้เพียงน้อยนิดของผม จะไปกระตุ้นต่อมสมองใครๆได้บ้าง อิอิ
___________________________________________________
___________________________________________________
การสร้าง Firewall Script บน Ubuntu Server
วันที่ 26 มกราคม 2553
หลังจากโง่อยู่นาน เพราะเราไม่ได้เรียนคอมพ์ ก็ไล่อ่านหาความรู้มาเรื่อยๆ จนเข้าใจเอาเองว่า
linux server ทั้งหลายเนี่ย จะมีไฟล์อยู่ไฟล์หนึ่ง ทำหน้าควบคุมการวิ่งของ ข้อมูล(package)
ไฟล์นี้เราจะเรียกมันว่า firewall
ในไฟล์ที่เราเรียกว่า firewall เนี่ย เปิดอ่านดูจะพบประโยคลักษณะแบบนี้
$IPTABLES -t nat -A PREROUTING -i tun0 -p tcp -m tcp --dport 3128 --syn -j DROP
เราเรียกมันว่า คำสั่งไอพีเทเบิล (iptables command) ซึ่งคำสั่งเหล่านี้แหละครับ เป็นตัวควบคุมการวิ่งของขอ้มูล
ซึ่งบน ubuntu เนี่ยเข้าใจว่ามันไม่ได้มี firewall มาให้ ถ้าเราต้องการควบคุมการวิ่งของข้อมูลทำได้โดย
1 พิมพ์คำสั่งลงไปตรงๆ เช่น
root@dhcppc1:~# iptables -s 192.168.1.10 deny
มันก็จะไปทำการปฏิเสธทุกข้อมูลที่มาจาก ip 192.168.1.10
หรือ
2 สร้าง firewall script ขึ้นมาเพราะเมื่อเรา reboot ubuntu server กฏทั้งหลายที่เราสั่งไว้จะถูกลบไป
วิธีการ
- สร้างไฟล์เปล่าๆชื่อ firewall.sh ขึ้นมาหนึ่งไฟล์ แล้วพิมพ์ตามดังนี้
#!/bin/sh <----- ต้องพิมพ์ไว้บรรทัดแรกเสมอ
IPTABLES="/sbin/iptables" <-----ประกาศตัวแปร
EXTIF="eth0" <----ประกาศตัวแปรให้ตัวเราเองเข้าใจว่า EXTIF คือ การ์ดแลน eth0 ซึ่งส่วนมากจะเป็นขา wan
INTIF="eth1" <----ประกาศตัวแปรเหมือนกัน
จากนั้นก็มาใส่คำสั่ง iptables ลงไป โดยระบบจะอ่านและทำตามกฏจากบนลงล่าง
เช่น เราต้องการเปิด port22 ให้remote จากทางภายนอก (ทางขา wan ) ได้ เราก็ต้องพิมพ์คำสั่งแบบนี้
$IPTABLES -A INPUT -i $EXTIF -p tcp -m tcp --dport 22 --syn -j ACCEPT
$IPTABLES -A INPUT -i $EXTIF -j REJECT
บรรทัดแรก แปลว่า ถ้ามีข้อมูลที่มาจากภายนอก มาทางพอร์ต 22 ให้ยอมรับ
บรรทัดที่สอง แปลว่า ถ้ามีข้อมูลใดๆวิ่งมาจากภายนอก ให้ ปฏิเสธ
จะเห็นว่าถ้าเราเรียงลำดับบรรทัดตามด้านบน เราจะสามารถ remote จาก ssh มาได้
แต่ถ้าเราสลับบรรทัดกัน server จะทำการ reject เราทันทีเพราะมันจะทำตามกฏที่อยู่บนก่อนเสมอ
เมื่อเราใส่กฏครบตามความต้องการแล้ว ให้เราเซฟไฟล์ไว้ที่ /etc/init.d/
# chmod +x /etc/init.d/firewall.sh <---- เปลี่ยนโหมดของไฟล์ให้สามารถรันได้
คำสั่งสำหรับ run firewall คือ
#/etc/init.d/firewall.sh
ถ้าต้องการให้ทำงานทุกครั้งเมื่อ reboot
#ln -s /etc/init.d/firewall.sh /etc/rcS.d/S41firewall.sh
ไม่ยากใช่ไหมครับ ส่วนเรื่องของ iptables command เราจะมาว่ากันในครั้งต่อไปครับ
ขอบคุณความรู้จาก อ.พนม นักเทศน์ แห่ง sc-hispeed.com ครับ และ linuxthai.org ด้วยครับ
ผมก็คนนึงที่เป็นมือใหม่ มีแต่ google เนี้ยแหละที่ให้ถาม ตอนนี้สับสนและมึนงงในชีวิตอย่างหนัก ต้องการคนแนะนำครับ
ตอบลบเขียนต่อสิครับ ผมติดตามอยู่ ^_^