はじめに
Cisco機器のログをCentOS8に同期させる方法を紹介します。rsyslogの設定ファイルの編集、firewallの許可設定、Cisco機器の設定がありますが、1つ1つは大変な作業ではありません。Cisco機器のログが実際にサーバーに書き込まれるまで見ていきたいと思います。
環境設定
今回は以下のような環境を構築したいと思います。
構成図
※Zabbixでログを取得する検証を行ったので、今回はその検証環境を例に、ログの同期の方法をご紹介しします。今回の記事ではZabbixの機能は全く関係ありません。Zabbixに興味がある方は、是非他の記事をどうぞ。 Zabbixの記事一覧→ https://www.ricecake24book.com/category/zabbix/
機器情報
【Zabbix01】OSはCentOS8。繰り返しになりますが、Zabbixはログ同期に必須ではありません。
【PC01】Zabbix01をVMware上で構築しているホストOS。OSはWindows10。
【rt01】監視対象のルーター。機器はCiscoのCisco1921/K9 。
【sw01】監視対象のスイッチ。機器はCiscoのCatalyst2960。
【sw02】監視対象のスイッチ。機器はCiscoのCatalyst2960。
設定手順
以下の手順は、上記の環境でICMP(ping)で疎通ができていることを想定しています。上記環境を作る手順については、別で紹介しています。
rsyslogの設定
まず、rsyslogの設定方法から紹介していきます。
rsyslogの設定はrsyslog.confを編集します。
[root@localhost ~]# vi /etc/rsyslog.conf
編集する箇所は2点です。
まず、以下が初期設定ではコメントアウトされているので、コメントアウトを消去します。
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")
module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")
次に以下の内容を追記します。ログサーバーがログを同期した際にログを格納する場所を、以下のように設定します。
#### RULES ####
# RULES1 rt01のIPとログの格納先を指定。
:fromhost-ip, isequal, "192.168.68.51" -/var/log/zabbix_logtest/rt01
# RULES2 sw01のIPとログの格納先を指定。
:fromhost-ip, isequal, "192.168.60.10" -/var/log/zabbix_logtest/sw01
# RULES1 sw02のIPとログの格納先を指定。
:fromhost-ip, isequal, "192.168.60.20" -/var/log/zabbix_logtest/sw02
今回はZabbix用のログ監視なので、上記のようなファイル作成しています。
今回の指定するログの格納先はデフォルトでは存在しないディレクトリなので、必要に応じて作成します。なお、ログファイル自体は自動で作成されます。
[root@localhost log]# mkdir /var/log/zabbix_logtest
firewallの設定
次にCentOSのfirewallの設定をします。デフォルトではudp(514)は許可されていないので、許可します。
[root@localhost~]# firewall-cmd --permanent --zone=public --add-service=syslog
success
[root@localhost~]# firewall-cmd --reload
success
[root@localhost~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: cockpit dhcpv6-client ssh syslog syslog-tls
ports: 10051/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
「firewall-cmd –list-all」コマンドを実行した時に、「services: cockpit dhcpv6-client ssh syslog syslog-tls」という表示が出てきています。syslogが許可されています。
SELinuxの設定確認
たまにSELinuxが原因でうまくいかないこともあるので、確認しておきます。
root@localhost~]# semanage port -l |grep syslog
syslog_tls_port_t tcp 6514, 10514
syslog_tls_port_t udp 6514, 10514
syslogd_port_t tcp 601, 20514
syslogd_port_t udp 514, 601, 20514
udp(514)は許可されているようなので、問題なさそうです。
rsyslog.serviceを起動する
ログを同期するために必要な設定が最低限できたので、rsyslogを起動させます。
[root@localhost log]# systemctl start rsyslog.service
[root@localhost log]# systemctl status rsyslog.service
● rsyslog.service - System Logging Service
Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-09-29 22:10:10 JST; 13h ago
Docs: man:rsyslogd(8)
https://www.rsyslog.com/doc/
Main PID: 1235 (rsyslogd)
Tasks: 9 (limit: 11332)
Memory: 2.6M
CGroup: /system.slice/rsyslog.service
mq1235 /usr/sbin/rsyslogd -n
Active: active (running)となっているので、rsyslog.serviceが起動しました。
Cisco機器の設定
Cisco側の設定はあまり多くないです。ログ同期について調べると「logging on」というコマンドを実行していないこともありますが、私が検証した時にはlogging onを実行したらうまくいったので、掲載しておきます。
rt01の設定
rt01#configure terminal
rt01(config)#logging 192.168.68.250
rt01(config)#logging trap 6
rt01#copy running-config startup-config
sw01の設定
sw02#configure terminal
sw02(config)#logging 192.168.68.250
sw02(config)#logging trap 6
sw02#copy running-config startup-config
sw02の設定
sw01#configure terminal
sw01(config)#logging 192.168.68.250
sw01(config)#logging trap 6
sw01#copy running-config startup-config
これで必要な設定は終わりです。
ログを発生させてみる
実際にログを発生させて、ログが発生しているか見てみたいと思います。
今回はsw01とsw02の23番ポートをshutdownさせます。
sw02(config)#interface fastEthernet 0/23
sw02(config-if)#shutdown
ログが発生しているかを見ます。
Cisco側のログを見る場合、以下のコマンドを実行します。
sw02#show logging
CentOS側で見る場合、以下のコマンドを実行します。
[root@localhost ~]# tail /var/log/zabbix_testlog_sw02
両方で同じログが見ることが出来ていれば、同期成功です!
その他(補足)
上記の手順でできない場合は、再起動や設定を消して再度実行するなどやってみると、解決することがあります。個々の環境で様々ですが、参考程度に試してみてください。
ログ転送設定の後の話
ログ転送設定が完了すると、当然指定したログファイルにログが追加され続けます。このまま放っておくと、ファイルの容量がじわじわと増え続けます。ディスクの容量を圧迫するほど膨大になることはなくても、ファイル容量が大きくなりすぎると開くだけでも時間がかかるようになります。
ログローテーションさせよう!
過去のログをすぐに消してしまうのは困るけど、ある程度の期間が経過したら削除したい。そんな時はログローテーション設定をして、過去のログを適切に管理しましょう。以下の記事で実際に設定した際の記録を紹介しているので、参考にしてみてください!


