서버 보안은 한 가지 마법 같은 설정으로 끝나지 않습니다. 여러 기본기를 층층이 쌓아 공격 표면을 줄이는 일입니다. 그렇다고 처음부터 모든 것을 완벽하게 할 필요는 없습니다. 이 글에서는 서버를 운영한다면 최소한 이것만은 해두어야 할 보안 항목을 체크리스트로 정리했습니다.
1. 계정 관리
- [ ] root 직접 로그인을 비활성화했는가
- [ ] 일반 사용자 계정으로 접속하고 sudo를 사용하는가
- [ ] 사용하지 않는 계정은 삭제했는가
- [ ] 강력한 비밀번호 정책을 적용했는가
root를 직접 쓰지 않는 것만으로도 사고 위험이 크게 줄어듭니다.
2. SSH 보안
- [ ] 비밀번호 대신 키 인증을 사용하는가
- [ ] 기본 22번 포트를 변경했는가
- [ ] 접속 가능한 사용자를 제한했는가
- [ ] fail2ban으로 무차별 공격을 차단하고 있는가
SSH는 가장 많이 공격받는 통로이므로 가장 신경 써야 합니다.
3. 방화벽
- [ ] 방화벽(ufw)을 활성화했는가
- [ ] 들어오는 연결의 기본 정책이 deny인가
- [ ] 꼭 필요한 포트만 열려 있는가
- [ ] 클라우드 보안 그룹도 함께 점검했는가
“필요한 것만 열고 나머지는 막는다”가 원칙입니다.
4. 업데이트 관리
- [ ] 시스템을 정기적으로 업데이트하는가
- [ ] 보안 업데이트 자동 적용을 설정했는가
- [ ] 사용하는 소프트웨어의 취약점 공지를 확인하는가
알려진 취약점의 대부분은 업데이트만으로 막을 수 있습니다.
5. 불필요한 서비스 정리
- [ ] 쓰지 않는 서비스와 포트를 닫았는가
- [ ] 설치만 하고 안 쓰는 패키지를 제거했는가
열려 있는 서비스가 적을수록 공격받을 지점도 줄어듭니다.
6. 로그와 모니터링
- [ ] 인증 로그(auth.log)를 주기적으로 확인하는가
- [ ] 비정상적인 접속 시도를 감지할 수 있는가
- [ ] 디스크·CPU 등 자원 상태를 모니터링하는가
이상 징후를 일찍 발견할수록 피해를 줄일 수 있습니다.
7. 백업
- [ ] 정기 백업이 자동화되어 있는가
- [ ] 백업을 원격지에도 보관하는가
- [ ] 실제로 복구가 되는지 테스트했는가
보안의 마지막 보루는 결국 백업입니다.
마무리
이 체크리스트는 거창한 보안 솔루션이 아니라, 누구나 할 수 있지만 안 하면 위험한 기본기입니다. 한 번에 다 못 하더라도, 위에서부터 하나씩 체크해 나가면 서버는 훨씬 안전해집니다. 새 서버를 만들 때마다 이 목록을 꺼내 점검하는 습관을 들이시길 권합니다.