2015-01-07 2 views
-1

fail2ban을 사용하여 내 서버의 로그인 시도를 차단했습니다. 이 블록은 다음과 같은 구성의 IP 테이블을 사용하여 수행됩니다.방화벽 규칙 처리 처리

actionstart = iptables -N fail2ban 
       iptables -A fail2ban -j RETURN 
       iptables -I <chain> -p tcp -m multiport --dports <port> -j fail2ban 

actionstop = iptables -D <chain> -p tcp -m multiport --dports <port> -j fail2ban 
      iptables -F fail2ban 
      iptables -X fail2ban 

actionban = iptables -I fail2ban 1 -s <ip> -j DROP 
actionunban = iptables -D fail2ban -s <ip> -j DROP 

필자는 규칙 처리 성능에 대해 우려하고 있습니다. 위의 규칙은 상태 저장 모드이며 상태 비 저장 모드로 처리하는 것이 더 빠를 지 궁금해했습니다. 일을 분명히하기 위해 TCP 포트 (예 : 22 또는 25)에서 침입자 IP 주소를 차단하고 있습니다.

나는 TCP 연결 specialy에 대해 ESTABLISHED, RELATED 상태를 추가하는 것이 더 좋을 것이라고 읽었습니다. 그러나 각 IP는 다른 연결을 나타 내기 때문에 이러한 상태를 적용하는 것이 합리적입니까?

는 UPDATE :

여기

은 샘플 iptables -L입니다 : 많은 성능 변명은, iptables에 상당한 오버 헤드를 가질 수 있습니다 주장 무엇에도 불구하고

Chain INPUT (policy ACCEPT 399 packets, 36043 bytes) 
pkts bytes target  prot opt in  out  source    destination   
    39 4230 fail2ban tcp -- *  *  0.0.0.0/0   0.0.0.0/0   multiport dports 22,25,80,99,100,101 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) 
pkts bytes target  prot opt in  out  source    destination   

Chain OUTPUT (policy ACCEPT 282 packets, 39686 bytes) 
pkts bytes target  prot opt in  out  source    destination   

Chain fail2ban (1 references) 
pkts bytes target  prot opt in  out  source    destination   
    0  0 DROP  all -- *  *  192.168.0.1  0.0.0.0/0 
    0  0 DROP  all -- *  *  192.168.0.2  0.0.0.0/0 
    0  0 DROP  all -- *  *  192.168.0.3  0.0.0.0/0 
    0  0 DROP  all -- *  *  192.168.0.4  0.0.0.0/0   
    39 4230 RETURN  all -- *  *  0.0.0.0/0   0.0.0.0/0    

답변

-1

,하지만 당신은 몇 가지 상당한 트래픽을 얻을 때까지 눈에 띄지 않을 것입니다. 이제 어떻게 테이블을 만들고 어떤 확장을 호출하면 패킷 당 CPU 오버 헤드의 요소를 결정할 것입니다.

스테이트리스와 스테이트 풀의 경우, 성능의 차이는 엄청납니다 만, 역시 매우 높은 처리량입니다. 또한 읽었을 지 모르지만 상태 비 저장 방화벽을 관리하는 것이 훨씬 더 복잡합니다. IPtable 영향이 측정 가능한 경우에만 실제로 수행되어야합니다.

그러나 항상 복잡한 작업을 추가하지 않고도 최소한의 오버 헤드가 포함 된 IMO를 따라야합니다.

이제 상황에 따라 fail2ban은 전체 iptables 세그먼트 만 고려하고 있지만 예방 차원에서 살펴 보는 것이 좋습니다. 이렇게하면 규칙의 단단한 감소를 만들 것입니다 경우를 제외하고 더 많은 오버 헤드를 가지고 않는 멀티 확장자를 사용

-p tcp -m multiport --dports

. 당신은이 일을하고 있기 때문에 당신이 23과 24

-p tcp -m tcp --dport 22:25

을 차단 걱정하지 않는 경우에, 나는 더 나은 아직 범위로 단 하나를 개별적으로 나열합니다 멀티 포트 확장을 방지하기 위해 ... 또는 설정된 추적에 관해서는, 몇 가지 고려 사항이 있지만 fail2ban과 함께 사용할 수 있습니다. 가장 큰 영향을 미치기 위해, 당신은 관련이있는 아래에 fail2ban 체인을두기를 원할 것입니다. 그러나 이것은 이미 설정된 연결을 허용합니다. 이미 인증 된 사용자가 필요하다고 생각하면 충분히 합리적인 것처럼 보입니다.

이, 내 서버에 사용하는 테이블의 미니 예입니다 몇 가지 예를 들어, 규칙, 내가 당신을 위해 댓글을 달았습니다, 나는 것 밖으로 단지 빈 작업 시작 및 동작 정지

*raw 
:PREROUTING ACCEPT [0:0] 
:OUTPUT ACCEPT [0:0] 

## Stateless on Loopback 
## Remove everything before #filter if iptables chokes on #raw 
-A OUTPUT -o lo -j NOTRACK 

COMMIT 


*filter 
## Default Chains 
:INPUT ACCEPT [0:0] 
:FORWARD DROP [0:0] 
:OUTPUT ACCEPT [0:0] 

## Proto Chains 
:FWINPUT-TCP - [0:0] 
:FWINPUT-UDP - [0:0] 
:FWINPUT-ICMP - [0:0] 

## FAIL2BAN Chain 
:fail2ban - [0:0] 

## Accept Established 
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 

## Accept Loopback 
-A INPUT -i lo -j ACCEPT 

## Seperate Proto 
-A INPUT -p tcp -g FWINPUT-TCP 
-A INPUT -p udp -g FWINPUT-UDP 
-A INPUT -p icmp -g FWINPUT-ICMP 

## Reject Anything Non-TCP/UDP/ICMP 
-A INPUT -j REJECT --reject-with icmp-proto-unreachable 



## TCP Rules 
-A FWINPUT-TCP -p tcp -m tcp --dport 80 -j ACCEPT 
-A FWINPUT-TCP -p tcp -m tcp --dport 443 -j ACCEPT 

## fail2ban Check 
-A FWINPUT-TCP -p tcp -m tcp --dport 22:25 -g fail2ban 
## fail2ban Return 

-A FWINPUT-TCP -p tcp -m tcp --dport 22 -j ACCEPT 
-A FWINPUT-TCP -p tcp -m tcp --dport 25 -j ACCEPT 

## TCP-Reset Ident 
-A FWINPUT-TCP -p tcp -m tcp --dport 113 -j REJECT --reject-with tcp-reset 

## Reject Any Other TCP Traffic 
-A FWINPUT-TCP -j REJECT --reject-with icmp-port-unreachable 


## UDP Rules 
-A FWINPUT-UDP -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT 

## Reject Any Other UDP Traffic 
-A FWINPUT-UDP -j REJECT --reject-with icmp-port-unreachable 


## ICMP Rules 
-A FWINPUT-ICMP -p icmp -m icmp --icmp-type 8 -m limit --limit 5/s -j ACCEPT 
-A FWINPUT-ICMP -p icmp -m icmp --icmp-type 3 -j ACCEPT 
-A FWINPUT-ICMP -p icmp -m icmp --icmp-type 4 -j ACCEPT 
-A FWINPUT-ICMP -p icmp -m icmp --icmp-type 11 -j ACCEPT 
-A FWINPUT-ICMP -p icmp -m icmp --icmp-type 12 -j ACCEPT 

## Reject Any Other ICMP Types 
-A FWINPUT-ICMP -j REJECT --reject-with icmp-host-prohibited 

## fail2ban Inserted Rules 
-A fail2ban -j RETURN 

COMMIT 

및하자 fail2ban은 실행 중 차단 된 IP 규칙을 추가하기 만하면됩니다. 이것은 더 많은 수작업을 막기 위해 fail2ban을 사용하기를 원했던 것처럼 더 수동적 인 고려 사항을 집어 넣을 것입니다. 그러나 그것이 작동하려고하는 일련의 유형이라면 문제가되어서는 안됩니다.

... 서버가 아닌 제 집 시스템에서, 저는 보통 iptables 제한을 설정하고 충분하다고 말합니다.

+0

업데이트 확인 – Jay