漏洞html
過期和未修補的系統容易受到遠程代碼執行漏洞的攻擊。簡單來講,這意味着訪問可寫共享的人能夠上傳一段任意代碼,並使用服務器中的 root 權限執行該代碼。python
這個問題在 Samba 網站上被描述爲 CVE-2017-7494,而且已知會影響 Samba v3.5(2010 年 3 月初發布)及之後版本。因爲與 WannaCry 有類似之處,它被非官方地被命名爲 SambaCry:它們均針對 SMB 協議,而且多是蠕蟲病毒 - 這可能致使其從一個系統傳播到另外一個系統中。linux
Debian、Ubuntu、CentOS 和 Red Hat 已採起快速的行動來保護它們的用戶,併爲其支持的版本發佈了補丁。另外,還提供了不受支持的安全臨時解決方案。json
更新 Sambaubuntu
如先前提到的那樣,根據你以前安裝的方法有兩種方式更新:安全
讓咱們看下在這種狀況下你須要作什麼:服務器
在 Debian 下修復 SambaCryapp
添加下面的行到你的源列表中(/etc/apt/sources.list)以確保 apt 可以得到最新的安全更新:測試
deb http://security.debian.org stable/updates main deb-src http://security.debian.org/ stable/updates main
接下來,更新可用的軟件包:flex
# aptitude update
最後,確保 samba 軟件包的版本符合漏洞修復的版本(見 CVE-2017-7494):
# aptitude show samba
在 Debian 中修復 SambaCry
在 Ubuntu 中修復 SambaCry
要開始修復,以下檢查新的可用軟件包並更新 Samba 軟件包:
$ sudo apt-get update $ sudo apt-get install samba
已經修復 CVE-2017-7494 的 Samba 版本有下面這些:
最後,運行下面命令驗證你的 Ubuntu 已經安裝了正確的版本。
$ sudo apt-cache show samba
在 CentOS/RHEL 7 中修復 SambaCry
在 EL 7 中打過補丁的 Samba 版本是 samba-4.4.4-14.el7_3。要安裝它,這些作:
# yum makecache fast # yum update samba
像先前那樣,確保你已經安裝了打補丁的 Samba 版本:
# yum info samba
在 CentOS 中修復 SambaCry
舊支持的 CentOS 以及 RHEL 更老的版本也有修復。參見 RHSA-2017-1270 獲取更多。
注意:下面的過程假設你先前從源碼構建的 Samba。強烈建議你在部署到生產服務器以前先在測試環境嘗試。
此外,開始以前確保你備份了 smb.conf文件。
在這種狀況下,咱們也會從源碼編譯並更新 Samba。然而在開始以前,咱們必須先確保安裝了全部的依賴。注意這也許會花費幾分鐘。
在 Debian 和 Ubuntu 中:
# aptitude install acl attr autoconf bison build-essential / debhelper dnsutils docbook-xml docbook-xsl flex gdb krb5-user / libacl1-dev libaio-dev libattr1-dev libblkid-dev libbsd-dev / libcap-dev libcups2-dev libgnutls28-dev libjson-perl / libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl / libpopt-dev libreadline-dev perl perl-modules pkg-config / python-all-dev python-dev python-dnspython python-crypto xsltproc / zlib1g-dev libsystemd-dev libgpgme11-dev python-gpgme python-m2crypto
在 CentOS 7 或類似的版本中:
# yum install attr bind-utils docbook-style-xsl gcc gdb krb5-workstation / libsemanage-python libxslt perl perl-ExtUtils-MakeMaker / perl-Parse-Yapp perl-Test-Base pkgconfig policycoreutils-python / python-crypto gnutls-devel libattr-devel keyutils-libs-devel / libacl-devel libaio-devel libblkid-devel libxml2-devel openldap-devel / pam-devel popt-devel python-devel readline-devel zlib-devel
中止服務(LCTT 譯註:此處沒必要要):
# systemctl stop smbd
下載並解壓源碼(在寫做時 4.6.4 是最新的版本):
# wget https://www.samba.org/samba/ftp/samba-latest.tar.gz # tar xzf samba-latest.tar.gz # cd samba-4.6.4
出於瞭解信息的目的,用如下命令檢查可用的配置選項。
# ./configure --help
若是你在先前的版本的構建中有使用到一些選項,你或許能夠在上面命令的返回中包含一些選項,或者你能夠選擇使用默認值:
# ./configure # make # make install
最後重啓服務。
# systemctl restart smbd
並驗證你正在使用的是更新後的版本:
# smbstatus --version
這裏返回的應該是 4.6.4。
其它狀況
若是你使用的是不受支持的發行版本,而且因爲某些緣由沒法升級到最新版本,你或許要考慮下面這些建議:
還有將:
nt pipe support = no
添加到smb.conf 的 [global] 字段中。你或許要記住,根據 Samba 項目,這「或許禁用 Windows 客戶端的某些功能」。
重要:注意 nt pipe support = no 選項會禁用 Windows 客戶端的共享列表。好比:當你在一臺 Samba 服務器的 Windows Explorer 中輸入 //10.100.10.2/ 時,你會看到 「permission denied」。Windows 客戶端不得不手動執行共享,如 //10.100.10.2/share_name來訪問共享。
總結
在本篇中,咱們已經描述了 SambaCry 漏洞以及如何減輕影響。咱們但願你可使用這個信息來保護你負責的系統。
若是你有關於這篇文章的任何提問以及評論,歡迎使用下面的評論欄讓咱們知道。
本文地址:http://www.linuxprobe.com/linux-sambacry.html