Security

서버 보안

천천히, 한 걸음씩 2026. 2. 22. 14:37

*시스템 : 보안의 통상적인 관점에서의 시스템은 os 및 서버를 칭한다.
그러나 "운영체제(OS)는 시스템 자원을 관리한다"는 문맥에서의 시스템은 컴퓨터 하드웨어를 포함하는 의미로도 사용된다.

 

 

1. 컴퓨터 하드웨어(시스템 자원)의 구성 요소

  • CPU : 중앙처리장치(연산 및 제어 장치)
  • RAM : 주기억장치 (휘발성)
  • DISK : 보조기억장치 (데이터를 영구적으로 보관)

2. 운영체제의 핵심 구성 요소

  • 커널 : 주기억장치에 상주하며 사용자 프로그램을 관리하는 운영체제의 핵심 역할시스템 자원을 관리한다.
  • 셸 : 사용자가 입력한 명령어를 해석하고 시스템 콜을 호출하여 커널에 전달하고 그 결과를 출력하는 명령어 인터페이
  • 파일 시스템 : 정보를 저장하는 기본적 구조로, 시스템 관리 및 기본 환경을 제공하고, 계층적인 트리 구조 형태

3. 커널 레벨과 유저 레벨

  • 개요 : 통상적으로 OS(엄밀히 구분하면 커널)는 시스템 자원을 관리하기에 CPU의 Ring3, Ring0 아키텍처를 적용하며, 이에 따라 대부분의 os에는 커널 레벨과 유저 레벨이 나뉘게 된다.
  • 유저 레벨(Ring 3)
    • 정의 : 사용자가 실행하는 대부분의 애플리케이션이 동작하는 영역 (웹 서버, DB, 쉘, 일반 프로세스 등)
    • 보안 이슈 : SQL 인젝션, 웹쉘, 크리덴셜(PW)탈취
    • 특징 : 보안 이벤트 발생 시 감사(Audit) 트레일 및 애플리케이션 로그가 정상적으로 기록
    • 보안 : 방화벽(네트워크 보안), 웹 방화벽(waf), 안티바이러스(백신) 등 애플리케이션 및 네트워크 계층 통제
  • 커널 레벨(Ring 0)
    • 정의 : 하드웨어(CPU·RAM·DISK)를 직접 제어하는 운영체제의 핵심 영역
    • 보안 이슈 : 루트킷, 커널 익스플로잇, bpfdoor
    • 특징 : 커널 제어권이 탈취될 경우 시스템 전반의 무결성이 훼손된다. 공격자가 시스템 콜을 후킹하여 감사 로그 기록을 무력화하고, 특정 프로세스 및 파일을 시스템상에서 완벽하게 은닉할 수 있어 매우 치명적이다.

4. 서버 보안의 핵심 원칙 4가지

  • 최소 권한의 원칙 (Least Privilege)
    • 정의 : 사용자나 프로세스가 작업을 수행하는 데 필요한 가장 낮은 수준의 권한만 부여하는 것
    • 예시 (리눅스 환경)
      • 모든 작업을 root로 하지 않고 일반 유저 생성 후 사용
      • 관리자 작업 시에만 sudo 사용
      • 웹 서버 (Apache·Nginx) 구동 시 nobody나 www-data와 같은 저권한 계정 사용
      • 파일 권한 설정시 777권한 사용 금지
  • 방어 심층의 원칙 (Defense in Depth) 
    • 정의 :  단일 보안 계층에 의존하지 않고 여러 겹의 보안 통제를 중첩하여 적용하는 것
    • 예시 (리눅스 환경)
      • Well known 포트 번호 변경 (기본 ssh 포트 번호 변경)
      • 방화벽(iptables, ufw 등)을 통한 특정 ip 접근 제한
      • 비밀번호 대신 공개키 기반 인증 방식 사용
      • Fail2ban 등을 활용한 무작위 대입 공격 자동 차단
  • 최소화의 원칙(Minimization) 
    • 정의 : 시스템의 복잡도를 줄이고, 외부와 연결되는 공격 표면을 최소한으로 유지하는 것
    •  예시 (리눅스 환경)
      • 사용하지 않는 포트와 서비스(데몬) 비활성화 (systemctl disable)
      • 불필요한 패키지 설치 금지 및 기존 불필요 패키지 삭제
      • 기본 설정을 그대로 사용하지 않고 보안이 강화된 설정으로 변경
  • 책임 추적성의 원칙 (Accountability)
    • 정의 : 시스템에서 발생하는 모든 중요 이벤트를 로그로 남겨 문제 발생 시 원인과 행위자를 명확히 식별하고 증명할 수 있도록 하는 것
    • 예시 (리눅스 환경)
      • 공용 계쩡 사용 및 root 비밀번호 공유 금지 (sudo 사용 권장)
      • 중요 로그 파일(/var/log/syslog, /var/log/auth.log 등)의 무결성 보장 및 별도 서버에 분리 보관

5. 커널 보안의 핵심요소

  1. 시스템 콜
    • 정의 : 유저 레벨의 애플리케이션이 커널 레벨로 넘어가 하드웨어 제어 등 특권 명령을 요청하기 위한 통로
    • 종류
      • 프로세스 제어
        • execve : 프로그램 실행
        • fork() : 프로세스 복제
        • exit() : 종료
      • 파일 조작 
        • read : 파일 읽기
        • write : 파일 쓰기 및 수정
        • open : 파일 열기
      • 통신
        • socket : 통신 창구 열기
        • send(), recv() : 데이터 송수신
      • 장치 관리 
        • ioctl : 장치 제어 파라미터 설정 등 물리적 하드웨어(키보드, 모니터, 하드디스크 등) 접근
      • 정보 유지
        • getpid() : 현재 프로세스 번호 확인
        •  gettimeofday() : 시스템 시간 확인
    • 보안 관점 : 해커가 루트 권한을 획득한 뒤, 커널 내부의 시스템 콜 테이블을 조작하여 감사 로그를 우회하거나 악성 프로세스를 은닉할 수 있음
  2. 리눅스 케이퍼빌리티
    • 정의 : 기존의 이분화된 권한(root외에는 일반 사용자) 구조에서 벗어나, 막강한 root권한을 약 40여 개의 세분화된 권한 조각으로 쪼개서 관리하는 메커니즘
    • 활용 : 웹 서버 구동 시 전체 파일 시스템을 제어할 수 있는 root 권한 대신 1024번 이하의 특권 포트만 열 수 있는 권한(CAP_NET_BIND_SERVICE)만 부여
    • 정 사항 : 보안상 취약할 수 있는 setuid 대신 시스템 프로세스에 필요한 최소한의 케이퍼빌리티만 부여하여 최소 권한 원칙을 커널 레벨에서 기술적으로 구현 가능
  3. LSM (Linux Security Modules) - 커널 보안 프레임워크
    • 정의 : 리눅스 커널이 악성 행위를 원천적으로 방지하기 위해 제공하는 강제적 접근 통제(MAC) 기반 보안 프레임워크
    • 활용 예시 : SElinux(레드햇 개열), AppArmor(데비안/우분투 계열)
    • 핵심 원리 : 시스템 콜이 실행되기 전 마지막으로 LSM 훅(Hook)을 거치게 되며, 루트 권한을 탈취한 해커라도 사전 정의된 보안 정책에 허용되지 않은 파일이나 네트워크 자원에는 접근할 수 없다. (커널 레벨 방어의 꽃)
    • 한계 : 커널 자체에 존재하는메모리 변조 취약점을 통해 커널 메모리 영역을 직접 조작 시 무력화 혹은 우회될 수 있다.
  4. eBPF (Extended Berkeley Packet Filter)
    • 정의 : 커널 소스 코드를 수정하거나 재부팅하지 않고도 커널 내부의 안전한 샌드박스 환경에서 사용자 정의 프로그램을 실행하여 시스템과 네트워크를 모니터링하는 최신 기술   
    • 보안 관점 : 과거에는 커널의 동작을 감시하기 위해 커널 모듈(LKM)을 직접 심어야 했으나 이는 시스템 전체 다운의 리스크가 있었음. 반면 eBPF는 이러한 리스크 없이 안전하게 감시할 수 있어 최신 클라우드 및 서버 보안 솔루션의 핵심 기술로 평가받는다.