콘텐츠로 이동

호스트 기반 침입 탐지 시스템 (HIDS - Host-based Intrusion Detection System)

필요 사항

  • 명령 줄 텍스트 편집기에 능숙해야 합니다. (이 예시에서는 vi를 사용합니다.)
  • 명령 줄에서 명령 실행, 로그 확인 및 기타 시스템 관리자 업무에 능숙해야 합니다.
  • 이 도구를 설치하는 것은 환경에 따라 모니터링 및 조정이 필요하다는 점을 이해해야 합니다.
  • 모든 명령은 root 사용자 또는 sudo 권한이 있는 일반 사용자로 실행해야 합니다.

소개

ossec-hids ossec-hids는 호스트 기반 침입 탐지 시스템으로, 호스트 침입 공격을 완화하는데 도움이 되는 자동 대응 절차를 제공합니다. 이것은 강화된 Apache 웹 서버 구성의 가능한 한 부분일 뿐입니다. 다른 도구와 함께 사용하거나 독립적으로 사용할 수 있습니다.

다른 도구와 함께 사용하려면 Apache Hardened Web Server 문서를 참조하세요. 이 문서는 해당 원본 문서에서 제시한 가정과 규칙을 모두 사용합니다. 계속하기 전에 검토하는 것이 좋습니다.

Atomicorp 리포지토리 설치

ossec-hids를 설치하려면 Atomicorp의 타사 리포지토리가 필요합니다. Atomicorp는 문제가 발생할 경우 전문적인 지원을 받기를 원하는 사용자를 위해 합리적인 가격의 유료 지원 버전도 제공합니다.

지원을 원하고 예산이 있으신 경우 Atomicorp의 유료 ossec-hids 버전을 확인해보세요. 무료 리포지토리에서 필요한 몇 가지 패키지만 설치하면 됩니다. 다운로드한 후 리포지토리를 변경합니다.

먼저 wget을 설치합니다. 이전에 설치하지 않았다면 EPEL 리포지토리를 설치하세요.

dnf install wget epel-release

그리고 Atomicorp의 무료 리포지토리를 다운로드하고 활성화합니다.

wget -q -O - http://www.atomicorp.com/installers/atomic | sh

이 스크립트는 사용 약관에 동의하시는지 물어볼 것입니다. "yes" 또는 Enter을 입력하여 기본 설정을 수락하세요.

다음으로 리포지토리를 기본적으로 활성화할지 물어볼 것이며, 다시 기본 설정을 수락하거나 "yes"를 입력하세요.

Atomicorp 리포지토리 구성

몇 개의 패키지에 대한 atomic 저장소만 있으면 됩니다. 그렇기때문에 Atomicorp 리포지토리를 변경하고 필요한 패키지만 지정해야 합니다.

vi /etc/yum.repos.d/atomic.repo

다음 줄을 상단의 "enabled = 1" 아래에 추가하세요.

includepkgs = ossec* GeoIP* inotify-tools

이것이 유일한 변경사항입니다. 변경 사항을 저장하고 리포지토리를 빠져나옵니다 (vi에서는 esc를 누른 다음 SHIFT+:+wq를 누르면 됩니다).

이렇게 하면 Atomicorp 리포지토리가 이러한 패키지만 설치하고 업데이트하도록 제한됩니다.

ossec-hids 설치

리포지토리를 구성했으므로 패키지를 설치해야 합니다.

dnf install ossec-hids-server ossec-hids inotify-tools

ossec-hids 구성

기본 구성은 많은 변경이 필요한 상태입니다. 대부분은 서버 관리자에게 알림 및 로그 위치와 관련이 있습니다.

ossec-hids는 공격이 진행 중인지와 ossec-hids가 관측한 내용에 따라 완화 조치를 취할지를 결정하기 위해 로그를 확인합니다. 또한 서버 관리자에게 알림 메시지를 보내거나 ossec-hids가 본 내용에 따라 시작된 완화 절차에 대한 메시지를 보냅니다.

구성 파일을 편집하려면 다음 명령을 입력하세요.

vi /var/ossec/etc/ossec.conf

저희는 이 구성을 세부적으로 나누어 변경 사항을 한 줄씩 보여드리고 진행하면서 설명할 것입니다.

<global>
  <email_notification>yes</email_notification>  
  <email_to>admin1@youremaildomain.com</email_to>
  <email_to>admin2@youremaildomain.com</email_to>
  <smtp_server>localhost</smtp_server>
  <email_from>ossec-webvms@yourwebserverdomain.com.</email_from>
  <email_maxperhour>1</email_maxperhour>
  <white_list>127.0.0.1</white_list>
  <white_list>192.168.1.2</white_list>
</global>

기본적으로 이메일 알림이 꺼져 있으며, <global> 구성은 기본적으로 비어 있습니다. 이메일 알림을 켜고 이메일 보고서를 받을 사람들의 이메일 주소를 입력해야 합니다.

<smtp_server> 섹션은 현재 localhost로 표시되어 있지만, 원하는 경우 이메일 서버 릴레이를 지정하거나 로컬 호스트의 postfix 이메일 설정을 설정할 수 있습니다. 이 가이드를 따라 로컬 호스트의 postfix 이메일 설정을 구성할 수도 있습니다.

"from" 이메일 주소를 설정해야 합니다. 이것은 이메일 서버의 SPAM 필터가 이 이메일을 스팸으로 간주할 수 있으므로 필요합니다. 너무 많은 이메일로 침습당하고 싶지 않다면, 이메일 보고서를 1시간에 1개로 설정하세요. ossec-hids를 시작하는 동안 빠르게 결과를 확인해야 할 때는 이것을 확장하거나 주석 처리할 수 있습니다.

<white_list> 섹션은 서버의 localhost IP와 방화벽의 "공용" IP 주소(개인 IP 주소로 교체한 것을 기억하세요)를 다룹니다. 많은 <white_list> 항목을 추가할 수 있습니다.

<syscheck>
  <!-- Frequency that syscheck is executed -- default every 22 hours -->
  <frequency>86400</frequency>
...
</syscheck>

<syscheck> 섹션은 침해된 파일을 찾을 때 포함 및 제외할 디렉터리 목록을 검토합니다. 이는 파일 시스템을 취약성에 대해 감시하고 보호하기 위한 또 다른 도구입니다. <syscheck> 섹션의 디렉터리 목록을 검토하고 원하는 추가 디렉터리를 추가해야 합니다.

<syscheck> 섹션 바로 아래에 있는 <rootcheck> 섹션은 또 다른 보호 계층입니다. <syscheck><rootcheck>이 관찰하는 위치는 편집 가능하지만, 보통 변경할 필요가 없을 것입니다.

<rootcheck><frequency>를 기본 22시간에서 24시간(86400초)로 변경하는 것은 선택 사항으로 표시된 변경입니다.

<localfile>
  <log_format>apache</log_format>
  <location>/var/log/httpd/*access_log</location>
</localfile>
<localfile>
  <log_format>apache</log_format>
  <location>/var/log/httpd/*error_log</location>
</localfile>

<localfile> 섹션은 감시할 로그의 위치를 다룹니다. 이미 _syslog_와 secure 로그에 대한 항목이 있으며, 확인해야 할 경로만 남겨두면 됩니다.

Apache 로그 위치를 추가해야 하며, 여러 다른 웹 고객을 위해 와일드카드 형태로 추가해야 합니다.

  <command>
    <name>firewalld-drop</name>
    <executable>firewall-drop.sh</executable>
    <expect>srcip</expect>
  </command>

  <active-response>
    <command>firewall-drop</command>
    <location>local</location>
    <level>7</level>
  </active-response>

마지막으로 파일의 끝 부분에 액티브 응답(Active Response) 섹션을 추가해야 합니다. 이 섹션에는 <command> 섹션과 <active-response> 섹션이 있습니다.

"firewall-drop" 스크립트가 ossec-hids 경로 내에 이미 있습니다. osec-hids에 레벨 7이 발생하면 방화벽 규칙을 추가하여 IP 주소를 차단하라는 메시지가 표시됩니다.

원하는 구성 변경을 모두 완료하면 서비스를 활성화하고 시작합니다. 모든 것이 정상적으로 시작되면 계속 진행할 준비가 된 것입니다.

systemctl enable ossec-hids
systemctl start ossec-hids

ossec-hids 구성 파일에는 많은 옵션이 있습니다. 이 옵션들에 대해 자세히 알아보려면 공식 문서 사이트를 참조하세요.

결론

ossec-hids는 강화된 Apache 웹 서버의 하나의 요소일 뿐입니다. 다른 도구와 함께 선택하여 더욱 높은 보안 수준을 얻을 수 있습니다.

설치 및 구성은 비교적 간단하지만, 이것은 설치 후 잊고 놔두는 애플리케이션이 아닙니다. 최대한 많은 보안과 false-positive 응답 수를 최소화하기 위해 환경에 맞게 조정해야 합니다.

Author: Steven Spencer

Contributors: Ezequiel Bruni