Linux システムの SambaCry 脆弱性 (CVE-2017-7494) を修正する方法
Samba は、*nix システム上の Windows クライアントに共有ファイルおよび印刷サービスを提供するための標準として長い間使用されてきました。ホーム ユーザー、中堅企業、大企業によって同様に使用されており、異なるオペレーティング システムが共存する環境で頼りになるソリューションとして際立っています。
悲しいことに、広く使用されているツールでこのようなことが起こるため、ほとんどの Samba インストールは既知の脆弱性を悪用する可能性のある攻撃の危険にさらされています。この脆弱性は、WannaCry ランサムウェア攻撃がニュースになるまでは深刻なものとは考えられていませんでした。ずっと前に。
この記事では、この Samba の脆弱性とは何か、また担当するシステムをそれから保護する方法について説明します。インストールの種類 (リポジトリからまたはソースから) に応じて、異なるアプローチを採用する必要があります。
現在何らかの環境で Samba を使用している場合、または使用している人を知っている場合は、読み続けてください。
脆弱性
古いシステムやパッチが適用されていないシステムは、リモートでコードが実行される脆弱性に対して脆弱です。簡単に言うと、これは、書き込み可能な共有にアクセスできるユーザーが任意のコードをアップロードし、サーバーの root 権限で実行できることを意味します。
この問題は Samba Web サイトで CVE-2017-7494 として説明されており、Samba バージョン 3.5 (2010 年 3 月初旬にリリース) 以降に影響することが知られています。非公式には、WannaCry との類似点から、SambaCry と名付けられました。どちらも SMB プロトコルをターゲットにしており、ワーム化の可能性があり、システムからシステムへと拡散する可能性があります。
Debian、Ubuntu、CentOS、Red Hat はユーザーを保護するために迅速な措置を講じ、サポートされているバージョン用のパッチをリリースしました。さらに、サポートされていないものに対するセキュリティ回避策も提供されています。
Sambaのアップデート
前述したように、以前のインストール方法に応じて、次の 2 つのアプローチに従う必要があります。
Samba をディストリビューションのリポジトリからインストールした場合。
この場合に何をする必要があるかを見てみましょう。
Debian で Sambacry を修正する
次の行をソース リスト (/etc/apt/sources.list) に追加して、apt が最新のセキュリティ アップデートを取得するように設定されていることを確認します。
deb http://security.debian.org stable/updates main
deb-src http://security.debian.org/ stable/updates main
次に、利用可能なパッケージのリストを更新します。
aptitude update
最後に、samba パッケージのバージョンが脆弱性が修正されたバージョンと一致していることを確認します (CVE-2017-7494 を参照)。
aptitude show samba
Ubuntu で Sambacry を修正する
まず、新しい利用可能なパッケージを確認し、次のように samba パッケージを更新します。
sudo apt-get update
sudo apt-get install samba
CVE-2017-7494 の修正がすでに適用されている Samba のバージョンは次のとおりです。
- 17.04: サンバ 2:4.5.8+dfsg-0ubuntu0.17.04.2
- 16.10: サンバ 2:4.4.5+dfsg-2ubuntu5.6
- 16.04 LTS: サンバ 2:4.3.11+dfsg-0ubuntu0.16.04.7
- 14.04 LTS: サンバ 2:4.3.11+dfsg-0ubuntu0.14.04.8
最後に、次のコマンドを実行して、Ubuntu ボックスに正しい Samba バージョンがインストールされていることを確認します。
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 および RHEL の古い、まだサポートされているバージョンにも利用可能な修正があります。詳細については、RHSA-2017-1270 を確認してください。
Samba をソースからインストールした場合
注: 次の手順は、以前にソースから 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
サービスを停止します。
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 が返されるはずです。
一般的な考慮事項
特定のディストリビューションのサポートされていないバージョンを実行していて、何らかの理由でより新しいバージョンにアップグレードできない場合は、次の提案を考慮することをお勧めします。
- SELinux が有効になっている場合は保護されます。
- Samba 共有が noexec オプションを使用してマウントされていることを確認してください。これにより、マウントされたファイルシステム上にあるバイナリの実行が防止されます。
追加、
nt pipe support = no
smb.conf ファイルの [global] セクションに追加し、サービスを再起動します。 Samba プロジェクトによれば、これにより「Windows クライアントの一部の機能が無効になる可能性がある」ことに留意してください。
重要: オプション「nt Pipe support=no」を選択すると、Windows クライアントからの共有リストが無効になることに注意してください。例: Samba サーバー上の Windows エクスプローラーから「\\10.100.10.2\」と入力すると、アクセス許可が拒否されます。 Windows クライアントが共有にアクセスするには、手動で共有を \\10.100.10.2\share_name として指定する必要があります。
まとめ
この記事では、SambaCry として知られる脆弱性とそれを軽減する方法について説明しました。この情報を使用して、担当するシステムを保護できることを願っています。
この記事に関してご質問やご意見がございましたら、お気軽に以下のフォームを使用してお知らせください。