매일 업데이트
2023-08-21 07:15 7 min

Linux에서 Samba 서버를 보호하는 10가지 방법

주요 내용 요약

  • SMB 트래픽에 대한 암호화 설정을 통해 무단 접근 및 사이버 공격을 차단하세요. Linux Samba 서버의 트래픽 보호를 위해 TLS(전송 계층 보안)를 활용하는 것이 좋습니다.
  • `/etc/samba/smb.conf` 설정 파일을 사용하여 공유 자원에 대한 접근 제어 및 권한을 강화하세요. 허가된 사용자만 접근할 수 있도록 권한, 접근, 제한 사항을 설정해야 합니다.
  • SMB 사용자 계정에는 강력하고 독특한 비밀번호를 설정하여 보안을 강화하세요. Linux와 Samba를 정기적으로 업데이트하여 취약점과 사이버 공격으로부터 보호하고, 보안에 취약한 SMBv1 프로토콜 사용은 지양해야 합니다.
  • 방화벽 규칙을 설정하여 SMB 포트에 대한 접근을 제한하고, 신뢰할 수 없는 네트워크에서 SMB 트래픽을 분리하기 위해 네트워크 세분화를 고려해야 합니다. 또한 의심스러운 활동이나 보안 사고에 대한 SMB 로그를 모니터링하고, 게스트 접근이나 익명 연결을 제한해야 합니다.
  • 특정 호스트에만 접근을 허용하고 다른 호스트의 접근을 차단하는 호스트 기반 제한 설정을 구성하여 네트워크를 강화하고 Linux 서버를 보호하세요.

SMB(서버 메시지 블록) 프로토콜은 연결된 환경에서 파일 및 프린터 공유를 위한 핵심 프로토콜입니다. 하지만 Samba의 초기 설정은 보안 취약성을 야기할 수 있으며, 이로 인해 네트워크가 무단 접근이나 사이버 공격에 노출될 위험이 있습니다.

Samba 서버를 운영한다면, 구성 설정에 특히 주의를 기울여야 합니다. 다음은 SMB 서버를 안전하게 보호하기 위한 10가지 필수적인 단계입니다.

1. SMB 트래픽 암호화 활성화

기본적으로 SMB 트래픽은 암호화되지 않습니다. 네트워크 패킷을 `tcpdump`나 `Wireshark`와 같은 도구로 캡처하면 이를 확인할 수 있습니다. 공격자가 트래픽을 가로채 분석하는 것을 방지하기 위해 모든 트래픽을 암호화하는 것이 중요합니다.

Linux Samba 서버의 트래픽을 보호하기 위해 TLS(전송 계층 보안)를 설정하는 것을 권장합니다.

2. 공유 자원에 대한 엄격한 접근 제어 및 권한 설정

허가되지 않은 사용자가 자원에 접근하지 못하도록 엄격한 접근 제어 및 권한을 설정해야 합니다. Samba는 `/etc/samba/smb.conf` 파일을 통해 접근 및 권한 관련 설정을 관리합니다.

특정 구문을 사용하여 공유할 자원, 해당 자원에 접근 권한을 부여할 사용자/그룹, 자원을 탐색, 쓰기, 읽기 권한 등을 설정할 수 있습니다. 자원 정의 및 접근 제어 설정의 예시는 다음과 같습니다.

 [sambashare]
comment= Samba 예시
path = /home/사용자이름/sambashare
browseable = yes
writable = yes
valid users = @그룹이름

위 예시는 공유 경로와 유효한 사용자 그룹을 설정하여 특정 그룹 사용자에게만 해당 공유에 접근 권한을 부여합니다. 이외에도 접근 및 공유 설정을 위한 다양한 방법이 있습니다. Samba를 사용하여 Linux에서 네트워크 공유 폴더를 설정하는 방법에 대한 자세한 내용은 별도의 가이드를 참고하십시오.

3. SMB 사용자 계정에 강력하고 고유한 비밀번호 사용

SMB 사용자 계정에 강력한 비밀번호 정책을 적용하는 것은 기본적인 보안 수칙입니다. 시스템 관리자는 모든 사용자가 강력하고 고유한 비밀번호를 사용하도록 권장해야 합니다.

자동으로 강력한 비밀번호를 생성하는 도구를 활용하여 이 과정을 간소화할 수 있습니다. 또한, 비밀번호를 주기적으로 변경하여 데이터 유출 및 무단 접근 위험을 줄일 수 있습니다.

4. Linux 및 Samba 정기적 업데이트

사이버 공격에 대한 가장 기본적인 방어는 사용하는 소프트웨어를 최신 버전으로 유지하는 것입니다. SMB는 공격 대상이 되기 쉽습니다.

과거에 SMB 취약점을 이용한 공격으로 인해 전체 시스템이 손상되거나 기밀 데이터가 유출된 사례가 있습니다. 운영 체제와 주요 서비스를 최신 상태로 유지하는 것이 중요합니다.

5. SMBv1 프로토콜 사용 지양

SMBv1은 보안 취약점이 많은 프로토콜입니다. Windows나 Linux에서 SMB를 사용할 때는 SMBv1 사용을 피하고 SMBv2 이상을 사용하는 것이 좋습니다. SMBv1 프로토콜을 비활성화하려면 설정 파일에 다음 줄을 추가하세요.

 min protocol = SMB2

이렇게 하면 최소 프로토콜 수준이 SMBv2로 설정됩니다.

6. 방화벽 규칙을 통한 SMB 포트 접근 제한

신뢰할 수 있는 출처에서만 SMB 포트(일반적으로 139 및 445번 포트)에 접근하도록 네트워크 방화벽을 설정해야 합니다. 이렇게 하면 무단 접근을 막고 외부의 SMB 기반 공격 위험을 줄일 수 있습니다.

트래픽을 더 효과적으로 제어하고 로깅하려면 IDS 솔루션과 함께 전용 방화벽을 설치하는 것을 고려해야 합니다. 어떤 방화벽을 사용해야 할지 모르겠다면, 최고의 무료 Linux 방화벽 목록에서 적합한 방화벽을 찾을 수 있습니다.

7. 신뢰할 수 없는 네트워크로부터 SMB 트래픽 격리를 위한 네트워크 분할

네트워크 분할은 컴퓨터 네트워크를 여러 개의 서브넷(네트워크 세그먼트)으로 나누는 기술입니다. 이는 네트워크의 보안, 성능 및 관리 용이성을 개선하는 데 도움이 됩니다.

신뢰할 수 없는 네트워크로부터 SMB 트래픽을 분리하려면 SMB 트래픽 전용의 네트워크 세그먼트를 만들고, 이 세그먼트를 통과하는 SMB 트래픽만 허용하도록 방화벽 규칙을 설정해야 합니다. 이렇게 하면 SMB 트래픽을 효율적으로 관리하고 모니터링할 수 있습니다.

Linux에서는 `iptables`나 유사한 네트워킹 도구를 사용하여 네트워크 세그먼트 간의 트래픽 흐름을 제어하는 방화벽 규칙을 설정할 수 있습니다. 다른 모든 트래픽을 차단하면서 SMB 네트워크 세그먼트에서 들어오고 나가는 SMB 트래픽만 허용하는 규칙을 생성할 수 있습니다. 이를 통해 신뢰할 수 없는 네트워크로부터 SMB 트래픽을 효과적으로 분리할 수 있습니다.

8. 의심스러운 활동 및 보안 사고에 대한 SMB 로그 모니터링

SMB 로그를 모니터링하여 의심스러운 활동이나 보안 사고를 감지하는 것은 네트워크 보안을 유지하는 데 매우 중요합니다. SMB 로그에는 파일 접근, 인증, 기타 이벤트 등 SMB 트래픽에 대한 정보가 포함되어 있습니다. 이러한 로그를 정기적으로 모니터링하면 잠재적인 보안 위협을 감지하고 완화할 수 있습니다.

Linux에서는 `journalctl` 명령과 `grep` 명령을 사용하여 SMB 로그를 확인하고 분석할 수 있습니다.

 journalctl -u smbd.service

이 명령은 SMB 트래픽 관리를 담당하는 `smbd.service`에 대한 로그를 보여줍니다. `-f` 옵션을 사용하면 실시간으로 로그를 추적하거나, `-r` 옵션을 사용하여 가장 최신 항목부터 확인할 수 있습니다.

로그에서 특정 이벤트나 패턴을 검색하려면 `journalctl` 명령의 출력을 `grep`으로 전달하세요. 예를 들어, 실패한 인증 시도를 검색하려면 다음 명령을 실행합니다.

 journalctl -u smbd.service | grep -i "authentication failure"

이 명령은 'authentication failure' 텍스트를 포함하는 모든 로그 항목을 표시하여 의심스러운 활동이나 무차별 암호 대입 시도를 빠르게 식별할 수 있도록 합니다.

9. 게스트 접근 및 익명 연결 사용 제한

게스트 접근을 활성화하면 사용자가 사용자 이름이나 비밀번호를 제공하지 않고도 Samba 서버에 연결할 수 있으며, 익명 연결을 허용하면 인증 정보 없이 연결할 수 있습니다.

이 두 가지 옵션은 제대로 관리하지 않으면 보안 위험을 초래할 수 있습니다. 따라서 이 두 가지 기능을 모두 끄는 것이 좋습니다. Samba 설정 파일에서 다음 설정을 추가하거나 수정해야 합니다.

 map to guest = never
restrict anonymous = 2

10. 호스트 기반 제한 구현

기본적으로 Samba 서버는 모든 호스트(IP 주소)에서 접근할 수 있습니다. 여기서 접근은 자원 접근이 아닌 연결을 설정하는 것을 의미합니다.

특정 호스트에 대한 접근을 허용하고 다른 호스트의 접근을 거부하려면 `hosts allow` 및 `hosts deny` 옵션을 사용할 수 있습니다. 설정 파일에 추가하는 구문은 다음과 같습니다.

 hosts allow = 127.0.0.1 192.168.1.0/24
hosts deny = 0.0.0.0/0

이 설정은 로컬 호스트와 192.168.1.0/24 네트워크를 제외한 모든 연결을 거부하도록 Samba에 지시합니다. 이것은 SSH 서버를 보호하는 기본적인 방법 중 하나입니다.

이제 Samba Linux 서버를 보호하는 방법을 알았습니다.

Linux는 서버 호스팅에 적합하지만, 서버를 다룰 때는 항상 보안에 주의해야 합니다. Linux 서버는 위협 행위자의 주요 목표가 될 수 있으므로 항상 세심한 관리가 필요합니다.

네트워크를 강화하고 Linux 서버의 보안을 강화하기 위한 노력이 중요합니다. Samba를 적절하게 구성하는 것 외에도 Linux 서버를 보호하기 위해 취해야 할 몇 가지 추가적인 조치가 있습니다.

저자
Korea

기술 트렌드와 실용적인 팁을 전하는 लेखक입니다.