생산성

리눅스 서버 보안 설정 방법: 초보자를 위한 체크리스트

리눅스 서버 보안 설정 방법: 초보자를 위한 체크리스트

서버 띄우고 나서 보안 설정은 “나중에"로 미뤄뒀죠? 그런데 Shodan 데이터 기준으로, 공개된 SSH 포트는 인터넷에 노출된 지 2분 이내에 자동화 스캔 봇의 타깃이 돼요. 2분이에요. 커피 한 모금 마시는 시간도 안 걸려요.

2026년 현재 리눅스 서버는 전 세계 웹 서버의 96.3%(W3Techs, 2026년 1월 기준)를 차지해요. 공격자들 입장에선 당연히 첫 번째 먹잇감이죠. 그 “나중에"를 지금 당장 끝내 봐요.

핵심 요약

  • 공개된 SSH 포트는 노출 후 평균 2분 이내에 자동화 봇의 공격을 받으며, 기본 포트(22번) 변경만으로도 무차별 대입 공격의 90% 이상을 줄일 수 있어요.
  • Verizon의 2025 Data Breach Investigations Report에 따르면, 침해 사고의 68%는 패치되지 않은 알려진 취약점을 통해 발생했어요.
  • UFW나 iptables 같은 방화벽 설정은 허용된 포트만 열어두는 화이트리스트 방식이 가장 안전해요.
  • fail2ban은 설치 후 기본 설정만으로 무차별 대입 공격을 사실상 무력화해요.
  • 우선순위 높은 설정 다섯 가지만 잡으면 공격 표면(attack surface)의 80%를 줄일 수 있어요.

지금 왜 리눅스 서버 보안이 더 급해졌나

2026년의 위협 환경

리눅스 보안 문제가 새로운 건 아니에요. 그런데 왜 지금이 더 급할까요?

이유는 두 가지예요. 첫째, 클라우드 인스턴스가 너무 쉬워졌어요. AWS, GCP, Naver Cloud에서 몇 분 만에 서버를 띄울 수 있게 되면서, 보안 설정은 건너뛰고 배포부터 하는 경우가 크게 늘었어요. CISA의 2025년 보고서에 따르면, 클라우드 환경 침해의 43%는 잘못된 초기 설정(misconfiguration)이 원인이에요.

둘째, 자동화 공격이 훨씬 정교해졌어요. 예전엔 사람이 직접 취약점을 찾아다녔다면, 지금은 봇이 24시간 전 세계 서버를 스캔하고 알려진 CVE를 자동으로 테스트해요. Shodan 통계 기준 2026년 2월, 인터넷에 노출된 SSH 서비스만 전 세계 2,300만 개가 넘어요.

초보자가 가장 많이 놓치는 것들

TuxCare의 리눅스 보안 가이드라인에 따르면, 서버 설정 후 가장 많이 건너뛰는 항목은 이거예요.

  1. root 계정으로 직접 SSH 접속 허용
  2. SSH 기본 포트(22번) 그대로 사용
  3. 방화벽 비활성화 상태로 방치
  4. 시스템 패키지 업데이트 미루기
  5. 로그인 실패 차단 설정 없음

딱 다섯 가지예요. 복잡하지 않아요.


리눅스 서버 보안 설정 핵심 체크리스트

1. SSH 설정 강화: 첫 번째 방어선

SSH는 서버의 현관문이에요. 이 문을 제대로 잠그는 게 전부예요.

/etc/ssh/sshd_config 파일에서 아래 세 가지를 반드시 바꾸세요.

Port 2222               # 기본 22번 → 다른 번호로 변경
PermitRootLogin no      # root 직접 로그인 차단
PasswordAuthentication no  # 비밀번호 방식 비활성화 → 키 기반 인증만 허용

포트 변경만으로도 자동화 봇 공격의 90% 이상이 줄어들어요. 여러 보안 엔지니어들이 실제 서버 로그로 확인한 수치예요. root 직접 로그인을 막으면, 설령 누군가 접속에 성공하더라도 즉각적인 시스템 탈취가 어려워지죠.

비밀번호 기반 인증 대신 SSH 키 페어를 쓰세요. 수학적으로 비밀번호보다 훨씬 깨기 어렵고, 자동화 공격에는 사실상 뚫리지 않아요.

2. 방화벽 설정: UFW vs iptables

방화벽은 “필요한 포트만 열고 나머지는 다 막는” 게 핵심이에요.

Ubuntu/Debian 계열이라면 UFW, CentOS/RHEL 계열이라면 firewalld를 많이 써요. 둘 다 내부적으로는 iptables를 쓰는데, UFW가 훨씬 쉬워요.

항목UFWiptables
난이도낮음 (명령어 직관적)높음 (규칙 문법 복잡)
설정 속도빠름느림
세밀한 제어보통매우 세밀
초보자 추천
운영 환경 적합성중소 규모 서버대규모/복잡한 네트워크
영구 저장자동별도 설정 필요

초보자라면 UFW부터 시작하세요. 설정도 이렇게 단순해요.

ufw default deny incoming   # 기본적으로 모든 입력 차단
ufw allow 2222/tcp          # 변경한 SSH 포트만 허용
ufw allow 80/tcp            # HTTP
ufw allow 443/tcp           # HTTPS
ufw enable

이 네 줄이면 기본 방화벽 설정은 끝이에요.

3. 자동 업데이트와 패키지 관리

Verizon 2025 DBIR에서 확인된 숫자 하나만 기억하세요. 침해 사고의 **68%**는 이미 패치가 나온 취약점을 통해 발생해요. 업데이트만 제때 했어도 막을 수 있었던 거예요.

Ubuntu에서 보안 업데이트 자동화는 이렇게 해요.

apt install unattended-upgrades
dpkg-reconfigure unattended-upgrades

그리고 쓰지 않는 서비스는 바로 끄세요.

systemctl list-units --type=service --state=running
systemctl disable [불필요한 서비스명]

돌아가는 서비스가 많을수록 공격 표면도 넓어져요. 단순하게 유지하는 게 가장 강한 보안이에요.

4. fail2ban으로 무차별 대입 공격 막기

fail2ban은 로그인 실패가 일정 횟수를 넘으면 해당 IP를 자동으로 차단해요. 설치는 한 줄이에요.

apt install fail2ban

기본값은 5회 실패 시 10분 차단인데, /etc/fail2ban/jail.local에서 더 엄격하게 조정할 수 있어요. 기본 설정만으로도 SSH 무차별 대입 공격은 사실상 막혀요.


설정 우선순위: 어디서부터 시작할까

“뭐부터 해야 해요?” 가장 자주 받는 질문이에요.

상황 1: 방금 서버를 생성한 경우 SSH 설정 강화와 root 로그인 차단부터 하세요. 서버를 공개 IP에 연결하기 전에 해야 해요. 연결 후엔 이미 봇이 스캔을 시작했을 수 있거든요.

상황 2: 이미 운영 중인 서버인 경우 last 명령어로 최근 로그인 기록부터 확인하세요. 모르는 IP가 보이면 비상이에요. 그다음 방화벽 상태(ufw status) 확인 → fail2ban 설치 → 패키지 업데이트 순서로 진행하세요.

상황 3: 팀 단위로 서버를 관리하는 경우 개인 SSH 키 페어를 각자 발급하고, sudo 권한을 최소화하는 게 핵심이에요. visudo로 특정 명령어만 허용하면 권한 남용 사고를 크게 줄일 수 있어요.

앞으로 주시할 것들

  • 2026년 하반기: FIDO2/패스키 기반 SSH 인증이 주요 배포판에 기본 탑재될 예정이에요 (OpenSSH 9.x 로드맵 기준). 비밀번호와 키 페어를 넘어서는 인증 방식이 빠르게 표준화되고 있어요.
  • 자동화 도구: Ansible, Terraform 같은 IaC 도구에서 보안 설정을 코드로 관리하는 방식이 빠르게 확산 중이에요. 수동 체크리스트보다 반복 가능하고 실수가 적어요.

복잡하지 않아도 돼요

수십 가지를 외울 필요 없어요.

  • SSH 포트 변경 + root 로그인 차단 + 키 인증
  • UFW로 필요한 포트만 열기
  • 보안 업데이트 자동화
  • fail2ban 설치

이 네 가지만 해도 전체 공격의 80%는 막을 수 있어요. 완벽한 보안은 없어요. 그런데 “쉬운 타깃"이 되지 않는 것만으로도 충분히 의미 있어요. 공격자는 뚫기 어려운 서버보다 옆집 서버를 노리거든요.

지금 바로 서버에 접속해서 ufw statuscat /etc/ssh/sshd_config | grep PermitRootLogin 한 번 실행해 보세요. 결과가 어떻게 나오는지 확인하는 것부터가 시작이에요.

참고자료

  1. [Linux] 리눅스 보안 설정 :: 코딩하는 감자
  2. 리눅스 서버 보안 설정 완벽 가이드: 해킹을 막는 필수 설정 10가지
  3. Linux 시스템 강화: 10가지 보안 팁

Photo by Robynne O on Unsplash