A10 -- 設備管理與操作

A10,towns 第一次使用呢!做一下紀錄

查看 ACOS 版本
sh version


web 語言變更
配置模式 ==> 設定 ==> 網頁 ==> 語言設置 ==> English


WAF Logging File set
Config mode ==> SLB ==> Template ==> Application ==> Logging ==> List


ACL 說明

只能
外部IP(或網段)對外部IP(或網段),
內部IP(或網段),對內部IP(或網段)設定,
不能外部IP(或網段),對應內部IP(或網段)


憑證管理
1. 匯入憑證
A10 上傳憑證說明
1. 取得憑證(採購與執行TWCA提供的資料)
2. 將 server.cer 檔與 server.key 同時匯入 A10 中
註:server.key,就是當時在產生請求檔時所產生的 server.key
 1. 登入 A10 到 Config Mode ==> SLB ==> SSL Manangement ==> Certificate ==> Import ==> 打入 name,Certificate Format 選 PEM ==> Certificate Source 選擇由憑證商提供的 server.cer,Private Key Source 選擇 server.key ==> OK
3. 到 Config Mode ==> SLB ==> Template ==> Client SSL ==> 點 abcd ==> 到 Server Name Indication 中,Server Name 請打入這一次申請的網址名(abcd.tw),Server Certificate、Server Private Key 選擇 1 所產生的新憑證 ==> Add ==> OK,完成設定
4. 確認網頁的 SSL 是否可正常使用。使用瀏覽器打入網址(https://abcd.tw)或使用 https://www.ssllabs.com/ssltest/ 進行憑證測試
註1:第3點的流程是因為使用同一個 IP 所以可以直接將憑證綁在原有的 abcd 憑證上,如果是綁在其他 IP 上,應於 Client SSL 使用 Add 新增新憑證,並綁於指定 IP 上面
註2:所為的指定 IP 是指,在 Service ==> Virtual Server ==> Port ==> 選 443 ==> Edit ==> 到 Client-SSL Template 及 Server-SSL Template 選擇指定的 SSL 憑證
註3:TWCA提供的資料中根憑證(root.cer),中繼憑證(uca.cer),需要合成一個憑證後,再進行匯入,但看起來是沒有使用到的 = =

參考資料:
SSL Knowledgebase -- Certificate Format 說明
https://support.ssl.com/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certificates-and-how-to-convert-them

補充說明:
有些時候,towns 在同一 IP 附加多個網域(或網址),在設定時,就是在 Template => SSL => Client SSL 中,點已綁定的 CA => Server Name Indication 中,打入Server Name、選擇 Server Certificate(要先新增好)、Server Private Key(要先新增好)=> Add 就可以完成同一個 Template 綁定多網域

註:其中 Server Name 必需打入與 CA 中設定的 Common Name 相同,否則 A10 會無法正常送出該憑證。這個只有在同 Template 中綁定單一憑證時,才需要設定的


aFlex 應用

1. 關閉過濾 TLS1.0、1.1
aFleX內容

when CLIENT_ACCEPTED {
  TCP::collect
}
when CLIENT_DATA {
  ## look for CLIENTHELLO message in the TLS handshake (SSL bypassed)
  set payload [TCP::payload]
  binary scan $payload cSScc3Sc32c tls_type tls_version tls_recordlen tls_handshake_type len version random session_id_len
  if { $tls_type == 22 and $tls_handshake_type == 1} {
    if { $version == "769" or $version == "770"} {
    #TLSv1.0 = 769, TLSv1.1 = 770
#      log "TLSv1.0 Drop"
      drop
    }
  }
TCP::release
}

 

2.轉址(單純轉址),http://www.123.com => https://www.234.com

when HTTP_REQUEST {
   if { [HTTP::host] equals "www.123.com" } {
      HTTP::respond 301 Location "https://www.234.com/[HTTP::uri]"
  }
}

 

3.轉址(帶值),http://www.123.com/123/

when HTTP_REQUEST {
   if { [HTTP::host] equals "www.123.com" && [HTTP::uri] starts_with "/123/" } {
      HTTP::respond 301 Location "https://www.234.com/[HTTP::uri]"
  }
}

 

4.查看特定 IP 存取的 URL(產生 log)

# This aFleX logs Client/Server IP/Port information for security when using Source NAT
when CLIENT_ACCEPTED {
   #set curtime [TIME::clock seconds]
   #set formattedtime [clock format [TIME::clock seconds] -format {%H:%S} ]
   set cip [IP::client_addr]
   set cport [TCP::client_port]
   set vip [IP::local_addr]
   set vport [TCP::local_port]
}

when SERVER_CONNECTED {
   set sip [IP::server_addr]
   set sport [TCP::server_port]
   set snat_ip [IP::local_addr]
   set snat_port [TCP::local_port]
}

HTTP_REQUEST {
   set FQDN [HTTP::host]
   append FQDN [HTTP::uri]

   if { $cip equals 100.100.100.100/32 } {
       log "$cip:$cport to $vip:$vport then SNAT to $snat_ip:$snat_port and to server $sip:$sport, URI is $FQDN "
   }
}

 

 

設定
1. Config Mode ==> SLB ==> aFleX ==> Add ==> name、local、Definition(由廠商提供的文字檔貼上)==> ok
2. Config Mode ==> SLB ==> Virtual Server ==> Port 選 443 ==> Edit ==> aFleX ==> 點下拉式 bar ==> 選擇新產生的 aFleX Name ==> Add ==> OK 

資料來源:steve 大


查看各主機對外IP設定
Monitor Mode ==> NAT ==> Pool


鎖定內部主機走指定外部IP出去
1. 將指定主機加入 std ACL(access-list 51 8 permit host *.*.*.*)
2. config mode ==> NAT ==> IPv4 Pool ==> add ==> 加入指定連外IP(設定Name、StartIP Address、End IP Address、Netmask)
3. config mode ==> NAT ==> ACL Bind ==> add ==> IPv4 ACL 選定 第1項的設定,IPv4 Pool 選定 第2項的設定 ==> ok


走指定IP設定(AX1000、TH1030S)
1. 設定 IPv4 Pool
config mode ==> Service ==> IP Source NAT ==> Ipv4 Pool ==> add ==> Name、Start IP Address、End IP Address、Netmask
config mode ==> NAT ==> IPv4 Pool ==>
註:如果指定單一IP,Netmask 可以使用 32
2. 新增 STD ACL
ssh 登入 ==> 打入帳密並進入 # 模式 ==> 進入設定模式(configure terminal) ==> 加入新 ACL(access-list * * permit host *.*.*)
3. ACL Bind
config mode ==> Service ==> IP Source NAT ==> ACL Bind ==> IPv4 ACL 選擇設好的 std acl,IPv4 Pool 選擇設好的 Pool ==> add ==> OK
config mode ==> NAT ==> ACL Bind ==> add ==> IPv4 ACL 選擇設好的 std acl,IPv4 Pool 選擇設好的 Pool ==> OK
註:設定流程會因型號不同而不同,不過,123是固定的


測試回應速度(測試中)
axdebug
filter 1

filter 2
count 0
capure detail save [檔名]
檔案會放到 web ==> Monitor Mode ==> System ==> Diagnosis ==> AXDebug File ==> 檔名


A10 設定備份檔內容

A10 設定檔備份是包了好多層
[hostname]_backup_system_period_2018-10-31-11-24-52.tar.gz
[hostname]_backup_system_period_2018-10-31-11-24-52.tar
backup_system.tar
.backup_system.tar\a10data\etc\startup-config.pri <== 主要設定檔
.backup_system.tar\a10data\etc\startup-config.sec <== 第二設定檔

註:主要及第二設定檔,會有交換的情形,可以看看存檔時日期來判斷

很多時候需要看到這個檔案哦!

資訊來源: steve 口述

-----------------------------------------------------------------------------------------------------------------------------------

自動備份設定

(config)#backup periodically system hour 24 tftp://192.168.56.100/

手動備份

#backup system tftp://192.168.56.100


設定維修(異常)轉址頁面(Failover)

1. 登入 A10
2. Config Mode => Template => Application => HTTP => Add
3. 打入 Name、Failover URL:=> ok
4. 到 Virtual Server 綁定
 1. Config Mode => SLB => Service => Virtual Server => 點指定的 Virtual Server => Port => Edit => HTTP Template => 選擇在第3點設定 Name => OK
註:要在每一台需要轉址的 VS 設定
5. 測試
 1. 到 Config Mode => SLB => Service => Server => 點指定的 Server => Port => 將 443、80 都設為 Disable
註:這個動作是要模擬內部伺服器故障的情形
 2. 連接該伺服器對外的網址,確認是否有轉到指定頁面
 3. 到 Config Mode => SLB => Service => Server => 點指定的 Server => Port => 將 443、80 都設為 enable
 4. 連接該伺服器對外的網址,確認網頁是否正常

資訊來源: steve 口述


重建 ACL 方式

有些時候必需重新建立所有的 ACL(如 GUI 的 bug 造成所有規則消失),這時就必需重建了,重建流程
1. 取得舊的 ACL 資料。(一般都是直接由 system 備份檔中取出)
2. 使用文字編輯器取出需要的資料加以修改。(一般是找 startup-config.pri 這個檔案,找 access-list )
3. 使用貼上方式執行指令

註:如果要刪除所有的 ACL 規則,必需要在有綁定該 ACL ID 的介面刪除 access-list [ACL ID] in 這個設定

資訊來源: steve 口述


關於 http 與 tcp 的差別

在設定 Virtual Server 中,設定 Virtual Port 有一個項目是 Type,這個項目可選的很多,如 http、https、TCP、UDP………,其中 towns 最常使用的是 https、TCP兩個選項,而這兩個選項的差別是什麼?差別在於 A10 對於封包的解析方式,當 Type 設定 TCP 時,表示 A10 僅作第四層回應,如果選 http 表示,A10 會做第七層回應(也就是可以看到 http header 內容),所以,當 towns 需要 A10 使用 SSL 加解密時,就需要使用 HTTPS,當只是一個通道時,就可以選 TCP

資訊來源: steve 口述


A10 關於 SSL 傳送的兩種模式說明與設定(未完成)

這個兩個做法,常用的是第二種,也就是將 SSL 加密的部分由 A10 處理,而內部則走明碼的方式,這樣的效能會比較好

1. 全程使用 SSL 加密
Client =SSL=> A10 =SSL=> Server
說明:這個方式表示 Client 端到 A10 時,會進行一次解密,A10 到 Server 時會進行一次加密,而 Server 端再進行解密
設定方式:
SLB => Service => Service Group => Server => Add ,指定 Server 及 Port
SLB => Service => Virtual Server => 指定 VS => Port => Add => Type => HTTPS
SLB => Service => Virtual Server => 指定 VS => Port => Add => Service Group
SLB => Service => Virtual Server => 指定 VS => Port => 指定的 Virtual Port => edit => Client-SSL Template、Server-SSL-Template

註:Server-SSL-Template 中有一個設定值 TLS/SSL Version,這個值在官方的預設設定為 TLSv1.0,如果今天要使用到全程加密,而 Server 端關閉了 TLSv1.0 資料傳送,這個會導致 A10 <=> Server 間資料傳遞異常進而看不到網頁,這時請將 TLS/SSL Version 設定為其他值。2.7.2版本目前只支援到 TLSv1.2

2. 半程使用 SSL 加密
Client =SSL=> A10 =80=> Server
說明:這個方式表示 Client 端到 A10 時,會進行一次解密,A10 到 Server 時走明碼傳送
設定方式:
SLB => Service => Virtual Server => 指定 VS => Port => Add => Type => TCP => Port 80
SLB => Service => Service Group => Server => Add ,指定 Server 及 Port 


VCS 管理(未完成)

VCS全名為 ACOS Virtual Chassis Systems (aVCS),主要用於A10 兩台設備(Active 與 Standby)的設定檔同步,下面寫一下操作流程

啟動 VCS
1. 於管理介面打入
#vcs enable

關閉 VCS

 


HA 管理(未完成)

一般來說,如果要維持網站在維設時不斷線,通常在內部會建立兩台相同的前端 server,這時 A10 設備可以幫 towns 管理兩台伺服器的存取,以下會說明如何設定

外部 Client 到內部 Server
外來使用者 => A10 => Server 1(192.168.1.10)、Server 2(192.168.1.11)
1. 伺服器設定
Config Mode => SLB => Service => Server => Add,這裡基本要設定名子、IP 及開放的 Port
2. 服務群組設定
Config Mode => SLB => Service =>

有時,內部也會設定兩台 server 如 rabbitmq、radis等,常會建置 master 及 slave,而內部的其他主機要連接 master 及 slave 並設定 HA,這時也可以使用 A10 來協助

內部 Client 到內部 Server
內部 web server(192.168.2.50) => A10 => rabbitmq-master(192.168.2.10)、rabbitmq-slave(192.168.2.12)
1. 伺服器設定
Config Mode => SLB => Service => Server => Add,這裡基本要設定名子、IP 及開放的 Port
2. 服務群組設定
Config Mode => SLB => Service => Service Group => Add,這裡基本要設定名子、Type 及最重 Server,有那些 Server 要放入這個群組中
3. 虛擬主機設定(VIP設定部分)
Config Mode => SLB => Service => Virtual Server => Add,這裡基本要設定名子、IP及重要的要開放的 Port
Config Mode => SLB => Service => Virtual Server => Port => Add,打入 Type、port 及 Service Group
4. ACL 設定
Config Mode => Security => Network => ACL => Standard =>
access-list 30 permit ip 192.168.2.0 0.0.0.255
5. NAT Pool 設定
Config Mode => NAT => IPv4 Pool => Add,Name、Start IP Address、End IP Address、Netmask
6. Bind VS
Config Mode => SLB => Service => Virtual Server => Port => Source NAT Pool => 選擇第5點的名子

註:內部連線中的設定多了 456 三個步驟,主要是因為同網段的 IP 在送封包時,如果沒有設定 Source NAT ,封包會不知道要送到後段同網段的 Server,造成不通,但不同網段沒有這個需求


ACL 基本概念

ACL 在未設定任何規則時,預設為 block 所有連接

參考資料:
steve 大口述


http、https 健康度檢查

A10是可以做到 http的健康檢查的,不單單只是 ping 主機哦!

health monitor mon_http_khcsw_80 interval 20 timeout 20
 strictly-retry-on-server-error-response
 method http url HEAD /TCC/MonitorUrl.aspx expect response-code 200
!
slb server s_1.2.3.4 1.2.3.4
   no health-check
   port 80  tcp
       health-check mon_http_khcsw_80
!

參考資料:
steve 大口述


網頁轉址

 

參考資料:
官方文件 -- aFleX sample
https://www.a10networks.com/blog/aflex-examples/

某大大的文章
http://k968888.blog.sohu.com/305815106.html 


關於 SSL 設定問題

 


使用 ACL 擋一個特定 IP

1. 建立 acl
access-list 57 4 deny host [IP]
access-list 57 1000 permit any
2. 綁定 VIP


查看連入情形

show session

查看單一 IP 連入情形
show session | include 192.168.56.97

資料來源:
jason 大口述


限制管理介面存取來源

正常來說,管理介面不該所有的 IP 都可以連接,所以需要限制管理介面存取來源

1. 建立 ACL 規則
2. 到 Config Mode => System Settings => Access Control => 於“正確”的 interface 套用 ACL 規則

註1:如何找出正確的 interface,可以到 Config Mode => Network => interface 中查看綁定的資訊,通常可以看到管理介面的 IP 是綁定那個 interface
註2:如何找出正確的 interface,也可以到 Config Mode => VLAN 中查看


關閉不安全的加密演算法

當憑證放在 A10 上面時,在 A10 上面就會出現加密演算法,這時要到 SLB > Template > SSL > Client SSL > SSL Cipher,將已不安全的演算法移除

加密演算法與憑證有間接關系,因為憑證在放入時,需同時將公私鑰放入,而公私鑰正是演算法的內容物,所以,憑證放到哪裡,弱演算法就會出現在哪裡!

參考資料:
August 大口述


Session Presistence 設定

在使用 LoadBalance 後,如果沒有特別設定權重(後端伺服器優先順序),使用者的 Session 將會 Session Presistence,這個主要是要讓 Session 每次送到後端的 server 為同一台,這時如果有部分程式會在使用者使用時產生,才不會造成檔案不存在的問題

設定方式:
Config Mode => SLB => Template => Persistent => Source IP Persistence => add => 打入 Name,其他預設
Config Mode => SLB => Service => 指定 VS name => Port => 指定 Port => Edit => Persistence Template Type: Source IP Persistence Template => Source IP Persistence Template: [Name]

參考資料:
AVI 公司的說明
https://avinetworks.com/glossary/session-persistence/

留言

這個網誌中的熱門文章

zimbra 安裝、管理、設定

Fortigate 100D -- 管理、設定

IT 隨手記6