VPS를 만들었다면 가장 먼저 해야 할 보안 설정 10가지

VPS를 만들면 몇 분 안에 공인 IP가 생기고 인터넷에서 접속할 수 있다. 편리하지만 그 순간부터 자동 스캔과 로그인 시도의 대상이 된다. 애플리케이션을 올리기 전에 운영체제와 접속 경로부터 잠그는 이유다.

아래 순서는 Ubuntu 계열 서버를 기준으로 한 출발점이다. 설정을 바꿀 때는 현재 SSH 연결을 유지하고, 새 터미널에서 다시 접속되는지 확인한 뒤 기존 세션을 닫아야 한다. 방화벽이나 SSH 설정을 잘못 적용하면 정상 관리자도 서버에 들어가지 못할 수 있다.

1. 일반 관리자 계정을 만든다

일상 작업에 root 계정을 직접 쓰지 않는다. 별도 계정을 만들고 필요한 작업만 sudo로 수행한다. 누가 어떤 권한으로 변경했는지 추적하기도 쉬워진다.

2. SSH 키 로그인을 먼저 확인한다

비밀번호보다 키 기반 인증을 우선하고, 새 키로 실제 접속되는지 확인한다. Ubuntu 문서는 ed25519 키 사용을 권장하며 필요하면 2단계 인증도 구성할 수 있다고 안내한다. Ubuntu OpenSSH 보안 안내

3. root와 비밀번호 SSH 로그인을 끈다

키 로그인이 검증된 뒤 root 직접 로그인과 비밀번호 인증을 비활성화한다. SSH 포트를 바꾸는 것은 로그 소음을 줄일 수 있지만, 키 인증과 접근 제한을 대신하는 보안 대책은 아니다.

4. 두 겹의 방화벽을 사용한다

VPS 사업자의 네트워크 방화벽과 서버 내부 UFW를 함께 쓴다. 외부에는 80과 443처럼 실제로 필요한 포트만 열고, SSH는 가능하면 회사 VPN이나 고정 IP에서만 허용한다. Ubuntu UFW 안내

5. 보안 업데이트를 자동화한다

운영체제와 패키지를 최신 상태로 유지한다. 현재 Ubuntu Server는 보안 업데이트를 매일 자동 적용하는 구성이 기본이지만, 실제 활성 상태와 재부팅 필요 여부를 점검해야 한다. 애플리케이션 이미지와 라이브러리 업데이트는 별도 절차가 필요하다. Ubuntu 자동 업데이트

6. 애플리케이션 포트를 직접 공개하지 않는다

Node.js나 컨테이너의 내부 포트를 인터넷에 바로 열지 않는다. Nginx, Caddy 같은 역방향 프록시 뒤에 두고 HTTPS를 적용한다. 관리자 화면과 데이터베이스 포트는 공개 인터넷에서 차단한다.

7. 비밀값을 소스와 이미지에서 분리한다

DB 비밀번호, API 키, 서명 키를 Git 저장소나 Docker 이미지에 넣지 않는다. 실행 시 주입하고 파일 권한을 제한하며, 교체 주기와 폐기 절차를 정한다. 로그와 오류 메시지에도 비밀값이 남지 않는지 확인한다. OWASP 비밀정보 관리 지침

8. 컨테이너 권한을 줄인다

컨테이너 안에서도 root가 아닌 사용자로 애플리케이션을 실행한다. 가능하면 Docker의 rootless 모드를 검토한다. Docker rootless 모드는 데몬과 컨테이너를 일반 사용자 권한으로 실행해 데몬 취약점의 영향을 줄인다. Docker rootless 모드

9. 로그와 알림을 서버 밖으로 보낸다

SSH 로그인 실패, sudo 사용, 서비스 재시작, 애플리케이션 오류를 기록한다. 디스크가 꽉 차지 않도록 로그 순환을 설정하고, 서버가 멈춰도 조사할 수 있게 중요한 로그는 외부로 보낸다. 보안 로그에는 개인정보와 토큰을 그대로 남기지 않는다. OWASP 로깅 지침

10. 백업보다 복구를 시험한다

자동 스냅샷만 켜고 끝내지 않는다. DB 덤프와 파일 백업을 별도 위치에 보관하고, 새 서버에서 실제로 복원해 본다. 서버 계정이 침해됐을 때 같은 계정의 백업까지 지워지지 않도록 권한과 저장 위치를 분리한다.

운영 체크리스트

사용하지 않는 계정, 패키지, 포트를 제거했는가?

SSH 접속 실패와 디스크 부족 알림이 오는가?

인증서가 자동 갱신되고 만료 전에 알림을 받는가?

백업 파일이 암호화되고 복원 시험 기록이 있는가?

퇴사자 계정과 키를 즉시 폐기할 수 있는가?

장애 때 접근할 비상 계정과 절차가 있는가?

VPS 보안은 한 번의 설치 작업이 아니라 반복되는 운영 업무다. 서버를 만든 날 위 10가지를 적용하고, 매달 계정, 패치, 방화벽, 백업, 알림 상태를 짧게라도 검토하는 것이 현실적인 출발점이다.