練功房推薦書單

  • 猛虎出柙雙劍合璧版--最新 OCA / OCP Java SE 7 Programmer 專業認證 (電子書)
  • 流浪教師存零股存到3000萬(全新增修版)(書+DVD)
  • 開始在關西自助旅行(京都‧大阪‧神戶‧奈良)(全新增訂版)
  • 不敗教主的300張股票存股術
自動備份 NetScreen 500 組態設定檔 RSS feed
Forum Index » 防火牆 Firewall
Author Message
andowson

七段學員
[Avatar]

Joined: 2007/1/2
Messages: 706
Location: 台北
Offline
由於公司資安規定需要定期備份防火牆的組態設定檔,如果每個月都要進到Web介面去操作一次,點來點去也是滿花時間的;另外一個作法是登入命令列界面,然後手動去下 save config from flash to tftp x.x.x.x filename 這個指令,雖然是比較快速了些,但總是感覺多一件事情在身上,到時要是別的事忙起來,還是怕會忘記。

由於懶惰是人的天性,所以總是會想如何把事情自動化,於是我就想用ant的telnet task來自動登入Firewall並執行save config指令,方法大致如下:
1.在備份用的主機上架設TFTP Server
2.下載及安裝JRE、Ant 1.7.1及telnet task所需之commons-net套件。
3.編輯一個build.xml及一個build.properties檔案
4.執行 ant 看是否可正常備份
5.寫一個批次檔將該ant指令包裝起來
6.設定自動執行該批次檔

底下再簡單說明一下上述步驟
1.安裝TFTP Server可以參考這篇http://www.andowson.com/posts/list/184.page,去下載tftpd32 service edition (installer),安裝完成後,手動建立一個C:\tftp的目錄,並把tftp的根目錄(Base Directory)設定到C:\tftp(設定完成建議重開機測試看看,以免日後作WindowsUpdate重開機之後目錄的設定跑掉,造成備份失敗)

2.將把下載來的ant zip檔解壓縮到C:\底下,設定環境變數ANT_HOME指向安裝的目錄,並在Path變數加上%ANT_HOME%\bin。然後把commons-net的jar檔放到ANT_HOME的lib目錄下。

3.可以參考底下兩個範例,將這兩個檔案存到C:\下
build.xml範例如下:
<?xml version="1.0" encoding="Big5" ?>

<project name="backup" default="ns500" basedir=".">
	<description>Network Switch Config Backup</description>

	<!-- Enable access to build.properties variables -->
	<property file="build.properties" />
	<property name="backup.root.dir" value="C:\Documents and Settings\andowson\My Documents\config" />
	<property name="ns500.backup.dir" value="${backup.root.dir}\Firewall\${ns500.ip}" />
	<property name="tftp.root" value="C:\tftp" />

	<!-- Init -->
	<target name="init" description="Create backup directory">
		<tstamp>
			<format property="TODAY" pattern="yyyyMMdd" />
		</tstamp>

		<mkdir dir="${backup.root.dir}" />
		<mkdir dir="${backup.root.dir}\Firewall" />
		<mkdir dir="${backup.root.dir}\Firewall\${ns500.ip}" />
	</target>
	
  <!-- Backup NS500 Config -->
  <target name="ns500" depends="init" description="Backup ns500 config">
		<property name="ns500.cfg" value="ns500_${TODAY}.cfg" />

		<telnet server="${ns500.ip}">
     <read timeout="5">login: </read>
     <write>${firewall.username}</write>
     <read timeout="5">password: </read>
     <write>${firewall.password}</write>
     <read timeout="5">-> </read>
     <write>save config from flash to tftp ${tftp.host} ${ns500.cfg}</write>
     <read timeout="30">TFTP Succeeded</read>  
     <write>exit</write>     
    </telnet>
    <move file="${tftp.root}\${ns500.cfg}" todir="${ns500.backup.dir}" />
  </target>

</project>


build.properties範例如下:請視您真正的情況修改對應的參數值,下列例子中我們的TFTP主機IP是172.16.34.14,防火牆NS500的IP是192.168.1.254。
tftp.host=172.16.34.14
ns500.ip=192.168.1.254
firewall.username=netscreen
firewall.password=netscreen


4.開啟一個DOS命令列視窗,然後切換到build.xml及build.properties所存放的目錄下,接著執行
ant ns500

5.將上述動作編輯成一個backup_config.bat
@echo off
cd C:\
ant ns500


6.執行附屬應用程式>系統工具>排定的工作,然後選到C:\backup_config.bat這個檔案,並設定執行的條件及頻率。

要注意的地方:
NetScreen上要先啟動Telnet存取,並將備份主機的IP加入到防火牆允許的管理IP。
目前實際測試後發現Ant 1.8.0無法正常執行,請使用Ant 1.7.1。

分享經驗 累積智慧
[WWW] [MSN]
andowson

七段學員
[Avatar]

Joined: 2007/1/2
Messages: 706
Location: 台北
Offline
NetScreen的文件--概念與範例 ScreenOS 參考指南 第3卷 管理下面兩個章節中提到了一些不錯的資訊:
管理
-- 透過指令行介面進行管理
----安全 Shell
----安全副本
範例: SSHv1 使用 PKA 進行自動登入
在此範例中,請您 ( 作為根管理員) 為自動執行指令碼的遠端主機設定 SSHv1 公開
金鑰確認 (PKA)。此遠端主機存取裝置的唯一目的是每天晚上下載設定檔。由於驗
證是自動進行的,因此 SSH 用戶端登入到裝置時不需要人員操作


安全副本 (SCP) 提供了一個途徑,使遠端用戶端能使用 SSH 通訊協定與安全性裝
置交換檔案。(SSH 通訊協定為 SCP 連接提供驗證、加密和資料完整性。) 裝置作
為一個 SCP 伺服器,接受來自遠端主機上的 SCP 用戶端的連接。
SCP 要求在開始檔案傳輸之前對遠端用戶端進行驗證。SCP 驗證程序與用於驗證
SSH 用戶端的程序完全相同。可以用密碼或 PKA 金鑰來驗證 SCP 用戶端。一旦驗
證該 SCP 用戶端後,就可以向裝置傳輸或從中傳輸一個或多個檔案。SCP 用戶端
應用程式確定用於指定來源和目的地檔案名稱的準確方法;請參閱 SCP 用戶端應
用程式文件。
在裝置上預設為停用 SCP。若要啟用 SCP,還必須啟用 SSH。

下面是一個 SCP 用戶端指令的範例,該指令將組態檔案從 NetScreen 裝置 ( 管理員
名稱是 "juniper",IP 位址是 10.1.1.1)上的快閃記憶體中複製到用戶端系統的
"ns_sys_config_backup" 檔案
中:
scp juniper@10.1.1.1:ns_sys_config ns_sys_config_backup

我們可以用Linux 上的scp的指令來取得NS500的config
scp netscreen@192.168.1.254:ns_sys_config ns500_20100226.cfg

然後只要再完成讓由Linux 透過SSH連線防火牆時不需再輸入帳號密碼就可以達到自動備份的目的了。

要免驗證自動登入的方法如下:
1. 在 SSH 用戶端上,使用金鑰產生程式來產生公開和私人金鑰對。( 該金鑰對是
用於 SSHv1 的 RSA 或用於 SSHv2 的 DSA。

參考http://www.andowson.com/posts/list/191.page的方法,產生public/private dsa key pair檔案
cd ~/.ssh
ssh-keygen -d


2. 將公開金鑰從本機 SSH 目錄移到 TFTP 伺服器上的目錄,然後啟動 TFTP 程式。

將id_dsa.pub上傳到Windows主機上的TFTP伺服器,例如放到上例中的C:\tftp目錄下

3. 登入到裝置,以便可透過 CLI 對其進行設定。


4. 要將公開金鑰從 TFTP 伺服器載入到裝置,請輸入以下的其中一個 CLI 指令:
對於 SSHv1:
exec ssh tftp pka-rsa [ username name ] file-name name_str ip-addr
tftp_ip_addr
對於 SSHv2:
exec ssh tftp pka-dsa [ user-name name ] file-name name_str ip-addr
tftp_ip_addr
username 或 user-name 選項僅用於根管理員,因此只有根管理員可以將 RSA
金鑰連結到另一個管理員。當您 ( 作為根管理或讀/ 寫管理) 只輸入指令而沒
有輸入使用者名稱時,裝置將金鑰連結到您自己的管理帳號;也就是將金鑰連
結到輸入指令的管理。

exec ssh tftp pka-dsa file-name id_dsa.pub ip-addr 172.16.34.14


完成後,在Linux主機上執行
scp netscreen@192.168.1.254:ns_sys_config ns500_20100226.cfg

看是否可以成功複製組態檔。如果防火牆不允許用netscreen這個帳號進行scp,則可另外建立一個帳號,例如cfg,然後將公鑰匯入到該帳號去。
exec ssh tftp pka-dsa user-name cfg file-name id_dsa.pub ip-addr 172.16.34.14

然後scp指令稍微改一下,變成:
scp cfg@192.168.1.254:ns_sys_config ns500_20100226.cfg

接下來就很簡單了,寫支shell script來自動取得系統日期並呼叫scp指令,然後到crontab去設定該shell script自動執行的時間即可。

參考資料
http://www.juniper.net/techpubs/software/screenos/screenos5.3.0/translated/Traditional/Ce_v3_tc.pdf

分享經驗 累積智慧
[WWW] [MSN]
 
Forum Index » 防火牆 Firewall
Go to:   
Mobile view