새로 만든 Linux VPS를 강화하기 위한 실용적인 단계별 가이드입니다. sudo 사용자 생성, 키 전용 로그인으로 SSH 잠금, UFW를 이용한 방화벽 구성 방법을 다룹니다. Fail2ban과 자동 보안 업데이트 설정도 포함되어 있습니다.
SKYLINE Engineering @skyline
게시일: 2026년 6월 8일 | 읽는 시간: 5분
들어가며
새 VPS는 부팅되는 순간부터 공용 인터넷에 노출됩니다. 몇 분 안에 자동화된 봇이 자격 증명 스터핑(credential-stuffing) 공격으로 22번 포트를 탐색하기 시작합니다. 다행인 점은, 잘 알려진 몇 가지 단계만으로도 그 위험의 대부분을 제거할 수 있다는 것입니다. 이 가이드는 전문가가 운영 첫날에 하는 방식 그대로 새 Linux 서버를 강화하는 과정을 안내합니다(Ubuntu/Debian을 기준으로 하며, 명령어는 다른 배포판에도 거의 그대로 적용됩니다).
워크로드를 어디에서 운영할지 아직 고민 중이라면, Skyline은 사우디아라비아 내에서 클라우드 서버 및 VPS를 프로비저닝합니다. 이를 통해 데이터를 PDPL/NCA 데이터 거주(data-residency) 규정 아래 유지할 수 있으며, 현지 아랍어 지원팀에 메시지 한 통이면 연결됩니다.
시작하기 전에
다음이 필요합니다:
- 공용 IP를 가진 새 VPS와, 제공업체로부터 받은 초기
root자격 증명(또는 기본 sudo 사용자). - 사용 중인 컴퓨터의 SSH 클라이언트. Linux/macOS에는 기본 내장되어 있으며, Windows에서는 OpenSSH 클라이언트나 PowerShell을 사용하세요.
- SSH 키 쌍. 없다면 로컬에서 생성하세요:
ssh-keygen -t ed25519 -C "you@example.com"
ed25519 키는 짧고 빠르며, 기존의 2048비트 RSA보다 강력합니다. Enter를 눌러 기본 경로(~/.ssh/id_ed25519)를 수락하고 패스프레이즈를 설정하세요.
1단계 — 먼저 시스템을 업데이트하기
로그인한 후, 다른 무엇보다 먼저 모든 패키지를 최신 상태로 만들어 패치된 기준점에서 시작하세요:
ssh root@your_server_ip
apt update && apt upgrade -y
2단계 — root가 아닌 sudo 사용자 생성하기
일상적으로 root로 작업하는 것은 위험합니다. 단 한 번의 오타가 치명적일 수 있고, root는 모든 공격자가 가장 먼저 노리는 계정입니다. 대신 전용 관리 사용자를 생성하세요:
adduser deploy
usermod -aG sudo deploy
이제 새 사용자로 로그인할 수 있도록 SSH 공개 키를 복사하세요:
rsync --archive --chown=deploy:deploy ~/.ssh /home/deploy/
비밀번호 로그인으로 프로비저닝했다면, 로컬 컴퓨터에서 ssh-copy-id deploy@your_server_ip를 대신 사용하세요. 두 번째 터미널을 열어 deploy로 로그인할 수 있는지, 그리고 sudo whoami를 실행했을 때(root가 출력되어야 합니다) 정상인지 확인한 뒤에야 다른 작업을 진행하세요. 새 접근이 확인되기 전까지는 절대 작업 중인 세션을 닫지 마세요.
3단계 — SSH 데몬 강화하기
이것이 단일 항목으로는 가장 큰 효과를 내는 변경입니다. SSH 설정을 편집하세요:
sudo nano /etc/ssh/sshd_config
다음 지시문을 설정하세요(주석을 해제하거나 추가):
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
MaxAuthTries 3
X11Forwarding no
| 지시문 | 효과 |
|---|---|
PermitRootLogin no |
SSH를 통한 직접 root 로그인 차단 |
PasswordAuthentication no |
키 전용 인증을 강제하여 무차별 대입 공격 무력화 |
MaxAuthTries 3 |
3회 실패 후 연결 종료 |
서비스를 다시 로드하여 변경 사항을 적용하세요:
sudo systemctl reload ssh
로그아웃하기 전에 새 터미널에서 테스트하세요. 키 로그인이 여전히 작동하는지, 그리고 비밀번호 시도가 거부되는지 확인하세요. 문제가 있더라도 기존 세션이 열려 있어 바로 수정할 수 있습니다.
선택 사항: SSH 포트 변경하기
SSH를 22번 포트에서 다른 포트(예: 2222)로 옮긴다고 해서 작정한 공격자를 막을 수는 없지만, 자동화된 스캐너로 인한 로그 잡음을 크게 줄여줍니다. sshd_config에 Port 2222를 설정하고, 다시 로드하기 전에 방화벽에서 해당 포트를 허용한 뒤(다음 단계), ssh -p 2222 deploy@your_server_ip로 접속하세요.
4단계 — UFW로 방화벽 구성하기
UFW(Uncomplicated Firewall)는 iptables의 사용하기 쉬운 프런트엔드입니다. 기본적으로 모든 인바운드 연결을 거부하고, 필요한 것만 허용하세요:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
웹 서버를 운영한다면 HTTP와 HTTPS도 열어주세요:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
중요: 방화벽을 활성화하기 전에 SSH 포트를 허용하세요. 그렇지 않으면 스스로 접속이 차단됩니다. 포트를 변경했다면
OpenSSH대신sudo ufw allow 2222/tcp를 사용하세요.
활성화하고 확인하세요:
sudo ufw enable
sudo ufw status verbose
5단계 — Fail2ban 설치하기
Fail2ban은 로그를 감시하다가 반복된 로그인 실패와 같은 악의적 패턴을 보이는 IP를 일시적으로 차단합니다:
sudo apt install fail2ban -y
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
jail.local을 편집하고, [sshd] 섹션 아래에서 합리적인 제한값과 함께 jail이 활성화되어 있는지 확인하세요:
[sshd]
enabled = true
maxretry = 3
bantime = 1h
findtime = 10m
다시 시작하고 jail 상태를 확인하세요:
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd
6단계 — 자동 보안 업데이트 활성화하기
패치되지 않은 소프트웨어는 가장 흔한 침해 경로입니다. Ubuntu/Debian에서는 무인(unattended) 보안 업그레이드를 활성화하세요:
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades
이렇게 하면 보안 패치는 자동으로 적용되면서도 기능 업그레이드는 사용자의 통제 아래 둘 수 있습니다.
강화 체크리스트
- [x] 시스템 전체 업데이트 완료
- [x] root가 아닌 sudo 사용자 생성 및 확인
- [x] root SSH 로그인 비활성화
- [x] 비밀번호 인증 비활성화(키 전용)
- [x] 기본 거부 정책으로 UFW 방화벽 활성화
- [x] SSH jail에서 Fail2ban 실행 중
- [x] 자동 보안 업데이트 활성화
다음 단계
이 기준 설정만으로도 기회주의적 공격의 대부분을 차단할 수 있습니다. 여기서부터는 애플리케이션별 강화(리버스 프록시, Let's Encrypt를 통한 TLS, 데이터베이스의 localhost 바인딩), 중앙 집중식 로깅, 정기적인 서버 외부 백업을 고려해 보세요. 서버가 이메일도 처리한다면, Skyline의 비즈니스 이메일 호스팅은 메일을 해당 서버 밖에 두고 SPF, DKIM, DMARC로 적절히 인증해 줍니다.
왕국 내에서 서버를 운영하는 것에 관한 더 많은 가이드는 VPS 및 클라우드 서버 허브를 둘러보세요.
투명한 가격과 현지 지원으로 왕국 내 인프라에 배포할 준비가 되셨나요? Skyline Cloud 계정을 만들고 몇 분 만에 강화된 VPS를 띄워보세요.
Comments
0 total · 0 threads