Estou usando um modem/roteador celular que possui iptables. Há também uma webUI desajeitada que permite ajustes simples, como ativar WAN ICMP/HTTPS/SSH. Eu claramente não quero essas portas abertas e expostas ao público. Mas eu gostaria de ter acesso de gerenciamento remoto a este dispositivo a partir de uma lista de endereços predeterminada. Possivelmente existem até 10 endereços e alguns são intervalos/sub-redes de IP. Eu testei isso com um único endereço com uma regra como
-A HTTPS_WAN_INPUT -i ppp0 -s x.x.x.x -p tcp -m tcp --dport 443 -j ACCEPT
Mas a perspectiva de escrever regras como essa 10 vezes e para cada porta/protocolo parece desajeitada, então estou escrevendo para ver se existe uma maneira melhor de fazer isso. Posso criar uma variável $WHITELIST que contenha todos os endereços e usá-la em -s? Ou posso aplicar a lista branca a algo mais acima na cadeia, como uma das políticas?
Só estou tentando descobrir se existe uma maneira mais elegante de permitir acesso remoto a um conjunto de IPs sem escrever 10 linhas diferentes para cada regra.
Responder1
Na verdade, você tem apenas 2 opções (ou uma combinação)... mas uma é um pouco mais arriscada que a outra. Tenha em mente que o src
campo também aceita sub-redes, ou seja, 192.168.1.0/24.
Primeiro,Seseu iptables/kernel é construído com o iprange
módulo, você pode usá-lo para especificar um intervalo de IPs em vez de apenas 1-2... mas não pode fornecer uma "lista" de ips. Exemplo:
-A HTTPS_WAN_INPUT -i ppp0 -m iprange --src-range x.x.x.x-y.y.y.y -p tcp -m tcp --dport 443 -j ACCEPT
Em segundo lugar, você pode configurar um novo alvo específico, incluindo IPs "na lista de permissões", apenas para manter as coisas limpas. Exemplo:
iptables -N RemoteManagement
iptables -P RemoteManagement DROP
iptables -A -A HTTPS_WAN_INPUT -i ppp0 -p tcp -m tcp --dport 443 -j RemoteManagement
... e para cada IP que você deseja permitir...
iptables -I RemoteManagement -s x.x.x.x -j ACCEPT
Isso permite que você mantenha suas regras um pouco mais limpas e possa simplesmente excluir/adicionar IPs conforme necessário. Claro, se você tiver o iprange
módulo disponível, também poderá especificar intervalos na cadeia RemoteManagement. Você também pode reutilizar essa mesma cadeia em outros cenários onde ela se aplique.