2012年10月26日 星期五

再論 SNMP OIDs

再論 SNMP OIDs

簡單的網管形式在 Monitor 專線品質時,最常使用的方式有 ping 或 透過 snmp (snmpget or snmpwalk...).以 ping 來說 可透過 smokeping ( http://oss.oetiker.ch/smokeping/ )
將長時間 ping 的結果.劃成類似 MRTG 的圖示.將 RTT的數值 (ping response time) 及 Packet loss的情況分析並製圖.好讓網管人員可以做為網路效能的分析來源依據.或異常的告警.


有些網管軟體是透過 Ping 的結果,作為回報該設備或網路是否異常的通報來源.
如專線使用情況滿載的情況下.Ping是可能會有loss現象.所謂的誤判就是這樣的.
xDSL的電路尤其明顯.RTT值很大並不代表一定有異常.它有可能只是忙線中.
Ping Packet loss 只是暴線引起的,就因為這些不可靠的數據,但網管人員誤以為常常瞬斷.或真的發生障礙問題.





在這時候有經驗的網管人員會配合 snmp 的流量輔助觀察,該狀況的真實情事為何?
以傳統的數專來說,如配合使用 Cisco Router ,可透過 show interface sXXX (Serial Port)

http://www.cisco.com/en/US/docs/ios/12_1/interface/command/reference/irdshoin.html

Router# show interfaces serial1
Serial1 is up, line protocol is up
......
Reliability 255/255, txload 237/255, rxload 1/255
......

or

Router# show interfaces serial 2
Serial2 is up, line protocol is up
..........
MTU 1500 bytes, BW 115 Kbit, DLY 20000 usec, rely 255/255, load 1/255
.........
   
請注意那個關鍵地方 rely 255/255 or Reliability 255/255

http://www.tek-tips.com/faqs.cfm?fid=1310

Cisco: Routers FAQ / Serial Port FAQ
Understanding the SHOW INTERFACE SERIAL stats 

reliablility 255/255

Reliability of the interface as a fraction of 255 (255/255 is 100% reliability), calculated as an exponential average over 5 minutes.


沒錯這個就是 網管軟體 要的可靠性數據來源之一.這個 SNMP OID MIBs 就是網管人員另一個觀察重點.除了 Interface Up / Down 另外就是看這個,當然也可以參考其它的一些狀態.
如 input errors / CRC / collisions /output errors / interface resets等等
經由下面這些網站即可得到 locIfReliab  (local Interface Reliability) 的 MIBs

locIfReliab  1.3.6.1.4.1.9.2.2.1.1.22

http://www.oidview.com/mibs/9/OLD-CISCO-INTERFACES-MIB.html






















  
再透過 snmpwalk 指令配合 snmp oid

ifIndex 1.3.6.1.2.1.2.2.1.1    (Interface Index)
ifIndex 1.3.6.1.2.1.2.2.1.2    (Interface Description)
ifName  1.3.6.1.2.1.31.1.1.1.1 (Interface Name )

就可以得到 Reliability 的數值.如下所示

[root@centos ~]# snmpwalk -Os -c public -v 1 xxx.xxx.xxx.xxx   system
sysDescr.0 = STRING: Cisco Internetwork Operating System Software IOS (tm) C1700 Software (C1700-SY-M), Version 12.2(8)YM, EARLY DEPLOYMENT RELEASE SOFTWARE (fc1) Synched to technology version 12.2(11.2u)TTAC Support: http://www.cisco.com/tac
Copyright (c) 1986-2002 by
sysObjectID.0 = OID: enterprises.9.1.326
sysUpTimeInstance = Timeticks: (4231568608) 489 days, 18:21:26.08
sysContact.0 = STRING:
sysName.0 = STRING: Router
sysLocation.0 = STRING:
sysServices.0 = INTEGER: 78
sysORLastChange.0 = Timeticks: (0) 0:00:00.00

[root@centos ~]# snmpwalk -Os -c public -v 1 xxx.xxx.xxx.xxx 1.3.6.1.2.1.2.2.1.1
ifIndex.1 = INTEGER: 1
ifIndex.2 = INTEGER: 2
ifIndex.3 = INTEGER: 3
ifIndex.5 = INTEGER: 5

[root@centos ~]# snmpwalk -Os -c public -v 1 xxx.xxx.xxx.xxx 1.3.6.1.2.1.2.2.1.2
ifDescr.1 = STRING: FastEthernet0/0
ifDescr.2 = STRING: Serial0/0
ifDescr.3 = STRING: Null0
ifDescr.5 = STRING: Virtual-Access1

[root@centos ~]# snmpwalk -Os -c public -v 1 xxx.xxx.xxx.xxx   1.3.6.1.2.1.31.1.1.1.1
ifName.1 = STRING: Fa0/0
ifName.2 = STRING: Se0/0
ifName.3 = STRING: Nu0
ifName.5 = STRING: Vi1
[root@centos ~]#

[root@centos ~]# snmpwalk -Os -c public -v 1 xxx.xxx.xxx.xxx   1.3.6.1.4.1.9.2.2.1.1.22.2
enterprises.9.2.2.1.1.22.2 = INTEGER: 255

剩下的就簡單了.看是要透過 cacti or zabbix or mrtg or ......反正只要網管軟體有支援 snmp oid mibs 就可以做網管分析圖.也可以定警告值宣告.以減少 ping 的使用量或誤判的情況.
異常分析可簡化為不等於255就是異常.這樣應該是簡單多了吧.

可參考前一篇文章. 利用SNMP OIDs 加入 Zabbix 監控
http://xrcd2.blogspot.tw/2012/10/snmp-oids-zabbix.html

透過這一篇的介紹我想表達的是 網管 與 SNMP 的重要性或關連性.
常見的問題是什麼?透過網管技巧有什麼方式可以簡化人工查修或障礙排除的日常作業.

2012年10月22日 星期一

利用SNMP OIDs 加入 Zabbix 監控


參考 URL

http://www.zabbix.com/documentation/2.0/manual/config/items/itemtypes/snmp/special_mibs






透過Zabbix的官網上的簡介,大致了解Zabbix與SNMP OIDs的基本觀念.

以 linux 來說

透過 snmpwalk 與 snmp OIDs 可以將 eth0 的流量取出

[root@centos63-test ~]# snmpwalk -Os -c public -v 2c localhost  system
sysDescr.0 = STRING: Linux centos63-test 2.6.32-279.5.2.el6.i686 #1 SMP Thu Aug 23 22:16:48 UTC 2012 i686
sysObjectID.0 = OID: netSnmpAgentOIDs.10
sysUpTimeInstance = Timeticks: (2632036) 7:18:40.36
sysContact.0 = STRING: Root <xrcd2@xrcd2.com.tw> (configure /etc/snmp/snmpd.conf)
sysName.0 = STRING: centos63-test
sysLocation.0 = STRING: VMPlayer (edit /etc/snmp/snmpd.conf)
……

[root@centos63-test ~]# snmpwalk -Os -c public -v 2c 127.0.0.1 1.3.6.1.2.1.31.1.1.1.1
ifName.1 = STRING: lo
ifName.2 = STRING: eth0
[root@centos63-test ~]#

[root@centos63-test ~]# snmpwalk -Os -c public -v 2c 127.0.0.1 1.3.6.1.2.1.2.2.1.10
ifInOctets.1 = Counter32: 4597824
ifInOctets.2 = Counter32: 26678631

Inbound  traffic


[root@centos63-test ~]# snmpwalk -Os -c public -v 2c 127.0.0.1 1.3.6.1.2.1.2.2.1.10.2
ifInOctets.2 = Counter32: 27055997

Outbound  traffic


[root@centos63-test ~]# snmpwalk -Os -c public -v 2c 127.0.0.1 1.3.6.1.2.1.2.2.1.16.2
ifOutOctets.2 = Counter32: 17795642
[root@centos63-test ~]#

可參考





































透過 snmp agent 方式,並以 Item的方式加入監控




Zabbix snmp agent  http://www.zabbix.com/
update intervals (in sec) [30]


Zabbix agent
update intervals (in sec) [60]

























cacti  放大圖示




2012年10月7日 星期日

再論 ModSecurity (如何保護 Apache )


前二篇文章我是透過 滲透測試 & 弱點掃描去探討,如何去保護Apache這個議題,
以 Apache 來說,它可以在 Windows(WAMP)及Linux(LAMP)或 BSD等其它 UNIX
平台上運作,當然它只需要有 C compiler 或 gcc compiler 的開發環境,只需取得官
網上的 Tarball(Source Code),自然可以透過 Compiler 、 Make 、 Make install將
ModSecurity(Apache module)安裝於該系統的平台之上,再透過設定  ModSecurity
Config & Rule 即可讓 Apache 得到一定的保護!

相關文章請自行參閱我之前寫的相關文章!
滲透測試 & 弱點掃描 w3af + WAF for Apache (Part 1)
http://xrcd2.blogspot.tw/2012/07/w3af-waf-for-apache.html
滲透測試 & 弱點掃描 w3af + WAF for Apache (Part 2)
http://xrcd2.blogspot.tw/2012/07/modsecurity-waf-for-apache.html

除此之外也可以透過修改 Apache config,啟用一些預設機置去做一些基本的保護.
如在設定檔內設定 ServerTokens Prod 、 ServerSignature Off 、 TraceEnable Off  等等(不顯示相關資本資訊,關閉除錯)

以 CVE-2011-3192  (Apache HTTP Server CVE-2011-3192 Denial Of Service Vulnerability) 為例
http://www.securityfocus.com/bid/49303
參考 http://wiki.apache.org/httpd/CVE-2011-3192 即可得到解法.

Apaache 2.2.x DoS 解法 (httpd.conf)

LoadModule headers_module modules/mod_headers.so
LoadModule rewrite_module modules/mod_rewrite.so
ServerTokens Prod
ServerSignature Off
SetEnvIf Range (?:,.*?){5,5} bad-range=1
RequestHeader unset Range env=bad-range
RequestHeader unset Request-Range
RewriteEngine on
RewriteCond %{HTTP:range} !(^bytes=[^,]+(,[^,]+){0,4}$|^$) [NC]
RewriteRule .* - [F]
RequestHeader unset Request-Range

圖一為某台主機經由 Nessus 找到的 Apache 弱點 (初掃)
圖二為加上  ServerTokens Prod & ServerSignature Off (第一次複掃的弱點)
圖三為啟用  headers_module  & rewrite_module (第二次複掃的弱點)
當然再上以  TraceEnable Off 或 透過
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
圖中的 HTTP Trace/Track Methods Allowed 這個中風險也應該會被排除才是.

WAMP 的使用環境  ModSecurity 可透過安裝 mod_security win32.zip 進行更進階的保護.
Download的URL可參考 http://www.apachelounge.com/download/
LAMP 的使用環境  ModSecurity 可透過安裝 modsecurity-apache_x.x.x.tar.gz 進行更進階的保護.
Download的URL可參考 http://www.modsecurity.org/download/

如果您是 IIS 的使用者 請參考 http://www.modsecurity.org/projects/modsecurity/iis/index.html
http://blogs.technet.com/b/srd/archive/2012/07/26/announcing-the-availability-of-modsecurity-extension-for-iis.aspx
相關內容應該可以得到相關的資訊..
如果您是 LNMP 的使用環境請參考  http://www.modsecurity.org/projects/modsecurity/nginx/index.html

滲透測試
w3af
http://w3af.sourceforge.net/
弱點掃描
dragonsoft ( http://www.dragonsoft.com.tw/ ) or
nessus ( http://www.nessus.org/products/nessus ) or
openvas ( http://www.openvas.org/ )

WAF for Apache  [WAF (Web Application Firewall)]
ModSecurity
http://www.modsecurity.org/
WANP (Windows、Apache、MySQL、PHP)
LAMP (Linux、Apache、MySQL、PHP)
LNMP (Linux、Nginx、MySQL、PHP)