站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

Syslog-架設 Log 伺服器

最後編輯

修改:

< [http://www.freebsd.org/cgi/man.cgi?query=syslogd&apropos=0&sektion=8&manpath=FreeBSD+7.2-RELEASE&format=html Syslogd] 為內建於 FreeBSD 內的 Log 服務,預設情況下只收集 (產生) 本機的 Log,本次實作為設定 [http://www.freebsd.org/cgi/man.cgi?query=syslogd&apropos=0&sektion=8&manpath=FreeBSD+7.2-RELEASE&format=html Syslogd] 成為 Log Server 收集網路設備所吐出來的 Syslog。

> [http://www.freebsd.org/cgi/man.cgi?query=syslogd&apropos=0&sektion=8&manpath=FreeBSD+8.2-RELEASE&arch=default&format=html Syslogd] 為內建於 FreeBSD 內的 Log 服務,預設情況下只收集 (產生) 本機的 Log,本次實作為設定 [http://www.freebsd.org/cgi/man.cgi?query=syslogd&apropos=0&sektion=8&manpath=FreeBSD+8.2-RELEASE&arch=default&format=html Syslogd] 成為 Log Server 收集網路設備所吐出來的 Syslog。

修改:

< * FreeBSD 7.2-RELEASE-p2

> * FreeBSD 8.2-RELEASE-p4

修改:

< [[image:http://lh4.ggpht.com/_GTuTuBNvS8s/Sl2IuDZSnSI/AAAAAAAAeWk/mP6QQM6Ud4k/s128/syslog1.jpg|Juniper SSG20 啟用 Syslog 功能|http://picasaweb.google.com/weithenn/FreeBSD#5358589456407502114]]

> [[image:http://lh4.ggpht.com/_GTuTuBNvS8s/Sl2IuDZSnSI/AAAAAAAAeWk/mP6QQM6Ud4k/s220/syslog1.jpg|Juniper SSG20 啟用 Syslog 功能|http://picasaweb.google.com/weithenn/FreeBSD#5358589456407502114]]

修改:

< 修改主機設定檔 /etc/hosts 以便後續收集的 Log Client 視別之用。

> 修改主機設定檔 /etc/hosts 以便後續收集的 Log Client 視別之用,此名稱等一下會使用於 /etc/syslog.conf 設定檔內。

修改:

< 修改 Log 設定檔 /etc/syslog.conf 指定屆時收集到 Log Client 傳送過來的 syslog 內容應存放於何處,在開始修改已經先了解一下簡單觀念如下,詳細內容可參考站內文章 [[syslog.conf]] 或 [http://www.freebsd.org/cgi/man.cgi?query=syslog.conf&apropos=0&sektion=0&manpath=FreeBSD+7.2-RELEASE&format=html FreeBSD Man Pages - syslog.conf]
< * +[Hostname]: 指定此 Host 傳送過來的訊息 '''採用''' 下列方式處理並指定存放處。
< * -[Hostname]: 指定除了此 Host 傳送過來的訊息 '''不採用''' 下列方式處理並指定存放處。

> 修改 Log 設定檔 /etc/syslog.conf 指定屆時收集到 Log Client 傳送過來的 syslog 內容應存放於何處,詳細內容可參考站內文章 [[syslog.conf]] 或 [http://www.freebsd.org/cgi/man.cgi?query=syslog.conf&apropos=0&sektion=0&manpath=FreeBSD+8.2-RELEASE&arch=default&format=html FreeBSD Man Pages - syslog.conf],以下為說明相關用法:
> * +[Hostname]: 指定此 Host 或設備傳送過來的 Log 訊息 '''採用''' 下列方式處理並指定存放處。
> * -[Hostname]: 指定除了此 Host 傳送過來的 Log 訊息 '''不採用''' 下列方式處理並指定存放處。

增加:

> * +*: 所有設備的 Log 也存放至指定檔案中,當環境有多台主機時希望能將所有設備 Log 分開存放之外,也同時存放在同一個檔案中時便可使用此語法。
> * 請勿使用 _ 命名: Log 命名請勿使用 '''底線(_)''' 命名,因此屆時 Log 將無法寫入該檔案中 (可以使用 '''減號(-)''' 代替)。

修改:

< * -a 192.168.1.0/24:514 192.168.2.0/24:514: 接收 192.168.1.x、192.168.2.x 網段 Log Client 傳送過來的 syslog (Client 來源 Port 為 514)

> * -a 0/0:*: 接收所有網段 Log Client 傳送過來的 syslog (多網段需求時則此處全開配合使用防火牆進行限制)


前言

[Syslogd] 為內建於 FreeBSD 內的 Log 服務,預設情況下只收集 (產生) 本機的 Log,本次實作為設定 [Syslogd] 成為 Log Server 收集網路設備所吐出來的 Syslog。

實作環境

安裝及設定

本次實作的相關網路環境及設定資訊如下所示

Log Client (Juniper SSG20)

步驟1.啟用 Syslog 功能

請啟用 Log Client (Juniper SSG20) Syslog 功能,步驟如下:

  1. 登入 Juniper SSG20
  2. 點選【Configuration】 >> 點選【Report Settings】 >> 點選【Syslog】
    1. 勾選【Enable syslog messages】項目
    2. 填入 syslog server 相關資訊【IP / Hostname...etc】 (如下圖所示)
    3. 相關資訊填妥後按下【Apply】
  3. 完成 Log Client (Juniper SSG20) Syslog 設定

Juniper SSG20 啟用 Syslog 功能

Log Server (FreeBSD)

步驟1.修改主機設定檔 (/etc/hosts)

修改主機設定檔 /etc/hosts 以便後續收集的 Log Client 視別之用,此名稱等一下會使用於 /etc/syslog.conf 設定檔內。

 #vi /etc/hosts
 192.168.1.20            ssg20 ssg20.weithenn.org       //加入此行

測試 Log Server 是否可視別該主機名稱 (Log Client) Hostname

 #ping ssg20
 PING ssg20 (192.168.1.20): 56 data bytes
 64 bytes from 192.168.1.20: icmp_seq=0 ttl=64 time=2.711 ms
 64 bytes from 192.168.1.20: icmp_seq=1 ttl=64 time=1.438 ms
 ^C
 --- ssg20 ping statistics ---
 2 packets transmitted, 2 packets received, 0.0% packet loss
 round-trip min/avg/max/stddev = 1.438/2.075/2.711/0.637 ms

步驟2.修改 Log 設定檔 (/etc/syslog.conf)

修改 Log 設定檔 /etc/syslog.conf 指定屆時收集到 Log Client 傳送過來的 syslog 內容應存放於何處,詳細內容可參考站內文章 syslog.conf[FreeBSD Man Pages - syslog.conf],以下為說明相關用法:

所以修改後的 /etc/syslog.conf 內容如下

 #vi /etc/syslog.conf
 ### For Juniper SSG20 Log                                                           //註解文字
 +ssg20                                                                              //Hostname ssg20 傳送過來的 syslog 採用下列方式處理並指定存放處
 *.*                                             /var/log/ssg20.log                  //接收所有 log 並存放於 /var/log/ssg20.log
 ### For FreeBSD Localhost                                                           //註解文字
 +@                                                                                  //Localhost 產生的 syslog 採用下列方式處理並指定存放處
 *.err;kern.warning;auth.notice;mail.crit                /dev/console
 *.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err   /var/log/messages
 ...略...

步驟3.修改主機服務設定檔 (/etc/rc.conf)

修改主機服務設定檔 /etc/rc.conf,在 FreeBSD 上 Syslogd 預設就會啟動但啟動的 Syslogd 服務是有加上參數 -s (僅處理本機 Log 部份,不能成為 Log Server),因此我們可以透過加上參數 -a 及 IP 網段來此 Syslogd 成為 Log Server,詳細內容可參考 [FreeBSD Man Pages - syslogd]

參數 -a 運用說明: (請注意指定的 Port Number 為 Log Client 來源埠號)

因為此次接收的 Log Client 為 Juniper SSG20 無法指定其傳送 Port Number,因此在指定 Log Client 來源埠號時設定為星號 (*)

 #vi /etc/rc.conf
 syslogd_flags="-a 192.168.1.0/24:*"                   //加入此行

步驟4.建立 syslog 空檔 (/var/log/ssg20.log)

在剛才步驟 2 修改 Log 設定檔 /etc/syslog.conf 中我們指定存放 Syslog 的檔案路徑為 /var/log/ssg20.log,因此在重新啟動 Syslogd 服務以前請先建立此一空檔案,以便屆時將接收到的 Syslog 資訊寫入該檔案內。

 #touch /var/log/ssg20.log

建立完成後請重新啟動 Syslogd 服務

 #/etc/rc.d/syslogd restart

重新啟動 Syslogd 服務完成後檢查一下執行序內容是否已經如上述設定允許指定的網段傳送 Syslog 進來

 #ps aux |grep syslogd
 root       651  0.0  0.1  3184  1232  ??  Ss   一02下午   0:00.36 /usr/sbin/syslogd -s                     //預設值 (尚未重新啟動服務前)
 root     33304  0.0  0.1  3184  1224  ??  Ss    3:58下午   0:00.00 /usr/sbin/syslogd -a 192.168.1.0/24     //修改後 (重新啟動服務後)

步驟5.檢查是否接收到 Log Client 傳送過來的 Syslog

您可使用下列指令來檢查是否接收到 Log Client 傳送過來的 Syslog 訊息,由下列訊息可知 Log Client 透過 Port 21918 傳送 Syslog 訊息給 Log Server Port 514。

 #tcpdump -tlni em0 port 514
 IP 192.168.1.20.21918 > 192.168.1.10.514: SYSLOG local0.notice, length: 431    //可知 Log Client 來源 Port 為 21918
 IP 192.168.1.20.21918 > 192.168.1.10.514: SYSLOG local0.notice, length: 431
 IP 192.168.1.20.21918 > 192.168.1.10.514: SYSLOG local0.notice, length: 432
 ...略...

參考

[FreeBSD Handbook - 11.10.3 Log File Configuration]

[FreeBSD Man Pages - syslog.conf]

[FreeBSD Man Pages - syslogd]

[SSG20 Secure Services Gateway - Small Office Network Security Platform - Juniper Networks]

[Juniper Networks : Customer Support Center : SSG 20 Secure Services Gateway]

[Configuring a Netscreen Firewall for Syslog Server Support]

[NetScreen Configuration]

[SecurityFocus - Tools]

[伊凡斯: Alteon 2424 將 Syslog 送到 FreeBSD Syslogd Server HowTo]

[用 FreeBSD 建置集中式 Syslog Server]

[creating a syslog server - Dev Shed]

[Remote syslog question router to freebsd - Dev Shed]

[小紅帽技術論壇 - 關於 FreeBSD 的 logfile 說明..]

[Setup a Syslog Server]

[酷!學園 - syslogd server 做法 (教學)]

[酷!學園 - Syslog Server的問題請教]

[酷!學園 - 請問在FreeBSD 上如何設定成為Syslog Client?]

[酷!學園 - 請問freebsd syslogd remote logging 的設定]

Me FAQ

Q1.指定的 Syslog Log 檔案沒任何內容寫入?

Error Meaage:

Log Client 及 Log Server 皆設定完成後使用 tcpdump 指令也看到 Log Client 傳送 Syslog 訊息過來,但為何指定的 Log 檔案 (/var/log/ssg20.log) 內沒有任何內容寫入?

 #tcpdump -tlni em0 port 514
 IP 192.168.1.20.21918 > 192.168.1.10.514: SYSLOG local0.notice, length: 431    //可知 Log Client 來源 Port 為 21918
 IP 192.168.1.20.21918 > 192.168.1.10.514: SYSLOG local0.notice, length: 431
 IP 192.168.1.20.21918 > 192.168.1.10.514: SYSLOG local0.notice, length: 432
 ...略...

Ans:

原因在於 Log Client (Juniper SSG20) 用來傳送 Syslog 訊息的 Port 為隨機 (Random),因此在指定接收 Log Client 網段及 Port 時必須填入星號 (*) 而不是 Port 514。

參數 -a 運用說明: (請注意指定的 Port Number 為 Log Client 來源埠號)

 #vi /etc/rc.conf
 syslogd_flags="-a 192.168.1.0/24:*"                   //加入此行
Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com