<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Latest posts for the topic "自動備份 NetScreen 500 組態設定檔"]]></title>
		<link>https://forum.andowson.com/posts/list/26.page</link>
		<description><![CDATA[Latest messages posted in the topic "自動備份 NetScreen 500 組態設定檔"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>自動備份 NetScreen 500 組態設定檔</title>
				<description><![CDATA[ 由於公司資安規定需要定期備份防火牆的組態設定檔，如果每個月都要進到Web介面去操作一次，點來點去也是滿花時間的；另外一個作法是登入命令列界面，然後手動去下 save config from flash to tftp x.x.x.x filename 這個指令，雖然是比較快速了些，但總是感覺多一件事情在身上，到時要是別的事忙起來，還是怕會忘記。 
<br>
<br>
由於懶惰是人的天性，所以總是會想如何把事情自動化，於是我就想用ant的[url=http://ant.apache.org/manual/OptionalTasks/telnet.html]telnet task[/url]來自動登入Firewall並執行save config指令，方法大致如下： 
<br>
1.在備份用的主機上架設[url=http://www.andowson.com/posts/list/184.page]TFTP Server[/url] 
<br>
2.下載及安裝JRE、[url=http://ant.apache.org/]Ant 1.7.1[/url]及telnet task所需之[url=http://commons.apache.org/downloads/download_net.cgi]commons-net[/url]套件。 
<br>
3.編輯一個build.xml及一個build.properties檔案 
<br>
4.執行 ant 看是否可正常備份 
<br>
5.寫一個批次檔將該ant指令包裝起來 
<br>
6.設定自動執行該批次檔 
<br>
<br>
底下再簡單說明一下上述步驟 
<br>
1.安裝TFTP Server可以參考這篇[url]http://www.andowson.com/posts/list/184.page[/url]，去下載tftpd32 service edition (installer)，安裝完成後，手動建立一個C:\tftp的目錄，並把tftp的根目錄(Base Directory)設定到C:\tftp(設定完成建議重開機測試看看，以免日後作WindowsUpdate重開機之後目錄的設定跑掉，造成備份失敗) 
<br>
<br>
2.將把下載來的ant zip檔解壓縮到C:\底下，設定環境變數ANT_HOME指向安裝的目錄，並在Path變數加上%ANT_HOME%\bin。然後把commons-net的jar檔放到ANT_HOME的lib目錄下。 
<br>
<br>
3.可以參考底下兩個範例，將這兩個檔案存到C：\下 
<br>
build.xml範例如下： 
<br>
[code=xml] 
<br>
&lt;?xml version="1.0" encoding="Big5" ?&gt; 
<br>
<br>
&lt;project name="backup" default="ns500" basedir="."&gt; 
<br>
 &lt;description&gt;Network Switch Config Backup&lt;/description&gt; 
<br>
<br>
 &lt;!-- Enable access to build.properties variables --&gt; 
<br>
 &lt;property file="build.properties" /&gt; 
<br>
 &lt;property name="backup.root.dir" value="C:\Documents and Settings\andowson\My Documents\config" /&gt; 
<br>
 &lt;property name="ns500.backup.dir" value="${backup.root.dir}\Firewall\${ns500.ip}" /&gt; 
<br>
 &lt;property name="tftp.root" value="C:\tftp" /&gt; 
<br>
<br>
 &lt;!-- Init --&gt; 
<br>
 &lt;target name="init" description="Create backup directory"&gt; 
<br>
 &lt;tstamp&gt; 
<br>
 &lt;format property="TODAY" pattern="yyyyMMdd" /&gt; 
<br>
 &lt;/tstamp&gt; 
<br>
<br>
 &lt;mkdir dir="${backup.root.dir}" /&gt; 
<br>
 &lt;mkdir dir="${backup.root.dir}\Firewall" /&gt; 
<br>
 &lt;mkdir dir="${backup.root.dir}\Firewall\${ns500.ip}" /&gt; 
<br>
 &lt;/target&gt; 
<br>
<br>
 &lt;!-- Backup NS500 Config --&gt; 
<br>
 &lt;target name="ns500" depends="init" description="Backup ns500 config"&gt; 
<br>
 &lt;property name="ns500.cfg" value="ns500_${TODAY}.cfg" /&gt; 
<br>
<br>
 &lt;telnet server="${ns500.ip}"&gt; 
<br>
 &lt;read timeout="5"&gt;login: &lt;/read&gt; 
<br>
 &lt;write&gt;${firewall.username}&lt;/write&gt; 
<br>
 &lt;read timeout="5"&gt;password: &lt;/read&gt; 
<br>
 &lt;write&gt;${firewall.password}&lt;/write&gt; 
<br>
 &lt;read timeout="5"&gt;-&gt; &lt;/read&gt; 
<br>
 &lt;write&gt;save config from flash to tftp ${tftp.host} ${ns500.cfg}&lt;/write&gt; 
<br>
 &lt;read timeout="30"&gt;TFTP Succeeded&lt;/read&gt; 
<br>
 &lt;write&gt;exit&lt;/write&gt; 
<br>
 &lt;/telnet&gt; 
<br>
 &lt;move file="${tftp.root}\${ns500.cfg}" todir="${ns500.backup.dir}" /&gt; 
<br>
 &lt;/target&gt; 
<br>
<br>
&lt;/project&gt; 
<br>
[/code] 
<br>
<br>
build.properties範例如下：請視您真正的情況修改對應的參數值，下列例子中我們的TFTP主機IP是172.16.34.14，防火牆NS500的IP是192.168.1.254。 
<br>
[code] 
<br>
tftp.host=172.16.34.14 
<br>
ns500.ip=192.168.1.254 
<br>
firewall.username=netscreen 
<br>
firewall.password=netscreen 
<br>
[/code] 
<br>
<br>
4.開啟一個DOS命令列視窗，然後切換到build.xml及build.properties所存放的目錄下，接著執行 
<br>
ant ns500 
<br>
<br>
5.將上述動作編輯成一個backup_config.bat 
<br>
[code=batch] 
<br>
@echo off 
<br>
cd C:\ 
<br>
ant ns500 
<br>
[/code] 
<br>
<br>
6.執行附屬應用程式&gt;系統工具&gt;排定的工作，然後選到C:\backup_config.bat這個檔案，並設定執行的條件及頻率。 
<br>
<br>
要注意的地方： 
<br>
NetScreen上要先啟動Telnet存取，並將備份主機的IP加入到防火牆允許的管理IP。 
<br>
目前實際測試後發現Ant 1.8.0無法正常執行，請使用Ant 1.7.1。]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/404/772.page</guid>
				<link>https://forum.andowson.com/posts/preList/404/772.page</link>
				<pubDate><![CDATA[Thu, 25 Feb 2010 22:15:30]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:自動備份 NetScreen 500 組態設定檔</title>
				<description><![CDATA[ NetScreen的文件--概念與範例 ScreenOS 參考指南 第3卷 管理下面兩個章節中提到了一些不錯的資訊： 
<br>
管理 
<br>
 -- 透過指令行介面進行管理 
<br>
 ----安全 Shell 
<br>
 ----安全副本 
<br>
[quote]範例: SSHv1 使用 PKA 進行自動登入 
<br>
在此範例中，請您 ( 作為根管理員) 為自動執行指令碼的遠端主機設定 SSHv1 公開 
<br>
金鑰確認 (PKA)。此遠端主機存取裝置的唯一目的是每天晚上下載設定檔。由於驗 
<br>
證是自動進行的，因此[color=red] SSH 用戶端登入到裝置時不需要人員操作[/color]。[/quote] 
<br>
<br>
[quote]安全副本 (SCP) 提供了一個途徑，使遠端用戶端能使用 SSH 通訊協定與安全性裝 
<br>
置交換檔案。(SSH 通訊協定為 SCP 連接提供驗證、加密和資料完整性。) 裝置作 
<br>
為一個 SCP 伺服器，接受來自遠端主機上的 SCP 用戶端的連接。 
<br>
SCP 要求在開始檔案傳輸之前對遠端用戶端進行驗證。SCP 驗證程序與用於驗證 
<br>
SSH 用戶端的程序完全相同。可以用密碼或 PKA 金鑰來驗證 SCP 用戶端。一旦驗 
<br>
證該 SCP 用戶端後，就可以向裝置傳輸或從中傳輸一個或多個檔案。SCP 用戶端 
<br>
應用程式確定用於指定來源和目的地檔案名稱的準確方法；請參閱 SCP 用戶端應 
<br>
用程式文件。 
<br>
在裝置上預設為停用 SCP。若要啟用 SCP，還必須啟用 SSH。 
<br>
<br>
下面是一個 SCP 用戶端指令的範例，該指令[color=red]將組態檔案從 NetScreen 裝置 ( 管理員 
<br>
名稱是 "juniper"，IP 位址是 10.1.1.1)上的快閃記憶體中複製到用戶端系統的 
<br>
"ns_sys_config_backup" 檔案[/color]中: 
<br>
scp juniper@10.1.1.1:ns_sys_config ns_sys_config_backup[/quote] 
<br>
我們可以用Linux 上的scp的指令來取得NS500的config 
<br>
[code]scp netscreen@192.168.1.254:ns_sys_config ns500_20100226.cfg[/code] 
<br>
然後只要再完成讓由Linux 透過SSH連線防火牆時不需再輸入帳號密碼就可以達到自動備份的目的了。 
<br>
<br>
要免驗證自動登入的方法如下： 
<br>
[quote]1. 在 SSH 用戶端上，使用金鑰產生程式來產生公開和私人金鑰對。( 該金鑰對是 
<br>
用於 SSHv1 的 RSA 或用於 SSHv2 的 DSA。[/quote] 
<br>
參考[url]http://www.andowson.com/posts/list/191.page[/url]的方法，產生public/private dsa key pair檔案 
<br>
[code]cd ~/.ssh 
<br>
ssh-keygen -d[/code] 
<br>
<br>
[quote]2. 將公開金鑰從本機 SSH 目錄移到 TFTP 伺服器上的目錄，然後啟動 TFTP 程式。[/quote] 
<br>
將id_dsa.pub上傳到Windows主機上的TFTP伺服器，例如放到上例中的C:\tftp目錄下 
<br>
<br>
[quote]3. 登入到裝置，以便可透過 CLI 對其進行設定。[/quote] 
<br>
<br>
[quote]4. 要將公開金鑰從 TFTP 伺服器載入到裝置，請輸入以下的其中一個 CLI 指令: 
<br>
對於 SSHv1: 
<br>
exec ssh tftp pka-rsa [ username name ] file-name name_str ip-addr 
<br>
tftp_ip_addr 
<br>
對於 SSHv2: 
<br>
exec ssh tftp pka-dsa [ user-name name ] file-name name_str ip-addr 
<br>
tftp_ip_addr 
<br>
username 或 user-name 選項僅用於根管理員，因此只有根管理員可以將 RSA 
<br>
金鑰連結到另一個管理員。當您 ( 作為根管理或讀/ 寫管理) 只輸入指令而沒 
<br>
有輸入使用者名稱時，裝置將金鑰連結到您自己的管理帳號；也就是將金鑰連 
<br>
結到輸入指令的管理。[/quote] 
<br>
[code]exec ssh tftp pka-dsa file-name id_dsa.pub ip-addr 172.16.34.14[/code] 
<br>
<br>
完成後，在Linux主機上執行 
<br>
[code]scp netscreen@192.168.1.254:ns_sys_config ns500_20100226.cfg[/code] 
<br>
看是否可以成功複製組態檔。如果防火牆不允許用netscreen這個帳號進行scp，則可另外建立一個帳號，例如cfg，然後將公鑰匯入到該帳號去。 
<br>
[code]exec ssh tftp pka-dsa user-name cfg file-name id_dsa.pub ip-addr 172.16.34.14[/code] 
<br>
然後scp指令稍微改一下，變成： 
<br>
[code]scp cfg@192.168.1.254:ns_sys_config ns500_20100226.cfg[/code] 
<br>
接下來就很簡單了，寫支shell script來自動取得系統日期並呼叫scp指令，然後到crontab去設定該shell script自動執行的時間即可。 
<br>
<br>
參考資料 
<br>
http://www.juniper.net/techpubs/software/screenos/screenos5.3.0/translated/Traditional/Ce_v3_tc.pdf]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/404/774.page</guid>
				<link>https://forum.andowson.com/posts/preList/404/774.page</link>
				<pubDate><![CDATA[Fri, 26 Feb 2010 19:31:39]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
	</channel>
</rss>