Rsync安全配置

wyzsk發表於2020-08-19
作者: 瞌睡龍 · 2013/07/08 18:58

0x00 Rsync簡介


Rsync,remote synchronize顧名思意就知道它是一款實現遠端同步功能的軟體,它在同步檔案的同時,可以保持原來檔案的許可權、時間、軟硬連結等附加資訊。

rsync是用 “rsync 演算法”提供了一個客戶機和遠端檔案伺服器的檔案同步的快速方法,而且可以透過ssh方式來傳輸檔案,這樣其保密性也非常好,另外它還是免費的軟體。

rsync 包括如下的一些特性:

能更新整個目錄和樹和檔案系統;
有選擇性的保持符號鏈鏈、硬連結、檔案屬於、許可權、裝置以及時間等;
對於安裝來說,無任何特殊許可權要求;
對於多個檔案來說,內部流水線減少檔案等待的延時;
能用rsh、ssh 或直接埠做為傳輸入埠;
支援匿名rsync 同步檔案,是理想的映象工具;

0x01 架設Rsync伺服器


安裝Rsync與xinetd包

$ yum -y install xinetd rsync

確保xinetd執行在levels 3或4或5。

$ chkconfig --level 345 xinetd on

修改rsync xinetd配置檔案,把disable = yes改成disable = no

$ vi /etc/xinetd.d/rsync

建立rsync的密碼檔案,格式 username:password

$ vi /etc/rsyncd.secrets

建立rsync共享配置檔案

$ vi /etc/rsyncd.conf

新增如下內容:

secrets file = /etc/rsyncd.secrets #密碼檔案位置,認證檔案設定,設定使用者名稱和密碼
#motd file = /etc/rsyncd.motd #歡迎資訊檔名稱和存放位置(此檔案沒有,可以自行新增)
read only = no # yes只讀 值為NO意思為可讀可寫模式,資料恢復用NO
list = yes
uid = nobody #以什麼身份執行rsync
gid = nobody

[out]  #模組名
comment = Welcome #歡迎資訊
path = /home/rsync/out #rsync同步的路徑
auth users = rsync #授權帳號,認證的使用者名稱,如果沒有這行則表明是匿名,多個使用者用,分隔。
hosts allow = X.X.X.X #允許訪問的IP
auth users = username #/etc/rsyncd.secrets中的使用者名稱

還有很多引數沒有使用。

http://www.samba.org/ftp/rsync/rsyncd.conf.html裡詳細解釋了rsyncd.conf各個引數的意思。

修改許可權與所有權,重啟xinetd服務:

$ chown root.root /etc/rsyncd.*
$ chmod 600 /etc/rsyncd.*
$ service xinetd restart

然後就可以透過如下命令訪問了:

下載檔案: ./rsync -vzrtopg --progress --delete [email protected]::out /home/test/getfile

上傳檔案: /usr/bin/rsync -vzrtopg --progress /home/test/getfile [email protected]::out

Rsync 同步引數說明

-vzrtopg裡的v是verbose,z是壓縮,r是recursive,topg都是保持檔案原有屬性如屬主、時間的引數。
--progress是指顯示出詳細的進度情況
--delete引數會把原有getfile目錄下的檔案刪除以保持客戶端和伺服器端檔案系統完全一致
[email protected]使用者名稱,xxx為ip地址
out是指在rsyncd.conf裡定義的模組名
/home/test/getfile 是指本地要備份目錄

如果不想每次都再輸入一次密碼可以使用--password-file引數

/usr/bin/rsync -vzrtopg --progress /home/test/getfile  [email protected]::out --password-file=/test/rsyncd.secrets

本機上的/test/rsyncd.secrets檔案裡只需要儲存密碼即可,使用者名稱已經在命令中有了,並且許可權應為600。

0x02 匿名訪問危害


wooyun出現不少沒有限定任何ip並且允許匿名訪問,而導致嚴重後果的實際案例:

WooYun: 我是如何淪陷ChinaZ下載站伺服器的,可登入3389、篡改原始碼等

WooYun: 新浪漏洞系列第三彈-微博內網遭入侵

WooYun: Discuz旗下5d6d某伺服器Rsync任意檔案上傳

0x03 尋找匿名訪問Rsync方式


Rsync預設的埠是873,可以使用nmap掃描哪些ip開放了873埠。

nmap -n --open -p 873 X.X.X.X/24

找到開放的873埠後,連線能否檢視模組名:

rsync X.X.X.X::

如果可以,就嘗試上傳,下載檔案試一下。

0x04 安全配置注意事項


注意兩種方式防禦,一是限定訪問的IP,另一個是不允許匿名訪問,新增使用者口令。

限定IP的兩種方式

IPTables防火牆

給rsync的埠新增一個iptables。

只希望能夠從內部網路(192.168.101.0/24)訪問:

iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT

除此之外rsyncd.conf中的hosts allow也可以設定只允許來源ip。

hosts allow = X.X.X.X #允許訪問的IP

新增使用者口令

新增rsync使用者許可權訪問,注意配置的是rsyncd.conf中的:

secrets file = /etc/rsyncd.secrets #密碼檔案位置,認證檔案設定,設定使用者名稱和密碼
auth users = rsync #授權帳號,認證的使用者名稱,如果沒有這行則表明是匿名,多個使用者用,分隔。
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!