새로 생성된 VPS는 온라인 상태가 된 지 몇 분 만에 스캔당하고 탐색당합니다. 좋은 소식은, 순서에 맞춰 한 시간만 투자해 보안을 강화하면 기회주의적 공격의 압도적 다수를 막을 수 있다는 것입니다. 다음은 프라이버시 중심의 새 서버를 위한, 중요한 순서대로 정리한 체크리스트입니다.
1. 먼저 SSH부터 잠그십시오
sudo 권한을 가진 non-root 사용자를 만들고 공개 키를 등록한 다음, sshd_config에서 비밀번호 인증과 root 로그인을 비활성화하십시오 (PasswordAuthentication no, PermitRootLogin no). 키 전용 SSH만으로도 서버에 쏟아지는 노이즈 대부분을 차지하는 비밀번호 추측 공격을 무력화할 수 있습니다. SSH를 재시작한 뒤, 현재 세션을 닫기 전에 새 세션이 정상 작동하는지 반드시 확인하십시오.

2. 앞단에 방화벽을 두십시오
인바운드는 기본적으로 차단하고, 필요한 것만 허용하십시오. ufw를 사용한다면: 수신을 거부하고 송신을 허용한 다음, SSH 포트와 실제로 운영하는 서비스 포트만 열어주십시오. 방화벽은 "열려 있는 모든 포트가 공격 대상"이라는 상황을 "여러분이 선택한 문만 존재한다"는 상황으로 바꿔주며, 공격 표면을 극적으로 줄여줍니다.
3. fail2ban을 추가하십시오
fail2ban을 설치해 인증 로그를 감시하고, 반복적으로 실패하는 IP를 일시적으로 차단하십시오. 키 전용 SSH를 사용하더라도, 로그 노이즈를 줄이고 여러분이 노출한 모든 서비스에 대한 무차별 대입 공격을 무디게 만들어줍니다. 기본 설정으로도 충분하니, sshd jail과 운영 중인 서비스에 해당하는 jail을 활성화하십시오.
4. 자동 보안 업데이트를 켜십시오
Debian/Ubuntu라면 unattended-upgrades를 활성화해, 신경 쓰지 않아도 보안 패치가 자동으로 적용되도록 하십시오. 서버가 침해당하는 가장 흔한 원인은 이미 패치가 나와 있는 알려진 취약점입니다 — 업데이트를 자동화하면 잠자는 동안에도 그 틈을 막을 수 있습니다.
5. 공격 표면을 줄이십시오
사용하지 않는 서비스는 제거하고, 로컬 전용 데몬은 127.0.0.1에 바인딩하고, ss -tlnp로 현재 무엇이 listening 중인지 확인하십시오. 열려 있는 모든 서비스는 잠재적인 침입 경로이며, 운영하고 노출하는 서비스가 적을수록 공격받을 지점도 줄어듭니다. 그런 다음 오프박스 백업을 구성해, 침해가 발생하더라도 재앙이 아니라 복구 가능한 사고로 만드십시오.
1시간 요약
키 전용 SSH, 기본 차단 방화벽, fail2ban, 자동 업데이트, 그리고 최소한의 listening 표면. 어느 것도 특별한 기술이 아니며 모두 빠르게 적용할 수 있고, 이를 합치면 실제 침해 사례 거의 전부를 차지하는 자동화된 공격을 막을 수 있습니다. 중요한 것을 배포하기 전에 반드시 먼저 실행하십시오.