iptables: 해당 이름으로 체인/대상/일치 없음 - SSH 공격 규칙 추가

iptables: 해당 이름으로 체인/대상/일치 없음 - SSH 공격 규칙 추가

무차별 SSH 공격에 대한 규칙을 추가하는 데 문제가 있습니다. 나는 다음을 통해 이 작업을 수행하려고 합니다.

iptables -F
iptables -L
iptables -N SSHATTACK
iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7
iptables -A SSHATTACK -j DROP
#Block each IP address for 120 seconds which establishe more than three connections within 120 seconds. In case of the forth connection attempt, the request gets delegated to the SSHATTACK chain, which is responsible for logging the possible ssh attack and finally drops the request.
iptables -A INPUT -i venet0 -p tcp -m state --dport 22 --state NEW -m recent --set
iptables -A INPUT -i venet0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK

하지만 다음 두 줄에 문제가 있습니다.

iptables -A INPUT -i venet0 -p tcp -m state --dport 22 --state NEW -m recent --set
iptables -A INPUT -i venet0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK

이 명령 이후의 출력은 다음과 같습니다.

iptables: No chain/target/match by that name.

iptables -L다음과 같은 출력을 제공합니다.

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain SSHATTACK (0 references)
target     prot opt source               destination
LOG        all  --  anywhere             anywhere            LOG level debug prefix `Possible SSH attack! '
DROP       all  --  anywhere             anywhere

그리고 iptables -S다음을 제공합니다:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N SSHATTACK
-A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7
-A SSHATTACK -j DROP

ip add주어진 경우("?"로 IP 주소를 숨겼습니다):

1 lo LOOPBACK,UP,LOWER_UP mtu 65536 qdisc noqueue state UNKNOWN
    linkloopback 000000000000 brd 000000000000
    inet 127.0.0.18 scope host lo
    inet6 1128 scope host
       valid_lft forever preferred_lft forever
2 venet0 BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP mtu 1500 qdisc noqueue state UNKNOWN
    linkvoid
    inet 127.0.0.132 scope host venet0
    inet ?.?.?.24820 brd ?.?.?.255 scope global venet00

이 규칙을 추가하려면 어떻게 해야 합니까? 내가 무엇을 놓치고 있나요?

답변1

이것은 오래된 스레드이지만 누군가 여기에 오면 도움이 될 수 있습니다(나를 위해 해결되었습니다).

문제는 커널 드라이버가 없다는 것입니다. 추가한 후

CONFIG_NETFILTER_XT_MATCH_RECENT=y

커널 구성을 수정하고 다시 컴파일하면 문제가 해결됩니다. 모듈(=m)로 추가하고 런타임에 insmod할 수도 있습니다.

행운을 빌어요!

답변2

매개 변수가 일치 --dport의 일부가 아닙니다 . state노력하다:

iptables -A INPUT -i venet0 -p tcp --dport 22 -m state --state NEW -m recent --set

답변3

내가 무엇을 놓치고 있나요?

자신의 규칙 세트의 복잡성을 줄이고 이와 같은 기능을 통해 fail2ban규칙 세트를 관리할 수 있습니다. 가까운 CentOS 7 패키지 저장소나 CentOS 6의 EPEL을 통해 사용할 수 있습니다.

Fail2ban은 공격 차단 규칙을 확립했으며 ssh몇 가지 튜토리얼을 제공합니다.여기또는여기.

관련 정보