Provavelmente, é mais fácil implementar isso usando uma linguagem de script do lado do servidor, como PHP ou Perl. No entanto, como a entrada para o script é controlável pelo usuário, você deve ser muito cuidadoso ao usá-lo como entrada.
Um exemplo está abaixo (não sou um codificador da web, portanto, pode haver grandes problemas de segurança com esse código, use com extrema cautela):
#!/usr/bin/perl -wT
# Send HTTP content-type
print "Content-type:text/html\r\n\r\n";
my $requester_ip;
# Do some sanity checking on the IP send by the webserver
if ( $ENV{'REMOTE_ADDR'} =~ m/(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b)/ ) {
my $requester_ip = $1;
} else {
print "An error occurred\n";
exit;
}
# Open SMTP for the requester
'sudo iptables -A INPUT -d $requester_ip -p tcp --dport 25 -j ACCEPT'
Se você quiser usar isso, verifique se o usuário do seu servidor da Web pode executar sudo
somente com este comando específico. Mais uma vez, este código é fornecido na esperança de que seja útil, mas SEM QUALQUER GARANTIA OU ADEQUAÇÃO A UM DETERMINADO FIM.
Seria ainda melhor fazer isso em um processo de duas etapas:
- Solicite que o servidor da Web grave o IP em um arquivo
- Deixe um script separado ser executado a partir do crontab para obter o IP do arquivo e executar
iptables
.