Computer >> 컴퓨터 >  >> 스마트폰 >> Linux

리눅스에서 DDoS 공격 탐지하고 차단하는 방법 – psad 완벽 가이드

이 가이드는 리눅스 사용자를 위해 서비스 거부(DoS) 공격에 사용되는 IP 주소를 탐지하고 차단하는 방법을 단계별로 소개합니다.

앞서 iptables에서 특정 IP 주소를 차단하는 방법을 다룬 글을 소개한 바 있습니다. 이번 글은 그 연장선으로, 서비스 거부(Denial of Service) 공격이 발생했을 때 공격자의 IP 주소를 어떻게 찾아낼 수 있는지 알려드립니다.

psad란 무엇인가?

이 작업에는 psad라는 무료 오픈소스 소프트웨어를 사용합니다. psad는 iptables와 연동하여 iptables 로그를 실시간으로 모니터링하며, 포트 스캔이나 기타 의심스러운 트래픽을 감지합니다. 이러한 트래픽은 대개 누군가 리눅스 서버에 침입을 시도하고 있다는 신호입니다.

1단계: psad 설치

먼저 psad를 설치합니다. Ubuntu나 Fedora처럼 체계적인 패키지 관리 시스템을 갖춘 배포판을 사용 중이라면 다음 명령어 중 하나로 간단히 설치할 수 있습니다.

# sudo apt-get install psad
또는
# yum install psad

위 명령어가 작동하지 않는다면 psad 공식 다운로드 페이지에서 자신의 시스템에 맞는 패키지를 직접 내려받아 설치하면 됩니다.

2단계: syslog 설정

이 튜토리얼은 Ubuntu 리눅스 서버 기준으로 작성되었지만, 약간의 수정만 거치면 다른 배포판에서도 충분히 적용할 수 있습니다. 선호하는 텍스트 편집기로 syslog.conf 파일을 엽니다.

# vim /etc/syslog.conf

파일 맨 끝에 다음 줄을 추가합니다:

kern.info |/var/lib/psad/psadfifo

다음 명령어 한 줄로도 동일한 작업을 수행할 수 있습니다:

# echo -e 'kern.info\t|/var/lib/psad/psadfifo' >> /etc/syslog.conf

이제 sysklogdklogd 데몬을 재시작합니다:

/etc/init.d/sysklogd restart
/etc/init.d/klogd restart

3단계: 화이트리스트(안전 IP 목록) 생성

psad는 의심스러운 IP를 탐지하면 iptables에 해당 IP 차단을 지시합니다. 그런데 이 과정에서 본인이 사용하는 IP가 실수로 차단될 가능성도 있습니다. 이런 문제를 예방하려면 안전한 IP 주소 목록을 담은 파일을 미리 만들어 두는 것이 좋습니다.

# vim /home/calvin/safeiplist.cfg

psad가 차단하지 않도록 허용할 IP 주소를 입력합니다:

127.0.0.0/24
192.168.0.0/24
122.164.34.240

4단계: iptables 규칙 설정 스크립트

이제 아래 스크립트로 iptables에 필요한 규칙을 적용합니다. 주의: 이 스크립트는 기존 iptables 설정을 모두 초기화하므로, 실행 전에 현재 설정을 반드시 백업하세요. 스크립트를 서버에 복사한 뒤 WORKDIRSAFEIPLIST 변수를 자신의 환경에 맞게 수정합니다.

WORKDIR="/home/calvin/"
INTERVAL="5"
HITCOUNT="5"
SAFEIPLIST="safeiplist.cfg"

cd $WORKDIR

iptables -F
if [ -f $SAFEIPLIST ]; then
IPS=$(grep -Ev "^#" $SAFEIPLIST)
for i in $IPS
do
iptables -A INPUT -s $i -j ACCEPT
done
fi

iptables -A INPUT -m state --state NEW -m recent --set
iptables -A INPUT -m state --state NEW -m recent --update --seconds $INTERVAL --hitcount $HITCOUNT -j LOG

이 스크립트의 동작 원리는 간단합니다. 5초 안에 5회 이상 연결을 시도한 IP 주소를 로그에 기록하는 방식입니다. 스크립트 수정이 익숙하지 않다면 그대로 사용하는 것을 권장합니다. 작성이 끝나면 실행 권한을 부여하고 실행합니다.

# chmod +x /home/calvin/ipblock.sh

# /home/calvin/ipblock.sh

5단계: psad 설정 파일 편집

이제 psad 설정 파일을 열어 편집합니다. 아래는 권장하는 변경 사항이며, psad 공식 문서를 참고해 추가 설정을 조정해도 좋습니다.

관리자 이메일 주소 설정:

EMAIL_ADDRESSES you@yourdomain.com;

서버 호스트명 설정:

HOSTNAME yourdomain.com;

서버에 네트워크 인터페이스가 하나뿐이라면 HOME_NET을 다음과 같이 설정합니다:

HOME_NET NOT_USED;

또한 위험 수준(danger level)을 조정하거나 특정 포트를 검사 대상에서 제외할 수도 있습니다. 예를 들어 UDP 80번과 8080번 포트를 무시하도록 하려면 다음과 같이 변경합니다:

IGNORE_PORTS udp/80, udp/8080;

파일을 저장하고 닫은 후 psad를 재시작합니다:

# /etc/init.d/psad restart

6단계: psad 모니터링 및 관리

모든 설정이 완료되었습니다. psad의 보고서를 확인하려면 다음 명령어를 실행합니다:

# psad -S

자동으로 차단된 IP 주소를 해제하려면 다음 명령어를 사용합니다:

# psad -F

마무리: 신중하게 사용하세요

psad는 매우 유연하고 강력한 도구입니다. 제대로 활용하면 서버 보안에 놀라운 효과를 발휘하지만, 잘못 사용하면 시스템 전체에 심각한 문제를 일으킬 수 있습니다. 따라서 psad를 운영 환경에 적용할 때는 항상 주의를 기울이시기 바랍니다.