Linux에서 SMB 1 제거

주의

이 문서에서는 EOL(수명 종료) 상태에 가까워진 Linux 배포판인 CentOS를 참조하세요. 이에 따라 사용 및 플랜을 고려하세요. 자세한 내용은 CentOS 수명 종료 지침을 참조하세요. 많은 조직 및 ISP(인터넷 서비스 공급자)에서 SMB를 통해 통신하는 포트인 445 포트를 차단입니다. 이 방법은 SMB 프로토콜의 레거시 버전과 더 이상 사용되지 않는 버전에 대한 보안 지침에서 제공됩니다. SMB 3.x는 인터넷으로부터 안전한 프로토콜이지만 이전 버전의 SMB, 특히 SMB 1은 그렇지 않습니다. CIFS(Common Internet File System)라고도 하는 SMB 1은 많은 Linux 배포판에 포함되어 있습니다.

SMB 1은 오래되고, 비효율적이며, 안전하지 않은 프로토콜입니다. 하지만 다행히 Azure Files는 SMB 1을 지원하지 않습니다. 또한 Linux 커널 버전 4.18부터 Linux에서는 SMB 1을 사용하지 않도록 설정할 수 있습니다. 프로덕션 환경에서 SMB 파일 공유를 사용하기 전에 Linux 클라이언트에서 SMB 1을 사용하지 않도록 설정하는 것이 좋습니다.

Linux 배포 상태

Linux 커널 4.18부터 레거시 이유로 cifs라는 SMB 커널 모듈이 disable_legacy_dialects라는 새 모듈 매개 변수(다양한 외부 문서에서는 parm이라고도 함)를 노출합니다. Linux 커널 4.18에 도입되었지만 일부 공급업체는 이 변경 내용을 지원되는 이전 커널로 백포팅했습니다. 다음 표에서는 일반적인 Linux 배포판에서 이 모듈 매개 변수의 가용성을 자세히 설명합니다.

배포 SMB 1 해제 가능 여부
Ubuntu 14.04-16.04 아니요
Ubuntu 18.04
Ubuntu 19.04 이상
Debian 8-9 아니요
Debian 10 이상
Fedora 31 이상
CentOS 7 아니요
CentOS 8 이상
Red Hat Enterprise Linux 6.x-7.x 아니요
Red Hat Enterprise Linux 8 이상
openSUSE Leap 15.0 아니요
openSUSE Leap 15.1 이상
openSUSE Tumbleweed
SUSE Linux Enterprise 11.x-12.x 아니요
SUSE Linux Enterprise 15 아니요
SUSE Linux Enterprise 15.1 아니요

Linux 배포판에서 다음 명령을 통해 disable_legacy_dialects 모듈 매개 변수를 지원하는지 확인할 수 있습니다.

sudo modinfo -p cifs | grep disable_legacy_dialects

이 명령은 다음 메시지를 출력해야 합니다.

disable_legacy_dialects: To improve security it may be helpful to restrict the ability to override the default dialects (SMB2.1, SMB3 and SMB3.02) on mount with old dialects (CIFS/SMB1 and SMB2) since vers=1.0 (CIFS/SMB1) and vers=2.0 are weaker and less secure. Default: n/N/0 (bool)

SMB 1 제거

SMB 1을 사용하지 않도록 설정하기 전에 SMB 모듈이 현재 시스템에 로드되어 있지 않은지 확인합니다(SMB 공유를 탑재한 경우 자동으로 로드됨). 다음 명령을 실행합니다. SMB가 로드되지 않은 경우에는 아무것도 출력되지 않습니다.

lsmod | grep cifs

모듈을 언로드하려면 먼저 umount 명령을 사용하여 모든 SMB 공유를 분리합니다. 다음 명령을 사용하여 사용하는 시스템에서 탑재된 모든 SMB 공유를 식별할 수 있습니다.

mount | grep cifs

모든 SMB 파일 공유를 분리한 경우에는 모듈을 언로드하는 것이 안전합니다. modprobe 명령을 실행합니다.

sudo modprobe -r cifs

modprobe 명령을 사용하여 SMB 1이 언로드된 모듈을 수동으로 로드할 수 있습니다.

sudo modprobe cifs disable_legacy_dialects=Y

마지막으로 /sys/module/cifs/parameters에서 로드된 매개 변수를 살펴보면 SMB 모듈이 매개 변수와 함께 로드되었는지 확인할 수 있습니다.

cat /sys/module/cifs/parameters/disable_legacy_dialects

Ubuntu 및 Debian 기반 배포판에서 SMB 1을 영구적으로 사용하지 않도록 설정하려면 설정으로 /etc/modprobe.d/local.conf라는 새 파일(다른 모듈에 대한 사용자 지정 옵션이 없는 경우)을 만들어야 합니다. 다음 명령을 실행합니다.

echo "options cifs disable_legacy_dialects=Y" | sudo tee -a /etc/modprobe.d/local.conf > /dev/null

SMB 모듈을 로드하여 이 작업의 수행 여부를 확인할 수 있습니다.

sudo modprobe cifs
cat /sys/module/cifs/parameters/disable_legacy_dialects

다음 단계

Azure Files에 대한 자세한 내용은 다음 링크를 참조하세요.