>  기사  >  운영 및 유지보수  >  Apache 서버를 보호하기 위해 fall2ban을 구성하는 방법을 가르쳐주십시오.

Apache 서버를 보호하기 위해 fall2ban을 구성하는 방법을 가르쳐주십시오.

怪我咯
怪我咯원래의
2017-06-27 09:51:072395검색

이 글에서는 주로 Apache 서버를 보호하기 위한 설정 방법을 소개합니다. 주로 IP 주소를 필터링하는 효과가 있습니다. 예제는 Linux 시스템을 기반으로 합니다.

Apache 서버는 다음과 같습니다. 생산 환경은 다양한 공격의 영향을 받을 수 있습니다. 공격자는 무차별 대입 공격이나 악의적인 스크립트 실행을 통해 승인되지 않거나 금지된 디렉터리에 대한 액세스 권한을 얻으려고 시도할 수 있습니다. 일부 악성 크롤러는 웹사이트에서 다양한 보안 취약점을 검사하거나 이메일 주소 및 웹 양식을 수집하여 스팸을 보낼 수 있습니다.

아파치 서버는 다양한 공격에 반영되는 비정상적인 이벤트를 포착할 수 있는 포괄적인 로깅 기능을 갖추고 있습니다. 그러나 아직은 특정 Apache 로그를 체계적으로 구문 분석하고 잠재적인 공격(예: IP 주소 금지/금지 해제)에 신속하게 대응할 수 없습니다. 이때 Fail2ban은 이 모든 것을 저장하고 시스템 관리자의 작업을 자유롭게 할 수 있습니다.

fail2ban은 시스템 로그를 기반으로 다양한 도구를 감지하고 iptables를 통한 IP 금지, /etc/hosts.deny를 통한 연결 차단, 이메일을 통한 알림 전송 등의 보호 조치를 자동으로 취할 수 있는 침입 방지 도구입니다. fall2ban에는 특정 프로그램 로그 필터를 사용하여 일반적인 공격을 탐지하는 일련의 사전 정의된 "감옥"이 있습니다. 임의 프로그램의 공격을 탐지하기 위해 사용자 정의 규칙을 작성할 수도 있습니다.

이 튜토리얼에서는 Apache 서버를 보호하기 위해 Fail2ban을 구성하는 방법을 보여 드리겠습니다. 나는 당신이 이미 Apache와 Fail2ban을 설치했다고 가정합니다.
Fail2ban Jail이란 무엇인가요?
Fail2ban Jail에 대해 좀 더 자세히 살펴보겠습니다. 감옥은 특정 프로그램에 대한 보호 조치를 실행하는 특정 응용 프로그램 정책을 정의합니다. fall2ban에는 Apache, Dovecot, Lighttpd, MySQL, Postfix, SSH 등과 같은 일부 인기 있는 프로그램에 대해 /etc/fail2ban/jail.conf 아래에 사전 정의된 감옥이 있습니다. 각 감옥은 특정 프로그램 로그 필터(/etc/fail2ban/filter.d 아래)를 통해 일반적인 공격을 탐지합니다. 감옥의 예를 살펴보겠습니다: SSH 감옥.

코드는 다음과 같습니다.

[ssh]
    enabled   = true
    port      = ssh
    filter    = sshd
    logpath   = /var/log/auth.log
    maxretry  = 6
    banaction = iptables-multiport

SSH 감옥의 구성은 다음 매개변수를 정의합니다.

[ssh]: 감옥의 이름은 대괄호 안에 있습니다.
활성화됨: 감옥 활성화 여부
포트: 포트 번호(또는 해당 서비스 이름)
필터: 공격 탐지를 위한 로그 구문 분석 규칙
로그 경로: 감지된 로그 파일
maxretry: 최대 실패 횟수
금지: 금지된 작업 수행

Any 감옥 구성에 정의된 매개변수는 fall2ban-wide의 해당 기본 구성 매개변수를 재정의합니다. 대신 누락된 매개변수는 [DEFAULT] 필드에 정의된 기본값을 사용합니다.

미리 정의된 로그 필터는 /etc/fail2ban/filter.d에 배치되고, 취할 수 있는 금지 조치는 /etc/fail2ban/action.d에 배치됩니다.

201561195702833.jpg (769×644)

fail2ban의 기본 동작을 무시하거나 사용자 정의 감옥을 정의하려면 /etc/fail2ban/jail.local* 파일을 만들 수 있습니다. 이 튜토리얼에서는 /etc/fail2ban/jail.local을 사용하겠습니다.
사전 정의된 Apache Jail 활성화

fail2ban의 기본 설치는 Apache 서비스에 대한 사전 정의된 Jail과 필터를 제공합니다. 내장된 Apache Jail을 활성화하고 싶습니다. Debian과 RedHat은 구성이 약간 다르기 때문에 구성 파일을 별도로 제공하겠습니다.
Debian 또는 Ubuntu에서 Apache Jail 활성화

Debian 기반 시스템에서 사전 정의된 Apache Jail을 활성화하려면 다음과 같이 /etc/fail2ban/jail.local을 생성합니다.

  $ sudo vi /etc/fail2ban/jail.local

코드는 다음과 같습니다.

# 检测密码认证失败
    [apache]
    enabled  = true
    port     = http,https
    filter   = apache-auth
    logpath  = /var/log/apache*/*error.log
    maxretry = 6
    # 检测漏洞和 PHP 脆弱性扫描 
    [apache-noscript]
    enabled  = true
    port     = http,https
    filter   = apache-noscript
    logpath  = /var/log/apache*/*error.log
    maxretry = 6
    # 检测 Apache 溢出攻击 
    [apache-overflows]
    enabled  = true
    port     = http,https
    filter   = apache-overflows
    logpath  = /var/log/apache*/*error.log
    maxretry = 2
    # 检测在服务器寻找主目录的尝试
    [apache-nohome]
    enabled  = true
    port     = http,https
    filter   = apache-nohome
    logpath  = /var/log/apache*/*error.log
    maxretry = 2

위 교도소에는 지정된 조치가 없으므로 이러한 교도소에서는 기본 조치가 실행됩니다. 기본 동작을 보려면 /etc/fail2ban/jail.conf의 [DEFAULT]에서 "banaction"을 찾으세요.

코드는 다음과 같습니다.

banaction = iptables-multiport

이 예에서 기본 작업은 iptables-multiport(/etc/fail2ban/action.d/iptables-multiport.conf에 정의됨)입니다. 이 조치는 iptable의 다중 포트 모듈을 사용하여 IP 주소를 금지합니다.

감옥을 활성화한 후, 감옥을 로드하려면 Fail2ban을 다시 시작해야 합니다.

  $ sudo service fail2ban restart

CentOS/RHEL 또는 Fedora에서 Apache Jail 활성화

Red Hat 기반 시스템에서 사전 정의된 Jail을 활성화하려면 다음과 같이 /etc/fail2ban/jail.local을 생성하세요.

  $ sudo vi /etc/fail2ban/jail.local

코드는 다음과 같습니다:

# 检测密码认证失败
    [apache]
    enabled  = true
    port     = http,https
    filter   = apache-auth
    logpath  = /var/log/httpd/*error_log
    maxretry = 6
    # 检测抓取邮件地址的爬虫
    [apache-badbots]
    enabled  = true
    port     = http,https
    filter   = apache-badbots
    logpath  = /var/log/httpd/*access_log
    bantime  = 172800
    maxretry = 1
    # 检测漏洞和 PHP 脆弱性扫描 
    [apache-noscript]
    enabled  = true
    port     = http,https
    filter   = apache-noscript
    logpath  = /var/log/httpd/*error_log
    maxretry = 6
    # 检测 Apache 溢出攻击 
    [apache-overflows]
    enabled  = true
    port     = http,https
    filter   = apache-overflows
    logpath  = /var/log/httpd/*error_log
    maxretry = 2
    # 检测在服务器寻找主目录的尝试
    [apache-nohome]
    enabled  = true
    port     = http,https
    filter   = apache-nohome
    logpath  = /var/log/httpd/*error_log
    maxretry = 2
    # 检测执行不存在的脚本的企图
    # 这些都是流行的网站服务程序
    # 如:webmail, phpMyAdmin,WordPress
    port     = http,https
    filter   = apache-botsearch
    logpath  = /var/log/httpd/*error_log
    maxretry = 2

이러한 감옥 파일의 기본 작업은 iptables-multiport(/etc/fail2ban/jail.conf의 [DEFAULT] 필드 아래 "banaction"에 정의됨)입니다. 이 조치는 iptable의 다중 포트 모듈을 사용하여 IP 주소를 금지합니다.

감옥을 활성화한 후, 감옥을 로드하려면 Fail2ban을 다시 시작해야 합니다.

Fedora 또는 CentOS/RHEL 7:

  $ sudo systemctl restart fail2ban

CentOS/RHEL 6:

  $ sudo service fail2ban restart

FAIL2BAN 금지 상태 확인 및 관리

감옥이 활성화되면 FAIL2BA 클라이언트 명령줄 도구를 사용할 수 있습니다. 금지 상태.

활성 감옥 목록 보기:

  $ sudo fail2ban-client status

특정 감옥 상태 보기(금지된 IP 목록 포함):

  $ sudo fail2ban-client status [监狱名]

201561195749494.jpg (800×298)

    你也可以手动禁止或者解禁IP地址:

要用制定监狱禁止IP:

  $ sudo fail2ban-client set [name-of-jail] banip [ip-address]

要解禁指定监狱屏蔽的IP:

  $ sudo fail2ban-client set [name-of-jail] unbanip [ip-address]

总结

本篇教程解释了fail2ban监狱如何工作以及如何使用内置的监狱来保护Apache服务器。依赖于你的环境以及要保护的web服务器类型,你或许要调整已有的监狱或者编写自定义监狱和日志过滤器。查看outfail2ban的官方Github页面来获取最新的监狱和过滤器示例。

위 내용은 Apache 서버를 보호하기 위해 fall2ban을 구성하는 방법을 가르쳐주십시오.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.