Arquivos mensais: agosto 2011

Removendo IP do firewall com shell script

A minha necessidade era atraves de um painel de controle (escrito em PHP) executar um comando especifico (neste caso: csf -dr IP). O procedimento poderia ser simples, usando o exec() do PHP, mas por medidas de segurança o mesmo esta desabilitado no servidor.

Como diz meu grande ídolo Dadá Maravilha, vamos a solucionática: Fazer um Shell Script que le um arquivo TXT linha por linha, onde serão gravados os IPs e executar o comando com estes IPs.

Segue o código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
# DesBloquearIPTxt por Diogo Dourado <diogo@dourado.net>
# Le IPs para desbloquear

nome_arquivo="/home/betanetr/public_html/DesbloquearIps.txt"

if [ -f $nome_arquivo ]
then

    while read line
    do
        ipvalido=$(echo $line | egrep '^(([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$')
        if [ "$ipvalido" != "" ]; then
        csf -dr $line
        fi 
    done < $nome_arquivo
   
    echo '' > $nome_arquivo
fi

Vamos botar pra rodar?

  1. Entre no seu servidor via SSH
  2. Crie um arquivo com o código acima atraves do comando: edit DesBloquearIPTxt
  3. Faça dele um executavel com o comando: chmod +x DesBloquearIPTxt
  4. Abra o agendador de tarefas: crontab -e
  5. Adicione na ultima linha: * * * * * ./DesBloquearIPTxt >/dev/null 2>&1
  6.  Salve e seja feliz! :)

Avisos importantes:

  • Altere o nome do arquivo no código acima para o caminho exato de onde esta o arquivo, no meu caso, com os IPs gravados: DesbloquearIps.txt”
  • De permissão 0777 para este arquivo, mesmo vazio
  • Agora é so fazer um script em PHP para gravar os IPs que deseja desbloquear no TXT

Prontinho, agora o CRON cuida do resto. A cada minuto ele verifica se o arquivo existe, se existir, verifica linha por linha se é um IP válido, se for o IP válido ele faz o desbloqueio do IP.

Have Fun! ;)