Este é um post popular. deprox Postado 21 de Março 2024 Este é um post popular. Compartilhar Postado 21 de Março 2024 (editado) Para visualizar isto você precisa fazer Entre ou Cadastre-se DDOS Simulado com a ferramenta:Unicorn is a Win32 UDP flooding/DoS (Denial of Service) Editado 21 de Março 2024 por deprox 31 1 2 3 1 4 Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento...
ventura Postado 10 de Novembro 2024 Compartilhar Postado 10 de Novembro 2024 Este script em Perl é uma implementação básica de um servidor que monitora e bloqueia IPs com base no número de conexões feitas a ele. A seguir, uma explicação detalhada de cada parte do código: Citar 1. Importação de módulos: use strict; use warnings; use POSIX ":sys_wait_h"; use Socket; use IO::Handle; strict e warnings: Impõem regras rigorosas de sintaxe e emitiram avisos para possíveis erros de programação. POSIX ":sys_wait_h": Importa funções de manipulação de processos e espera de status, embora não esteja sendo usado diretamente aqui. Socket: Módulo utilizado para manipulação de sockets TCP. IO::Handle: Fornece métodos para trabalhar com objetos de fluxo de entrada/saída (não utilizado explicitamente no código, mas geralmente presente quando você deseja usar funções como flush). 2. Configuração de variáveis: Citar my $limite_conexoes = 50; my $tempo_bloqueio = 4 * 3600; $limite_conexoes: Número máximo de conexões permitidas de um único IP (50 neste caso). $tempo_bloqueio: O tempo durante o qual o IP ficará bloqueado após ultrapassar o limite de conexões, configurado como 4 horas (4 * 3600 segundos). 3. Armazenamento das conexões: Citar my %conexoes_por_ip; %conexoes_por_ip: Um hash para armazenar o número de conexões feitas por cada IP. 4. Configuração de regras no iptables: Citar system("iptables -F"); system("iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT"); system("iptables -A INPUT -j DROP"); system("iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above $limite_conexoes -j REJECT --reject-with tcp-reset"); iptables -F: Limpa todas as regras do iptables anteriores. iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT: Aceita conexões de entrada que já estejam estabelecidas ou relacionadas a uma conexão existente. iptables -A INPUT -j DROP: Bloqueia todas as outras conexões de entrada. iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above $limite_conexoes -j REJECT --reject-with tcp-reset: Limita o número de conexões simultâneas de um único IP, rejeitando aquelas que excedem o limite definido. 5. Configuração do socket e aceitação de conexões: Citar my $socket; socket($socket, PF_INET, SOCK_STREAM, getprotobyname('tcp')) or die ": $!"; setsockopt($socket, SOL_SOCKET, SO_REUSEADDR, 1) or die ": $!"; my $endereco = sockaddr_in(0, INADDR_ANY); bind($socket, $endereco) or die ": $!"; listen($socket, SOMAXCONN) or die ": $!"; socket: Cria um novo socket TCP. setsockopt: Permite a reutilização de endereços e portas. bind: Associa o socket ao endereço e porta definidos (no caso, qualquer endereço INADDR_ANY e porta 0). listen: Coloca o socket em modo de escuta para aceitar conexões. 6. Loop para aceitar conexões: Citar while (1) { my $cliente = accept(NOVACONEXAO, $socket); my ($porta_cliente, $endereco_cliente) = sockaddr_in($cliente); my $ip_cliente = inet_ntoa($endereco_cliente); $conexoes_por_ip{$ip_cliente}++; if ($conexoes_por_ip{$ip_cliente} > $limite_conexoes) { bloquear_ip($ip_cliente); } print "Conexão de $ip_cliente na porta $porta_cliente aceita.\n"; close(NOVACONEXAO); } O script entra em um loop infinito onde fica aceitando conexões. accept: Aceita uma nova conexão do cliente. sockaddr_in e inet_ntoa: Obtêm a porta e o IP do cliente. $conexoes_por_ip{$ip_cliente}++: Incrementa o contador de conexões para o IP do cliente. Se o número de conexões do cliente ultrapassar o limite, o IP é bloqueado. 7. Função de bloqueio do IP: Citar sub bloquear_ip { my $ip = shift; open(my $ban_fh, '>>', $arquivo_ban) or die "Não foi possível abrir o arquivo $arquivo_ban: $!"; print $ban_fh "$ip\n"; close($ban_fh); system("iptables -A INPUT -s $ip -j DROP"); print "IP $ip bloqueado por $tempo_bloqueio segundos.\n"; sleep($tempo_bloqueio); system("iptables -D INPUT -s $ip -j DROP"); print "IP $ip desbloqueado.\n"; } open e print: Registra o IP bloqueado no arquivo ban.txt. system("iptables -A INPUT -s $ip -j DROP"): Adiciona uma regra ao iptables para bloquear o IP. sleep($tempo_bloqueio): Espera o tempo de bloqueio configurado (4 horas). system("iptables -D INPUT -s $ip -j DROP"): Remove a regra do iptables e desbloqueia o IP. Considerações: Este script age como um servidor simples, monitorando as conexões e bloqueando IPs que ultrapassam o limite de conexões definidas. O bloqueio é temporário (4 horas), após o qual o IP é desbloqueado. O arquivo ban.txt mantém um registro dos IPs bloqueados. Se você tiver alguma dúvida ou quiser fazer ajustes no código, é só avisar! Fonte : Chat GPT 1 Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
Participe da Conversa
Você pode postar agora e se cadastrar mais tarde. Cadastre-se Agora para publicar com Sua Conta.