Fail2ban é usado para bloquear usuários em certos padrões via reject
comando. Às vezes, especialmente quando os usuários estão atrás de um NAT com muitos usuários, eles são bloqueados involuntariamente. O usuário então escreve um E-Mail e então eu peço que seu endereço IP seja desbloqueado (muitas vezes o E-mail é encaminhado para mim, então eu não tenho o cabeçalho do Mail com seu endereço IP).
Para facilitar esta etapa, gostaria de redirecioná-lo para uma página dinâmica especial que exibe seu endereço IP e entre em contato por e-mail. Um exemplo está aqui:
Eu gostaria de ter uma página semelhante. Uma solução fácil seria o php, mas isso requer a instalação do php e alguma configuração do servidor web. A solução mais simples seria um pequeno servidor web que serve apenas um pequeno texto para um endereço IP.
Eu considerei usar python, porque o Python já está instalado. Encontrei este artigo https://www.anycodings.com/1questions/2464569/how-do-i-get-the-client-ip-address-on-a-python-server mas que imprime o endereço IP apenas em stdout e serve arquivos.
Para usar python tão simples quanto com php, seria necessário Flask ou Django, tanto quanto eu descobri. No entanto, esses são frameworks grandes e muito superdimensionados para este caso de uso simples. Também eles provavelmente podem significar algum problema de segurança. Esta página de informações também deve ser segura por design, para não criar possíveis problemas de segurança em comparação com o reject
método. Eu sei que o DOS é mais provável por causa de mais dados transmitidos do que usando reject
, mas o tamanho desta página é muito pequeno, então isso seria bom.
Então, qual é uma solução fácil para essa tarefa? Pitão? Em caso afirmativo, você poderia sugerir algumas palavras-chave que eu possa pesquisar para realizar essa tarefa? Existem outras soluções? Talvez estes se encaixem ainda melhor do que a ideia do python.
Encontrei a solução aqui https://pythonbasics.org/webserver/
Então, basicamente, você só precisa adicionar uma linha
self.wfile.write(bytes("<p>IP-Address: " + self.client_address[0] + "</p>", "utf-8"))
O campo client_address está documentado aqui https://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.client_addressPortanto, o código completo para exibir o endereço IP do visitante é: