우분투(Linux) 환경에서 바이러스와 백도어(Rootkit)를 검사
우분투(Linux) 환경에서 바이러스와 백도어(Rootkit)를 검사하기 위해 가장 많이 사용되는 무료 오픈소스 도구 3가지를 추천해 드립니다.
각 도구는 목적이 조금씩 다르므로, 바이러스 백신 1개 + 백도어 탐지 도구 1개를 조합해서 사용하는 것이 가장 안전합니다.
1. 바이러스 백신: ClamAV (필수)
우분투에서 가장 표준적으로 쓰이는 바이러스 백신입니다. 윈도우 바이러스뿐만 아니라 리눅스용 악성코드도 탐지합니다.
설치 및 사용법:
-
설치:
Bashsudo apt update sudo apt install clamav clamav-daemon -
바이러스 DB 업데이트: (설치 직후 필수)
Bashsudo systemctl stop clamav-freshclam # 업데이트 데몬 잠시 중지 sudo freshclam # 수동 업데이트 실행 sudo systemctl start clamav-freshclam # 데몬 다시 시작 -
전체 시스템 검사: (시간이 조금 걸립니다)
Bashsudo clamscan -r / --bell -i-
-r: 하위 폴더까지 재귀적으로 검사 -
--bell: 바이러스 발견 시 비프음 울림 -
-i: 감염된 파일만 화면에 출력 (깨끗한 파일은 생략)
-
2. 백도어/루트킷 탐지: rkhunter (추천)
Rootkit Hunter의 약자로, 해커가 몰래 숨겨둔 백도어, 변조된 시스템 파일, 숨겨진 포트 등을 찾아냅니다.
설치 및 사용법:
-
설치:
Bashsudo apt install rkhunter -
데이터베이스 업데이트:
Bashsudo rkhunter --update -
검사 시작:
Bashsudo rkhunter --check-
검사 도중
[Press <ENTER> to continue]메시지가 나오면 엔터를 눌러 진행하세요. -
결과에서
Warning이 뜬다면 로그 파일(/var/log/rkhunter.log)을 확인해야 합니다. (단, 시스템 업데이트로 인한 변경 사항도 경고로 뜰 수 있으니 오탐지에 주의하세요.)
-
3. 또 다른 백도어 탐지: chkrootkit
rkhunter와 비슷하지만 검사 방식이 달라서, 교차 검증용으로 함께 쓰면 좋습니다. 사용법이 매우 간단합니다.
설치 및 사용법:
-
설치:
Bashsudo apt install chkrootkit -
검사 시작:
Bashsudo chkrootkit-
화면에
INFECTED라고 뜨는 항목이 있는지 눈여겨보세요.
-
🛡️ 꿀팁: 전체 보안 점검 Lynis
단순 바이러스 검사를 넘어, “내 서버 설정이 얼마나 안전한지” 점수로 매겨주는 도구입니다.
sudo apt install lynis
sudo lynis audit system
-
방화벽 설정, 비밀번호 정책, 취약한 패키지 등을 종합적으로 진단해 줍니다.
요약: 지금 바로 해볼 것
먼저 ClamAV로 바이러스를 잡고, rkhunter로 백도어를 체크해보세요.
혹시 검사 결과에서 INFECTED나 Warning이 나왔나요?
오탐지(False Positive)일 수도 있으니 당황하지 마시고, 발견된 파일 경로와 메시지를 알려주시면 분석을 도와드리겠습니다.
이 영상은 리눅스 보안 감사 도구인 Lynis의 설치 및 사용법을 초보자 눈높이에서 설명하고 있어, 전체적인 서버 보안 상태를 점검하는 데 도움이 됩니다.
`chkrootkit`이나 `rkhunter`와 같은 보안 점검 도구를 실행하셨군요. **`sniffer` 항목에서 `WARNING`이 떴다는 것은 현재 서버의 네트워크 인터페이스 중 하나가 “무차별 모드(Promiscuous Mode)”로 작동 중이거나, 패킷을 훔쳐보는 프로그램이 감지되었다는 뜻입니다.**
하지만 **너무 걱정하지 않으셔도 됩니다.** 해킹이 아니라 정상적인 프로그램(Docker, VM, VPN 등) 때문에 경고가 뜨는 경우가 **90% 이상**입니다.
정확한 원인을 파악하기 위해 다음 3단계로 확인해 보세요.
—–
### 1단계: 네트워크 인터페이스 상태 확인 (가장 흔한 원인)
네트워크 인터페이스가 `PROMISC` (무차별 모드) 상태인지 확인해야 합니다. 패킷 스니핑 도구는 모든 패킷을 캡처하기 위해 이 모드를 켭니다.
터미널에 아래 명령어를 입력하세요:
“`bash
ip link show | grep PROMISC
“`
또는
“`bash
netstat -i
“`
* **결과 해석:**
* 아무것도 안 나온다면: 오탐(False Positive)일 가능성이 높습니다.
* **`PROMISC`** 라는 단어가 보인다면: 해당 인터페이스가 무차별 모드입니다.
* **주의:** 만약 서버에서 **Docker(도커), VMWare, VirtualBox, VPN** 등을 사용 중이라면 가상 인터페이스가 `PROMISC` 모드인 것은 **정상**입니다. (예: `docker0`, `veth…` 등)
—–
### 2단계: 어떤 프로그램이 패킷을 보고 있는지 확인
실제로 어떤 프로세스가 패킷을 수집하고 있는지 확인해야 합니다.
“`bash
# 로우 소켓(Raw Socket)을 사용하는 프로세스 확인
sudo lsof | grep PACKET
“`
또는 `chkrootkit`의 상세 모드를 사용하여 어떤 인터페이스가 문제인지 확인합니다:
“`bash
sudo chkrootkit -x sniffer
“`
* **결과 해석:**
* `dhclient`, `NetworkManager`, `wpa_supplicant`: 네트워크 연결을 관리하는 정상적인 시스템 데몬입니다. (안전함)
* `docker-proxy`, `calico`: 컨테이너 관련 도구입니다. (안전함)
* **낯선 프로세스 이름:** 만약 `ssh`, `apache` 등이 아닌 이상한 이름의 프로세스가 보인다면 해킹을 의심해야 합니다.
—–
### 3단계: 로그 확인
누군가 악의적으로 스니퍼를 설치했다면 로그가 지워졌을 수도 있지만, 최근 접속 기록을 확인해 보는 것이 좋습니다.
“`bash
lastlog
last
“`
최근에 내가 아닌 다른 IP나 낯선 계정으로 접속한 기록이 있는지 확인해 보세요.
—–
### 📝 요약 및 조언
1. **서버에 Docker나 가상 머신을 돌리고 계신가요?**
* 그렇다면 이 경고는 **무시하셔도 되는 정상적인 상황**일 확률이 매우 높습니다.
2. **일반적인 웹 서버(Apache/Nginx 등)만 돌리는데 경고가 떴나요?**
* 위의 `ip link show` 명령어로 `PROMISC`가 뜬 인터페이스 이름을 확인해야 합니다. 물리 랜카드(예: `eth0`, `enp3s0`)가 이유 없이 `PROMISC` 상태라면 정밀 분석이 필요합니다.
**어떤 상황인지 판단이 어려우시면, `ip link show` 명령어를 입력했을 때 나오는 결과를 복사해서 보여주시겠어요? 정상인지 아닌지 판별해 드리겠습니다.**