새 서버를 개설하면 수분 내에 자동화된 공격 스캔이 시작됩니다. 서버를 받자마자 기본 보안 설정을 마쳐야 합니다. 이 체크리스트대로 따라 하면 5분 안에 기본 보안 환경을 구축할 수 있습니다.

1단계: 시스템 업데이트

# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y

# CentOS/RHEL
sudo dnf update -y

2단계: 관리자 계정 생성 (root 직접 사용 금지)

# 새 관리자 계정 생성
sudo adduser admin

# sudo 권한 부여
sudo usermod -aG sudo admin

# 새 계정으로 전환 후 sudo 테스트
su - admin
sudo whoami   # root가 출력되어야 함

3단계: SSH 키 인증 설정

로컬 PC에서:

# SSH 키 생성 (이미 있으면 생략)
ssh-keygen -t ed25519 -C "my-server"

# 공개키를 서버에 복사
ssh-copy-id admin@서버IP

서버에서 SSH 설정 강화 (/etc/ssh/sshd_config):

# 루트 로그인 비활성화
PermitRootLogin no

# 비밀번호 로그인 비활성화 (키 인증 확인 후)
PasswordAuthentication no

# 빈 비밀번호 금지
PermitEmptyPasswords no

# 최대 인증 시도 횟수
MaxAuthTries 3

# 접속 타임아웃
LoginGraceTime 30
# 설정 적용 전 새 터미널에서 키 인증 테스트!
sudo systemctl restart sshd

4단계: 방화벽 설정

# UFW 설치 및 활성화
sudo apt install -y ufw

# 기본 정책
sudo ufw default deny incoming
sudo ufw default allow outgoing

# SSH 허용 (변경했다면 해당 포트)
sudo ufw allow 22/tcp

# 웹 서버 운영 시
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# 방화벽 활성화
sudo ufw enable
sudo ufw status

5단계: fail2ban 설치

sudo apt install -y fail2ban

# 기본 설정으로 SSH 보호 시작
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd

6단계: 자동 보안 업데이트

sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
# 또는
sudo unattended-upgrade --dry-run   # 테스트

7단계: 불필요한 서비스 비활성화

# 실행 중인 서비스 확인
sudo systemctl list-units --type=service --state=running

# 불필요한 서비스 비활성화 예시
sudo systemctl disable --now avahi-daemon
sudo systemctl disable --now cups
sudo systemctl disable --now bluetooth

8단계: 시간 동기화 설정

# 시간대 설정
sudo timedatectl set-timezone Asia/Seoul

# NTP 동기화 확인
timedatectl status
sudo systemctl status systemd-timesyncd

9단계: 스왑 설정 (메모리가 적은 서버)

# 1GB 스왑 파일 생성
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# 영구 적용
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

10단계: 기본 모니터링 도구 설치

# 유용한 도구 설치
sudo apt install -y \
    htop \       # 시스템 모니터
    iotop \      # 디스크 I/O 모니터
    net-tools \  # netstat 등
    curl wget \  # 다운로드
    vim \        # 에디터
    tmux         # 터미널 멀티플렉서

초기 설정 완료 확인

# 방화벽 상태
sudo ufw status

# SSH 설정 확인
sshd -T | grep -E "permitrootlogin|passwordauthentication|maxauthtries"

# fail2ban 상태
sudo fail2ban-client status

# 자동 업데이트 상태
systemctl status unattended-upgrades

# 시스템 업데이트 날짜
sudo apt-get -s upgrade 2>/dev/null | grep "^[0-9]"

보안 점검 요약

✅ 시스템 패키지 최신 상태
✅ root 직접 로그인 차단
✅ SSH 키 인증 설정
✅ 비밀번호 로그인 비활성화
✅ 방화벽 활성화 (필요한 포트만 허용)
✅ fail2ban으로 브루트포스 방어
✅ 자동 보안 업데이트 설정
✅ 불필요한 서비스 비활성화

이 체크리스트를 완료하면 기본적인 서버 보안은 갖춰진 상태입니다. 이후에는 서비스에 맞는 추가 보안 설정(Nginx SSL, MySQL 보안, WordPress 강화 등)을 적용하세요.