서버는 인터넷에 노출되는 순간부터 끊임없이 자동화된 공격 스캔의 대상이 됩니다. 복잡한 보안 솔루션을 도입하기 전에 기본적인 보안 수칙만 지켜도 대부분의 공격을 막을 수 있습니다.
1. 방화벽 설정
필요한 포트만 열어두는 것이 기본 원칙입니다. 웹 서버라면 80, 443 포트, SSH라면 변경한 포트만 열고 나머지는 모두 차단해야 합니다. Ubuntu에서는 UFW를 사용해 간단히 설정할 수 있습니다.
sudo ufw allow 80 sudo ufw allow 443 sudo ufw allow 22222 sudo ufw enable 2. 정기적인 시스템 업데이트
운영체제와 소프트웨어의 보안 취약점은 지속적으로 발견되고 패치됩니다. sudo apt update && sudo apt upgrade를 정기적으로 실행하거나 자동 업데이트를 설정해두는 것이 중요합니다.
3. 최소 권한 원칙
모든 작업을 root 계정으로 수행하지 말고, 필요한 권한만 가진 별도 계정을 만들어 사용해야 합니다. 데이터베이스 계정 역시 애플리케이션이 필요한 최소한의 권한만 부여받아야 합니다.
4. 비밀번호와 시크릿 관리
API 키나 데이터베이스 비밀번호를 코드에 직접 작성하지 말고 환경 변수나 시크릿 관리 도구(예: AWS Secrets Manager, Cloudflare Secrets)를 사용해야 합니다. 소스코드 저장소에 민감한 정보가 올라가지 않도록 .gitignore 설정도 필수입니다.
5. 정기적인 백업
보안 사고나 실수로 데이터가 손상되었을 때 복구할 수 있는 유일한 방법은 백업입니다. 자동화된 백업 스케줄을 설정하고, 백업 파일이 실제로 복원 가능한지 주기적으로 테스트해야 합니다.
마무리
보안은 한 번 설정하고 끝나는 것이 아니라 지속적으로 점검하고 개선해야 하는 과정입니다. 위의 다섯 가지 기본 원칙만 잘 지켜도 대부분의 흔한 공격으로부터 서버를 보호할 수 있습니다.