오늘은 LMD(Linux Malware Detect)로 알려진 리눅스 서버 멀웨어 감염 여부를 체크해주는 리눅스 멀웨어 스캐너인 Maldet를 사용해 정기 멀웨어 스캔 및 스캔 결과를 이메일로 받아보는 방법에 대해서 알아보도록 하겠습니다.
이전 글에서도 여러 번 말씀드렸지만 우분투를 비롯한 리눅스를 사용한 운영체제에서도 윈도우즈만큼은 아니지만 바이러스나 멀웨어를 퍼트리는 해커들이 활발하게 활동하고 있습니다.
따라서 정기적으로 바이러스나 멀웨어 감염 여부를 점검해 보는 것이 좋습니다.
이를 위해 ClamAV가 많이 사용되지만 멀웨어 스캔을 위해서 Maldet도 많이 사용됩니다. 그래서 저는 테스트삼아 두가지를 모두 사용해 정기적으로 스캔토록 만들었습니다.
여기에서는 Maldet를 할용해 정기적으로 리눅스 서버 멀웨어 스캔 및 스캔 결과를 이메일로 받아보는 방법에 대해서 살펴보겠습니다.
Maldet 설치 및 사용
우서 Maldet를 설치하는 방법을 살펴봅니다. 이하는 모두 우분투하에서 진행되는 방법입니다.
어선 /opt 폴더로 이동합니다.
cd /opt/
Code language: PHP (php)
Maldet 공식 사이트인 rfxn.com에서 Maldet 최신 버젼을 다운받습니다. 이는 아래 명령어를 사용합니다.
wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
Code language: PHP (php)
최신 버전은 다운받았지만 이는 압축 파일이므로 압축을 풀어 줍니다.
tar xfz maldetect-current.tar.gz
Code language: PHP (php)
압축을 풀고 ls -l 명령어로 어떤 파일 및 폴더가 생겼는지 확인해보면 maldetect-1.6.4와 같은 폴더가 생긴 것을 볼 수 있습니다.
이제 이 폴더로 이동합니다. Maldet 버젼에 따라 폴더 이름이 달라지므로 확인 후 폴더 이동하는 것이 좋습니다.
cd maldetect-1.6.4
Code language: PHP (php)
이 설치 폴더로 이동한 다음 Maldet 설치 스크립트 파일, install.sh을 만날 수 있는데요. 이를 실행해 줍니다.
./install.sh
Code language: PHP (php)
이제 설치스크립트가 실행되면서 설치를 시작합니다.
Maldet 설정
이제 Maldet 설치가 끝났으면 설정으로 들어갑니다.
설정 파일은 /usr/local/maldetect/conf.maldet인데요. 이를 편집기로 수정합니다.
nano /usr/local/maldetect/conf.maldet
Code language: PHP (php)
이 설정 파일에서는 주로 아래와 같은 내용을 변경해 줍니다. 뭐 사용자 목적에 따라서 적절한 옵션을 변경할 수 있습니다.
스캔 후 이메일 통보 관련
먼저 스캔 결과를 이메일로 통보 여부, 값이 0이면 통보하지 않고, 1인 경우 메일 통보
email_alert=1
Code language: PHP (php)
실제 편집 파일에 해당 건에는 아래와 같은 주석이 달려 있습니다.
# Enable or disable e-mail alerts, this includes application version
# alerts as well as automated/manual scan reports. On-demand reports
# can still be sent using '--report SCANID user@domain.com'.
# [0 = disabled, 1 = enabled]
email_alert="1"
Code language: PHP (php)
다음으로는 메일 주소를 설정합니다. 여러 메일 주소로 스캔 결과를 받아야 한다면 컴마(,)를 이용해 추가합니다.
email_addr=”user@yourdomain.com, user2@yourdomain.com”
Code language: PHP (php)
실제 편집 파일에 해당 건에는 아래와 같은 주석이 달려 있습니다.
# The destination e-mail addresses for automated/manual scan reports
# and application version alerts.
# [ multiple addresses comma (,) spaced ]
email_addr=”user@yourdomain.com, user2@yourdomain.com”
Code language: PHP (php)
다음으로는 Maldet가 멀웨러를 감지하고 깨끗하게 치료했다면 굳이 메일 경고하지 않는다는 옵션 선택할지를 결정합니다. 1값은 멀웨어가 치료되었다면 굳이 메일 경고를 하지 않습니다.
email_ignore_clean="0"
Code language: PHP (php)
실제 편집 파일에 해당 건에는 아래와 같은 주석이 달려 있습니다.
# Enable or disable slack alerts, this will upload the scan report as a file
# into one or more slack channels
# [0 = disabled, 1 = enabled]
slack_alert="0"
Code language: PHP (php)
멀웨어 감염 파일 처리
다음에는 스캔 도중 멀웨어를 감지했다면 어떻게 할지에 대한 옵션인데요. 멀웨어에 걸린 파일을 특정 장소로 이동할지 그대로 둘지를 결정합니다.
값이 0이라면 감염되었다는 경고만 하고 파일은 그대로 유지합니다. 1 값을 주면 특정 장소로 이동 조치하고 경고해 줍니다.
quarantine_hits=1
Code language: PHP (php)
실제 편집 파일에 해당 건에는 아래와 같은 주석이 달려 있습니다.
# The default quarantine action for malware hits
# [0 = alert only, 1 = move to quarantine & alert]
quarantine_hits="1"
Code language: PHP (php)
그 다음에는 감염된 멀웨어를 치료할지 여부를 선택합니다. 치료한다면 1값을 입력하고 그대로 두려면 0값을 유지합니다.
quarantine_clean=1
Code language: PHP (php)
실제 편집 파일에 해당 건에는 아래와 같은 주석이 달려 있습니다.
# Try to clean string based malware injections
# [NOTE: quarantine_hits=1 required]
# [0 = disabled, 1 = clean]
quarantine_clean="1"
Code language: PHP (php)
이번에는 조금 더 강력한 조치를 할 것인지를 선택하는데요. 멀웨어에 감염된 사용자는 서버에서 활동을 중지시키는 조치인데요 .
0값을 입력 시 멀웨어에 감염되었다고 판명되어도 그 사용자는 그대로 작동하며, 만약 1값을 입력시 멀웨어가 팀지되면 그 사용자는 사용이 중지됩니다.
1인 사용자 서버는 서비스사 멈추는 것이므로 신중하게 선택할 필요가 있습니다. 아무래도 서비스 중단까지는 부담스러우니 0값을 사용합니다.
quarantine_suspend_user=0
Code language: PHP (php)
여기에는 아래와 같은 주석과 설명이 달려 있습니다.
# The default suspend action for users wih hits
# Cpanel suspend or set shell /bin/false on non-Cpanel
# [NOTE: quarantine_hits=1 required]
# [0 = disabled, 1 = suspend account]
quarantine_suspend_user="0"
Code language: PHP (php)
Maldet 실행
Maldet 설정이 끝났으면 Maldet를 실행해 봅니다. 우선 Maldet의 주요 실행 옵션을 살펴볼까요?
- -u, –update-sigs [–force]
데이타베이스 업데이트 - -a, –scan-all PATH
모든 파일을 스캔
예) maldet -a /home/username - -e, –report SCANID email
메일 보내기
예) maldet –report SCANID user@domain.com
특정 폴더를 전부 스캔 시 아래와 같은 명령어 사용
maldet -a /home/username
Code language: PHP (php)
그러면 아래와 같은 메세지를 내면서 스캔을 시작한 후 그 결과를 표시해 줍니다.
Linux Malware Detect v1.6.4
(C) 2002-2019, R-fx Networks <proj@rfxn.com>
(C) 2019, Ryan MacDonald <ryan@rfxn.com>
This program may be freely redistributed under the terms of the GNU GPL v2
maldet(46026): {scan} signatures loaded: 17041 (14221 MD5 | 2035 HEX | 785 YARA | 0 USER)
maldet(46026): {scan} building file list for /home/happist, this might take awhile...
maldet(46026): {scan} setting nice scheduler priorities for all operations: cpunice 19 , ionice 6
maldet(46026): {scan} file list completed in 2s, found 85826 files...
maldet(46026): {scan} found clamav binary at /usr/bin/clamdscan, using clamav scanner engine...
maldet(46026): {scan} scan of /home/happist (85826 files) in progress...
maldet(46026): {scan} clamscan returned an error, check /usr/local/maldetect/logs/clamscan_log for details!
maldet(46026): {scan} scan completed on /home/happist: files 85826, malware hits 0, cleaned hits 0, time 491s
maldet(46026): {scan} scan report saved, to view run: maldet --report 200707-2004.46026
Code language: PHP (php)