웹사이트 검색

Tripwire를 사용하여 Ubuntu VPS에서 서버 침입을 감지하는 방법


상태: 더 이상 사용되지 않음

이 문서에서는 더 이상 지원되지 않는 Ubuntu 버전에 대해 설명합니다. 현재 Ubuntu 12.04를 실행하는 서버를 운영 중인 경우 지원되는 Ubuntu 버전으로 업그레이드하거나 마이그레이션하는 것이 좋습니다.

  • Ubuntu 14.04로 업그레이드합니다.
  • Ubuntu 14.04에서 Ubuntu 16.04로 업그레이드
  • 서버 데이터를 지원되는 버전으로 마이그레이션

이유:

대신 참조:

소개

보안은 온라인 서버를 관리할 때 매우 복잡한 문제입니다. 방화벽, fail2ban 정책, 보안 서비스를 구성하고 애플리케이션을 잠글 수는 있지만 모든 공격을 효과적으로 차단했는지 확실히 알기는 어렵습니다.

호스트 기반 침입 탐지 시스템(HIDS)은 컴퓨터의 파일 시스템 및 구성에 대한 세부 정보를 수집하여 작동합니다. 그런 다음 이 정보를 저장하여 시스템의 현재 상태를 참조하고 검증합니다. 알려진 양호한 상태와 현재 상태 사이에 변경 사항이 발견되면 보안이 손상되었다는 신호일 수 있습니다.

Linux에서 널리 사용되는 호스트 기반 침입 탐지 시스템은 트립와이어입니다. 이 소프트웨어는 무단 변경이 발생했는지 여부를 감지하기 위해 다양한 파일 시스템 데이터 포인트를 추적할 수 있습니다.

이 기사에서는 Ubuntu 12.04 설치에서 트립와이어를 설치하고 구성하는 방법에 대해 설명합니다. 침입 탐지 시스템의 특성으로 인해 파일 시스템이 깨끗한지 확인할 수 있도록 서버를 생성한 직후 이 가이드를 실행하는 것이 가장 좋습니다.

트립와이어 설치

다행스럽게도 우분투의 기본 리포지토리에서 트립와이어를 찾을 수 있습니다. 다음을 입력하여 apt-get으로 설치할 수 있습니다.

sudo apt-get update
sudo apt-get install tripwire

이 설치는 필요한 패키지의 꽤 많은 구성을 통해 실행됩니다.

먼저 종속성으로 가져오는 메일 응용 프로그램을 구성합니다. 이메일 알림을 구성하려면 "인터넷 사이트\를 선택합니다.

설치 중에 암호를 선택할 것인지 묻습니다. 두 프롬프트 모두 "예\를 선택하십시오. 구성 파일을 다시 빌드할 수 있는지 묻는 메시지가 표시됩니다. "예\를 선택하십시오. 정책 파일에 대해 유사한 질문을 합니다. 다시 "예\라고 대답합니다.

다음으로 사이트 키 암호를 선택하고 확인하라는 메시지가 표시됩니다. Tripwire는 두 개의 키를 사용하여 구성 파일을 보호합니다.

  • 사이트 키: 이 키는 구성 파일을 보호하는 데 사용됩니다. 구성 파일이 수정되지 않았는지 확인해야 합니다. 그렇지 않으면 전체 탐지 시스템을 신뢰할 수 없습니다. 동일한 구성 파일을 여러 서버에 사용할 수 있으므로 이 키는 여러 서버에서 사용할 수 있습니다.\n
  • 로컬 키: 이 키는 각 컴퓨터에서 바이너리를 실행하는 데 사용됩니다. 이는 바이너리가 동의 없이 실행되지 않도록 하기 위해 필요합니다.\n

먼저 사이트 키에 대한 암호를 선택하고 확인한 다음 로컬 키에 대한 암호를 선택하고 확인합니다. 강력한 암호를 선택했는지 확인하십시오.

데이터베이스 초기화

설치 후 설치를 초기화하고 구성해야 합니다. 대부분의 보안 프로그램과 마찬가지로 트립와이어는 일반적이지만 특정 설치에 맞게 미세 조정해야 할 수 있는 엄격한 기본값과 함께 제공됩니다.

먼저, 설치 중에 정책 파일을 만들기 위해 예를 선택하지 않은 경우 지금 다음 명령을 실행하여 만들 수 있습니다.

sudo twadmin --create-polfile /etc/tripwire/twpol.txt

이전에 구성한 사이트 암호를 입력하라는 메시지가 표시됩니다.

이렇게 하면 /etc/tripwire/ 디렉터리에 지정한 일반 텍스트 파일에서 암호화된 정책 파일이 생성됩니다. 이 암호화된 파일은 트립와이어가 검사를 실행할 때 실제로 읽는 파일입니다.

이제 트립와이어가 시스템을 검증하는 데 사용할 데이터베이스를 초기화할 수 있습니다. 이것은 방금 시작한 정책 파일을 사용하고 지정된 지점을 확인합니다.

이 파일은 아직 시스템에 맞게 조정되지 않았기 때문에 많은 경고, 가양성 및 오류가 발생합니다. 잠시 후에 구성 파일을 미세 조정하기 위한 참조로 사용할 것입니다.

데이터베이스를 초기화하는 기본 방법은 다음을 실행하는 것입니다.

sudo tripwire --init

이렇게 하면 데이터베이스 파일이 생성되고 구성에서 조정해야 하는 사항에 대해 불평합니다.

우리는 구성 결정을 알리기 위해 결과를 저장하기를 원하기 때문에 파일이 언급된 모든 인스턴스를 잡아서 tripwire 구성 디렉토리의 파일에 넣을 수 있습니다. 검사를 실행하고 나열된 파일을 tripwire 구성 디렉토리의 test_results라는 파일에 넣을 수 있습니다.

sudo sh -c 'tripwire --check | grep Filename > test_results'

이 파일을 보면 다음과 같은 항목이 표시됩니다.

less /etc/tripwire/test_results
Filename: /etc/rc.boot
Filename: /root/mail
Filename: /root/Mail
Filename: /root/.xsession-errors
. . .

시스템과 일치하도록 정책 파일 구성

트립와이어를 시작하는 파일 목록이 있으므로 정책 파일을 검토하고 편집하여 이러한 오탐지를 제거할 수 있습니다.

루트 권한으로 편집기에서 일반 텍스트 정책을 엽니다.

sudo nano /etc/tripwire/twpol.txt

test_results 파일에 반환된 각 파일을 검색합니다. 일치하는 모든 행을 주석 처리하십시오.

"부팅 스크립트\ 섹션에서 /etc/rc.boot 줄을 주석 처리해야 합니다. 이는 Ubuntu 시스템에 없기 때문입니다.

<예비>

/root 홈 디렉토리에는 내 시스템에서 주석 처리해야 하는 파일이 많이 있었습니다. 시스템에 없는 항목은 주석 처리해야 합니다.

<예비>

내 검사의 마지막 부분은 /proc 파일 시스템의 파일 설명자에 대해 불평하는 것이었습니다. 이러한 파일은 항상 변경되므로 구성을 그대로 두면 정기적으로 오탐지가 트리거됩니다.

\장치 및 커널 정보 섹션에서 /proc 파일 시스템이 검사 목록에 있는 것을 볼 수 있습니다.

(
  rulename = "Devices & Kernel information",
  severity = $(SIG_HI),
)
{
        /dev            -> $(Device) ;
        /proc           -> $(Device) ;
}

그러나 이것은 그 아래의 모든 파일을 검사합니다. 우리는 특별히 그것을 원하지 않습니다. 대신, 이 사양을 제거하고 확인하려는 /proc 아래의 모든 디렉토리에 대한 구성 옵션을 추가합니다.

<예비>

파일의 이 부분에 있는 동안 /dev/pts 파일 시스템에 대해서도 작업을 수행하려고 합니다. Tripwire는 /dev를 확인하라는 지시를 받았고 /dev/pts가 별도의 파일 시스템에 있으므로 지정하지 않으면 들어가지 않을 것이기 때문에 기본적으로 해당 위치를 확인하지 않습니다. 트립와이어도 이를 확인하기 위해 명시적으로 이름을 지정할 수 있습니다.

<예비>

마지막으로 주석 처리할 것은 /var/run/var/lock 줄이므로 시스템이 서비스에 의한 정상적인 파일 시스템 변경 사항을 표시하지 않습니다.

<예비>

편집을 마치면 파일을 저장하고 닫습니다.

이제 파일이 구성되었으므로 tripwire가 실제로 읽는 암호화된 정책 파일을 다시 만들어 구현해야 합니다.

sudo twadmin -m P /etc/tripwire/twpol.txt

이것이 생성된 후 정책을 구현하기 위해 데이터베이스를 다시 초기화해야 합니다.

sudo tripwire --init
Please enter your local passphrase:
Parsing policy file: /etc/tripwire/tw.pol
Generating the database...
*** Processing Unix File System ***
Wrote database file: /var/lib/tripwire/tripit.twd
The database was successfully generated.

이전에 받은 모든 경고가 이제 사라집니다. 경고가 계속 표시되면 사라질 때까지 /etc/tripwire/twpol.txt 파일을 계속 편집해야 합니다.

구성 확인

데이터베이스 초기화가 파일에 대해 불평하지 않았다면 이 시점에서 구성이 시스템과 일치해야 합니다. 그러나 트립와이어 보고서가 어떻게 보이는지 확인하고 실제로 경고가 없는지 확인해야 합니다.

검사의 기본 구문은 다음과 같습니다.

sudo tripwire --check

시스템에서 발견된 오류나 변경 사항이 없음을 지정하는 보고서 출력이 화면에 표시되어야 합니다.

이 작업이 완료되면 구성이 올바른지 상당히 확신할 수 있습니다. 시스템에서 민감한 정보를 제거하려면 파일을 약간 정리해야 합니다.

생성한 test_results 파일을 삭제할 수 있습니다.

sudo rm /etc/tripwire/test_results

우리가 할 수 있는 또 다른 일은 실제 일반 텍스트 구성 파일을 제거하는 것입니다. 비밀번호로 암호화된 파일에서 마음대로 생성할 수 있기 때문에 안전하게 할 수 있습니다.

일반 텍스트 파일을 재생성하기 위해 해야 할 일은 암호화된 파일을 twadmin으로 전달하는 것입니다. 암호화된 버전을 생성할 때와 거의 같은 방식입니다. 다시 일반 텍스트 파일로 파이프하면 됩니다.

sudo sh -c 'twadmin --print-polfile > /etc/tripwire/twpol.txt'

텍스트 버전을 백업 위치로 이동하여 지금 테스트한 다음 다시 만드십시오.

sudo mv /etc/tripwire/twpol.txt /etc/tripwire/twpol.txt.bak
sudo sh -c 'twadmin --print-polfile > /etc/tripwire/twpol.txt'

올바르게 작동하면 이제 일반 텍스트 파일을 안전하게 제거할 수 있습니다.

sudo rm /etc/tripwire/twpol.txt
sudo rm /etc/tripwire/twpol.txt.bak

이메일 알림 설정

매일 실행되도록 트립와이어를 구성하고 자동 알림도 구현합니다. 프로세스 중에 시스템을 변경할 때 데이터베이스를 업데이트하는 방법을 테스트할 수 있습니다.

mail 명령을 사용하여 이메일 주소로 알림을 보냅니다. 현재 시스템에 설치되어 있지 않으므로 리포지토리에서 다운로드해야 합니다.

이것은 트립와이어가 시스템의 변화에 어떻게 반응하는지 볼 수 있는 좋은 기회를 제공합니다.

다음과 같이 파일을 설치합니다.

sudo apt-get install mailutils

이제 해당 명령을 설치했으므로 트립와이어 보고서를 메일로 보내는 시스템 기능을 테스트해 보겠습니다. Tripwire에 알리지 않고 방금 새 소프트웨어를 설치했기 때문에 이 보고서에는 경고 및 변경 사항도 포함됩니다.

<예비>

메시지를 보내기 위해 방금 설치한 새 메일 소프트웨어에 대한 세부 정보가 포함된 보고서를 곧 이메일로 받게 됩니다! 좋습니다. 이는 트립와이어가 파일 시스템의 변경 사항을 감지하고 있으며 메일 소프트웨어도 작동하고 있음을 의미합니다.

이제 데이터베이스를 업데이트하기 위해 대화식 확인을 수행하여 소프트웨어 변경 사항을 "정상\해야 합니다.

다음을 입력하면 됩니다.

sudo tripwire --check --interactive

이렇게 하면 일반과 동일한 테스트가 실행되지만 결국 보고서를 화면에 출력하는 대신 텍스트 파일로 복사하여 기본 편집기로 엽니다.

이 보고서는 변경된 각 파일에 대해 매우 자세하게 설명합니다. 실제로 내 컴퓨터에서 생성된 보고서의 길이는 2,275줄이었습니다. 이 정도의 정보는 실제 보안 문제가 발생한 경우 매우 유용하지만 우리의 경우 일반적으로 그다지 흥미롭지 않을 수 있습니다.

중요한 부분은 위쪽에 있습니다. 몇 가지 소개 정보 후에 추가되거나 수정된 각 파일에 대한 확인란이 있는 몇 줄을 볼 수 있습니다.

Rule Name: Other binaries (/usr/sbin)
Severity Level: 66
-------------------------------------------------------------------------------

Remove the "x" from the adjacent box to prevent updating the database
with the new values for this object.

Added:
[x] "/usr/sbin/maidag"

Modified:
[x] "/usr/sbin"
. . .

이러한 확인란은 이러한 변경을 허용하도록 데이터베이스를 업데이트할 것임을 나타냅니다. "x\가 있는 모든 상자를 검색하고 해당 항목이 사용자가 변경했거나 괜찮은지 확인해야 합니다.

변경 사항이 마음에 들지 않으면 상자에서 "x\를 제거하면 해당 파일이 데이터베이스에서 업데이트되지 않습니다. 이렇게 하면 다음 실행 시 이 파일에 여전히 트립와이어 플래그가 지정됩니다.

어떤 파일 변경이 적합한지 결정한 후 파일을 저장하고 닫을 수 있습니다.

이 시점에서 트립와이어가 데이터베이스 파일을 업데이트할 수 있도록 로컬 암호를 묻습니다.

모든 변경 사항을 수락하고 이 명령을 다시 실행하면 이제 보고서가 훨씬 짧아지고 변경 사항이 나열되지 않습니다.

Cron으로 Tripwire 자동화

이제 이 모든 기능이 수동으로 작동함을 확인했으므로 크론 작업을 설정하여 매일 아침 트립와이어 검사를 실행할 수 있습니다.

시스템 cronjob에 대한 편집 내용이 시스템 업데이트로 지워질 수 있기 때문에 루트의 crontab을 사용할 것입니다.

다음 명령을 실행하여 루트에 이미 crontab이 있는지 확인하십시오.

sudo crontab -l

crontab이 있는 경우 파일로 파이프하여 백업해야 합니다.

sudo sh -c 'crontab -l > crontab.bad'

그런 다음 다음을 입력하여 crontab을 편집할 수 있습니다.

sudo crontab -e

crontab을 처음 실행하는 경우 사용할 편집기를 묻는 메시지가 표시됩니다. 다른 편집기를 선호하지 않는 경우 일반적으로 nano가 안전한 선택입니다.

그런 다음 트립와이어를 자동화할 수 있는 파일로 이동합니다. 우리는 트립와이어를 매일 운영할 것이기 때문에 운영할 시간을 결정하기만 하면 됩니다. 일반적으로 서비스는 바쁜 시간을 방해하지 않도록 피크가 아닌 시간에 실행됩니다.

우리가 사용해야 하는 형식은 min hour * * * command입니다. 사용하려는 명령은 이전에 보고서를 메일로 보낼 때 사용한 것과 동일합니다. 루트로 실행되기 때문에 sudo를 사용할 필요가 없습니다.

매일 오전 3시 30분에 트립와이어를 실행하려면 파일에 다음과 같은 줄을 추가할 수 있습니다.

<예비>

원하는 대로 조정할 수 있습니다.

결론

이제 파일 시스템의 변경 사항에 대한 보고서를 보내는 자동화된 침입 탐지 시스템이 있어야 합니다. 이메일로 전송된 보고서를 정기적으로 검토하고 감지된 변경 사항이 있는 경우 트립와이어 데이터베이스를 업데이트하여 변경 사항을 확인하거나 의심스러운 활동을 조사하는 조치를 취해야 합니다.

저스틴 엘링우드