天天看點

RHCE學習<9>Rsync備份同步、NTP和Rsyslog日志管理

一、rsync備份與同步

RHCE學習<9>Rsync備份同步、NTP和Rsyslog日志管理

rsync(remote sync) 是一個unix/linux系統下的檔案同步和傳輸工具。rsync通過“rsync算法”提供了一個客戶機和遠端檔案伺服器的檔案同步的快速方法。每次隻傳送兩個檔案的不同部分(即支援增量備份),而不是每次都整份傳送。

在遠端同步任務中,負責發起rsync同步操作的客戶機稱為發起端,而負責響應來自客機的rsync同步操作的伺服器稱為備份源。

1、rsync工具的特點

能更新整個目錄樹和檔案系統;

有選擇性的保持符号鍊鍊、硬連結、檔案屬性、權限、裝置以及時間等;

傳輸前執行壓縮,是以非常适用于異地備份、鏡像伺服器等應用;

能用rsh、ssh 或直接端口做為傳輸端口;

支援匿名rsync 同步檔案,是理想的鏡像工具;

格式:rsync 【選項】 源檔案 目标檔案

常用選項:

-a:--archive 歸檔模式,表示以遞歸的方式傳輸檔案,并且保持檔案屬性,等同于-rlptgod

-r:-recursive 對子目錄以遞歸模式處理

-v:顯示同步過程的詳細資訊

-z:--compress 表示壓縮傳輸

--delete:删除那些目标位置有而原始位置沒有的檔案

-h :表示硬連接配接檔案

-l:--links 表示拷貝連結檔案

-p :--perms 表示保持檔案原有權限

-t:--times 表示保持檔案原有時間

-g :--group 表示保持檔案原有屬使用者組

-o :--owner 表示保持檔案原有屬主

-d :--devices 表示塊裝置檔案資訊

-a :保留acl屬性資訊

-p :顯示傳輸進度

-u :--update 僅僅進行更新,跳過所有已經存在于目标位置,并且檔案時間晚于要備份的檔案。

--port= :指定其他的rsync服務端口

--password-file= :指定密碼檔案擷取使用者密碼,隻能在rsync運作使用

2、基于ssh遠端備份

1>.ssh本地下行同步到客戶機(必須安裝openssh-clients)

使用ssh協定的好處是能夠基于更安全的遠端連接配接,增強備份的保密性。

實驗:将/var/www/html目錄下檔案下行同步到客戶機192.168.0.200中/web下,也可以是本地,保持檔案權限和屬性、軟/硬連結、acl屬性、删除/web目錄中多餘的檔案,并在傳輸過程中進行壓縮。

1

2

3

4

<code>useradd</code> <code>rsync</code>

<code>password </code><code>rsync</code>

<code>mkdir</code> <code>/backup</code>

<code>rsync</code> <code>-arzvh --delete </code><code>rsync</code><code>@192.168.0.200:</code><code>/var/www/html//web/</code>

2&gt;.ssh上行同步到伺服器

實驗:将客戶機/opt/web目錄下檔案上傳同步到192.168.0.202伺服器/var/www/html下

rsync -rzvl /opt/web --delete [email protected]:/var/www/html

對于設定任務計劃的同步的話,為了解決互動式密碼登陸,需要配置密鑰對,實作無密碼登陸。

在客戶機上建立密鑰對

5

6

7

8

9

10

11

12

13

14

15

16

<code>ssh</code><code>-keygen -t rsa </code><code>#一直回車</code>

<code>ssh</code><code>-copy-</code><code>id</code> <code>rsync</code><code>@192.168.0.200  </code><code>#将公鑰分發給伺服器</code>

<code>sshr </code><code>sync</code><code>@192.168.0.200  </code><code>#現在就可以無密碼登陸了,成功實作免互動自動登入</code>

<code>vi</code> <code>/root/rsync_web</code><code>.sh </code><code>#寫一個腳本,建立任務計劃</code>

<code>#!/bin/bash</code>

<code>cmd=</code><code>"/usr/bin/rsync"</code>

<code>rsync_user=</code><code>"rsync"</code>

<code>args=</code><code>"-az --delete"</code>

<code>src=</code><code>"192.168.0.200:/var/www/html"</code>

<code>dst=</code><code>"/web"</code>

<code>mkdir</code><code>-p $dst</code>

<code>$cmd $args $rsync_user@src $dst</code>

<code>儲存退出!</code>

<code>chmod</code> <code>700 </code><code>/root/rsync_web</code><code>.sh</code>

<code>crontab</code> <code>-e</code>

<code>00 23 * * * </code><code>/root/rsync_web</code><code>.sh</code>

3、基于rsync程序備份同步

rsync不僅僅用作遠端同步的發起端(用戶端),也可以作為守護程序運作,為其他客戶機提供備份源,配置rsync備份源需要建立配置檔案 rsync.conf,建立備份賬戶,然後将rsync程式以”--daemon”選項運作。

1&gt;.建立主配置檔案

17

<code>vi</code> <code>/etc/rsyncd</code><code>.conf</code>

<code>uid=nobody  </code><code>#指定當該子產品傳輸檔案時守護程序使用者,預設是nobody</code>

<code>gid=nobody </code><code>#指定當該子產品傳輸檔案時守護程序組,預設是nobody</code>

<code>port=873  </code><code>#背景程式使用端口,預設是873</code>

<code>use chroot=</code><code>yes</code>

<code>max connections=4  </code><code>#最大連接配接數</code>

<code>log </code><code>file</code><code>=</code><code>/var/log/rsyncd</code><code>.log  </code><code>#存放日志位置</code>

<code>pid </code><code>file</code><code>=</code><code>/var/run/rsyncd</code><code>.pid  </code><code>#存放程序位置</code>

<code>hosts allow=192.168.0.200,192.168.0.201  </code><code>#允許主機,或者是網段</code>

<code>hosts deny=0.0.0.0</code><code>/0</code><code>#禁止主機,沒有這行,預設沒有</code>

<code>[web]</code>

<code>path=</code><code>/var/www/html</code>

<code>comment=rsyncto web www.</code><code>test</code><code>.com</code>

<code>read</code> <code>only=</code><code>yes</code><code>#隻允許下載下傳,no是允許下載下傳和上傳,上傳建議使用ssh</code>

<code>dont compress=*.gz *.bz2 *.tgz *.zip *.</code><code>tar</code><code>*.z</code>

<code>auth </code><code>users</code><code>=</code><code>rsync</code><code>#認證的使用者名,沒有這兩行表示是匿名,此使用者與系統使用者無關</code>

<code>secrets </code><code>file</code><code>=</code><code>/etc/rsync</code><code>.pass  </code><code>#密碼和使用者名對比表,密碼檔案自己建立</code>

注意:該檔案的權限一定要是600,否則用戶端将不能連接配接伺服器。

2&gt;.建立認證使用者、密碼和啟動

<code>vi</code> <code>/etc/rsync</code><code>.pass</code>

<code>rsync</code><code>:123.com</code>

<code>rsync</code><code>--daemon </code><code>#啟動rsync服務</code>

<code>killall -9 </code><code>rsync</code><code>#關閉rsync服務</code>

<code>echo</code><code>“</code><code>rsync</code> <code>--daemon” &gt;&gt; </code><code>/etc/rc</code><code>.</code><code>local</code><code>#設定開機啟動</code>

<code>iptables -a input -p tcp --dport 873 -j accept  </code><code>#設定防火牆</code>

3&gt;.将rsync服務交給xinetd服務管理,隻有rsync請求,rsync才啟用,其他時間關閉狀态

<code>vi</code> <code>/etc/xinetd</code><code>.d</code><code>/rsync</code>

<code>service </code><code>rsync</code>

<code>{</code>

<code>disable = </code><code>yes</code><code>#修改為yes</code>

<code>socket_type     = stream</code>

<code>wait            = no</code>

<code>user            = root</code>

<code>server          = </code><code>/usr/bin/rsync</code>

<code>server_args     = --daemon</code>

<code>log_on_failure  += userid</code>

<code>}</code>

4&gt;.客戶機下行同步

<code>rsync</code> <code>-avz [email protected]::</code><code>/var/www/html//web</code><code>#下行格式是這樣,再加一個冒号</code>

實作無互動驗證,我們可以使用rsync_password變量來存放密碼,執行rsync時,會自動擷取密碼

<code>echo</code> <code>"export rsync_password="</code><code>123.com</code><code>""</code><code>&gt;&gt; </code><code>/etc/profile</code>

<code>rsync</code> <code>-avz --delete rysnc:</code><code>//rsync</code><code>@192.168.0.200</code><code>/var/www/html//web</code><code>#這個指令格式和上面是一樣效果</code>

寫一個腳本,建立任務計劃,同上,略...

二、管理系統服務

1、chkconfig指令使用

chkconfig --list httpd #檢視httpd服務啟動狀态

chkconfig --level 級别清單 服務名 on|off

chkconfig --level 35 httpd on #設定httpd在3、5運作級别開機自動啟動

/etc/init.d -&gt; /etc/rc.d/init.d #服務腳本位置,連結到rc.d下

2、ntsysv系統服務管理工具

當設定單個服務啟動時,使用chkconfig更有效率,設定多個服務啟動時,使用ntsysv工具比較适合

啟動和停止服務腳本:service httpd start|stop|restart|reload|status或/etc/init.d/httpd start

RHCE學習&lt;9&gt;Rsync備份同步、NTP和Rsyslog日志管理

三、日志管理

作業系統的日志主要具有審計與監測的功能,通過對日志資訊的分析,可以檢查錯誤發生的原因,監測追蹤入侵者及受到攻擊時留下的痕迹,甚至還能實時的進行系統狀态的監控。有效利用日志資訊并對其進行分析與實時的監控管理,對于系統的安全性具有極為重要的作用;日志檔案所處的位置都在/var/log目錄下。

1、rsyslog主配置

<code>grep</code> <code>-</code><code>v</code> <code>"^#"</code> <code>/etc/rsyslog</code><code>.conf |</code><code>grep</code> <code>-</code><code>v</code> <code>"^$"</code>  <code>#篩選掉注釋和空行</code>

<code>$modload imuxsock </code><code># provides support for local system logging (e.g. via logger command)</code>

<code>$modload imklog   </code><code># provides kernel logging support (previously done by rklogd)</code>

<code>$actionfiledefaulttemplate rsyslog_traditionalfileformat</code>

<code>$includeconfig </code><code>/etc/rsyslog</code><code>.d/*.conf</code>

<code>*.info;mail.none;authpriv.none;</code><code>cron</code><code>.none     </code><code>/var/log/messages</code>  <code>#核心及應用程式公共消息日志</code>

<code>authpriv.*                                   </code><code>/var/log/secure</code> <code>#系統安全日志     </code>

<code>mail.*                                       </code><code>/var/log/maillog</code>   <code>#電子郵件系統的功能</code>

<code>cron</code><code>.*                                       </code><code>/var/log/cron</code>  <code>#計劃任務相關的日志</code>

<code>*.emerg                                           *         </code><code>#syslog對日志所設定的級别</code>

<code>uucp,news.crit                               </code><code>/var/log/spooler</code>

<code>#syslog對news和uucp的日志所設定的級别,crit表示危急,但事故還沒有發生,将要發生。news 是新聞討論區伺服器的;uucp全稱是unix-to-unix copy protocol的資訊</code>

<code>local7.*                                     </code><code>/var/log/boot</code><code>.log  </code><code>#開機系統日志</code>

2、日志級别,由高到低

emerg:系統已經不可用,級别為緊急

alert:警報,需要立即處理和解決

crit:既将發生,得需要預防。事件就要發生

warnig:警告。

error:錯誤資訊,普通的錯誤資訊

notice:提醒資訊,很重要的資訊

info:通知資訊,屬于一般資訊

debug:這是調試類資訊

3、日志管理兩種方法

方法1:比較常用,适合幾台主機,不同伺服器的日志資訊都存放在各自系統内,系統管理者對各伺服器進行分散管理。

方法2:适合多台主機,則是使用日志主機系統,即集中進行日志的存儲和管理;這是一個從其他主機收集日志,并将它們存放在同一個地方的系統,很容易使來自多個主機的日志條目關聯起來,對其進行統一管理、分析,甚至配合自動化工具進行實時的監控,有效提高管理的效率。

1&gt;.liunx系統日志集中存儲,将a主機的系統日志存儲到b主機(日志主機)上

a主機:ip:192.168.0.1/24

b主機:ip:192.168.0.2/24

b主機配置:(日志主機)

<code>vi</code> <code>/etc/sysconfig/rsyslog</code>  <code>#修改如下</code>

<code>syslogd_options=</code><code>"-r -c 2"</code>

<code>vi</code> <code>/etc/rsyslog</code><code>.conf  </code><code>#去掉注釋13、14、17、18</code>

<code>$modload imudp</code>

<code>$udpserverrun 514</code>

<code>$modload imtcp</code>

<code>$inputtcpserverrun 514</code>

<code>service rsyslog restart  </code><code>#重新開機rsyslog</code>

<code>netstat</code> <code>-tupln | </code><code>grep</code> <code>rsyslog    </code><code>#已經啟動,監聽是tcp/udp協定514</code>

<code>tcp    0   0 0.0.0.0:514     0.0.0.0:*   listen   1408</code><code>/rsyslogd</code>

<code>tcp    0   0 :::514          :::*     listen      1408</code><code>/rsyslogd</code>

<code>udp    0   0 0.0.0.0:514     0.0.0.0:*            1408</code><code>/rsyslogd</code>

<code>udp    0   0 :::514          :::*                 1408</code><code>/rsyslogd</code>

a主機配置:(用戶端主機)

<code>vi</code> <code>/etc/rsyslog</code><code>.conf</code>

<code>*.info;mail.none;authpriv.none;</code><code>cron</code><code>.none           @192.168.0.2</code>

<code>authpriv.*                                         @192.168.0.2</code>

<code>mail.*                                             </code><code>/var/log/maillog</code>

<code>cron</code><code>.*                                             </code><code>/var/log/cron</code>

<code>*.emerg                                              *</code>

<code>uucp,news.crit                                     </code><code>/var/log/spooler</code>

<code>local7.*                                                </code><code>/var/log/boot</code><code>.log</code>

我們是把公共消息日志和安全日志發送到日志主機上,在日志主機上tail -30 /var/log/message看到用戶端主機名,說明運作正常。

4、對于這樣龐大的日志資訊,大多數是沒用的,怎麼樣去分析和檢測我們要的資訊呢?

利用logwatch 進行日志監控:logwatch是一款專門監測linux log檔案(日志檔案)的軟體。可以再加上mail對分析的檔案不定時發送到郵箱。

在日志主機安裝logwatch并修改配置檔案

<code>yum </code><code>install</code> <code>-y logwatch</code>

<code>cp</code> <code>-rf </code><code>/usr/share/logwatch/default</code><code>.conf</code><code>/logwatch</code><code>.conf </code><code>/etc/logwatch/conf/logwatch</code><code>.conf</code>

<code>vi</code> <code>/etc/logwatch/conf/logwatch</code><code>.conf</code>

<code>logdir = </code><code>/var/log</code>  <code>#日志檔案</code>

<code>tmpdir = </code><code>/var/cache/logwatch</code>  <code>#緩存檔案</code>

<code>detail = high    </code><code>#日志詳細程度為高</code>

<code>mailto = user@</code><code>test</code><code>.com  </code><code>#收件人郵箱位址,多個郵箱有逗号隔開</code>

<code>mailfrom = root@</code><code>test</code><code>.com  </code><code>#發件人郵箱位址,預設每天執行一次向郵箱發送郵件,可以從/etc/cron.daily裡看到</code>

<code>print = no                     </code><code>#可選項, yes 會被列印到系統标準輸出, 并且不會以郵件的形式發送到 mailto 設定的郵箱裡 , no 選項則會發到郵箱中</code>

<code>range = yesterday  </code><code>#處理什麼時候的日志,可選項all,yesterday,today,即所有,昨天的,今天的</code>

<code>detail = low   </code><code># 日志詳細度,可選項 low,med,high ,或是 0-10數字</code>

<code>service = all  </code><code>#監控所有服務all</code>

<code>service = </code><code>"-httpd"</code>     <code>#不監控的服務前面加“-”,可以添加多條</code>

logwatch指令常用的選項有:

--detail &lt;level&gt;: 報告的詳細程式,可用的值為:high, med, low or 0-10; 

--logfile &lt;name&gt;: 日志檔案檔案名,如:messages、auth.log等; 

--service &lt;name&gt;: 服務名,各個服務有對應的解析腳本,這些腳本位與以下目錄中(/usr/share/logwatch/scripts/services/或/etc/log.d/scripts/services); 

--print: 列印标準輸出; 

--mailto &lt;addr&gt;: 收件人位址; 

--archives: 使用壓縮的檔案或輪轉的檔案,如:messages.1、messages.1.gz; 

--save &lt;filename&gt;: 儲存到檔案 &lt;filename&gt;. 

--range &lt;range&gt;: 日期範圍:yesterday、today、all; 

--debug &lt;level&gt;: 試調級别: high、med、low ; 

--splithosts: 為每個主機建立一份報告; 

--multiemail: 将報告發送給多個郵件位址;

手動執行logwatch的指令生成日志報告

<code>perl </code><code>/usr/share/logwatch/scripts/logwatch</code><code>.pl</code>

寫一個腳本讓系統定時給指定郵箱發送郵箱

<code>vi</code>  <code>/usr/local/sbin/logwatch</code><code>.sh</code>

<code>chmod</code> <code>u+x </code><code>/usr/local/sbin/logwatch</code><code>.pl</code>

建立一個cron計劃任務

<code>crontab</code> <code>–e</code>

<code>30 08  * * *  </code><code>/usr/local/sbin/logwatch</code><code>.sh </code><code>#每台早上八點三十發一次郵件</code>

四、ntp(網絡時間協定)

ntp(network time protocol)是用來使計算機時間同步化的一種協定,它可以使計算機系統與ntp伺服器或時鐘源(如石英鐘,gps等等)進行同步化的一種協定,它可以提供高精準度的時間校正。ntp伺服器預設監聽utp 123端口。

1、搭建時間同步伺服器(ntp)(ip:192.168.0.1),并讓它與外部時間伺服器同步,内部的其他伺服器以這台ntp作為标準時間,有兩種配置:

1&gt;.允許所有ip進行時間同步(預設)

restrict default kod nomodify notrap nopeer noquery restrict default modify notrap

2&gt;.隻允許網段ip進行時間同步

restrict 192.168.2.0 mask 255.255.255.0 nomodify notrap

2、ntp安裝與配置

<code>yum </code><code>install</code> <code>-y ntp</code>

<code>service ntpd start </code><code>#不需要配置,啟動即可</code>

<code>iptables -i input -p udp --dport 123 -j accept </code><code>#ntp使用upd協定123端口,設定允許規則</code>

3、用戶端同步ntp伺服器

<code>ntpdate 192.168.0.1</code>

設定自動同步

<code>00 21 * * * </code><code>/usr/sbin/ntpdate</code> <code>192.168.0.1; </code><code>/sbin/hwclock</code> <code>-w  </code><code>#設定每天晚上9點同步,hwclock -w 将系統時間寫入系統硬體</code>

用戶端剛開始同步會報錯:ntpdate[1731]: step time server 192.168.0.202 offset -28797.853105 sec

這是因為ntp本身時間沒有和internet時間同步,這個過程需要5分鐘以上,使用watch ntpq -p指令檢視顯示如下資訊說明已經同步

RHCE學習&lt;9&gt;Rsync備份同步、NTP和Rsyslog日志管理

ntp主配置檔案

<code>grep</code> <code>-</code><code>v</code> <code>"^#"</code> <code>/etc/ntp</code><code>.conf |</code><code>grep</code> <code>-</code><code>v</code> <code>"^$"</code>

<code>driftfile </code><code>/var/lib/ntp/drift</code>

<code>restrict default kod nomodify notrap nopeer noquery  </code><code>#限制其他計算機查詢、修改本機上的ntp服務,其中default表示所有ip</code>

<code>restrict -6 default kod nomodify notrap nopeer noquery </code><code>#應用于ipv6位址的主機</code>

<code>restrict 127.0.0.1 </code><code>#開放本機内部接口,用于回報;以便于在本地對ntp服務進行監控及配置</code>

<code>restrict -6 ::1  </code><code>#開放這個網段,不能修改;即允許192.168.1.0/24網段的ntp用戶端都可以用本機的ntp伺服器進行網絡校時,但不允許它們修改本機的ntp服務配置</code>

<code>server 0.centos.pool.ntp.org </code><code>#指定真實上層ntp伺服器</code>

<code>server 1.centos.pool.ntp.org</code>

<code>server 2.centos.pool.ntp.org</code>

<code>includefile </code><code>/etc/ntp/crypto/pw</code>

<code>keys </code><code>/etc/ntp/keys</code>

繼續閱讀