무차별 SSH 공격을 방지하기 위해 iptables를 사용할 수 없습니다.

무차별 SSH 공격을 방지하기 위해 iptables를 사용할 수 없습니다.

내 SSHD 서버에 대한 무차별 대입 공격을 방지(느리게)하려고 합니다. 나는 이 가이드를 따르고 있다http://www.rackaid.com/resources/how-to-block-ssh-brute-force-attacks/이는 기본적으로 다음 2개의 명령만 입력하면 된다는 것을 의미합니다.

sudo iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
sudo iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent  --update --seconds 60 --hitcount 4 -j DROP

내 sshd 포트는 6622이므로 항목을 "22"에서 "6622"로 변경하고 다음 명령을 입력했습니다. 그런 다음 새로운 iptables를 간단히 테스트해 보았습니다. 다른 컴퓨터로 가서 고의로 잘못된 로그인 비밀번호를 여러 번 입력했습니다. 불행하게도, 새로운 규칙은 내가 할 수 있는 한 많은 것을 시도하는 것을 막지는 못하는 것 같습니다. 아래 목록은 현재 규칙입니다. 내가 뭘 잘못했나요?

# iptables --list

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  anywhere             anywhere             tcp dpt:6622 state NEW recent: UPDATE seconds: 60 hit_count: 4 name: DEFAULT side: source
           tcp  --  anywhere             anywhere             tcp dpt:6622 state NEW recent: SET name: DEFAULT side: source

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain LOGDROP (0 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             LOG level warning
DROP       all  --  anywhere             anywhere            

답변1

@banjer가 그의 의견에서 지적했듯이 실제 문제에 대해 잘못된 해결책을 시도하고 있습니다.

해야 할 일은 정해져 있다 실패 2 금지. 내부적으로 iptables를 사용하여 다양한 소스의 액세스 시도에 실패한 호스트의 연결 시도를 자동으로 차단합니다. 매우 다재다능하며 다양한 임계값, 모드를 추가하고 수정하여 방법을 찾고 금지할 수 있습니다. 사용 중인 비표준 포트를 설명하기 위해 기본 SSH 감옥을 약간 조정해야 하지만 어렵지는 않습니다. .

답변2

나는 속도를 늦추기 위해 다음과 같은 규칙을 사용합니다.

iptables -A DDoS -m limit --limit 12/s --limit-burst 24 -j RETURN
iptables -A DDoS -j LOG --log-prefix "[DDos Attack?] "
iptables -A DDoS -j DROP

다른 곳에서는 다음과 같이 제한합니다.

LOGLIMIT="50/h"
LOGLIMITBURST="10"
iptables -A IANA -p tcp -m limit --limit $LOGLIMIT --limit-burst \
     $LOGLIMITBURST -j DROP

답변3

매뉴얼 페이지를 읽어보셨나요?

남자 sshd_config:

 MaxAuthTries
         Specifies the maximum number of authentication attempts 
         permitted per connection.  Once the number of failures 
         reaches half this value, additional failures are logged. 
         The default is 6.
 MaxSessions
         Specifies the maximum number of open sessions permitted 
         per network connection.  The default is 10.
 MaxStartups
         Specifies the maximum number of concurrent unauthenticated
         connections to the SSH daemon.  Additional connections
         will be dropped until authentication succeeds or 
         the LoginGraceTime expires for a connection. The default is 10:30:100.

         Alternatively, random early drop can be enabled by specifying
         the three colon separated values “start:rate:full” (e.g.
         "10:30:60").  sshd(8) will refuse connection attempts with a
         probability of “rate/100” (30%) if there are currently “start”
         (10) unauthenticated connections.  The probability increases
         linearly and all connection attempts are refused if the 
         number of unauthenticated connections reaches “full” (60).

답변4

대부분의 튜토리얼에서는 -A규칙 세트 끝에 추가를 사용합니다. OP는 -I삽입용이지만 색인이 없으므로 규칙의 순서가 잘못됩니다.

iptables 규칙을 디버깅하는 데 유용한 도구는 iptables -vL규칙과 각 규칙이 적용된 횟수를 나열하는 것입니다. 예상치 못한 개수가 0인 경우 문제를 이해하는 데 도움이 될 수 있습니다.

관련 정보