Monday, December 16, 2013

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



    ถ้าหากว่า เราเป็น Admin ของ Firewall ซักตัวนึง เราเคยมีคำถามไหมว่า ทำอย่างไร เราถึงจะเก็บ config ของ Firewall เอาไว้ที่ใดซักที่นึง ทุกๆ วัน เผื่อว่า วันใด Firewall ที่เราดูแล เกิดอาการแฮงก์ โดยไม่ทราบสาเหตุ เราก็จะสามารถเอา Config ที่เราเก็บไว้ล่าสุดมา Restore ได้

    หากคุณเป็น Admin ที่มีความขยันและมีวินัยเป็นเลิศ คุณอาจจะบอกว่า ไม่ยากเลยจอร์จ เราก็แค่  Login เข้าไปที่  Firewall สิ จากนั้นก็เข้าไปที่หน้า Maintenance แล้ว Backup config ออกมา
 
    นั่นสินะ แต่ถ้าวันไหน Admin ป่วยล่ะ หรือลาพักร้อนล่ะ ใครจะทำหน้าที่นี้ ? จะให้คนอื่นเข้ามาทำแทนหรือ? จะยุ่งยากไปมั้ย หากไฟร์วอลล์นี้ ใคร ๆ ก็เข้าไป admin ได้

    อย่ากระนั้นเลย เรามาเป็น admin ที่ใช้ Server และ Script ทำงานแทนเราทุก ๆ วันดีกว่า

    เริ่มต้นด้วย เราจะต้องมี Server มาทำหน้าที่เก็บ Config ของอุปกรณ์ ซึ่งก็คงจะหนีไม่พ้น ต้องทำเป็น Linux server (เพราะอะไรหรือ ? ก็เพราะว่า เราไม่อยากจะเสียค่า License ไง)

    สำหรับขั้นตอนการติดตั้ง Linux ให้ลองไปหาดูโพสท์เก่า ๆ นะครับ

   สมมติว่า เรามีไฟร์วอลล์อยู่ 2 ตัว  คือ Fortigate กับ Netscreen (รุ่นเก่าก่อน SRX นะ) ซึ่งมี IP Address ดังต่อไปนี้

Fortigate Firewall IP Address 1.1.1.1
Netscreen Firewall IP Address 2.2.2.2

   สำหรับ Linux server เราก็กำหนด IP Address ดังนี้
Backup config Server IP Address 3.3.3.3

    ขั้นตอนการติดตั้งบริการ TFTP  ให้เลือกติดตั้ง Package ตามนี้นะครับ

    1. atftp
    2. xinetd
    3. postfix เอาไว้ใช้ส่งเมล์หาเราทุกวัน
    4. expect พระเอกของงานเลย ห้ามลืมติดตั้งเด็ดขาด 

สิ่งที่ห้ามลืม
จะต้องมี User ที่สามารถเข้าถึงบริการ SSH ของ Firewall ทั้งสองตัว 
ในที่นี้ ผมใช้ user ชื่อว่า monica และ password ชื่อว่า john@123 ครับ 

จากนั้น ก็เขียน Script ตามด้านล่างเลยครับ

fortigate.sh - เอาไว้เก็บ Config ของ Fortigate


#!/usr/bin/expect -f
#-----------------------------------------------------------------------
spawn ssh -o stricthostkeychecking=no monica@1.1.1.1
expect {
"password:" {send "john@123\r"}
}
expect {
"#" {send "execute backup config tftp fortigate 3.3.3.3\r"}
}
expect {
"#" {send "exit\r"}
}
close
#-----------------------------------------------------------------------


juniper.sh - เอาไว้เก็บ Config ของ Juniper

#!/usr/bin/expect -f
#-----------------------------------------------------------------------
spawn ssh -o stricthostkeychecking=no monica@2.2.2.2
expect {
"password:" {send "john@123\r"}
}
expect {
";" {send "get config all > tftp 3.3.3.3 juniper\r"}
}
expect {
"#" {send "exit\r"}
}
close
#-----------------------------------------------------------------------

เมื่อทำเสร็จแล้ว ลองรัน script ดูนะครับ ว่า ใช้งานได้หรือเปล่า
วิธีดูง่าย ๆ ว่าใช้งานได้หรือไม่ ก็คือ เมื่อรันไปแล้ว ไม่เกิด error
และเมื่อเราไปดูที่ TFTP server ที่พาธ /tftpboot ก็จะเห็นไฟล์  config ของไฟร์วอลล์ ปรากฏอยู่ครับ


สำหรับ Part แรก เอาไว้แค่นี้ก่อนครับ