2011年5月21日 星期六

Linux備份工具-dump與restore實做

系統在怎麼穩定都會有掛的一天,所以平常就好做好備份策略,以往MAX通常都用tar來作備份,最近剛好客戶需要使用dump來備份,就來作個測試練習並記錄下來以免忘記

參考資料:鳥哥有一篇關於dump的介紹

環境準備:
利用虛擬軟體準備兩台Linux OS(我用的是CentOS5.2)
配置兩台一樣的環境,基本上我只設定以下三項:
項目A (Source)B (Target)
Mem512M512M
網卡一張一張
硬碟一顆8G,一顆5G一顆8G


測試步驟:
1. 先在虛機A上安裝CentOS5.2,硬碟分割如下
/boot  (/dev/sda1)100M
/  (dev/sda2)5G
swap  (dev/sda3)1G
/var  (/dev/VolGroup00/LogVol00)1G
/data  (/dev/VolGroup00/LogVol01)896M

前三個分割區切完後,我將剩餘的空間作成LVM並切成兩個partition,主要是要測試在LVM下的dump作法

2.安裝好OS並登入後,將另一顆5G的硬碟格式化為ext3並掛載起來
# fdisk -l
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14         666     5245222+  83  Linux
/dev/sda3             667         797     1052257+  82  Linux swap / Solaris
/dev/sda4             798        1044     1984027+   5  Extended
/dev/sda5             798        1044     1983996   8e  Linux LVM

Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot      Start         End      Blocks   Id  System

# fdisk /dev/sdb   //分割成一個即可
#fdisk -l /dev/sdb
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         652     5237158+  83  Linux

#mkfs.ext3 /dev/sdb1
# mkdir /bakup          //目錄名稱自取
# mount /dev/sdb1 /bakup    //可寫到fstab,這邊只是測試就帶過
# df -h
檔案系統              容量  已用 可用 已用% 掛載點
/dev/sda2             4.9G  2.0G  2.7G  43% /
/dev/mapper/VolGroup00-LogVol00
                     992M   69M  873M   8% /var
/dev/mapper/VolGroup00-LogVol01
                     868M   17M  807M   3% /data
/dev/sda1              99M   11M   83M  12% /boot
tmpfs                 252M     0  252M   0% /dev/shm
/dev/sdb1             5.0G 139M  4.6G   3% /bakup

這個硬碟是用來放備份的資料的,所以要用nfs來分享給B到時要來還原用
# vim /etc/exports
/bakup 192.168.56.0/24(ro,sync)      //不了解的請參考鳥哥關於nfs的介紹

#/etc/init.d/nfs restart
#chkconfig nfs on

準備動作到此完成,可以開始備份嚕

2. 備份
#dump -0uf /bakup/root.dmp /     //其中0表示完整備份,如果1就是差異化備份
#dump -0uf /bakup/boot.dmp /boot
#dump -0uf /bakup/var.dmp /var
#dump -0uf /bakup/data.dmp /data

#dump -W    //檢查有無備份成功
Last dump(s) done (Dump '>' file systems):
 /dev/sda2    (     /) Last dump: Level 0, Date Tue Mar 15 09:07:11 2011
 /dev/mapper/VolGroup00-LogVol00    (  /var) Last dump: Level 0, Date Tue Mar 15 09:18:51 2011
 /dev/mapper/VolGroup00-LogVol01    ( /data) Last dump: Level 0, Date Tue Mar 15 09:20:55 2011
 /dev/sda1    ( /boot) Last dump: Level 0, Date Tue Mar 15 09:18:31 2011
 /dev/sdb1    (/bakup) Last dump: never

//會有最後一次備份的時間
//建議將fdisk -l,fstab,ifconfig,lvm內容都存一份起來,這樣在還原時可以比對
完成後準備用另一台還原,這種方法一般都是同機還原,但因為利用虛擬技術產出的硬體都一樣,所以可以簡單作到異機還原

3. 還原
在虛機B用CentOS光碟開機,並進入Rescue Mode   //不需安裝,直接用備份檔來作
# fdisk -l     //沒有安裝應該都是空的,根據虛機A的fdisk -l內容來作分割
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14         666     5245222+  83  Linux
/dev/sda3             667         797     1052257+  82  Linux swap / Solaris
/dev/sda4             798        1044     1984027+   5  Extended
/dev/sda5             798        1044     1983996   8e  Linux LVM


# mkfs.ext3 /dev/sda1
# mkfs.ext3 /dev/sda2
# mkswap /dev/sda3
製作LVM分割       //根據虛機A的LVM來作
# lvm pvcreate /dev/sda5
# lvm vgcreate VolGroup00 /dev/sda5
# lvm lvcreate -L 1G -n LogVol00 VolGroup00
# lvm lvcreate -L 896M -n LogVol01 VolGroup00
//盡可能建制的一樣,同機還原比較不會有不同的問題
# mkfs.ext3 /dev/VolGrup00/LogVol00
# mkfs.ext3 /dev/VolGrup00/LogVol01

建立一個mountpiont掛載nfs上的還原source
# mkdir /source
# mount -t nfs 192.168.56.101:/bakup /source   //這個ip是我的環境,每個人應該不同
作一個mountpoint來掛載”/”,並在裡面建立相對應的目錄來掛載其他devices
# mkdir /disk
# mount /dev/sda2 /disk
# cd /disk
# restore -rf root.dmp     //直接還原”/”,裡面會有其他應有的目錄,沒有的話要自己建立
還原完成後,依序進入/disk/boot,/disk/data,/disk/var 還原相對應的內容
# cd /disk/boot
# restore -rf boot.dmp
# cd /disk/var
# restore -rf var.dmp
# cd /dev/datadc
# restore -rf data.dmp
根據虛機A的fstab去設定devices正確資訊,主要是label要對
# e2label /dev/sda1 /boot
# e2label /dev/sda2 /
swap的label我不會設定,乾脆把fstab改掉
# vi /disk/etc/fstab


4. 安裝GRUB
# grub
grub> root (hd0,0)     //這個數值請自己參考正確位置
grub> setup (hd0)
grub> setup (hd0,0)

5. 將光碟取出用硬碟重開機應該就可以嚕

2011年1月21日 星期五

Apache Disable method方法

最近由於客戶資安等級升高,在做弱點掃描時發現apache有以下幾個Method有被攻擊的疑慮,所以請我們幫他們關閉,爬文很久後,找到方法如下:
1.關閉PUT,DELETE,CONNECT:
根據原廠文件:文件
在需要關閉這些功能的目錄下加入底下三行
<Limit PUT DELETE CONNECT>
   Deny from all
</Limit>
這個範例是整個網站都要關,就放到<Directory / ></Directory>裡面
2.關閉TRACE Method,在同一份文件中,也可以查到    //關鍵字:TraceEnable
根據文件,這個設定適用於Apache HTTP server 1.3.34 與2.0.55之後的版本
在設定檔本體加入
TraceEnable off                  //不可放到<>區段內

如果是舊版的設定方式:  //即1.3.34與2.0.55之前的版本
<Directory />
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]
</Directory>
//這個方式必須安裝並啟用mod_rewrite

補充:
查詢apache版本方式:
1.rpm or dpkg安裝方式
# /etc/init.d/httpd -v
2.source code 安裝方式
# 安裝路徑/bin/httpd -v
//預設是安裝在/usr/local/apache