过期域名预定抢注

 找回密碼
 免费注册

LinuxVPS防黑安全常識之網站數據自動備份方法

 火.. [複製鏈接]
發表於 2011-11-4 03:04:18 | 顯示全部樓層 |閱讀模式
俗語說:一朝被蛇咬十年怕草繩,一點也不假,本以為自己對LinuxVPS很懂,其實在老外面前還是小菜,"不怕偷,就怕惦記著",這不我的VPS頻頻遭到來自國外的弱口令掃瞄,一開始完全沒有防備,在他們嘗試了一萬多次之後,密碼被破了,恭喜,你得到了shell,瞬間把服務器的資料數據全部清空,這種情況真的很痛苦,所以我加強了防範,也許還有可能被破,但已經不是一件很容易的事情了。6 o/ n: t# q/ f- _! R
    根據我發生的被黑事件,假設我做好了防黑安全,很可能就安然無恙,就算被黑,如果網站數據有備份,我拿回shell後還是可以恢復網站數據的,鑒於此兩點,我們做好兩大安全防範即可:
( C: V/ h! f1 u4 E第一、LinuxVPS防黑安全常識" J; M% A/ a2 L7 E7 @2 F. v7 h
1、修改SSH端口。防止服務器掃破密碼,首先就必須改端口,盡量把端口數值改高,例如8135,打開文件/etc/ssh/sshd_config,找到其中的#Port 22,修改為Port 8135;並使用命令 service sshd restart 重啟SSH,以後登陸ssh或winscp都需要在IP或域名後面加端口:8135。
: W8 f' B% f% G, A2、禁止Root登陸。任意添加一個用戶名,例如luoping,命令:useradd luoping,再執行賦予密碼的命令:passwd 123456 ;緊接著修改/etc/ssh/sshd_config文件,第39行:#PermitRootLogin yes,去掉前面的#,並把yes改成no,然後,重啟SSH服務。以後,先使用vpsmm登陸,再su root即可得到ROOT管理權限。
2 w0 Q6 v/ R, `8 Y/ x  ?2 W5 nlogin as: luoping  Q2 ]( K5 }6 Y$ _( g/ }9 }
luoping@ip password:*****, p- C' f" \9 d
Last login: Tue Oct 22 14:39:58 2010 from 1.2.3.4
& h; u+ q1 Z: m/ wsu root
& X1 K/ c- t2 t( \  bPassword:*********** #注這裡輸入ROOT的密碼
' M' N9 ^- F4 |* x  z/ R6 z: }3、SSH密鑰登錄讓Linux VPS/服務器更安全
" o. @* Q% c4 A' J- R! N- a基於密鑰的安全驗證必須為用戶自己創建一對密鑰,並把共有的密鑰放在需要訪問的服務器上。當需要連接到SSH服務器上時,客戶端軟件就會向服務器發出請求,請求使用客戶端的密鑰進行安全驗證。服務器收到請求之後,先在該用戶的根目錄下尋找共有密鑰,然後把它和發送過來的公有密鑰進行比較。如果兩個密鑰一致,服務器就用公有的密鑰加密"質詢",並把它發送給客戶端軟件(putty,xshell等)。客戶端收到質詢之後,就可以用本地的私人密鑰解密再把它發送給服務器,這種方式是相當安全的。請參考:http://www.advertcn.com/thread-92786-1-1.html
' T- h+ m- I$ p. b1 x6 A第二、網站數據自動備份FTP
! d% ^. g' Z  ]) ]linux系統的功能非常強大,特別是定時器的作用,加上強大的腳本功能,幾乎能為你做任何事情,那麼自動打包壓縮網站數據並傳送到網絡空間上去,也就成了網站數據備份的首選了,這裡提供兩種腳本:% |/ e' X0 b- q* j' {9 l
一種是網站數據庫導出並壓縮上傳,參考小夜Blog LinuxVPS自動每日備份文件和數據庫上傳FTP空間http://www.advertcn.com/thread-92776-1-1.html6 \- c8 R; f, g1 o! ^" k" b
一種是壓縮網站數據表名下的數據,前者較為嚴謹,後者就簡單方便,我個人使用是後者,腳本代碼如下:
  1. #!/bin/bash
    6 {- v, w# L6 J: G1 G
  2. #你要修改的地方從這裡開始
    / r- ?* j0 f! e3 \' F4 r/ l
  3. MAIL_TO=發送數據庫的郵箱地址, G# `5 q2 ~( {
  4. FTP_USER=FTP用戶名' J5 c3 B" r; c6 i; w
  5. FTP_PASS=FTP登陸密碼
    , l* ~& d8 T/ j: ^1 C: }, {
  6. FTP_IP=IP或域名
    6 I  r3 n; n+ \# A/ G8 W
  7. FTP_backup=FTP上的目錄,如/backup,需要手工創建
    3 t9 t- o+ w, C% ^5 ?8 a
  8. WEB_DATA=/home/wwwroot
    - o4 E) R( R" Q  a
  9. mysql_DATA=/usr/local/mysql/var  Z6 e6 ^) _! X- H
  10. yuming_DATA=/usr/local/nginx/conf3 z3 |$ k5 H* b! q8 v. {
  11. #你要修改的地方從這裡結束- o$ d, ]! S5 |( \' u

  12. . K( a5 F9 I' M7 {/ W2 z
  13. #定義數據庫的名字和舊數據庫的名字
    + W! E1 o8 f& X9 m  W' }+ I
  14. DataBakName=Data_$(date +"%Y%m%d").tar.gz% R* G4 T$ r2 W, |0 T2 I
  15. WebBakName=Web_$(date +%Y%m%d).tar.gz: @3 u  h' ?4 E- H* Y, b4 ?' s  B( V
  16. yumingName=yuming_$(date +%Y%m%d).tar.gz  V3 ^$ f% I' o: C5 z
  17. OldData=Data_$(date -d -5day +"%Y%m%d").tar.gz
    * H0 b2 P% }0 m; G
  18. OldWeb=Web_$(date -d -5day +"%Y%m%d").tar.gz$ O: g2 ]" w/ K+ W" {0 x
  19. Oldyuming=yuming_$(date -d -5day +"%Y%m%d").tar.gz  h  U& Z4 z1 K
  20. ; P# }$ K* @( C# W' n9 ^# d
  21. #刪除本地3天前的數據8 [3 y/ G2 f/ N3 j2 o" v" W
  22. rm -rf /home/backup/Data_$(date -d -3day +"%Y%m%d").tar.gz /home/backup/Web_$(date -d -3day +"%Y%m%d").tar.gz /home/backup/yuming_$(date -d -3day +"%Y%m%d").tar.gz
    6 r$ @% y4 z9 F: s0 f/ d) [2 Z8 S
  23. : q4 C) {& x! p+ [6 {
  24. cd /home/backup
      J+ k7 u2 [, E4 N1 w8 b& e6 F3 ~

  25. % g. ~8 o# Z) l& m) ]! g0 i
  26. #停止mysql
    + N! v* U8 G; x/ W: Q- C
  27. service mysql stop
    ) L8 ^% C& E+ @) y

  28. 4 `/ B8 P# K+ V+ n4 u4 C, }
  29. #打包mysql目錄/ {9 ]! c# f$ Z% ~, X& e3 \7 v
  30. cd $mysql_DATA' R: M7 [3 ^9 C  K) Y
  31. tar zcf /home/backup/$DataBakName ./*  W0 e; D9 c2 s: X3 E! ~

  32. / T: F8 E9 y- H, t% ^
  33. #運行mysql
    ' e$ ^$ ]/ _3 \; L$ S' l# q! S" ^% D
  34. service mysql start
      F0 V2 Q5 \6 u. t7 s+ [" w. W

  35. ! l% f! R  C9 m* R$ e8 J& w
  36. #壓縮網站數據
    5 s/ c5 o1 W6 g$ H5 _3 }
  37. cd $WEB_DATA! Y# `, t$ J+ m( M1 ~& ^! W
  38. tar zcf /home/backup/$WebBakName ./*
    & N: [# i- I0 `5 \
  39. 4 l1 K( U# Z8 R  c
  40. #壓縮域名信息* i3 D* s1 g  ~
  41. cd $yuming_DATA; ]$ m: n! P& }2 J9 }
  42. tar zcf /home/backup/$yumingName ./*
    7 ^! \0 |+ W7 U7 a
  43. 5 ]+ v; \" v' F, d# F* O
  44. #備份完發送郵件9 m: n: c4 u5 H; r( d
  45. echo "主題:wancheng" | mutt -s "內容:wancheng" $MAIL_TO4 O7 g3 y: n% e$ Q, \% a" H
  46. ; i- q5 l0 ?) W3 v/ n2 [+ Z
  47. #上傳到FTP空間,刪除FTP空間5天前的數據
    6 @2 N; H. ?7 E
  48. cd /home/backup
    5 l1 ~8 l% l4 ?( C/ @/ {% `
  49. ftp -v -n $FTP_IP << END
    3 T$ T. m1 k7 F
  50. user $FTP_USER $FTP_PASS3 l' a4 O# W, W3 t
  51. type binary3 N; y0 r( M7 m/ B
  52. cd $FTP_backup
    2 i& n' b2 M- n7 f
  53. delete $OldData3 J4 J# v4 i6 g( y. ^/ [/ r4 b
  54. delete $OldWeb9 {( h% W, i8 e9 o3 ^/ t, D
  55. delete $Oldyuming
    / O+ g/ m  O& u" S3 L' ~
  56. put $DataBakName" {: Z9 v9 G( Q0 H" t: U
  57. put $WebBakName6 l9 F9 k$ M$ J2 b1 m# G: X
  58. put $yumingName3 b* j$ R! `% u# R
  59. bye% c) s$ v% I/ l2 ^
  60. END: b3 N* h: S6 F0 k
複製代碼
腳本的使用方法,非常簡單,將腳本保存並命名AutoDataFTP.sh,將AutoDataFTP.sh上傳到root下,並賦予權限 chmod +x /root/AutoDataFTP.sh,在home下創建一個目錄名為backup,設置好任務啟動時間,每日一備份,00 06 * * * /root/AutoDataFTP.sh ;表示每日6點鐘,執行該腳本裡的所有動作命令。' Q" F8 ]  e, K( Q! X( w% T
PS:如果發現數據已經被打包壓縮,但去遠程FTP上沒有上傳數據,可能是沒有安裝好ftp,在xshell下執行命令 yum install lftp 命令即可。
發表於 2011-11-6 02:54:16 | 顯示全部樓層
收藏了,很有價值的文章
回復 给力 爆菊

使用道具 舉報

發表於 2011-11-6 22:09:21 | 顯示全部樓層
有時候真是防不勝防啊
回復 给力 爆菊

使用道具 舉報

 樓主| 發表於 2012-3-2 23:15:22 | 顯示全部樓層
回復 3# hlzone
* p. A+ w- h0 {6 W% w; z! }! X/ B: t& w$ s
; K. _3 _, r& h2 J  `8 @
    兄弟的廣告幣好像少了不少啊!
回復 给力 爆菊

使用道具 舉報

發表於 2012-3-3 13:01:20 | 顯示全部樓層
回復 4# woshigaozhen 1 G  A; y& M1 W) [8 K0 `
! {: v. e2 \6 A: [, ~) D' c

7 H' U; a' b$ N+ W2 D1 d! A( C    沒事拿去競標了,每月大約消耗100個吧,再加上買些收費帖子,消耗的也比較厲害
回復 给力 爆菊

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 免费注册

本版積分規則

點基跨境 數位編輯創業論壇

GMT+8, 2025-4-17 00:51

By DZ X3.5

小黑屋

快速回復 返回頂部 返回列表