Fail2Ban : 이미 금지되어 있습니까?


17

Centos 서버에서 Fail2Ban을 실행하고 있습니다. (아래 구성)

var / log / messages에서 정말 이상한 것을 발견했습니다.

Jun 19 12:09:32 localhost fail2ban.actions: INFO   [postfix] 114.43.245.205 already banned

금지 된 IP를 iptables에 추가하도록 Fail2Ban을 구성했습니다.

내 jail.conf :

[postfix]

enabled  = true
filter   = postfix
action   = iptables
port     = smtp,ssmtp
filter   = postfix
logpath  = /var/log/maillog
bantime  = 43200
maxretry = 2

내 postfix.conf :

[INCLUDES]

before = common.conf

[Definition]
failregex = reject: RCPT from (.*)\[<HOST>\]: 550 5.1.1
            reject: RCPT from (.*)\[<HOST>\]: 450 4.7.1
            reject: RCPT from (.*)\[<HOST>\]: 554 5.7.1
            reject: RCPT from (.*)\[<HOST>\]: (.*)@yahoo.com.tw
ignoreregex =

내 질문은 이미 차단 된 사람이 어떻게 iptables서버 에 계속 연결할 수 있습니까?


iptables -L -nv질문에 대한 결과를 추가 할 수 있습니까?
Ladadadada 2016 년

답변:


14

다른 답변에서 권장되는 우두머리 감옥은 나에게 문제를 해결하지 못했습니다. 그러나 결국이 문제를 해결 했으므로 다른 사람들을 돕기 위해 내 방법이 있습니다.

Fail2ban은 기본적으로 TCP를 차단합니다. 적어도 설정에서 봇이 UDP를 통해 차단 된 포트를 시도하기 위해 돌아 왔을 때 "이미 금지됨"메시지가 나타났습니다.

이 문제를 해결하려면 Fail2ban에 TCP 대신 모든 프로토콜을 통한 포트를 차단하도록 지시하십시오. 당신은이 변화를 확인해야합니다 /etc/fail2ban/jail.conf 과의 [초기화] 섹션에 당신이에서 사용하는 모든 행동의 /etc/fail2ban/action.d/을 .

이것을 변경하십시오 :

# Default protocol
protocol = tcp

에:

# Default protocol
protocol = all

다음으로 ICMP 에코 요청을 비활성화하여 차단 된 IP가 서버에 도달 할 수있는 방법이 없었습니다.

  1. 나노 /etc/sysctl.conf
  2. 다음 두 줄을 추가하십시오.

    net.ipv4.icmp_echo_ignore_all = 1  
    net.ipv4.icmp_echo_ignore_broadcasts = 1
    
  3. 파일을 종료하고 저장하십시오.
  4. 변경 사항을 적용하려면 sysctl -p 를 실행하십시오 .

그런 다음 fail2ban-client reload를 실행 하면 차단이 적용되기 전에 몇 번의 액세스 시도를받는 IP에 의해 스팸이 아닌 한 이러한 "이미 금지 된"메시지가 더 이상 표시되지 않습니다.

또한 각 교도소에서 iptables-allports 조치를 사용하여 액세스하려는 포트가 아닌 모든 위반자에 대해 모든 포트를 차단하는 것이 중요합니다. 그렇지 않으면 다른 교도소를 촉발하여 로그에 "이미 금지"된 상태가 될 수 있습니다.


3
나를 위해 그것은 매우 명확하지 않습니다 ... 내 /etc/fail2ban/jail.local필터에는 action = iptables-multiport[name=apache-myadmin, port="http,https", protocol=tcp]있고 그렇지 않은 필터는 모두 변경해야합니까? 무언가를 바꿔야 /etc/fail2ban/filter.d합니까?
NineCattoRules

1
죄송하지만 protocol = all이 작동하지 않아 오류가 발생했습니다!
Patrik Laszlo

1
"iptables v1.6.2 : 멀티 포트 요구 -p tcp', -p udp ', -p udplite', -p sctp'또는`-p dccp '
Patrik Laszlo

문제는 저에게 문제는 금지가 작동하고 있었지만 공격자가 지속적인 연결을 사용하고 있었기 때문에 여전히 연결이 끊어졌고 새로운 연결이 없었기 때문에 금지가 유효하지 않은 것입니다. 메일 서버를 다시 시작하는 중
Patrik Laszlo

3

당신의 출력을 보면 iptables-save, 당신은 볼 것이다 fail2ban그들은 예를 들어, 필터에 의해 정의 된 규칙에 따라 패킷을 평가하기 때문에 체인이 설정은 다음과 같습니다

:fail2ban-ssh - [0:0]
-A INPUT -p tcp -A INPUT -p tcp -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A fail2ban-ssh -j RETURN

다른 라우팅 규칙이 적용되고 트래픽이 거부되기 전에 트래픽은 여전히 ​​서버에 도달합니다 . fail2ban이 초기 트래픽이 계속 표시되므로 "이미 금지 된"메시지가 표시됩니다. 또한, 재범을위한 특별한 필터 ( /etc/fail2ban/filter.d/recidive.conf)가 있습니다 :

# Fail2Ban filter for repeat bans
#
# This filter monitors the fail2ban log file, and enables you to add long
# time bans for ip addresses that get banned by fail2ban multiple times.
#
# Reasons to use this: block very persistent attackers for a longer time,
# stop receiving email notifications about the same attacker over and
# over again.
#
# This jail is only useful if you set the 'findtime' and 'bantime' parameters
# in jail.conf to a higher value than the other jails. Also, this jail has its
# drawbacks, namely in that it works only with iptables, or if you use a
# different blocking mechanism for this jail versus others (e.g. hostsdeny
# for most jails, and shorewall for this one).

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf

[Definition]

_daemon = fail2ban\.server\.actions

# The name of the jail that this filter is used for. In jail.conf, name the
# jail using this filter 'recidive', or change this line!
_jailname = recidive

failregex = ^(%(__prefix_line)s| %(_daemon)s%(__pid_re)s?:\s+)WARNING\s+\[(?!%(_jailname)s\])(?:.*)\]\s+Ban\s+<HOST>\s*$

[Init]

journalmatch = _SYSTEMD_UNIT=fail2ban.service PRIORITY=4

# Author: Tom Hendrikx, modifications by Amir Caspi

1

차단 하려는 IP 주소가 실제로 서버에 연결하는 클라이언트의 IP 주소 가 아닌 경우에 발생 합니다. 예를 들어 서버가로드 밸런서 또는 프록시 뒤에있는 경우

최근에 이것을 알아내는 데 꽤 오랜 시간이 걸렸습니다. 빨간 청어는 로그가 X-Forwarded-For실제 소스 주소 대신 IP 주소 를 캡처하도록 구성되었다는 것입니다. 필자의 경우로드 밸런서였습니다.

이 경우 fail2ban은 많은 도움이되지 않습니다. 문제가되는 IP를 금지하면 모든 트래픽이 차단 됩니다 .


어떤 대체 행동을 했습니까?
Hassan Baig

@HassanBaig-없음 Fail2ban이로드 밸런서 또는 리버스 프록시 뒤에서 작동하는 경우 아무 작업도 수행 할 수 없습니다.
데일 앤더슨

그렇다면 애플리케이션 계층에서 발생 하는 Distributed DoS 에 대해 어떤 조치를 취 하시겠습니까 (예 : HTTP GET 플러드)?
Hassan Baig

1
@HassanBaig 호스팅 제공 업체에 문의하십시오. 시스템에서 동일한 문제가 발생한 유일한 사람은 아닙니다.
데일 앤더슨

0

"이미 금지 된"메시지로 내 문제와 해결책을 제시하고 싶습니다. 당신이 쓴 것처럼 공격자는 이미 금지되어 있어야했지만 몇 분 안에 수백 가지를 가지고있었습니다.

시작하기 전에 여기 내 시스템이 있습니다.

  • 플레 스크 12
  • 센 토스 7
  • Plesk-Module 설치, 운영 및 구성 fail2ban

루트 서버에 OpenVPN을 설치할 때 방화벽을 iptables로 전환했습니다. 그로 인해이 문제가 발생했을 수도 있지만 내 시스템은 대부분 손대지 않고 새로 설치되었습니다 (Strato rootserver는 설치 이미지를 제안했습니다).

이 문제가 발생하면 /etc/fail2ban/jail.d/00-firewalld.conf 에서 다음과 같은 줄을 확인하십시오 .

banaction = firewallcmd-ipset

내가 의견을 말하고 파일을 저장하고 다시 시작했을 때, fail2ban.servicefail2ban으로 모든 것이 잘되었습니다. 더 이상 메시지가 없습니다

나는 전문가가 아니지만 올바른 답변을 제공하기를 희망합니다. 그것이 당신을 위해 작동하는 경우, 알려주세요!


0

내 질문은 iptables에서 이미 차단 된 사람이 어떻게 서버에 계속 연결할 수 있습니까?

한 번만 서버에 연결했지만 한 번의 연결로 여러 개의 전자 메일을 존재하지 않는 사서함 (info@domain.com, sales@domain.com, tech@domain.com 등)으로 배달하려고했습니다.

X가 시도한 후 IP가 금지되도록 이러한 시도를 금지하도록 postfix 필터를 구성했습니다. 클라이언트가 이미 postfix에서 연결이 끊어졌을 수 있지만 postfix가 모든 이메일 처리를 완료하지 않았을 수 있으므로 fail2ban은 postfix가 메일을 처리 할 때 동일한 클라이언트에서 다른 시도를 감지하여 이미 금지 된 메시지 주소를 얻습니다. 접미사 대기열이 작동하는 방식 때문입니다.


0

내 질문은 iptables에서 이미 차단 된 사람이 어떻게 서버에 계속 연결할 수 있습니까?

놀라운 좋은 질문입니다. 방화벽 규칙이 작동하지 않는지 검색했지만 iptables --list-rulesfail2ban이 작동하는 다른 프로덕션 서버와 정확히 일치합니다.

개발 포트를 통해 여전히 로그인 페이지에 액세스하고 있기 때문에 문제 해결 솔루션은 포트 8080을 차단 된 포트에 추가하는 것이 었습니다.

내 상황의 수정은이 문제가 내 것에 대한 아주 간단한 적응이라는 것입니다 jail.local.

[JIRA-LOGIN-tcp]
  enabled = true
  port = http,https,8080
  protocol = tcp
  filter = JIRA-LOGIN-ERROR
  logpath = /var/atlassian/application-data/jira/log/atlassian-jira-security.log
  bantime = 600
  maxretry = 1

0

참조 /unix//a/525798/22315를

"port ="행에서 포트 587이 누락되었을 수 있으며 postfix 구성 파일을 확인하거나 "lsof -i : 587"을 수행하여 postfix가 해당 포트를 열도록 구성된 경우 직접 확인할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.