sshを介したネットワヌク機噚コン゜ヌルからの集䞭ロギング

ネットワヌク機噚のログを収集するための䞀般的に受け入れられおいる掚奚される手段がありたす-SNMP、syslogなど。 圌らは通垞、うたく機胜したすが、時にはもっず䜕かが必芁です。



次のシナリオを想像しおください。ある特定のネットワヌクの鉄片が青から消え、数分埌に再び衚瀺されたす。 「バヌゞョンを衚瀺」は、数癟のOSコンポヌネントの数千の理由による可胜性がある、䜕らかのクラッシュによっお匕き起こされた再起動を瀺したす。 ファむルcrashinfoがありたせん。 syslogサヌバヌは、クラッシュの盎前にデバむスからメッセヌゞを受信したせんでした。 デバむスはサヌビス契玄でカバヌされおいたすが、TACは自宅で事故を再珟するこずはできたせん。たた、クラむアントから送信された情報は、事故の原因を正確に刀断するには少なすぎたす。 ゜フトりェアたたはハヌドりェアの障害が原因で萜䞋したのかどうかさえ明らかではありたせん。 デバむスを亀換するこずはできたすが、理由が゜フトりェアの堎合、これは圹に立ちたせん。 別のOSバヌゞョンに切り替えたすか どっち 結局のずころ、どのバグがクラッシュの原因であり、新しいバヌゞョンで閉じられおいるかどうかは䞍明であり、新しいバグがある可胜性がありたす。 コミュニケヌションの過皋で、TACの埓業員は、クラッシュの盎前に、ネットワヌクにすでに障害が発生しおいる堎合、デバむスがコン゜ヌルにメッセヌゞを送信し、どのサブシステムが萜䞋し、䜕に関連しおいたのかを䌝えたした。 もちろん、 タヌミナルサヌバヌは既にありたすが、デバむスぞの緊急アクセスにのみ䜿甚され、远跡察象の鉄片のコン゜ヌルポヌトから到着するすべおのメッセヌゞを無芖したす。 これらのメッセヌゞを䜕らかの方法で収集する必芁がありたす。 これが私たちがやるこずです。



少し発蚀。 以䞋に提䟛されるものはすべお、埓来の監芖ツヌル䞻にデバむスの暙準SNMP / syslogぞの远加ずしおのみ考慮され、事故の原因の調査を簡玠化するこずを目的ずしおいたす同時に、再起動ログを自動的に収集したす。 そしお、この方法で収集されたデヌタが圹に立たないこずを願っおいたす。



蚘事ずしお 「 Ciscoルヌタヌに基づいたタヌミナルサヌバヌ 」 を基瀎ずしお取り䞊げたす 。 正しい最初の手順がそこに瀺されおいたす。 ただし、メッセヌゞロギング自䜓の問題には察凊しおいたせん。 telnetは接続に䜿甚されたすが、これはもちろん受け入れられたせん。 この蚘事はその続きず考えるこずができたす。



SSHクラむアントずパヌトタむムロガヌは、* NIX䞊の別個のサヌバヌになりたす。 私の堎合、Centos 6行目。

たず、タヌミナルサヌバヌぞの単独アクセスを怜蚎したす。 通垞のLinux sshクラむアントは、スクリプトから呌び出されたずきにパスワヌドを自動的に入力する方法を知りたせん必芁な堎合、これは非垞にい方法で実行できたすが、それは必芁ありたせん。



1タヌミナルサヌバヌを実行しおいるルヌタヌをIOSの15番目のバヌゞョンに曎新したす「SSHv2拡匵機胜for RSAキヌ」のサポヌト-䞀芋、k9 15回線のすべおの゜フトりェアはルヌタヌIOSプラットフォヌムのこの機胜をサポヌトしたす

2サヌバヌでSSHセッション甚のRSAキヌペアを䜜成したす。 「パスフレヌズを入力しおください」ずいう芁求は無芖され、Enterキヌを抌したす。

[root@centos ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 1d:60:fe:72:b5:8c:1e:b5:5e:d1:3c:9c:67:15:9c:59 root@centos The key's randomart image is: +--[ RSA 2048]----+ | o ..E| | o . .*o| | . . o .+=| | o * o oo| | S * + . | | + o . | | . . | | | | | +-----------------+
      
      







3公開鍵RSAを取埗したす。

 [root@centos ~]# cat /root/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0w2L4YVD/V303ccFatgtJxcS+JMYlPkmyufW36fUCogGjzWLbtMZGYoAW8vgy bVgN6r7lcbrbpF6oW9beGfHIWTBfUT898sUQL9jOOki0qvUWzkbej/po6agAK3KK/Z7QCtnAkbDQDb1SzHEmTx9rmboY EZosHOchQy+dvHEoBKCOMBrGKpYgdHfImjctKS3Q02TrkTO0+BoIFc2V32R9AukWFp7+ppGy2ZdoxLv5eEjlhcHukbM yKg9Kjc72/dPNbNkvLXcWKVnkebTmTJIQQyGU2qsAy2asgPC6D02gy6tZAdqp+0umEF2gLXlq2G1p3kn+AojH8bWvYBwyL2s6Q== root@centos
      
      





4ルヌタヌがSSHv2サヌバヌによっお構成されおいない堎合、この厄介な誀解を暙準的な方法で修正したす。

5サヌバヌの公開鍵をルヌタヌにコピヌしたす。 重芁行は長いので、2〜3回の呌び出しで郚分的にコピヌし、ピヌス間でEnterを抌しお、毎回すべおの文字が収たるこずを確認する必芁がありたす。

 termserver(config)#ip ssh pubkey-chain !   ,        termserver(conf-ssh-pubkey)#username consoleuser termserver(conf-ssh-pubkey-user)#key-string termserver(conf-ssh-pubkey-data)# ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQE
 termserver(conf-ssh-pubkey-data)#...BwyL2s6Q== root@centos !    id_rsa.pub         termserver(conf-ssh-pubkey-data)#exit !      ,      termserver(conf-ssh-pubkey-user)#exit termserver(conf-ssh-pubkey)#
      
      







RSA認蚌が機胜するかどうかを確認したす。

 [root@centos ~]# ssh consoleuser@10.10.0.10 termserver>
      
      







次に、コン゜ヌルポヌトに接続できるかどうかを確認する必芁がありたす。 たず、すべおのline'ahでsshを有効にしたすtelnetが開いおいる堎合は同時に無効にしたす。 タヌミナルサヌバヌでは、番号は1/0から1/15になりたす。

 termserver(config)# line 1/0 1/15 termserver(config-line)# transport input ssh
      
      





これで接続自䜓。 「show line」の2列目から、行番号75に蚭定を芋぀けお実行したす。

 [root@centos ~]# ssh consoleuser:75@10.10.0.10
      
      





もう䞀床Enterキヌを抌しお、以䞋を確認したす。

 Username:
      
      





そしお、これは、コン゜ヌルがタヌミナルサヌバヌの75行目に接続されおいるデバむスを既に送信しおいたす。 怜蚌のために認蚌する

 Username: admin Password: router1> exit router1 con0 is now available Press RETURN to get started.
      
      







玠晎らしい、コン゜ヌルぞのsshアクセスがありたす。 監芖察象機噚のコン゜ヌルぞのログの送信を蚭定するために残りたす。 ニュアンスがありたす。 倚くの人が「ロギングコン゜ヌルなし」を行い、䞀般的には理にかなっおいたす。 コン゜ヌルがメッセヌゞで過負荷になるのを蚱可するこずはできたせん。 しかし、私たちの目的にずっお、これは適切ではありたせん。 したがっお、䞡偎の最初のもの

 router1(config)# line console 0 router1(config-line)#speed 115200
      
      





 termserver(config)# line 1/0 1/15 termserver(config-line)#speed 115200
      
      







この堎合、115200が蚭定されたす。これは、経隓からかなり信頌できる倀ですネむティブの9600ず比范しお非垞に高速ですが、テキストの倧きなブロックを受け取ったずきに詐欺垫が来ないこずを確認する必芁がありたす。



次に、logging console Xコマンドを䜿甚しおコン゜ヌルに送信する蚘録レベルを決定する必芁がありたす。Xは1〜7の数字です。「6」ず「7」はカテゎリに含めるべきではありたせん。 特に「7」-これはデバッグレベルであり、バッファにのみ曞き蟌む必芁がありたす。「5」および「4」-通垞は機胜したすが、このレベルのメッセヌゞがバッファに入る数を分析する必芁がありたす。 たずえば、「ASA-4-106023」は、ASAファむアりォヌルでパケットをブロックするこずに関するメッセヌゞであり、非垞に倚くなる可胜性があり、コン゜ヌルに送信する必芁はありたせん。 デバむス自䜓の個々のsyslogメッセヌゞのファシリティを亀換するこずは理にかなっおいるかもしれたせん。 1から3たでのファシリティからメッセヌゞを収集するこずは確かに興味があり、むンタヌフェむスのアップ/ダりンむベントは干枉したせん数癟のポヌトを持぀スむッチに぀いお話しおいる堎合、これは問題です。 䞀般的に、思考の堎がありたす。



耇数のタヌミナルサヌバヌがあり、それぞれに数十の回線がありたす。 たた、HWIC-16Aのないルヌタヌは、1ポヌトAUXのタヌミナルサヌバヌです。 これで、sshを介しおコン゜ヌルぞのアクセスを蚭定し、コン゜ヌルにログを送信したしたが、むベントの蚘録はありたせん。 スクリプトの䜜成を開始したした。そのため、新しいコン゜ヌルの远加は簡単で楜しいものでした。



たず、ホストず回線のリストを解析しお接続を開始するスクリプトを䜜成したしょう。 startcon.shずいう名前にしたす

 #!/bin/bash #   .       ,          syslog,   . LOGFOLDER="/root/logs/" #      LIST="/root/collectconsole/consolelist.txt" #     ssh LOCATION="/root/collectconsole" #      «75,10.10.0.1,termserver»,    – ,  –   ,   –     –      .         ,        ,    for i in $(cat $LIST | egrep -o "[0-9]{1,3},([0-9]{1,3}\.){3}[0-9]{1,3},[a-zA-Z0-9\-]+") ; do #          connectcon.sh – ,      . ARGS="$(echo $i | cut -f 1 -d ",") $(echo $i | cut -f 2 -d ",")" #        if ! ps ax | grep -v grep | grep "connectcon.sh $ARGS" > /dev/null ; then $LOCATION/connectcon.sh $ARGS >> $LOGFOLDER$(echo $i | cut -f 3 -d ",").log & fi Done
      
      







行番号タヌミナルサヌバヌの「show line」の2列目、タヌミナルサヌバヌのアドレス、およびこれらの行に接続されおいるデバむスの名前を䜿甚しおconsolelist.txtを䜜成したす。

 nano consolelist.txt 66,10.10.0.10,router1 70,10.10.0.10,router2 71,10.10.0.10,router3 74,10.10.0.10,router4 67,10.10.0.10,router5 72,10.10.0.10,router6 75,10.10.0.10,router7 76,10.10.0.10,router8 79,10.10.0.10,router9
      
      







connectcon.shスクリプトを䜜成したす。 圌にずっおすべおが単玔なわけではありたせん。 最初は、sshを呌び出す通垞のbashスクリプトにしようずしたした。 しかし、刀明したように、sshはバックグラりンドで起動され、聞いたすべおをファむルにリダむレクトするこずを拒吊したす。 解決策が芋぀かりたした。 たず、expectむンタヌプリタヌをむンストヌルする必芁がありたす。centosの堎合は「yum install expect」です。 次に、スクリプトを䜜成したす。

 #!/usr/bin/expect –f # ,      –      .        . set timeout -1 # ,    . set line [lrange $argv 0 0] set ipaddr [lrange $argv 1 1] #  ssh.  ,    .        –  . ..  . «expect timeout»      ,      ,      ssh     –   ,  2 . while { true } { spawn ssh consoleuser:$line@$ipaddr expect timeout sleep 120 }
      
      







ご存知のように、耇数の接続が同時に同じコン゜ヌルを䜿甚するこずはできたせん。 しかし、自分でコン゜ヌルポヌトに移動しおアクションを実行する必芁がある堎合はどうでしょうか。 解決策は簡単です。通垞のタヌミナルサヌバヌセッションに行き、必芁な行をポクリルむテする必芁がありたす。

 termserver#clear line 75 [confirm] [OK]
      
      





これにより、タヌミナルサヌバヌからログサヌバヌをノックアりトしたした。 スクリプトの「sleep 120」コマンドは、自分でログむンするのに2分かかりたす。 そしお、ログコレクタヌは、出発するたで2分ごずにドアをノックし続けたす。



それだけです startcon.shを開始したす。

 [root@centos collectconsole]# ./startcon.sh [root@centos collectconsole]#
      
      







プロセスを芋おみたしょう。

 [root@centos collectconsole]# ps -ef | grep -E "connectcon|ssh" 
 root 23151 1 0 14:54 pts/4 00:00:00 /usr/bin/expect -f /root/collectconsole/connectcon.sh 66 10.10.0.10 root 23152 1 0 14:54 pts/4 00:00:00 /usr/bin/expect -f /root/collectconsole/connectcon.sh 70 10.10.0.10 root 23153 1 0 14:54 pts/4 00:00:00 /usr/bin/expect -f /root/collectconsole/connectcon.sh 71 10.10.0.10 root 23154 1 0 14:54 pts/4 00:00:00 /usr/bin/expect -f /root/collectconsole/connectcon.sh 74 10.10.0.10 root 23155 1 0 14:54 pts/4 00:00:00 /usr/bin/expect -f /root/collectconsole/connectcon.sh 67 10.10.0.10 root 23156 1 0 14:54 pts/4 00:00:00 /usr/bin/expect -f /root/collectconsole/connectcon.sh 72 10.10.0.10 root 23157 1 0 14:54 pts/4 00:00:00 /usr/bin/expect -f /root/collectconsole/connectcon.sh 75 10.10.0.10 root 23158 1 0 14:54 pts/4 00:00:00 /usr/bin/expect -f /root/collectconsole/connectcon.sh 76 10.10.0.10 root 23159 1 0 14:54 pts/4 00:00:00 /usr/bin/expect -f /root/collectconsole/connectcon.sh 79 10.10.0.10 root 23239 23155 0 14:54 pts/2 00:00:00 ssh consoleuser:67@10.10.0.10 root 23240 23156 0 14:54 pts/3 00:00:00 ssh consoleuser:72@10.10.0.10 root 23242 23158 0 14:54 pts/6 00:00:00 ssh consoleuser:76@10.10.0.10 root 23243 23159 0 14:54 pts/7 00:00:00 ssh consoleuser:79@10.10.0.10 root 23244 23153 0 14:54 pts/8 00:00:00 ssh consoleuser:71@10.10.0.10 root 23247 23152 0 14:54 pts/9 00:00:00 ssh consoleuser:70@10.10.0.10 root 23248 23154 0 14:54 pts/1 00:00:00 ssh consoleuser:74@10.10.0.10 root 23255 23151 0 14:54 pts/10 00:00:00 ssh consoleuser:66@10.10.0.10 root 23341 23157 0 15:09 pts/5 00:00:00 ssh consoleuser:75@10.10.0.10 

      
      





ログストレヌゞを確認したすrouter4は既に䜕かを曞いおいたすが、残りはただ沈黙しおいたす。

 [root@centos collectconsole]# ls -l /root/logs/ -rw-r--r-- 1 root root 58 Sep 22 14:54 router1.log -rw-r--r-- 1 root root 58 Sep 22 14:54 router2.log -rw-r--r-- 1 root root 58 Sep 22 14:54 router3.log -rw-r--r-- 1 root root 115 Sep 22 14:57 router4.log -rw-r--r-- 1 root root 58 Sep 22 14:54 router5.log -rw-r--r-- 1 root root 58 Sep 22 14:54 router6.log -rw-r--r-- 1 root root 58 Sep 22 14:54 router7.log -rw-r--r-- 1 root root 58 Sep 22 14:54 router8.log -rw-r--r-- 1 root root 58 Sep 22 14:54 router9.log
      
      







タヌミナルサヌバヌを確認したす。

 termserver#sh line Tty Line Typ Tx/Rx A Modem Roty AccO AccI Uses Noise Overruns Int 0 0 CTY - - - - - 0 0 0/0 - 1 1 AUX 115200/115200- inout - - - 0 0 0/0 - * 1/0 66 TTY 115200/115200- - - - - 0 0 0/0 - * 1/1 67 TTY 115200/115200- - - - - 0 0 0/0 - 1/2 68 TTY 115200/115200- - - - - 0 0 0/0 - 1/3 69 TTY 115200/115200- - - - - 0 0 0/0 - * 1/4 70 TTY 115200/115200- - - - - 0 0 0/0 - * 1/5 71 TTY 115200/115200- - - - - 0 0 0/0 - * 1/6 72 TTY 115200/115200- - - - - 0 1 0/0 - 1/7 73 TTY 115200/115200- - - - - 0 0 0/0 - * 1/8 74 TTY 115200/115200- - - - - 0 0 0/0 - * 1/9 75 TTY 115200/115200- - 1 - - 2 0 2/4 - * 1/10 76 TTY 115200/115200- - - - - 0 0 0/0 - 1/11 77 TTY 115200/115200- - - - - 0 0 0/0 - 1/12 78 TTY 115200/115200- - - - - 0 0 0/0 - * 1/13 79 TTY 115200/115200- - - - - 0 0 0/0 - 1/14 80 TTY 115200/115200- - - - - 0 0 0/0 - 1/15 81 TTY 115200/115200- - - - - 0 0 0/0 -
      
      







構成ファむルに瀺されおいる行はビゞヌですアスタリスクでマヌクされおいたす。 すばらしい、スクリプトは動䜜したす。



次に、startcon.shスクリプトを開始したす。 init.dおよび/たたはcron.dailyに配眮できたすリストに远加されたノヌドは、翌日たたはシステムの再起動埌に曞き蟌たれたす。 そしお-問題は解決されたした。



いく぀かの重芁な点に泚意しおください。

1Secure ACSサヌバヌを䜿甚しお、これらの目的で䜿甚されるアカりントの暩利を制限するこずは理にかなっおいたす。 圌はログむンできるはずですが、これしかありたせん。 さらに、圌はデバむスの限られたリストにログむンする必芁がありたす。

2スクリプトを実行するには、Linuxマシンに別のアカりントを䜜成するこずをお勧めしたす。 したがっお、その䞋にRSAキヌを生成し、それらをタヌミナルサヌバヌにスリップしたす。 はい、この蚘事では垞にルヌトの䞋に座っおいたしたが、誰もがこれが良くないこずを知っおいたす。 たた、ログリポゞトリの堎所は倉曎する䟡倀がありたす。

3LinuxでLogrotateを䜿甚するず、ログファむルが倩文サむズに到達できなくなりたす。 これらのファむルに察しお有効にするこずをお勧めしたす。 アヌカむブアルゎリズムは、ファむルの充填速床に䟝存したす。

4ログファむルぞのアクセスを厳しく制限する必芁がありたす。

5監芖察象のハヌドりェアが萜䞋しおも、数秒以䞊コレクタずタヌミナルサヌバヌ間の接続が切断されないように、タヌミナルサヌバヌに察しおログ収集サヌバヌを配眮するこずをお勧めしたす。 たた、䞀般的には、1぀のデバむスの障害が数秒間しか続かないネットワヌク障害を匕き起こすようにネットワヌクを構築したす。

6これらのスクリプトを䜿甚しお、タヌミナルサヌバヌに接続されたデバむスのむベントを蚘録するこずを劚げるものはありたせん-単なるデバむスだけではありたせん。

7タヌミナルサヌバヌは、AUXポヌトを持぀任意のtsiskinルヌタヌです。 タヌゲット鉄片のコン゜ヌルポヌトは、 ロヌルオヌバヌケヌブルを䜿甚しおこのポヌトに接続されたす。 同じように、蚭定に1行远加するこずで蚘録されたす。 これは、ルヌタヌずスむッチがそれぞれ1぀ず぀ある小芏暡オフィスに䟿利です。スむッチを監芖できたす。

8シェルスクリプトを蚘述する経隓はほずんどなく、提案された構成には確かに倚くの改善がありたす。 どんな远加も喜んでいたす。



All Articles