기본 리눅스 설치는 편리하지만 안전하지 않습니다. 리눅스 서버 하드닝은 서버의 공격 표면을 줄이고 구성을 강화하여, 인터넷에서 오는 피할 수 없는 탐색이 쉽게 악용할 만한 것을 아무것도 찾지 못하게 만드는 과정입니다. 이 가이드는 2026년에 가장 중요한 하드닝 단계를 합리적인 우선순위 순서로 다룹니다.

TL;DR

  • SSH는 가장 크게 노출된 표면입니다. 키 기반 인증을 사용하고, root 로그인과 비밀번호를 비활성화하며, 연결에 속도 제한을 두세요
  • 기본 거부 방화벽을 운영하고, 필요하지 않은 모든 서비스와 포트를 차단하세요
  • 시스템을 자동으로 패치하고, 커널과 계정 하드닝을 적용하세요
  • SELinux 또는 AppArmor를 사용하고, 감사 로깅을 활성화하며, 배포판에 맞는 CIS Benchmark로 스스로를 평가하세요

1. SSH 잠그기

SSH는 서버를 관리하는 방법이자 공격자가 침입을 시도하는 방법입니다. 먼저 이것을 강화하세요.

  • 키 기반 인증을 사용하고 비밀번호 인증을 완전히 비활성화하세요(PasswordAuthentication no).
  • 직접 root 로그인을 비활성화하세요(PermitRootLogin no). 일반 사용자로 로그인한 후 sudo를 사용하세요.
  • SSH로 로그인할 수 있는 사용자를 제한하세요.
  • 반복되는 실패 시도에 속도 제한과 제동을 걸어(예: fail2ban 사용) 무차별 대입 공격을 둔화시키세요.
  • SSH를 유지 관리되는 버전으로 유지하고, 취약한 암호와 레거시 프로토콜을 비활성화하세요.

2. 기본 거부 방화벽 운영하기

  • 방화벽(nftables, ufw, firewalld 또는 CSF)을 기본적으로 거부하도록 구성하고, 실제로 제공하는 포트만 허용하세요.
  • 최소한만 노출하세요. 웹 서버의 경우 일반적으로 SSH(제한됨), HTTP, HTTPS만 열고 그 외에는 아무것도 열지 마세요.
  • 가능한 경우 관리 포트를 알려진 소스 주소나 VPN으로 제한하세요.

3. 공격 표면 최소화하기

  • 사용하지 않는 서비스와 데몬을 제거하거나 비활성화하세요. 수신 대기 중인 모든 서비스는 잠재적인 진입점입니다.
  • 열린 포트를 감사하고(ss -tulpn) 각각이 의도된 것인지 확인하세요.
  • 프로덕션 호스트에서 불필요한 패키지와 컴파일러를 제거하세요.

4. 시스템을 패치된 상태로 유지하기

  • 자동 보안 업데이트를 활성화하세요(Debian/Ubuntu에서는 unattended-upgrades, RHEL 계열 시스템에서는 dnf-automatic).
  • 배포판의 수명 종료 날짜를 추적하고 지원이 끝나기 전에 업그레이드하세요. 지원되지 않는 OS를 운영하는 것은 상시적인 위험입니다.

5. 계정과 접근 강화하기

  • 강력한 비밀번호 및 계정 정책을 적용하고 사용하지 않는 계정을 제거하세요.
  • 공유 root 접근 대신 최소 권한의 sudo를 사용하고, sudo 사용을 로그로 남기세요.
  • 합리적인 umask 기본값을 설정하고 민감한 파일의 권한을 잠그세요.
  • 관리 접근에는 2단계 인증을 고려하세요.

6. 커널과 네트워크 하드닝 적용하기

  • sysctl 설정을 조정하여 네트워크 수준의 위험을 줄이세요(예: IP 소스 라우팅과 ICMP 리디렉션을 비활성화하고 리버스 패스 필터링을 활성화).
  • 커널 로그와 포인터에 대한 접근을 제한하고, 사용 가능한 익스플로잇 완화 기능을 활성화하세요.
  • 사용하지 않는 커널 모듈과 파일 시스템을 비활성화하세요.

7. 강제 접근 제어 활성화하기

  • SELinux(RHEL 계열) 또는 AppArmor(Debian/Ubuntu)를 활성화 상태이자 enforcing 모드로 유지하세요.
  • “동작하게 만들기” 위해 비활성화하고 싶은 유혹에 저항하세요. 대신 정책을 조정하거나 작성하세요. MAC은 서비스가 침해되었을 때 피해를 억제합니다.

8. 로깅, 감사 및 파일 무결성

  • Linux 감사 데몬(auditd)을 활성화하여 보안 관련 이벤트를 기록하세요.
  • 공격자가 단순히 지울 수 없도록 로그를 호스트 외부로 중앙화하세요.
  • 파일 무결성 모니터링(예: AIDE)을 배포하여 시스템 파일의 예기치 않은 변경을 탐지하세요.
  • 로그를 정기적으로 검토하거나 모니터링 및 알림으로 연동하세요.

9. CIS Benchmark로 평가하기

Center for Internet Security(CIS)는 배포판별로 상세한 하드닝 벤치마크를 발행합니다. 사용하는 OS에 맞는 CIS Benchmark 를 객관적인 체크리스트이자 격차 분석으로 사용하세요. 이는 “강화된 것 같다"라는 상태를 시간이 지나도 감사할 수 있는 측정 가능한 기준선으로 바꿔줍니다.

핵심 요점

  • SSH부터 시작하세요. 키만 사용, root 로그인 없음, 속도 제한.
  • 기본 거부 방화벽과 필요하지 않은 모든 서비스 제거.
  • 패치를 자동화하고 계정, 커널, MAC(SELinux/AppArmor) 하드닝을 적용하세요.
  • 감사 로깅과 파일 무결성을 활성화하고, CIS로 벤치마크하여 하드닝을 측정 가능하게 만드세요.

전문가의 리눅스 서버 하드닝 받기

단일 서버를 수작업으로 강화하는 것은 가능합니다. 그러나 애플리케이션을 망가뜨리지 않고 전체 서버 자산에 걸쳐 일관되게 수행하는 것이 바로 전문성이 빛을 발하는 지점입니다. 리눅스 서버 하드닝 서비스 는 SSH 잠금, 방화벽 아키텍처, 커널 튜닝, SELinux/AppArmor 정책, CIS 격차 분석, 유지 관리 런북을 다룹니다. 방화벽 중심의 설명이 필요하다면, 오래되었지만 여전히 유용한 CSF로 리눅스 서버 보안하기 가이드 가 ConfigServer Security & Firewall을 깊이 있게 다룹니다.

자주 묻는 질문(FAQ)

가장 중요한 리눅스 하드닝 단계는 무엇인가요? SSH 잠그기입니다. 키 기반 인증을 사용하고, 비밀번호 로그인과 직접 root 로그인을 비활성화하며, 실패한 시도에 속도 제한을 두세요. SSH는 인터넷에 노출된 서버에서 가장 흔히 공격받는 진입점입니다.

문제를 해결하기 위해 SELinux나 AppArmor를 비활성화해야 하나요? 아니요. 강제 접근 제어를 비활성화하면 중요한 격리 계층이 사라집니다. 대신 정당한 동작을 허용하도록 정책을 조정하거나 작성하세요. enforcing 모드를 유지하면 서비스가 침해되었을 때 피해를 제한할 수 있습니다.

CIS Benchmark란 무엇인가요? Center for Internet Security가 발행하는, 배포판별로 상세한 하드닝 표준입니다. 구성 기준이 되고 시간이 지나도 서버를 감사할 수 있는 객관적인 체크리스트를 제공하여 하드닝을 측정 가능하게 만듭니다.

호스트에 네트워크 방화벽이 있어도 방화벽이 필요한가요? 네, 둘 다 사용하세요. 호스트 기반의 기본 거부 방화벽은 네트워크 제어가 잘못 구성되거나 우회되더라도 서버를 보호하며, 실제로 제공하는 포트만 노출한다는 원칙을 강제합니다.

강화된 서버는 얼마나 자주 검토해야 하나요? 정기적으로 해야 합니다. 구성은 흐트러지고 새로운 취약점이 나타나기 때문입니다. 중요한 변경 후와 주기적인 일정에 따라 CIS 기준선과 대조하여 다시 확인하고, 그 사이에는 자동 보안 업데이트를 활성화된 상태로 유지하세요.