วันอาทิตย์ที่ 25 กรกฎาคม พ.ศ. 2553

Linux Firewall : ควบคุมการใช้งานเฉพาะ IP ในประเทศ

Credit : http://www.howtoforge.com/blocking-ip-addresses-of-any-country-with-iptables

บางหน่วยงานอาจต้องการให้เฉพาะเครื่องลูกข่ายทำการ Access เฉพาะ IP ภายในประเทศเท่านั้น (ค่าเชื่อมต่อ Internet ต่างประเทศมันแพง) ซึ่งวิธีการนั้นก็สามารถทำได้หลายวิธี เช่น Block ที่อุปกรณ์ Router แต่จะทำได้นั้น Router ต้องรู้จัก Route ว่า อันไหนของไทย อันไม่ใช่ของไทย (ซึ่ง Router ทั่วไปจะไม่รู้ เพราะไม่ได้รับ Route แยกมา) ยิ่งพิมพ์ยิ่งงง เอาเป็นว่า จะทำการ fillter ว่าให้ใช้ได้เฉพาะเวป หรือ protocol อื่นที่ IP ในประเทศไทยเท่านั้นแหละ (สามารถนำไปประยุกต์ได้อีกเยอะ)

ระบบที่ใช้ทดสอบ : Ubuntu 10.04 LTS
สมมติให้ระบบนี้เป็น Firewall ที่เครื่องลูกข่ายทุกเครื่องต้องวิ่งผ่าน
สมมติให้ eth0 = WAN interface และ eth1 = LAN Interface

เขียน script ดังนี้ (ผมเขียนที่ /root/firewall)

#!/bin/bash
#Subnet from http://www.countryipblocks.net/e_country_data/

COUNTRIE="TH"
WORKDIR="/root/"
LAN="eth1"
WAN="eth0"

cd $WORKDIR
wget -c --output-document=subnet.list http://www.countryipblocks.net/e_country_data/"$COUNTRIE"_cidr.txt
if [ -f subnet.list ]; then
iptables -F
iptables -P FORWARD DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
DB="subnet.list"
IPS=$(grep -Ev "^#" $DB)
for i in $IPS
do
iptables -A FORWARD -i $LAN -o $WAN -d $i -j ACCEPT
done
fi
rm $WORKDIR/subnet.list

ทำการ save file จากนั้น กำหนด file permission เป็น 700 แล้วก็ run เลย

คำเตือน การ run คำสั่ง iptables ผ่าน remote terminal อาจทำให้การเชื่อมต่อหลุดได้

ไม่มีความคิดเห็น:

แสดงความคิดเห็น