웹사이트 검색

RKHunter를 사용하여 Ubuntu VPS에서 루트킷으로부터 보호하는 방법


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

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

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

이유:

대신 참조:

소개

컴퓨터를 인터넷에 노출시키는 것은 어떤 면에서 위험합니다. 서버가 원격 시스템 및 악성 소프트웨어에 의해 손상되거나 공격을 받을 수 있는 방법은 여러 가지가 있으며 잠재적인 위협으로부터 자신을 방어하기 위한 지속적이고 사전 예방적인 프로세스입니다.

잠재적인 문제 중 하나는 루트킷입니다. 루트킷은 보안이 침해된 후에도 사용자가 서버에 계속 액세스할 수 있도록 악의적인 침입자가 비밀리에 설치한 소프트웨어입니다. 이는 사용자가 원래 액세스 권한을 얻기 위해 사용한 진입 벡터가 수정된 후에도 자신이 설치한 루트킷을 사용하여 서버에 계속 들어갈 수 있기 때문에 매우 위험한 문제입니다.

이러한 종류의 문제로부터 시스템을 보호하는 데 도움이 되는 도구 중 하나는 rkhunter입니다. 이 소프트웨어는 알려진 루트킷 데이터베이스에 대해 시스템을 검사합니다. 또한 다른 시스템 파일을 검사하여 예상 속성 및 값과 일치하는지 확인할 수 있습니다.

이 가이드에서는 Ubuntu 12.04 VPS를 보호하기 위해 rkhunter를 설치 및 구성합니다.

소스에서 RKHunter 설치

Ubuntu 리포지토리에는 패치되지 않은 버그가 포함된 오래된 버전의 rkhunter가 있으므로 프로그램이 제대로 작동하도록 소스에서 설치할 것입니다.

홈 디렉토리로 변경하고 파일을 다운로드합니다. 이 글을 쓰는 시점에서 1.4.0이 최신 버전이지만 프로젝트 홈 페이지로 이동하여 최신 버전을 사용할 수 있는지 확인할 수 있습니다.

cd
wget http://downloads.sourceforge.net/project/rkhunter/rkhunter/1.4.0/rkhunter-1.4.0.tar.gz

다운로드가 완료되면 파일을 추출하고 결과 디렉터리를 입력합니다.

tar xzvf rkhunter*
cd rkhunter*

내부에는 "files\ 디렉토리와 설치 프로그램 스크립트가 있어야 합니다. 이것을 사용하여 프로그램을 설치합니다. 레이아웃을 지정하여 /usr 디렉토리에 설치하도록 합니다. 기본 경로:

sudo ./installer.sh --layout /usr --install

이렇게 하면 소프트웨어와 구성 파일이 설치됩니다.

이제 rkhunter가 설치되었지만 모든 기능을 사용하려면 여전히 일부 유틸리티가 필요합니다. Ubuntu 리포지토리에서 다음을 얻을 수 있습니다.

sudo apt-get update
sudo apt-get install binutils libreadline5 libruby1.8 ruby ruby1.8 ssl-cert unhide.rb mailutils

메일 서버 설정에 대한 몇 가지 질문을 받게 됩니다. 원하는 경우 이를 구성할 수 있지만 간결함을 위해 웹 대면 메일 서버를 구성하지 않습니다. 예시를 따르려면 "로컬 전용\을 선택하세요.

로컬로 설치하는 경우 시스템 메일의 이름은 무엇이든 지정할 수 있습니다. 그렇지 않으면 정규화된 도메인 이름을 사용해야 합니다.

이제 소프트웨어가 설치되어 테스트 및 구성할 준비가 되었습니다.

초기 테스트 실행

구성을 시작하기 전에 기본 설정으로 몇 가지 테스트를 실행하여 소프트웨어 작동 방식에 대한 아이디어를 얻고 수정을 안내할 기준을 설정합니다.

가장 먼저 해야 할 일은 rkhunter 버전이 최신 버전인지 확인하는 것입니다. 사이트에서 최신 타르볼을 받았다면 아무 것도 할 필요가 없지만 어쨌든 확인하는 것이 가장 좋습니다.

sudo rkhunter --versioncheck
[ Rootkit Hunter version 1.4.0 ]

Checking rkhunter version...
  This version  : 1.4.0
  Latest version: 1.4.0

다음으로 데이터 파일을 업데이트하기 위해 유사한 옵션을 수행해야 합니다. 이러한 파일에는 rkhunter가 파일 또는 동작이 의심스러운지 여부를 확인하기 위해 확인하는 정보가 포함되어 있습니다. 시스템을 정확하게 평가하려면 다음 파일을 최신 상태로 유지하는 것이 중요합니다.

sudo rkhunter --update

데이터베이스 파일을 새로 고치면 기본 파일 속성을 설정하여 rkhunter가 추적하는 필수 구성 파일이 변경되면 경고할 수 있습니다. rkhunter에게 현재 값을 확인하고 이를 알려진 좋은 값으로 저장하도록 지시해야 합니다.

sudo rkhunter --propupd
File created: searched for 167 files, found 136

마지막으로 초기 실행을 수행할 준비가 되었습니다. 이것은 몇 가지 경고를 생성합니다. 이는 rkhunter가 일반으로 구성되고 Ubuntu가 일부 위치에서 예상되는 기본값과 다르기 때문에 예상되는 동작입니다. 나중에 rkhunter에 다음과 같이 알려줄 것입니다.

sudo rkhunter -c --enable all --disable none

테스트의 한 섹션을 실행한 다음 계속하려면 Enter 키를 누르라고 요청합니다. 진행하면서 생성된 경고를 검토할 수 있지만 나중에 로그에 더 자세한 정보가 있습니다. 모든 테스트가 실행될 때까지 Enter 키를 누릅니다.

이제 로그를 살펴보고 생성된 모든 경고를 확인해야 합니다.

sudo nano /var/log/rkhunter.log

파일에서 "경고”라는 단어를 검색하십시오. 파일 시스템의 다양한 측면으로 인해 발생하는 다양한 경고를 볼 수 있습니다. 다음 섹션에서 우리가 알고 있는 무해한 경고를 무시하도록 rkhunter를 구성합니다.

passwd 파일 변경과 같은 일부 변경 사항은 apt로 다운로드한 도우미 유틸리티에 의해 변경되었기 때문에 표시됩니다. 이 파일의 타임스탬프는 rkhunter 데이터베이스 파일보다 최신입니다. 다음 실행 시 사라집니다.

로그를 확인하는 또 다른 대안은 rkhunter가 모든 확인 대신 화면에 경고만 출력하도록 하는 것입니다.

sudo rkhunter -c --enable all --disable none --rwo

그런 다음 구성 파일의 변경 사항을 구현할 수 있도록 이 정보를 어딘가에 복사하여 붙여넣을 수 있습니다.

알려진 양호한 값을 기반으로 RKHunter 구성

이제 rkhunter가 시스템을 보는 방법에 대한 정보를 얻었으므로 거짓 긍정을 피하기 위해 무시하거나 다르게 처리할 파일 및 응용 프로그램을 알려줄 수 있습니다.

루트 권한으로 rkhunter 구성 파일을 열어 시작하십시오.

sudo nano /etc/rkhunter.conf

메일 알림 설정

가장 먼저 할 일은 rkhunter가 경고를 받았을 때 이메일 알림을 받으려면 이메일 알림을 설정하는 것입니다. 여기에서 이 작업을 수행할 수 있습니다.

<예비>

로컬 메일을 설정하면 루트로 로그인할 때 메일을 수신하도록 설정할 수 있습니다.

MAIL-ON-WARNING="root@localhost"

메일 프로그램은 설치할 때 구성되었으므로 이 기능이 올바르게 작동하는지 여부는 사용자의 선택에 따라 다릅니다.

관련 구성 옵션은 메일 전송을 위한 프로그램 및 옵션을 지정합니다.

MAIL_CMD=mail -s "[rkhunter] Warnings found for ${HOST_NAME}"

화이트리스트 알려진 스크립트 파일

다음으로 시스템의 일부 바이너리 패키지가 스크립트로 대체되었다는 경고를 수정합니다. 일부 배포판(Ubuntu 포함)은 바이너리 파일 대신 스크립트 버전의 파일을 사용합니다.

내가 받은 네 가지 경고는 모두 이에 대한 예입니다. SCRIPTWHITELIST 매개변수를 설정하여 rkhunter에게 스크립트 파일이 될 것으로 예상됨을 알릴 수 있습니다.

SCRIPTWHITELIST="/usr/sbin/adduser"
SCRIPTWHITELIST="/usr/bin/ldd"
SCRIPTWHITELIST="/usr/bin/unhide.rb"
SCRIPTWHITELIST="/bin/which"

이렇게 하면 이러한 파일이 모든 후속 검사에서 잘못된 긍정을 트리거하는 것을 방지할 수 있습니다. 이러한 화이트리스트는 특정 테스트에만 적용되므로 이러한 파일이 바이너리가 아님을 알고 있다는 표시만 표시합니다. 다른 변경 사항은 여전히 경고를 유발할 수 있으며 이는 우리가 원하는 것입니다.

/dev 디렉토리의 화이트리스트 파일

/dev 디렉토리의 특정 파일은 rkhunter에 대한 경고를 트리거합니다. 이것들은 실제로 잘못된 것을 가리키지 않는 모든 구현 세부 사항입니다. 그것들은 거기에 있어야 하고 배포판에 의해 지원됩니다.

우리가 처리해야 하는 세 가지 경고 유형이 있습니다. 첫 번째는 디렉토리에 "의심스러운 파일\이 있다는 경고입니다. 구성에 다음 행을 배치하여 이 파일을 특별히 허용합니다.

ALLOWDEVFILE="/dev/.udev/rules.d/root.rules"

우리가 처리해야 할 다음 경고는 /dev에 숨겨진 디렉토리가 있다는 것입니다. 이것은 또한 예상됩니다. 이전 파일이 포함된 디렉토리입니다.

ALLOWHIDDENDIR="/dev/.udev"

마지막 경고는 숨겨진 파일에 대한 것입니다. 이러한 파일은 파티션 구성표 및 마운트 상태에 관계없이 유틸리티가 액세스할 수 있도록 이 디렉토리에 보관되는 기본 구성 파일입니다.

이러한 파일이 존재할 수 있도록 다음 줄을 추가합니다.

ALLOWHIDDENFILE="/dev/.blkid.tab"
ALLOWHIDDENFILE="/dev/.blkid.tab.old"
ALLOWHIDDENFILE="/dev/.initramfs"

루트 SSH 로그인 허용

다음 단계는 단순히 어설션 확인입니다. rkhunter를 실행하면 구성 파일의 매개변수를 확인하고 SSHD 구성 파일의 값과 비교합니다.

이 옵션은 루트 사용자가 SSH를 사용하여 로그인할 수 있는지 여부를 지정합니다. 많은 보안 사례에서는 루트 로그인을 비활성화할 것을 권장합니다. 루트 로그인을 비활성화한 경우 이 매개변수를 "no\로 두어야 합니다.

SSH를 통한 루트 로그인이 필요한 경우 rkhunter가 이를 확인하고 이 설정을 유효한 것으로 표시할 수 있도록 이 매개변수를 "yes\로 변경해야 합니다.

ALLOW_SSH_ROOT_USER=yes

완료되면 파일을 저장하고 닫습니다.

구성 확인

이제 rkhunter를 구성했으므로 구성의 유효성을 검사하고 이제 모든 것이 예상대로 작동하는지 확인해야 합니다.

이것의 첫 번째 단계는 구성 파일 자체가 유효한지 확인하는 것입니다. 테스트를 실행하여 rkhunter가 할당한 모든 값을 수락하는지 확인할 수 있습니다.

sudo rkhunter -C

이로 인해 출력이 반환되면 매개변수를 조정하기 위해 구성을 다시 방문해야 합니다.

제대로 작동하는 구성 파일을 얻은 후에 테스트를 다시 실행하여 경고가 있는지 확인할 수 있습니다.

sudo rkhunter -c --enable all --disable none --rwo

이것은 rkhunter 구성 자체가 수정되었기 때문에 하나의 경고를 생성해야 합니다.

Warning: The file properties have changed:
         File: /etc/rkhunter.conf
         Current hash: fa8ad80a18100e669be507e69d0cbb88348fc07d
         Stored hash : f9015108a2f6d8044126351cf16235c55993ff7a
         Current inode: 2098189    Stored inode: 2100424
         Current size: 37607    Stored size: 37359
         Current file modification time: 1388443781 (30-Dec-2013 17:49:41)
         Stored file modification time : 1388442019 (30-Dec-2013 17:20:19)

이 파일을 수정한 후 파일 속성을 다시 업데이트해야 합니다. 다음을 입력하여 지금 수행하십시오.

sudo rkhunter --propupd

완료된 후 check 명령을 다시 실행하여 오류가 생성되지 않았는지 확인할 수 있습니다.

파일 속성을 업데이트하는 것을 잊으면 구성한 경우 메일 알림을 확인할 수 있는 옵션이 제공됩니다. 로컬 메일을 구성했으므로 루트 사서함을 확인하여 메시지에 액세스할 수 있습니다.

sudo mail

두 번째 열의 번호로 액세스할 수 있는 메시지가 표시되어야 합니다.

다음을 입력하여 메일 화면을 종료할 수 있습니다.

quit

원격 이메일을 설정했다면 그것도 확인할 수 있습니다. 스팸 폴더에 있을 수 있으므로 일반 받은 편지함으로 받지 못한 경우 확인하십시오.

확인을 자동화하도록 Cron 작업 설정

이제 rkhunter를 구성하고 올바르게 작동하는지 확인했으므로 시스템을 자동화하는 것이 좋습니다. 침입에 대한 최신 정보를 얻을 수 있도록 매일 검사를 실행하도록 rkhunter를 설정할 수 있습니다.

이는 일반 이메일 주소로 이메일을 보내서 확인할 가능성이 더 높은 경우에 가장 유용합니다. 아직 변경하지 않은 경우 /etc/rkhunter.conf 파일의 MAIL-ON-WARNING 매개변수를 일반 이메일로 변경하십시오.

지금까지 해왔던 것처럼 루트 권한으로 rkhunter를 실행하고 싶으므로 루트 사용자의 crontab에 추가해야 합니다. 시스템 crontab에 추가하지 않는 것이 중요합니다. 이는 업그레이드에서 교체되어 변경 사항이 지워질 수 있기 때문입니다.

먼저 다음을 입력하여 루트 사용자에게 이미 crontab이 있는지 확인할 수 있습니다.

sudo crontab -l

이것이 crontab을 반환하면 실수할 경우를 대비하여 파일을 백업하는 것이 가장 좋습니다. 다음을 입력하면 됩니다.

sudo crontab -l > crontab.bak

그런 다음 다음 명령을 실행하여 루트 사용자의 crontab을 편집할 수 있습니다.

sudo crontab -e

이 명령을 처음 실행하는 경우 사용하려는 편집기를 선택하라는 메시지가 표시됩니다. 다른 편집자를 선호하지 않는 경우 안전한 선택은 nano입니다.

그런 다음 편집기로 이동하고 파일은 crontab 작성 방법을 설명하는 주석으로 미리 채워집니다.

여러 간격으로 명령을 실행할 수 있는 크론 사양을 작성하는 복잡한 방법이 많이 있습니다. 우리의 목적을 위해 매일 명령을 실행할 시간을 결정해야 합니다. 대부분의 서비스와 마찬가지로 밤에 실행하는 것이 일반적으로 최적입니다.

사용할 형식은 분 시 * * * 명령입니다. 시간은 24시간 형식으로 작성해야 합니다(예: 오후 3시의 경우 15시). 사용하려는 명령은 /usr/bin/rkhunter --cronjob --update --quiet입니다.

따라서 오전 4시 15분에 이 명령을 실행하려면 파일 맨 아래에 다음을 입력하면 됩니다.

15 04 * * * /usr/bin/rkhunter --cronjob --update --quiet

--cronjob 옵션은 rkhunter에 컬러 형식으로 출력하지 않고 대화식 키 누름을 요구하지 않도록 지시합니다. 업데이트 옵션은 정의를 최신 상태로 유지합니다. quiet 옵션은 모든 출력을 억제합니다.

cron 유틸리티는 오전 4시 15분에 이 명령을 실행하고 출력이 있으면 rkhunter 명령 자체가 사용자에게 이메일을 보내 경고합니다. 문제가 발견되지 않으면 이메일이 수신되지 않습니다.

결론

이제 rkhunter를 설치, 구성 및 자동화했으므로 대부분의 작업을 대신 수행해야 합니다. 이메일 알림에 의존하는 경우 정기적으로 확인하고 생성된 모든 경고에 응답해야 합니다.

컴퓨터에서 소프트웨어를 변경할 때 rkhunter가 다음 실행 시 차이점을 보고할 수 있다는 점을 기억하는 것도 도움이 됩니다. 변경한 후에는 적어도 sudo rkhunter --propupd를 실행하여 rkhunter를 새 파일 속성으로 업데이트하는 것이 좋습니다.

이 소프트웨어는 알려진 좋은 값과 사용자가 허용한 시스템 상태를 참조하므로 설치를 위해 대부분의 소프트웨어를 구성한 후 직접 설치 및 구성하는 것이 가장 좋습니다. 소프트웨어를 구성하기 전에 그렇게 하면 잘못된 긍정이 많이 발생하고 너무 오래 기다리면 침입이 발생하여 잘못된 파일을 화이트리스트에 추가했는지 알지 못할 수 있습니다.

저스틴 엘링우드