본문 바로가기

정보보안/애플리케이션 보안

[웹 서버 취약점] 웹 서버 보안대책

웹 서비스 최소 권한 사용자 운영

① 개념

  • 웹서버 운영 시 위험을 최소화 하기 위해 최소한의 권한을 가진 사용자와 그룹으로 웹서버 프로세스 실행 필요
  • 웹서버 프로세스가 root 권한으로 구동될 경우, 시스템 전체의 제어권을 탈취당해 피해 범위가 확산할 가능성이 있으므로 별도의 권한으로 서버 프로세스를 실행해 피해 범위를 최소화한다.

② 대응책

  • 웹서버 프로세스를 실행할 별도의 사용자 및 그룹을 생성하고 해당 사용자로 시스템에 로그인할 수 없도록 설정한다. 
    • (apache) apache 사용자,그룹을 생성하고 해당 사용자의 로그인 쉘 부분을 /sbin/nologin(/bin/false)으로 설정해 시스템에 로그인할 수 없도록 한다.
  • 웹서버 설정파일에 서버프로세스의 실행권한을 해당 사용자 및 그룹으로 설정한다.
    • (apache) httpd.conf 실행권한 설정
      #httpd.conf 설정파일
      ...
      User apache
      Group apache
      ...
      아파치 웹서버 설정파일의 User,Group 지시자를 이용해 서버 프로세스를 실행할 사용자와 그룹 지정
  • 아파치 프로세스(/user/sbin/httpd) 상태를 확인해보면 80/tcp포트를 열고 클라이언트 연결 요청을 처리하는 root권한의 리스닝 프로세스와 다수의 서비스 요청을 처리하는 apache권한의 서버프로세스를 확인할 수 있다. 이 때, root권한의 프로세스가 필요한 이유는 80/tcp 포트는 Privileged Port로 root(관리자)만이 오픈할 수 있는 포트이기 때문이다. 해당 포트를 통해 사용자의 연결 요청이 들어오면 연결 완료 후 개별 서버 프로세스가 각각의 요청 클라이언트에 할당되어 HTTP 요청에 대한 처리를 수행하게 된다. 따라서 공격자가 웹서버와 웹 애플리케이션 취약점을 이용해 시스템 접근 권한을 탈취한다고 해도 apache 사용자 및 그룹의 권한으로 시스템에 접근하기에 피해를 최소화 할 수 있다.

심볼릭 링크(Sybmbolic link) 사용 설정 제거

① 개념

  • 유닉스/리눅스 시스템인 경우 심볼릭 링크를 사용해 다른위치의 파일이나 디렉터리와 연결하여 사용할 수 있는데, 이런 경우 웹에서 허용하는 디렉터리 외에 다른 디렉터리를 참조하는 링크가 존재하는 경우 해당 링크를 액세스 할 수 있는 위험성이 존재한다.
  • 만약 시스템 자체의 루트 디렉터리(/)에 심볼릭 링크를 걸게 되면 웹서버 구동 시 사용자 권한으로 모든 파일시스템의 파일에 접근할 수 있게 되어 passwd파일과 같은 민감한 파일을 누구나 열람할 수 있는 문제점이 발생한다.

② 대응책

  • 심볼릭 링크 사용 설정을 제거한다.
    • (apache) 아파치 웹서버 설정파일(httpd.conf)의 모든 디렉터리(/) 섹션의 Options 지시자에 FollowSymLinks 설정을 제거한다. 
      • Options FollowSymbolicLinks: 설정한 디렉터리에 심볼릭 링크 가능 및 하위 디렉터리에 대해 접근이 가능
      • Options None : 설정 내용이 없음
    • 해당 설정이 제거되면, 심볼릭 링크를 통한 접근 시 403(Forbidden) 응답 메시지 반환

웹서비스 정보 숨김

① 개념

  • 클라이언트와 웹서버가 통신할 경우 웹서버에서는 응답 헤더나 에러 메시지 등에 웹서버 버전이나 종류, OS 정보, 응용프로그램 버전 등을 전송한다. 이 정보는 해당 웹서버 버전별,응용 프로그램에 잘 알려진 취약점을 공격하는 데 유용하게 이요되므로 해당 정보를 숨기는 것이 안전하다.

② 대응책

  • 웹서버 응답 헤더 또는 에러 메시지를 통한 웹서버 정보 차단
    • (apache) 웹서버 설정 파일(httpd.conf)의 ServerTokens 지시자를 이용해 정보를 차단한다.
      #httpd.conf 파일
      ...
      ServerTokens Prod
      ServerTokens : HTTP 응답 시 헤더의 Server 필드를 통해 제공할 웹서버,OS,모듈 등의 정보 레벨 지정
      • Prod : 웹서버 종류 출력(권장) (Server : Apache)
      • Min : Prod 정보 + 웹서버 버전 (Server : Apache/2.2.15)
      • OS : Min 정보 + 운영체제 (Server : Apache/2.2.15 (Fedora)
      • Full : OS 정보 + 설치된 응용프로그램 정보 ( Server : Apache/2.2.15 (Fedora) PHP/5.2.13)
    • (apache) ( 웹서버 설정파일(httpd.conf)의 ServerSignature 지시자에 Off 설정
      #httpd.conf 파일
      ...
      ServerSignature Off
      ServerSginature 지시자 : 웹서버에서 직접 생성하는 에러메시지(HTTP 에러메시지), 디렉터리 리스팅 메시지 등에 웹서버, OS, 모듈 등의 정보를 제공할 지 결정
      • ServerSignature 지시자에 Off 이외 설정 시, 불필요한 웹서버 관련 정보가 에러메시지 등을 통해 전송