As regras do
IPtables podem ser ajustadas para alcançar o que você está tentando alcançar.
Suposição: Seu linux embutido tem o módulo netfilter compilado e desde que você conheça o conceito de firewall e você usou o iptables antes. acesso root é assumido. Se você é capaz de sudo, adicione sudo em frente dos comandos.
iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
A sintaxe não tem vebosidade desejada, mas a linha instrui o iptables da polícia de firewall que você deseja anexar uma regra na cadeia INPUT existente. O argumento -p tcp indica que esta regra será aplicada somente aos pacotes TCP. A maior parte do restante dos argumentos se baseia na opção -m, que significa correspondência e informa ao iptables que a regra se aplica a pacotes que correspondem aos atributos específicos que estamos procurando. Aqui, a regra será aplicada aos pacotes que sinalizam o início de novas conexões para a porta TCP 22. Se um pacote corresponder a esses atributos, o iptables anotará o endereço do host remoto em uma lista temporária.
iptables -N LOG_AND_DROP
A regra acima executará uma ação usando uma cadeia diferente e, para anexá-la, primeiro criaremos a cadeia que fizemos (por exemplo, LOG_AND_DROP)
iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 20 --hitcount 4 --name DEFAULT --rsource -j LOG_AND_DROP
Esta regra diz ao iptables para procurar por pacotes que correspondam aos parâmetros da regra anterior, e que também vêm de hosts já adicionados à lista de observação. Se o iptables vir um pacote proveniente de tal host, ele atualizará o timestamp “last seen” para aquele host. Os argumentos --seconds 20 e --hitcount 4 são usados para restringir ainda mais os hosts que queremos bloquear - se um host tentar se conectar quatro ou mais vezes em sessenta segundos, ele corresponderá a essa parte da regra e nós saltaremos (-j ) para a cadeia LOG_AND_DROP.
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
Tecnicamente falando, essa regra não é necessária com a cadeia INPUT, pois o padrão é definido como política ACCEPT para todos os pacotes não correspondidos. À prova de falhas se você criar um firewall restritivo, por exemplo rejeição padrão.
Anexar depois de obter feedback de @singh. Eu não percebi estado foi expulso em favor de mais techie conntrack (connectiontracking) módulo
Em vez de, por exemplo:
-m state --state RELATED
-m conntrack --ctstate RELATED