웹사이트 검색

Linux 시스템에서 SambaCry 취약점(CVE-2017-7494)을 수정하는 방법


Samba는 오랫동안 *nix 시스템의 Windows 클라이언트에 공유 파일 및 인쇄 서비스를 제공하는 표준이었습니다. 개인 사용자, 중견 기업, 대기업 모두가 사용하는 이 제품은 다양한 운영 체제가 공존하는 환경에서 탁월한 솔루션입니다.

슬프게도 널리 사용되는 도구에서 발생하는 것처럼 대부분의 Samba 설치는 알려진 취약점을 악용할 수 있는 공격의 위험에 처해 있습니다. 이는 WannaCry 랜섬웨어 공격이 뉴스에 보도되기 전까지는 심각한 것으로 간주되지 않았습니다. 오래전.

이 기사에서는 Samba 취약점이 무엇인지, 그리고 여러분이 담당하는 시스템을 이 취약점으로부터 보호하는 방법에 대해 설명합니다. 설치 유형(리포지토리 또는 소스)에 따라 다른 접근 방식을 취해야 합니다.

현재 어떤 환경에서든 Samba를 사용하고 있거나 사용하는 사람을 알고 있다면 계속 읽어보세요!

취약점

오래되고 패치가 적용되지 않은 시스템은 원격 코드 실행 취약점에 취약합니다. 간단히 말해서 이는 쓰기 가능한 공유에 대한 액세스 권한이 있는 사람이 임의의 코드 조각을 업로드하고 서버에서 루트 권한으로 실행할 수 있음을 의미합니다.

이 문제는 Samba 웹사이트에 CVE-2017-7494로 설명되어 있으며 Samba 버전 3.5(2010년 3월 초 출시) 이상에 영향을 미치는 것으로 알려져 있습니다. 비공식적으로는 WannaCry와의 유사성으로 인해 SambaCry라는 이름이 붙었습니다. 둘 다 SMB 프로토콜을 대상으로 하며 잠재적으로 웜이 가능하여 시스템 간에 확산될 수 있습니다.

Debian, Ubuntu, CentOS 및 Red Hat은 사용자를 보호하기 위해 신속한 조치를 취했으며 지원되는 버전에 대한 패치를 출시했습니다. 또한 지원되지 않는 보안 해결 방법도 제공되었습니다.

삼바 업데이트 중

앞서 언급했듯이 이전 설치 방법에 따라 따라야 할 두 가지 접근 방식이 있습니다.

배포판 리포지토리에서 Samba를 설치한 경우.

이 경우 수행해야 할 작업을 살펴보겠습니다.

데비안에서 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

우분투에서 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를 컴파일하고 업데이트합니다. 그러나 시작하기 전에 모든 종속성이 이전에 설치되어 있는지 확인해야 합니다. 이 작업은 몇 분 정도 걸릴 수 있습니다.

데비안과 우분투의 경우:

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 클라이언트의 공유 목록이 비활성화된다는 점에 유의하세요. 예: 삼바 서버의 Windows 탐색기에서 \\10.100.10.2\를 입력하면 권한이 거부됩니다. Windows 클라이언트가 공유에 액세스하려면 공유를 \\10.100.10.2\share_name으로 수동으로 지정해야 합니다.

요약

이 기사에서는 SambaCry로 알려진 취약점과 이를 완화하는 방법을 설명했습니다. 귀하가 이 정보를 사용하여 귀하가 담당하는 시스템을 보호할 수 있기를 바랍니다.

이 기사에 대해 질문이나 의견이 있는 경우 아래 양식을 사용하여 알려주시기 바랍니다.