shorewall เป็นโปรแกรมประเภท firewall เอาไว้สำหรับกรอง packet ต่างๆที่เข้ามาในเครื่องเรา เป็นเครื่องมือสำหรับป้องกันเครื่องของเราจากผู้บุกได้พอสมควร
ตัวอย่างนี้เป็นการติดตั้ง shorewall กับ debian etch
ถ้าหากติดตั้ง ipchains ให้ remove ipchains ออกก่อน
#apt-get remove ipchains
หลังจากนั้นก็ติดตั้ง shorewall
#apt-get install shorewall
หลังจากติดตั้ง shorewall เสร็จแล้วต่อไปก็เป็นการตั้ค่าให้กับ shorewall ให้เข้าไปแก้ไขที่ไฟล์ /etc/default/shorewall
#nano /etc/default/shorewall
ให้เปลี่ยน
startup=0
เป็น
startup=1
สำหรับการติดตั้งโปรแกรม shorewall ครั้งแรก จะไม่มีไฟล์ configuration ใน directory /etc/shorewall/ ต้องคัดลอกไฟล์จาก /usr/share/doc/shorewall/default-config/ มาก่อน
cp /usr/share/doc/shorewall/default-config/* /etc/shorewall/
การตั้งค่า zones
ให้เพิ่มข้อความต่อไปนี้ในไฟล์ /etc/shorewall/zones
#ZONE TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
fw firewall
net ipv4 #
loc ipv4 #
#LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE
การตั้งค่า interfaces
ให้เพิ่มข้อความต่อไปนี้ในไฟล์ /etc/shorewall/interfaces
#ZONE INTERFACE BROADCAST OPTIONS
net eth0 detect
#LAST LINE — ADD YOUR ENTRIES BEFORE THIS ONE — DO NOT REMOVE
การตั้งค่า policy
ให้เพิ่มข้อความต่อไปนี้ในไฟล์ /etc/shorewall/policy
#SOURCE DEST POLICY LOG LIMIT:BURST
# LEVEL
fw net ACCEPT
fw loc ACCEPT
net all DROP info
all all REJECT info
#LAST LINE — DO NOT REMOVE
การตั้งค่า rules เป็นการกำหนดกฎต่างๆที่ใช้ในการกรอง packet ที่เข้ามาภายในเครื่องว่าจะให้ผ่านไปได้หรือไม่ให้ผ่าน
ให้เพิ่มข้อความต่อไปนี้ในไฟล์ /etc/shorewall/rules
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/
# PORT(S) PORT(S) DEST LIMIT GROUP
#SECTION ESTABLISHED
#SECTION RELATED
SECTION NEW
ACCEPT net fw tcp 80
ACCEPT net fw tcp 10000
#LAST LINE — ADD YOUR ENTRIES BEFORE THIS ONE — DO NOT REMOVE
ตัวอย่างด้านบนเป็นการ อนุญาติให้ packet จาก zone net ผ่านเข้าได้สองพอร์ทคือพอร์ท 80 กับ พอร์ท 10000 และโปรโตคอลต้องเป็นโปรโตคอล tcp
สำหรับใครที่ต้องการจะเพิ่มพอร์ทอื่นๆ สำหรับโปรแกรมแต่ละโปรแกรม ก็ทำได้ตามความต้องการครับ
หลังจากที่ตั้งค่าให้กับ shorewall แล้ว ให้ทำการเริ่มต้นการทำงานของ shorewall โดย
#/etc/init.d/shorewall start
ถ้าหากมีข้อผิดพลาดเกิดขึ้น สามารถดูรายละเอียดได้ในไฟล์ /var/log/shorewall-init.log
ในตัวอย่างนี้ผมจะเขียนคำสั่งที่ใช้สั่งให้ rsync backup ข้อมูล เป็น script แล้วใช้ crontab ทำให้มันทำงานตามเวลาที่เรา กำหนด
สร้างไฟล์ชื่อ backup.sh
nano /home/jirawat/backup.sh
พิมพ์ข้อความต่อไปในลงไปในไฟล์ backup.sh
#! /bin/sh
# file /home/jirawat/backup.sh
rsync -ax –process –update –delete /var/www/virtual/ /media/backup/var/www/virtual/
เสร็จแล้วก็บันทึกเป็นไฟล์ /home/jirawat/backup.sh
ต่อไปก็สร้างไฟล์ /etc/cron.d/backup
nano /etc/cron.d/backup
พิมพ์ข้อความต่อไปในลงไปในไฟล์ backup
* * * * * root /home/jirawat/backup.sh > /home/jirawat/backup.log
เสร็จแล้วก็บันทึกเป็นไฟล์ /etc/cron.d/backup
แล้วสั่งให้ cron reload ค่าใหม่
/etc/init.d/cron reload
รายละเีอียดเกี่ยวกับการใช้งาน crontab
crontab จะแบ่งออกเป็น 6 column ดังนี้
column 1 จะเป็นการกำหนดค่านาที (0-59)
column 2 จะเป็นการกำหนดค่าชั่วโมง (0-23)
column 3 จะเป็นการกำหนดค่าวัน (1-31)
column 4 จะเป็นการกำหนดค่าเดือน (1-12)
column 5 จะเป็นการกำหนดค่าวันในสัปดาห์ (0-6)
column 6 จะเป็นคำสั่งที่ต้องการสั่งงาน
จากตัวอย่าง
* * * * * root /home/jirawat/backup.sh > /home/jirawat/backup.log
เป็นการสั่งให้รันสคลิปต์ /home/jirawat/backup.sh ทุกๆนาที อันนี้เป็นแค่การทดสอบนะครับ ถ้าใช้งานจริงควรจะทำทุกๆวัน หรือทุกๆสัปดาห์ก็ได้ ตัวอย่างเช่น ให้ทำการสำรองข้อมูลทุกวัน เวลา ตีสาม ก็เขียนเป็น
0 3 * * * root /home/jirawat/backup.sh > /home/jirawat/backup.log
ส่วน > /home/jirawat/backup.log เป็นการเก็บผลลัพธ์ที่ได้จากการเรียกใช้คำสั่งลงในไฟล์ /home/jirawat/backup.sh
ผมเริ่มศึกษา debian linux มาได้ระยะหนึ่งแล้ว และเห็นว่าหนังสือหรือเอกสารเกี่ยวกับ linux ยังมีอยู่น้อยมาก
และผมกลัวว่าศึกษา linux ไปแล้ว คำสั่งไหน หรือโปรแกรมตัวไหนที่ไม่ได้ใช้บ่อยๆ จะลืมเอาได้ง่ายๆ (เป็นคนขี้ลืมซะด้วย) ก็เลยเอามาเขียนไว้ใน blog ดีกว่า จะได้ไม่ลืม และคนอื่นก็เอาไปอ่านต่อได้ด้วย
มาต่อกันเรื่อง rsync เป็นโปรแกรมสำหรับสำรองข้อมูลทั้งแบบ local, remote วันนี้ก็เลยจะเอาตัวอย่างการใช้งาน rsync มาเก็บไว้ใน blog ก่อนเดี๋ยวจะลืม
ถ้ายังไม่ได้ติดตั้ง rsync ให้ติดตั้ง rsync ก่อนนะครับในตัวอย่างนี้ผมใช้กับ debian linux ก็ใช้คำสั่ง
apt-get update
apt-get install rsync
ตัวอย่างการใช้งาน rsync
rsync -ax ––progess ––update ––delete /var/www/ /media/backup/var/www/
ตัวอย่างด้านบนจะทำการสำรองข้อมูลใน directory /var/www ไปเก็บไว้ที่ /media/backup/var/www ซึ่งผมจะเอา hard disk อีกตัวหนึ่งมา mount ไว้ที่ /media/backup
––update ––delete ใช้เมื่อเราต้องการทำสำเนาข้อมูลให้เหมือนกับ /var/www ทุกอย่างตัวอย่างเช่น ใน directory/var/www มีไฟล์เพิ่มเข้ามาหรือถูกลบไป rsync ก็จะเพิ่มหรือลบไฟล์ใน directory /media/backup/var/www ด้วย
––progess ให้ rsync แสดงผลการทำงานด้วย