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:


#!/bin/bash
# DesBloquearIPTxt por Diogo Dourado
# 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! ;)

1 comment

  1. muito bom o script, agora gostaria de saber como seria fazer esse ai em php, tipo aparte de criar o painel eu faria queria somente o script para liberar o ip com php tem como disponibilizar o script?

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.