Monday, December 16, 2013

ขั้นตอนการ Backup ไฟล์ Configuration ของ Juniper Firewall (ISG Series) และ Fortigate Firewall รวมถึงการทำ Compare Configuration. Part2/2




    หลังจากที่เราทำการทดสอบ Script ทั้งสองเรียบร้อยแล้ว ก็ให้เรานำ Script ทั้ง 2 ไปวางไว้ที่ /root
และเขียน Script เพื่อทำการเก็บ Config ของไฟร์วอลล์ทั้งสองนั้นในรูปแบบของไฟล์ที่มีการบีบอัดข้อมูล

compress.sh

/root/fortigate.sh
/root/juniper.sh
gunzip /tftpboot/*.gz
chmod 644 /tftpboot/*
chown root:root /tftpboot/*
BASELOG="/tftp/log"
BASEDIR=${BASELOG}/`date +%d-%b-%y`
[ ! -d ${BASEDIR} ] && mkdir -p ${BASEDIR}
mv /srv/tftp/ru* ${BASEDIR}



หลัง จากนั้น ให้เราเขียน Script เพื่อทำการตรวจสอบว่า  File config ของเมื่อวาน และของปัจจุบันที่เราเพิ่งได้ backup ไปนั้น มีความแตกต่างกันอย่างไร มีการเพิ่มอะไรใหม่ ๆ หรือมีการลบอะไรออกไปบ้าง และให้ทำการส่งเมล์ออกไปยัง Admin   

checkdiff.sh

#!/bin/bash
BASELOG="/tftp/log/"
BASEDIR=${BASELOG}/`date +%d-%b-%y`
[ ! -d ${BASEDIR} ] && mkdir -p ${BASEDIR}
mv /tftpboot/* ${BASEDIR}
TODAY=`date +%d-%b-%y`
YESTERDAY=${BASELOG}/`date --date='1 day ago' +%d-%b-%y`

FILENAME="
juniper
fortigate

echo "Date - " ${TODAY} >> /tftp/report.log
echo "------------------------------------------------------------------------" >> /tftp/report.log
ls -l ${BASEDIR} >> /tftp/report.log
echo "*************************************************" >> /tftp/report.log
for filename in ${FILENAME}
do
    FILENAME=`echo ${filename}
    cut -f 1`
    SUBDIR=${BASEDIR}
    YSUBDIR=${YESTERDAY}
    echo "File" ${filename} " " >> /tftp/report.log
    echo "-----------------------------------------------------------------" >> /tftp/report.log
    echo "Check Differential configuration" >> /tftp/report.log
    diff ${SUBDIR}/${FILENAME} ${YSUBDIR}/${FILENAME} >> /tftp/diff.log
    echo "............... New configuration added ............." >> /tftp/report.log
    echo "-----------------------------------------------------------------" >> /tftp/report.log
    cat /tftp/diff.log
    grep "<" >> /tftp/report.log
    echo "-----------------------------------------------------------------" >> /tftp/report.log
    echo ".............. Old configuration Remove ............." >> /tftp/report.log
    echo "-----------------------------------------------------------------" >> /tftp/report.log
    cat /tftp/diff.log
    grep ">" >> /tftp/report.log
    echo "-----------------------------------------------------------------" >> /tftp/report.log
    echo "End of file" ${filename} " " >> /tftp/report.log
    echo "-----------------------------------------------------------------" >> /tftp/report.log
    echo "******************************************" >> /tftp/report.log
    rm -f /tftp/diff.log
    touch /tftp/diff.log
done

SUBJECT="Firewall differential configuration"
EMAIL= “taveesak@gmail.com"
EMAILMESSAGE="/tftp/report.log"
mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE
rm -f /tftp/report.log


สุดท้าย

ตั้ง Crontab ให้รัน script compress.sh และ checkdiff.sh ทุกๆ วัน ในเวลาที่เราต้องการ
เท่านั้น

เหมือนเดิม หากว่าเราจะทดสอบว่า Script ที่เขียนนั้น ใช้งานได้จริงหรือไม่ ก็แค่ รัน Script นั้นขึ้นมา
หากใช้งานได้ เราก็จะเห็นเมล์ส่งเข้ามายัง Inbox ของเราครับ

 --------------------------------------------------------------------------------------------------
PS. Part2 นี้ รีบไปหน่อย หากมีข้อสงสัย ก็ส่งเมล์มาถามนะครับ