Apache2 웹 서버에서 Fail2Ban으로 악의적인 해킹 시도 및 반복적인 행위에 대한 차단하기 - Whitmem
Apache2 웹 서버에서 Fail2Ban으로 악의적인 해킹 시도 및 반복적인 행위에 대한 차단하기
웹 개발
2025-05-24 23:58 게시 7c537d4e0fb166e18b1f

0
0
16
이 페이지는 외부 공간에 무단 복제할 수 없으며 오직 있는 그대로 게시되며 부정확한 내용을 포함할 수 있습니다. 법률이 허용하는 한 가이드 라인에 맞춰 게시 내용을 인용하거나 출처로 표기할 수 있습니다.
This page is not to be distributed to external services; it is provided as is and may contain inaccuracies.
인터넷 웹 서버를 운영하다보면 악성 접근이 많이 들어오는 걸 몸소 체험하고 느낄 수 있다. 물론 다양한 엑세스 차단 룰 때문에 실질적인 타격은 없겠지만 이러한 접근을 계속 허가할 필요는 전혀 없다. 해당 요청을 발생하는 아이피 주소는 안전하게 차단하는 것이 좋다. Apache2 기반의 웹 서버에서 악성 봇의 접근 및 악성 접근을 차단하는 방법에 대해 알아본다.
우선 이 게시글에서는 apache2 서버 기반의 엑세스 로그를 활용하여 차단 룰을 지정해볼 것이다. 차단 도구로는 fail2ban 이라는 소프트웨어를 사용할 것인데, 이 소프트웨어는 엑세스 로그를 기반으로 아이피를 차단하기 때문에 반드시 웹 서버가 apache2 일 필요는 없다. 다만 엑세스 로그의 정규식 내용은 달라질 수 있으므로 참고해야 한다.
fail2ban 을 설치하는 방법은 어렵지 않다. apt-get 으로 설치하면 된다.
아무튼 설치가 된 뒤에 /etc/fail2ban 경로에 가 보면 여러 설정들이 존재하는 것을 확인할 수 있다. 특히 이 중에 우리가 유심히 봐야할 것은, filter.d 디렉터리와 jail.d 이다. filter.d 는 필터 규칙을 정의하는 디렉터리고, jail.d 는 상기 필터 규칙을 바탕으로 실제 차단 규칙을 정의하는 디렉터리이다.
우선 filter.d 에 들어가보면 이미 미리 정의된 다양한 규칙들이 존재한다. apache2 에 사용할 수 있는 apache 기반의 규칙들이 미리 정의되어있는데, apache-badbots.conf 를 열어본다.
필터 내용을 보면 기본적으로 다양한 정규식이 정의되어있는 것을 볼 수 있다. 즉 apache2 에서 발생하는 엑세스로그 /var/log/apache2/access.log 에 사용할 수 있는 정규식들이 나열되어 있는 것이다.
아무튼 여기에 나열된 필터들을 Jail.d 에 차단 정도를 정해주면 되는 것이다. 이번에는 jail.d 에 들어가서 임의로 하나 conf를 만들어준다. 나는 편의상 filter.d 에 저장된apache-badbots 와 이름을 동일하게 했다.
[apache-badbots] enabled=true port = http, https filter = apache-badbots findtime = 600 maxretry = 10 bantime = 86400
안의 내용은 위와 같이 작성해주면 된다. port 는 감지 및 차단 대상 포트이고, filter 는 filter.d 내에서 어떤 필터 파일을 참조할 것인지 정의하는 것이다. 여기서 아까 나는 filter.d 안에 있는 apache-badbots 의 정규식 규칙을 따라 차단할 것이기 때문에 이 명칭으로 지정해준다.
그리고 findtime 은 감지 시간 범위, maxretry 는 상기 감지 시간 동안 몇 번 반복되는 경우 bantime 초 동안 차단할 것인지 정의한다고 보면된다.
참고로, logpath 를 직접 정의할 수 있는데, apache2 같은 경우 엑세스 로그가 /var/log/apache2/access.log 에 저장되기 때문에 이 파일을 읽어 위 정규식 위반(차단 감지)를 수행하라는 식으로 정의할 수 있다.
나는 임의로 access.log 를 참조하도록 하였다.
그리고 변경 사항을 반영하려면 fail2ban-client reload 명령을 치면 된다. 그러면 OK가 뜨는것을 확인할 수 있고, 감지 후 차단이 실행된다.
실제 차단됐는지 확인하기 위해서 fail2ban-client status <jail.d 명> 으로 차단 여부를 확인할 수 있다. Filter 의 개수가 올라가다가 지정한 maxretry 에 도달하면 Actions 에 차단된 아이피로 등록될 것이다.
댓글 0개
댓글을 작성하는 경우 댓글 처리 방침에 동의하는 것으로 간주됩니다. 댓글을 작성하면 일회용 인증키가 발급되며, 해당 키를 분실하는 경우 댓글을 제거할 수 없습니다. 댓글을 작성하면 사용자 IP가 영구적으로 기록 및 부분 공개됩니다.
확인
Whitmemit 개인 일지 블로그는 개인이 운영하는 정보 공유 공간으로 사용자의 민감한 개인 정보를 직접 요구하거나 요청하지 않습니다. 기본적인 사이트 방문시 처리되는 처리 정보에 대해서는 '사이트 처리 방침'을 참고하십시오. 추가적인 기능의 제공을 위하여 쿠키 정보를 사용하고 있습니다. Whitmemit 에서 처리하는 정보는 식별 용도로 사용되며 기타 글꼴 및 폰트 라이브러리에서 쿠키 정보를 사용할 수 있습니다.
이 자료는 모두 필수 자료로 간주되며, 사이트 이용을 하거나, 탐색하는 경우 동의로 간주합니다.