วันอาทิตย์ที่ 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 อาจทำให้การเชื่อมต่อหลุดได้

วันเสาร์ที่ 17 กรกฎาคม พ.ศ. 2553

การสั่งปิดเครื่องในระบบปฏิบัติการต่างๆ

Microsoft Windows

c:\> shutdown -s -f -t 0

--------------------------------------------
Linux

linux# poweroff
หรือ
linux# shutdown -h now
หรือ
linux# init 0


------------------------------------------

FreeBSD
freebsd# shutdown -p now


Setting reserved blocks percentage on Linux ext3 file system

Setting reserved blocks percentage on Linux ext3 file system

ปกติถ้าเรา format บน Linux โดยใช้คำสั่ง mkfs.ext3 ระบบจะทำการ set reserved block ของ partition นั้นไว้ที่ 5% เพื่อเอาใว้ใช้ในยามจำเป็น ซึ่งถ้าเป็น harddisk ที่ขนาดใหญ่มากๆ ก็จะต้องเสียพื้นที่ในการ reserved นั้นมากตามไปด้วย เช่นตัวอย่างจากของจริง

[root@server ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/cciss/c0d1p1 9.0T 168M 8.5T 1% /data

จากตัวอย่างจะเห็นว่า มี disk ทั้งหมด 9 TB ใช้ไป 168 MB แต่เหลือให้ใช้ได้อีก 8.5 TB หายไปตั้งหลาย GB (ประมาณว่า เสียดายอ่ะ) ซึ่งเนื้อที่ที่หายไปก็คือส่วนของ reserved นั่นเอง

ที นี้ด้วยความงก เราสามารถที่จะแก้ไข reserved space ให้สามารถนำมาใช้งานได้โดยใช้คำสั่ง tune2fs ดังนี้

[root@server ~]# umount /data ----> umount ก่อนเพื่อความปลอดภัย
[root@server ~]# tune2fs -m 1 /dev/cciss/c0d1p1
tune2fs 1.39 (29-May-2006)
Setting reserved blocks percentage to 1% (24418240 blocks)

[root@g-log ~]# mount -a ----> remount ทั้งหมด
[root@g-log ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/cciss/c0d1p1 9.0T 168M 8.9T 1% /data


จากข้างต้นผมได้ทำการแก้ reserved ของ partition ไปที่ 1% (สามารถแก้ไปที่ 0% ได้) เมือแก้เสร็จแล้วจะพบว่า เราจะได้พื้นที่ของ harddisk มาใช้ได้อีกเยอะจาก 8.5 TB ได้มาเป็น 8.9 TB

หมาย เหตุ
1. เราสามารถกำหนด reservd block ได้ตั้งแต่ขั้นตอน format โดยระบุ mkfs.ext3 -m 1
2. ไม่ควรลด reserved block บน system partition (คิดเอาเองว่า มันต้องจำเป็นสิ ไม่งั้นระบบมันจะ reserved ไปทำไม) ควรทำเฉพาะบน Data partition เท่าที่จำเป็นเท่านั้น

Linux: Subnet (CIDR) Calculator

credit : http://www.cyberciti.biz

เป็น command ไว้คำนวน subnet แบบง่ายๆ ครับ (ทดสอบบน Ubuntu 9.10 Server i386)

ubuntu# apt-get update
ubuntu# apt-get install sipcalc

ทดสอบ การใช้งาน

komkit@moccona:~$ sipcalc 192.168.1.0/24
-[ipv4 : 192.168.1.0/24] - 0

[CIDR]
Host address - 192.168.1.0
Host address (decimal) - 3232235776
Host address (hex) - C0A80100
Network address - 192.168.1.0
Network mask - 255.255.255.0
Network mask (bits) - 24
Network mask (hex) - FFFFFF00
Broadcast address - 192.168.1.255
Cisco wildcard - 0.0.0.255
Addresses in network - 256
Network range - 192.168.1.0 - 192.168.1.255
Usable range - 192.168.1.1 - 192.168.1.254

************************************************************************************************

komkit@moccona:~$ sipcalc 172.17.1.5/27
-[ipv4 : 172.17.1.5/27] - 0

[CIDR]
Host address - 172.17.1.5
Host address (decimal) - 2886795525
Host address (hex) - AC110105
Network address - 172.17.1.0
Network mask - 255.255.255.224
Network mask (bits) - 27
Network mask (hex) - FFFFFFE0
Broadcast address - 172.17.1.31
Cisco wildcard - 0.0.0.31
Addresses in network - 32
Network range - 172.17.1.0 - 172.17.1.31
Usable range - 172.17.1.1 - 172.17.1.30

*********************************************************************************************

komkit@moccona:~$ sipcalc eth0
-[int-ipv4 : eth0] - 0

[CIDR]
Host address - 172.17.1.21
Host address (decimal) - 2886795541
Host address (hex) - AC110115
Network address - 172.17.0.0
Network mask - 255.255.248.0
Network mask (bits) - 21
Network mask (hex) - FFFFF800
Broadcast address - 172.17.7.255
Cisco wildcard - 0.0.7.255
Addresses in network - 2048
Network range - 172.17.0.0 - 172.17.7.255
Usable range - 172.17.0.1 - 172.17.7.254


ช่วยให้ทำงานง่ายขึ้นเยอะ จะได้มีเวลาไปนอนกลางวัน