Image

지식 기반 → Fail2Ban을 사용하여 악성 봇으로부터 웹 서버 보호

[가상 서버]
출판 날짜: 01.06.2023

매일 인터넷의 모든 사이트는 우리에게 중요한 사이트(예: Yandex, Google 등)부터 시작하여 잠재적으로 위험한 사이트까지 수많은 봇이 방문합니다. 웹 서버 로그를 분석한 후 의심스러운 이벤트를 확인할 수 있습니다. 현재 개발자나 관리자가 직접 방치한 소셜 엔지니어링(소프트웨어 자체를 해킹하는 것이 아니라 결함을 찾아내는 해킹)을 활용한 해킹 유형이 점점 늘어나고 있습니다. 오늘은 백업을 검색하고 phpmyadmin을 설치하는 봇을 차단하는 방법을 알려 드리겠습니다. 이러한 봇을 차단하기 위해 필터 및 규칙(감옥)인 Fail2Ban을 사용합니다. 이 작업은 Centos 7에서 수행되었습니다.


백업 검색 봇

봇은 아카이브로 남아 있는 백업 복사본을 검색하여 루트부터 다양한 일반 폴더까지 검색합니다. 발견되면 정보를 소유자에게 전송할 가능성이 높지만 복사본에는 사이트에 액세스할 수 있는 파일과 데이터베이스가 포함되어 있습니다. 이러한 복사본은 웹사이트를 한 서버에서 이동하거나 다른 서버로 호스팅한 후에 삭제되는 것을 잊어버리는 경우가 많습니다.

필터를 추가해보자

backup-scan.local

[Definition]

failregex = ^ - - .*./(backup.tgz|backup.zip|backup.tar) HTTP/1.0" 404|301 ignoreregex =

규칙을 추가해 보겠습니다:

[backup-scan]

enabled = true filter = backup-scan action = iptables-multiport[chain="INPUT", name="backup-scan", port="http,https", protocol="tcp", blocktype="REJECT --reject-with icmp-port-unreachable"] sendmail[dest="admin-mail@domain.tld", sender="fail2ban", sendername="Fail2Ban", name="backup-scan"] logpath = /var/www/vhosts/system/*/logs/accesslog

maxretry = 5

시도 횟수를 줄여 감도를 크게 높이고 웹 서비스의 부하를 줄일 수 있습니다. 사이트 소유자는 서버에서 보관된 백업을 모두 삭제하는 것이 좋습니다. 봇은 또한 도메인 이름 등이 포함된 아카이브를 찾습니다. 여기서는 기본 규칙을 제공합니다.


phpMyAdmin, 루트킷, 백도어 검색용 봇

이러한 봇은 취약점, 해킹 및 비밀번호 추측 공격을 추가로 검색하기 위해 설치된 phpMyAdmin을 검색합니다. phpMyAdmin 데이터베이스 작업 도구는 매우 널리 사용되며 설치된 버전 및 설정에 따라 정기적으로 해킹됩니다.

필터를 추가해 보겠습니다: 

phpmyadmin.local

[Definition]

failregex = ^ - - ../(phpmyadm1n|mysqladmin)/index.php ^ - - ../(pma.php|pmd_online.php|db_pma.php) HTTP/1.0" (404|301|200) ignoreregex =

필터에서 우리는 한 번에 2가지 조건을 지정했으며, 두 번째 조건은 이전에 해킹된 사이트에 공격자가 남긴 게시된 액세스 스크립트를 찾는 봇을 차단합니다. (루킷, 백도어)

규칙을 추가해 보겠습니다:

[phpmyadmin-scan]

enabled = true filter = phpmyadmin action = iptables-multiport[chain="INPUT", name="phpmyadmin", port="http,https", protocol="tcp", blocktype="REJECT --reject-with icmp-port-unreachable"] sendmail[dest="admin-mail@domain.tld", sender="fail2ban", sendername="Fail2Ban", name="phpmyadmin-scan"] logpath = /var/www/vhosts/system/*/logs/accesslog

maxretry = 5

설정에서 이메일을 자신의 이메일로 변경하는 것을 잊지 마세요. 차단에 대한 알림이 규칙과 IP 주소를 나타내는 이메일로 전송됩니다. 로그 파일의 경로도 확인하고 직접 지정해야 합니다. 우리의 경우 여러 로그 파일이 동일한 중첩 수준에 있지만 다른 폴더에 위치하여 처리됩니다. 필요한 경우 여러 로그 파일을 지정할 수 있습니다. phpMyAdmin으로 작업한 후에는 액세스할 수 없도록 읽기 권한을 제거하는 것이 좋습니다. 자주 사용하는 경우 htaccass 및 htpasswd의 비밀번호로 보호된 폴더를 사용하여 웹 서버 수준에서 보호를 추가할 수 있습니다.





No Comments Yet