/엔지니어/보안 설정/신규 Linux 서버 초기 보안 설정 — 처음 10
보안 설정초급UbuntuDebian서버보안초기설정UFW

신규 Linux 서버 초기 보안 설정 — 처음 10분 체크리스트

새 서버를 받은 첫날, 깊이보다 빠짐없음이 중요합니다. SSH 키·UFW·fail2ban·자동 업데이트까지 8단계를 30분 안에 끝내는 초급 체크리스트 — 각 항목의 심화 설정은 별도 가이드에서 다룹니다.

왜 초기 설정이 중요한가

클라우드 서버는 IP가 공개되는 순간부터 SSH 무차별 대입 공격이 시작됩니다. 기본 설정 그대로 두면 수 분 안에 수백 건의 로그인 시도가 쌓입니다.

Bash
# 신규 서버의 실제 로그인 시도 확인
sudo journalctl -u ssh --since "1 hour ago" | grep "Failed password" | wc -l

아래 순서대로 따라가면 대부분의 자동화 공격을 차단할 수 있습니다.


Step 1 — 패키지 업데이트

서버를 받자마자 가장 먼저 해야 할 일입니다.

Bash
sudo apt update && sudo apt upgrade -y

# 불필요한 패키지 정리
sudo apt autoremove -y && sudo apt autoclean

# 재부팅이 필요한지 확인
cat /var/run/reboot-required 2>/dev/null && echo "재부팅 필요" || echo "재부팅 불필요"

# 필요하면 재부팅
sudo reboot

Step 2 — 비루트 관리자 계정 생성

root 계정으로 직접 작업하는 것은 위험합니다. 전용 관리자 계정을 만들고 root 직접 로그인을 막습니다.

Bash
# 새 사용자 생성
sudo adduser deploy

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

# 전환 후 sudo 동작 확인
su - deploy
sudo whoami   # root 출력되어야 함

Step 3 — SSH 키 인증 설정

비밀번호 대신 SSH 키 인증을 사용하면 무차별 대입 공격을 원천 차단합니다.

내 PC에서 키 쌍 생성

Bash
# 내 로컬 PC에서 실행
ssh-keygen -t ed25519 -C "my-server"
# 저장 경로: ~/.ssh/id_ed25519 (기본값 엔터)
# 패스프레이즈: 설정 권장

# 공개키 확인
cat ~/.ssh/id_ed25519.pub

서버에 공개키 등록

Bash
# 방법 1: ssh-copy-id (가장 간편)
ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@서버IP

# 방법 2: 수동 등록 (서버에서)
mkdir -p ~/.ssh && chmod 700 ~/.ssh
echo "공개키_내용을_여기에_붙여넣기" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

키 인증 동작 확인

Bash
# 새 터미널에서 키로 접속 테스트 (비밀번호 없이 접속되어야 함)
ssh -i ~/.ssh/id_ed25519 deploy@서버IP

반드시 키 접속이 성공한 것을 확인한 뒤 다음 단계로 넘어가세요. 이전에 비밀번호 인증을 끄면 서버에 접근할 수 없게 됩니다.


Step 4 — SSH 보안 설정 강화

Bash
sudo nano /etc/ssh/sshd_config

아래 항목을 찾아 수정합니다.

INI
# root 직접 로그인 차단
PermitRootLogin no

# 비밀번호 인증 비활성화 (키 접속 확인 후!)
PasswordAuthentication no

# 빈 패스워드 허용 금지
PermitEmptyPasswords no

# 인증 시도 횟수 제한
MaxAuthTries 3

# 로그인 대기 시간 제한 (30초)
LoginGraceTime 30

# 사용할 사용자 명시 (선택 사항)
AllowUsers deploy
Bash
# 설정 문법 검사
sudo sshd -t

# 문제 없으면 적용
sudo systemctl reload ssh

# 현재 세션 유지한 채 새 터미널로 접속 테스트
ssh deploy@서버IP

Step 5 — UFW 방화벽 설정

필요한 포트만 열고 나머지는 모두 차단합니다.

Bash
# UFW 설치 확인
sudo apt install -y ufw

# 기본 정책: 들어오는 연결 차단, 나가는 연결 허용
sudo ufw default deny incoming
sudo ufw default allow outgoing

# SSH 허용 (현재 접속 끊기지 않도록 먼저!)
sudo ufw allow ssh          # 22번 포트

# 웹서버 운영 시 추가
sudo ufw allow http         # 80
sudo ufw allow https        # 443

# UFW 활성화
sudo ufw enable             # y 입력

# 상태 확인
sudo ufw status verbose

UFW를 활성화하기 전에 반드시 SSH(22번) 포트를 허용하세요. 그렇지 않으면 서버 접속이 끊깁니다.


Step 6 — fail2ban 설치

반복 로그인 실패 IP를 자동으로 차단합니다.

Bash
sudo apt install -y fail2ban

# 로컬 설정 파일 생성 (원본을 직접 수정하지 않음)
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
INI
[DEFAULT]
# 10분 내 5번 실패 시 1시간 차단
findtime  = 600
maxretry  = 5
bantime   = 3600

[sshd]
enabled = true
port    = ssh
Bash
sudo systemctl enable --now fail2ban

# 차단 현황 확인
sudo fail2ban-client status sshd

# 특정 IP 차단 해제
sudo fail2ban-client set sshd unbanip 1.2.3.4

Step 7 — 자동 보안 업데이트 설정

패치를 수동으로 챙기기 어렵다면 보안 업데이트만 자동으로 설치합니다.

Bash
sudo apt install -y unattended-upgrades

# 설정 확인 및 활성화
sudo dpkg-reconfigure -plow unattended-upgrades

# 설정 파일 확인
cat /etc/apt/apt.conf.d/20auto-upgrades
INI
# /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";      # 매일 목록 갱신
APT::Periodic::Unattended-Upgrade "1";        # 매일 보안 업데이트 설치
APT::Periodic::AutocleanInterval "7";         # 7일마다 캐시 정리

Step 8 — 최종 확인 체크리스트

Bash
# SSH 키 인증만 허용되는지 확인
sudo sshd -T | grep -E "permitrootlogin|passwordauthentication|maxauthtries"

# 방화벽 상태
sudo ufw status verbose

# fail2ban 동작 여부
sudo systemctl is-active fail2ban

# 자동 업데이트 활성화 여부
cat /etc/apt/apt.conf.d/20auto-upgrades

# 최근 로그인 기록
last | head -10

설정 완료 후 예상 결과:

항목확인 결과
root SSH 로그인차단됨
비밀번호 로그인차단됨
방화벽SSH/HTTP/HTTPS만 허용
fail2ban5회 실패 시 1시간 차단
보안 업데이트자동 적용 중

다음 단계 — 각 항목 심화 가이드

이 가이드는 빠짐없이 훑기에 집중했습니다. 각 항목을 더 깊이 파고들려면 아래 가이드를 참고하세요.

주제가이드난이도
sshd_config 하드닝·키 인증·AllowGroups·MFASSH 설정·접근 제어 완전 가이드중급
fail2ban jail·recidive 영구 차단·이메일·Cloudflarefail2ban으로 SSH 무차별 대입 차단중급
UFW 포트 범위·앱 프로파일·로깅UFW 방화벽 설정 완전 가이드초급

이 가이드의 역할: 서버를 처음 받았을 때 놓치는 항목이 없도록 하는 출발점입니다. 운영 환경에서는 위 심화 가이드를 반드시 추가로 적용하세요.

#서버보안#초기설정#UFW#fail2ban#SSH#리눅스#보안
편집 안내 · Editorial Note

이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.

질문 & 답변 (Q&A)

이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.