[System Hardening] 서버의 네트워크 접근을 제한하는 도구

IMKUNYOUNG·2024년 6월 13일
0

CKS

목록 보기
34/70

이번 포스팅에서는 서버의 네트워크 접근을 제한하는 데 사용할 수 있는 도구들을 소개합니다.

서버와 포트 파인딩

서버는 서비스와 프로세스가 들어오는 연결을 수신하기 위해 특정 포트에 바인딩됩니다. 예를 들어, SSH 서버가 실행 중일 때 서버의 포트 22에 바인딩됩니다. /etc/services 파일을 통해 포트와 서비스의 매핑을 확인할 수 있습니다. 또한 netstat 명령어를 사용하여 서버가 어떤 포트에서 연결을 수신하는지 확인할 수 있습니다.

controlplane ~ ➜  systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2024-07-10 02:57:16 UTC; 21min ago
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 1263 (sshd)
      Tasks: 1 (limit: 251379)
     Memory: 10.1M
     CGroup: /system.slice/ssh.service
             └─1263 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"
controlplane ~ ➜  cat /etc/services| grep ssh
ssh             22/tcp                          # SSH Remote Login Protocol

controlplane ~ ➜  netstat -an | grep 22 | grep -w LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     

controlplane ~ ➜  netstat -an | grep -w LISTEN
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:10257         0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:10259         0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.11:35797        0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:34081         0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:10248         0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:10249         0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:2379          0.0.0.0:*               LISTEN     
tcp        0      0 192.6.78.3:2379         0.0.0.0:*               LISTEN     
tcp        0      0 192.6.78.3:2380         0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:2381          0.0.0.0:*               LISTEN     
tcp6       0      0 :::10256                :::*                    LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 :::8888                 :::*                    LISTEN     
tcp6       0      0 :::10250                :::*                    LISTEN     
tcp6       0      0 :::6443                 :::*                    LISTEN     

기본적으로 포트 22가 추가 구성 없이 IP 주소 0.0.0.0에 바인딩되어 있다면 네트워크 내 모든 장치가 이 포트로 서버에 연결할 수 있습니다. 이는 보안 위험을 증가시키기 때문에, 네트워크 접근을 제한하는 것이 필요합니다.

최소 권한 원칙

네트워크 보안의 중요한 개념 중 하나는 최소 권한 원칙입니다. 이는 시스템이 정상적으로 작동하는 데 필요한 최소한의 권한만을 부여하는 것을 의미합니다. 따라서, 서버가 네트워크 내의 모든 장치로부터 연결을 수신하는 것은 바람직하지 않습니다. 실제로 많은 클라이언트와 서버가 여러 스위치와 라우터를 통해 연결된 큰 네트워크 환경에서는 더욱 그렇습니다.

네트워크 보안 장비

네트워크 전체에 보안을 적용하기 위해 외부 방화벽이나 보안 장비를 사용할 수 있습니다. 다음은 대표적인 네트워크 보안 장비들입니다:

  • Cisco ASA (Adaptive Security Appliance): 고성능 방화벽으로, 다양한 네트워크 보안 기능을 제공합니다.
  • Juniper Next-Gen Firewall: 고급 위협 방어 기능을 갖춘 차세대 방화벽입니다.
  • Barracuda Next-Gen Firewall: 고급 트래픽 제어와 위협 방어 기능을 제공합니다.
  • Fortinet: 통합 보안 기능을 제공하는 방화벽 솔루션입니다.

이러한 장비들은 네트워크로 들어오고 나가는 모든 트래픽을 제어하는 규칙을 정의할 수 있도록 도와줍니다

서버 수준의 보안 도구

개별 서버 수준에서도 다양한 도구를 사용하여 네트워크 접근을 제한할 수 있습니다. 대표적인 리눅스 기반 도구와 윈도우 서버의 방화벽 도구는 다음과 같습니다:

  1. IPTables: 리눅스 커널에 내장된 방화벽 도구로, 패킷 필터링과 NAT(Network Address Translation) 기능을 제공합니다.
  2. FirewallD: 더 쉬운 인터페이스를 제공하는 방화벽 관리 도구로, 동적 방화벽 규칙 적용을 지원합니다.
  3. NuFW: 사용자의 인증에 기반한 고급 필터링 기능을 제공하는 방화벽입니다.
  4. Windows Firewall: 윈도우 서버에 기본 제공되는 방화벽 도구로, 간편한 GUI를 통해 방화벽 규칙을 관리할 수 있습니다.

결론

서버의 네트워크 접근을 제한하는 것은 보안을 강화하는 중요한 단계입니다. 외부 방화벽이나 네트워크 보안 장비를 사용하여 네트워크 전체를 보호할 수 있으며, 개별 서버 수준에서도 다양한 방화벽 도구를 활용하여 세부적인 접근 제어를 구현할 수 있습니다. 이러한 도구들을 적절히 사용하여 네트워크 보안을 강화하고, 최소 권한 원칙을 준수하는 것이 중요합니다.

0개의 댓글