신규 VPS 보안 설정 가이드: 초기 10분 필수 작업
새로 생성된 VPS는 생성 즉시 공격 대상이 됩니다. root 로그인 차단, SSH key 설정, sudo 사용자 생성 및 firewall 활성화까지 10분 만에 끝내는 보안 runbook을 확인하십시오.
서버의 보안은 초기 10분에 결정됩니다
새로 생성된 VPS는 안전하지 않습니다. 공인 IP가 할당되는 순간부터 스캐너들이 로그인을 시도합니다. 기본 이미지는 공격자에게 매우 취약한 환경을 제공합니다. root 계정이 접근 가능하고, 비밀번호 로그인이 허용되며, 방화벽이 없고, 패치가 정기적으로 이루어지지 않기 때문입니다. 다행히 이 모든 설정을 완료하는 데는 약 10분과 몇 개의 명령어가 필요합니다. 이것은 제가 새로운 서버에 무엇을 설치하기 전에 실행하는 runbook입니다.
각 단계는 서로 연결되어 있으므로 순서대로 진행하십시오. 각 단계에는 관련 가이드가 링크되어 있습니다. 이 페이지는 모든 단계를 하나로 묶은 빠른 경로를 제공합니다.
1분: 모든 패키지 업데이트
제공업체에서 받은 자격 증명을 사용하여 root로 로그인한 후, 다른 작업을 하기 전에 시스템을 최신 상태로 업데이트하십시오.
apt update && apt upgrade -y패치가 되지 않은 서버는 가장 쉬운 공격 대상이므로 이 작업을 가장 먼저 수행해야 합니다. 업데이트가 완료되면, 사용자가 직접 기억하지 않아도 패치가 유지되도록 자동 보안 업데이트를 설정하십시오.
2분: sudo 권한을 가진 일반 사용자 생성
root 계정으로 계속 작업하지 마십시오. 본인만의 사용자를 생성하고 sudo 권한을 부여하십시오.
adduser matt
usermod -aG sudo matt이후에는 이 사용자로 로그인하여 관리 작업에 sudo을 사용하십시오. 항상 root로 작업하면 모든 실수와 침해 사고가 무제한의 권한을 가진 상태로 발생합니다. 비특권 사용자로 실행하는 목적이 바로 이것을 방지하기 위함입니다.
4분: SSH 키 설정
비밀번호는 추측할 수 있지만, 키는 불가능합니다. 개인 노트북에 키가 없다면 새로 생성하십시오.
ssh-keygen -t ed25519그 다음, 공개 키를 서버로 복사하십시오.
ssh-copy-id matt@YOUR_SERVER새 사용자가 비밀번호로 로그인하려면 ssh-copy-id 설정이 켜져 있어야 합니다. 만약 이미 꺼져 있다면, root의 ~/.ssh/authorized_keys을 /home/matt/.ssh/authorized_keys(matt 소유)로 복사하거나, 해당 파일에 공개 키를 직접 붙여넣으십시오.
기기당 하나의 키를 사용하는 모델, 키 로그인을 차단하는 권한 설정, 분실된 키의 무효화에 대한 내용은 SSH 키 관리 기본 사항에서 다룹니다.
로그아웃한 후 키를 사용하여 matt으로 다시 로그인하고, 다음 단계로 넘어가기 전에 키가 정상 작동하는지 확인하십시오. 키로 접속할 수 없는 상태에서 SSH를 먼저 잠그는 것은 스스로 접속을 차단하는 결과를 초래합니다.
6분: root 로그인 및 비밀번호 인증 비활성화
키가 작동하는 것을 확인했다면, 스캐너들이 이용하는 두 개의 통로를 차단하십시오. 패키지 업데이트 시 설정이 덮어쓰여지지 않도록 drop-in 파일을 사용하십시오. Ubuntu cloud 이미지의 PasswordAuthentication yes 설정인 50-cloud-init.conf보다 먼저 정렬되도록 파일 이름을 00-으로 지정하십시오. sshd는 가장 먼저 읽은 값을 유지하므로, 나중에 정렬되는 파일은 무시됩니다.
sudo nano /etc/ssh/sshd_config.d/00-hardening.confPasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no그 다음 SSH를 재로드하십시오.
sudo systemctl restart ssh그 다음, drop-in 파일이 무시되지 않도록 sshd가 실제로 사용하는 설정을 확인하십시오.
sudo sshd -T | grep -Ei 'passwordauthentication|permitrootlogin'비밀번호 인증과 root 로그인을 차단하면, 서버를 향한 지속적인 brute-force 트래픽이 성공할 수 없습니다. 포트 변경을 포함한 전체 보안 강화 방법은 VPS에서의 SSH hardening에 있습니다.
8분: 방화벽 활성화
모든 인바운드 트래픽을 기본적으로 차단(default-deny)한 다음, 필요한 서비스만 허용하십시오. 방화벽을 활성화하기 전에 SSH를 먼저 허용해야 접속이 끊기는 것을 방지할 수 있습니다.
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enable웹사이트를 위한 80/tcp 및 443/tcp와 같이 실제로 운영하는 서비스에 대해 allow 규칙을 추가하십시오. IPv4와 IPv6가 모두 적용되는지 확인하십시오. IPv4만 필터링하는 방화벽은 IPv6 측면을 완전히 개방해 두는 것과 같습니다. 전체 과정은 VPS에서의 방화벽 기초를 참조하십시오.
10분: Fail2ban으로 스캐너 차단
마지막으로, 포트를 공격하는 IP 주소들을 차단하기 위해 Fail2ban을 설치하십시오.
sudo apt install -y fail2banUbuntu 24.04의 기본 설치 버전은 첫 부팅부터 SSH를 보호합니다. 키 인증이 이미 설정되어 있다면, Fail2ban은 주요 방어 수단이라기보다 로그 노이즈를 줄이고 반복적인 공격자를 차단하는 보조 수단 역할을 합니다.
체크리스트
이것이 runbook입니다. 아래 생성기를 사용하여 각 제어 항목을 확인하고, 각 단계의 정확한 명령어가 포함된 개인용 체크리스트를 만드십시오.
새 서버를 구축할 때마다 이 과정을 반복하면 숙달될 것입니다. 지금 10분을 투자하면 서버가 해킹당한 후 겪게 될 끔찍한 오후를 피할 수 있습니다.
필수 설정이 완료되면, Ubuntu에서의 자동 보안 업데이트를 통해 다시 로그인하지 않고도 서버를 최신 상태로 유지할 수 있습니다.
FAQ
새 VPS에서 가장 먼저 해야 할 일은 무엇입니까?
apt update && apt upgrade -y으로 시스템을 업데이트한 다음, sudo 권한을 가진 일반 사용자를 생성하고 root 작업 중단을 시작하십시오. 그 후 SSH 키를 설정하고, root 로그인과 비밀번호 인증을 비활성화하며, 기본 차단 방화벽을 활성화하고, Fail2ban을 설치하십시오. 이 순서대로 진행해야 접속이 차단되는 사고 없이 안전하게 설정을 완료할 수 있습니다.
SSH 보안 강화 중 접속이 차단되는 것을 어떻게 방지합니까?
비밀번호나 root 로그인을 비활성화하기 전에 SSH 키 로그인을 설정하고 테스트하십시오. 키로 로그아웃 후 다시 로그인하여 작동 여부를 확인한 다음, PasswordAuthentication와 PermitRootLogin를 비활성화하십시오. 방화벽을 활성화할 때는 ufw enable을 실행하기 전에 22번 포트를 허용하십시오. 만약 접속이 차단되었다면, 제공업체의 웹 콘솔을 통해 SSH 없이 접속할 수 있습니다.
소규모 서버에도 이 모든 설정이 정말 필요합니까?
네, 스캐너는 서버의 규모를 상관하지 않습니다. 모든 공인 IP를 동일한 방식으로 스캔합니다. 이 runbook 전체를 수행하는 데는 약 10분이 소요되며, root 로그인 금지, 비밀번호 추측 방지, 의도하지 않은 서비스 노출 방지, 자동 보안 패치 등 가장 쉬운 공격 경로들을 모두 제거할 수 있습니다.
가장 중요한 단계 하나만 꼽는다면 무엇입니까?
root 로그인을 비활성화한 키 전용 SSH 설정입니다. 신규 VPS에 대한 대부분의 공격은 root 계정을 대상으로 한 자동화된 비밀번호 추측 공격입니다. 이 두 가지를 모두 차단하면 해당 유형의 공격을 완전히 차단할 수 있습니다. 방화벽과 Fail2ban은 노출된 범위를 제한하고 남은 공격의 속도를 늦추는 역할을 합니다.
서버가 실제로 보안 설정되었는지 어떻게 확인합니까?
신뢰하기 전에 다음 세 가지를 수동으로 확인하십시오. sudo ss -tlnp을 실행하여 의도한 포트만 공인 주소에서 대기 중인지, 잊어버린 0.0.0.0 또는 [::] 서비스가 없는지 확인하십시오. sudo ufw status verbose을 실행하여 기본 인바운드 정책이 deny인지, 그리고 일반 규칙과 (v6) 규칙이 모두 존재하는지 확인하십시오. 또한, 첫 번째 SSH 세션을 닫기 전에 항상 두 번째 SSH 세션을 열어두어, SSH 설정 오류로 인해 서버에서 완전히 차단되는 상황을 방지하십시오. 이 세 가지가 모두 정상이라면 기본 설정이 완료된 것입니다.