วันพฤหัสบดีที่ 10 กันยายน พ.ศ. 2552

อยากเป็นแอดมินเก่งๆกะเค้าบ้าง

ความรู้จากการเรียนคอมพ์ในมหาลัย ไม่ได้ช่วยอะไรในงานจริงเลยสักนิด ทำไงจะเก่งก็คงต้องหาความรู้เอาเองหาจากไหนได้ ก็ google นี่แหละครับ

แฝงตัวตามเวปบอร์ดต่างๆคอยถามเค้า รู้อะไรก็ตอบเค้าไป อย่างน้อยก็ฉลาดขึ้นทุกวันๆ

ผมเองเริ่มจากความรู้ทางคอมพิวเตอร์เป็นศูนย์ พอจะรู้อะไร ก็จะเอามาเล่าสู่กันฟัง

ในภาษาแบบบ้านๆ ให้คนที่เพิ่งเริ่มต้นสนใจการเป็นแอดมินดูแลระบบคอมพ์

ไม่ว่าจะในองค์กรเล็กหรือใหญ่ได้มาเรียนรู้ไปด้วยกัน

หวังว่าความรู้เพียงน้อยนิดของผม จะไปกระตุ้นต่อมสมองใครๆได้บ้าง อิอิ

___________________________________________________
___________________________________________________

การสร้าง 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 ด้วยครับ