[Tutorial] Liberando ou bloqueando portas de saida por horário
Enviado: 06 Jul 2013 14:42
Buenas, tive uma necessidade em alguns clientes de bloquear ou liberar portas em determinados horários. Como o Endian não tem este recurso precisei bolar dois scripts para executar a tarefa. No exemplo vamos fechar a porta 80 e 443 com um script e depois teremos outro script responsável por liberar novamente estas portas. O agendamento dos scripts devem ser adicionados ao crontab e executados nos horários determinados. O script é básico, nada de mais... é o SED alterando as linhas que precisamos. Vamos aos exemplos ?
A sintaxe do comando é: sed -e '1,2s/TEXTO/NOVOTEXTO/g' /var/efw/outgoing/config >> /var/efw/outgoing/config.temporario
Com ele o SED vai alterar as linhas 1 e 2 do arquivo /var/efw/outgoing/config e gravar em um arquivo temporario. As regras de saida do Endian são salvas no seguinte formato:

Perceba que a linha 1 e a linha 2 são as regras que pretendemos alterar, porta 80 e porta 443 , se rodarmos o comando SED alterando o texto ON para OFF a saida será a seguinte:

Após rodarmos o comando SED precisamos aplicar e reiniciar para isto vamos utilizar o comando do Endian: /usr/local/bin/setoutgoing
Agora que você entendeu a "mágica" vamos aos scripts de exemplo necessários ?
Bloqueando as portas 80 e 443
Liberando as portas 80 e 443
Simples não ?
Perceba que os scripts não removem as regras, somente desmarcam elas deixando inativas.

Ela pode ser aplicada a qualquer linha do arquivo, basta informar a linha correta e o texto a ser alterado.
Agora é agendar no crontab para executar nos horários necessários.
Bom proveito
A sintaxe do comando é: sed -e '1,2s/TEXTO/NOVOTEXTO/g' /var/efw/outgoing/config >> /var/efw/outgoing/config.temporario
Com ele o SED vai alterar as linhas 1 e 2 do arquivo /var/efw/outgoing/config e gravar em um arquivo temporario. As regras de saida do Endian são salvas no seguinte formato:

Perceba que a linha 1 e a linha 2 são as regras que pretendemos alterar, porta 80 e porta 443 , se rodarmos o comando SED alterando o texto ON para OFF a saida será a seguinte:

Após rodarmos o comando SED precisamos aplicar e reiniciar para isto vamos utilizar o comando do Endian: /usr/local/bin/setoutgoing
Agora que você entendeu a "mágica" vamos aos scripts de exemplo necessários ?
Bloqueando as portas 80 e 443
Código: Selecionar todos
#!/bin/sh
# Bloqueia portas 80 e 443
sed -e '1,2s/on,tcp/off,tcp/g' /var/efw/outgoing/config >> /var/efw/outgoing/config.temporario
mv /var/efw/outgoing/config.temporario /var/efw/outgoing/config
/usr/local/bin/setoutgoing
exit 0
Código: Selecionar todos
#!/bin/sh
# Libera portas 80 e 443
sed -e '1,2s/off,tcp/on,tcp/g' /var/efw/outgoing/config >> /var/efw/outgoing/config.temporario
mv /var/efw/outgoing/config.temporario /var/efw/outgoing/config
/usr/local/bin/setoutgoing
exit 0
Perceba que os scripts não removem as regras, somente desmarcam elas deixando inativas.

Ela pode ser aplicada a qualquer linha do arquivo, basta informar a linha correta e o texto a ser alterado.
Agora é agendar no crontab para executar nos horários necessários.
Bom proveito
