이번 포스팅에서는 서버의 네트워크 접근을 제한하는 데 사용할 수 있는 도구들을 소개합니다.
서버는 서비스와 프로세스가 들어오는 연결을 수신하기 위해 특정 포트에 바인딩됩니다. 예를 들어, 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
에 바인딩되어 있다면 네트워크 내 모든 장치가 이 포트로 서버에 연결할 수 있습니다. 이는 보안 위험을 증가시키기 때문에, 네트워크 접근을 제한하는 것이 필요합니다.
네트워크 보안의 중요한 개념 중 하나는 최소 권한 원칙입니다. 이는 시스템이 정상적으로 작동하는 데 필요한 최소한의 권한만을 부여하는 것을 의미합니다. 따라서, 서버가 네트워크 내의 모든 장치로부터 연결을 수신하는 것은 바람직하지 않습니다. 실제로 많은 클라이언트와 서버가 여러 스위치와 라우터를 통해 연결된 큰 네트워크 환경에서는 더욱 그렇습니다.
네트워크 전체에 보안을 적용하기 위해 외부 방화벽이나 보안 장비를 사용할 수 있습니다. 다음은 대표적인 네트워크 보안 장비들입니다:
이러한 장비들은 네트워크로 들어오고 나가는 모든 트래픽을 제어하는 규칙을 정의할 수 있도록 도와줍니다
개별 서버 수준에서도 다양한 도구를 사용하여 네트워크 접근을 제한할 수 있습니다. 대표적인 리눅스 기반 도구와 윈도우 서버의 방화벽 도구는 다음과 같습니다:
서버의 네트워크 접근을 제한하는 것은 보안을 강화하는 중요한 단계입니다. 외부 방화벽이나 네트워크 보안 장비를 사용하여 네트워크 전체를 보호할 수 있으며, 개별 서버 수준에서도 다양한 방화벽 도구를 활용하여 세부적인 접근 제어를 구현할 수 있습니다. 이러한 도구들을 적절히 사용하여 네트워크 보안을 강화하고, 최소 권한 원칙을 준수하는 것이 중요합니다.