Proibir automaticamente os IPs que solicitam certas páginas

1

Eu quero proibir os IPs que solicitam certas páginas e. g. example.com/weird.php e um que envia uma solicitação POST para example.com/weirder.php .

Pesquisei bastante e aprendi sobre vários iptables , mas parece que algumas são instruções para o CentOS. Eu também me preocupo em ser bloqueado. Então, estou procurando uma resposta um pouco detalhada e segura.

Eu uso o AWS EC2, Ubuntu e nginx.

    
por Dreaded semicolon 22.10.2016 / 07:04

1 resposta

1

Primeiro, tente isso em uma máquina à qual você tenha acesso físico.

Tabelas IP

Primeiro, vamos descobrir as regras das tabelas de IP para bloquear um endereço IP. Para instruções detalhadas, confira este guia Deixe cair todas as conexões de entrada de um determinado IP:

iptables -A INPUT -s A.B.C.D -j DROP

Depois disso, reinicie o iptables como regular. Experimente este comando para verificar se funciona bem para você, familiarize-se com a sintaxe e prossiga ainda mais.

Script Bash

Vamos criar um script Bash para bloquear um IP. Seria algo como isto (aviso: Você pode precisar jogar com permissões de usuário e sudo para fazê-lo funcionar). Crie um novo arquivo, digamos, blockip.sh.

#! /usr/bin/env bash
iptables -A INPUT -s  -d DROP
<other stuff you want to do when you block an IP>
<note: the IP address is in variable >

Execute chmod +x blockip.sh para tornar o script executável. Agora você pode executá-lo como /path/to/file/blockip.sh 1.2.3.4 .

Permissões do Sudo

Se o seu script precisar ter permissões de usuário raiz, você precisará configurar o sudo para fornecer acesso sem senha. Referindo-se a esta pergunta sobre estouro de pilha , execute sudo visudo e adicione a seguinte linha:

nobody ALL = NOPASSWD: /your/script

Salve o arquivo e saia. Como um aviso de segurança, certifique-se de que somente você possa modificar o arquivo de script, ou então, alguém pode potencialmente executar código prejudicial como usuário root, modificando o script.

Código PHP

Execute esta pequena joia de código sempre que quiser bloquear alguém.

exec("sudo /path/to/file/blockip.sh ".$_SERVER['REMOTE_ADDR']);

Conclusão

Primeiro, teste esse código em uma máquina à qual você tenha acesso físico. Além disso, esteja ciente de que vários usuários por trás de uma LAN compartilham o mesmo IP externo e o bloqueio de um deles resultaria no bloqueio de todos eles. Seja cuidadoso. Upvote se a resposta te ajudou.

    
por Rohitt Vashishtha 22.10.2016 / 10:20