Script para controle do Squid e firewall

Publicado por Sérgio Abrantes Junior 10/07/2008

[ Hits: 6.915 ]

Homepage: https://br.linkedin.com/in/sergioabrantes

Download gerenciador.txt




Fiz esse script para o cliente conseguir fazer alterações sem ter acesso ao sistema por um shell.

Mudei o arquivo /etc/passwd conforme abaixo:

De sergio:x:1000:100:,,,:/home/sergio:/bin/bash
Para sergio:x:1000:100:,,,:/home/sergio:/sbin/gerenciador

Assim quando ele colocar o login e senha, cairá diretamente no menu. Necessário alterar também as variáveis do script.

Não tenho muito espaço para comentar 500 caracteres apenas :/

Qualquer dúvida comentem

Sérgio Abrantes

[]'s

  



Esconder código-fonte

#!/bin/bash
##############################################################################################
#       Gerenciador é um programa feito para ajudar no gerenciamento do squid e firewall.    #
#       Apresenta um menu onde o usuário pode escolher entre visualizar e alterar os dados   #
#       dos arquivos de configuração.                                                        #
##############################################################################################
#
# Autor: Sérgio Abrantes
# E-mail: sergioabrantes@gmail.com
# Data da criação: 05/01/08

###########################
# Declaração de variáveis #
###########################

# Variáveis das opcaoes 3 e 4 = Visualizar sites / Alterar sites
squid_conf=/usr/local/squid/etc/squid.conf
sites_orkut=/usr/local/squid/conf/sites_orkut
sites_fotolog=/usr/local/squid/conf/sites_fotolog
sites_permitidos=/usr/local/squid/conf/sites_permitidos
sites_putaria=/usr/local/squid/conf/sites_putaria
sites_bloqueados=/usr/local/squid/conf/sites_bloqueados
sites_musica_video=/usr/local/squid/conf/sites_musica_video
sites_email=/usr/local/squid/conf/sites_email

# Variáveis das opcoes 5 e 6 = Visualizar palavras / alterar palavras
palavras_orkut=/usr/local/squid/conf/palavras_orkut
palavras_fotolog=/usr/local/squid/conf/palavras_fotolog
palavras_putaria=/usr/local/squid/conf/palavras_putaria
palavras_bloqueadas=/usr/local/squid/conf/palavras_bloqueadas
palavras_musica_video=/usr/local/squid/conf/palavras_musica_video

# ACL com o conteudo dos usuarios
users_liberados=/usr/local/squid/conf/users_liberados
users_lista1=/usr/local/squid/conf/users_lista1
users_lista2=/usr/local/squid/conf/users_lista2
users_geral=/usr/local/squid/conf/users_geral
# Arquivo de senha #
arq_passwd=/usr/local/squid/etc/passwd

# Arquivo do firewall
arq_fire=/etc/rc.d/rc.firewall

# Loop que mostra o menu principal
while : ; do

   # Mostra o menu na tela, com as ações disponíveis
   resposta=$(
     dialog --stdout               \
            --title 'Gerenciador do Squid'  \
            --menu 'Escolha uma das opções abaixo:' \
           0 0 0                   \
           1 'Visualizar o squid.conf' \
           2 'Alterar o squid.conf' \
           3 'Visualizar Sites'  \
           4 'Alterar Sites'  \
           5 'Visualizar Palavras'  \
           6 'Alterar Palavras'  \
           7 'Adicionar ou mudar a senha de  Usuarios'  \
           8 'Remover Usuarios'  \
           9 'Listar usuários cadastrados'  \
           10 'Visualizar Firewall'  \
           11 'Editar o Firewall'  \
           12 'Firewall START ( Validar )'  \
           13 'Firewall STOP ( Funcionando o minimo )'  \
           14 'Validar configurações do Squid'  \
           15 'Visualiazar ACL de usuarios'  \
           16 'Alterar ACL de usuarios'  \
           0 'Sair'                )

   # Ela apertou CANCELAR ou ESC, então vamos sair...
   [ $? -ne 0 ] && break
 # De acordo com a opção escolhida, dispara programas
   case "$resposta" in
        1)     dialog                                        \
                  --title 'Visualizando Arquivo'             \
                  --textbox $squid_conf  \
                  0 0

        ;;
        2) mcedit $squid_conf ;;
        3) visualizar_sites=$(dialog --stdout \
               --radiolist 'Escolha os sites a visualizar' 0 0 0 \
               'Proibidos'      'Que não se encaixam a nenhuma outra regra' ON  \
               'Permitidos'     'Que todos podem acessar'   OFF \
               'Orkut'          'Site de relacionamento'           OFF \
               'Pornografia'    'Sites com conteúdo adulto'    OFF \
               'Musica-Video'   'Sites com conteúdo adulto'    OFF \
               'Email'  'Sites com música e vídeos'    OFF )

                        if [ $visualizar_sites == "Proibidos" ]; then
                               dialog \
                                       --title 'Arquivo de sites proibidos' \
                                       --textbox $sites_bloqueados  \
                                       0 0
                        fi

                        if [ $visualizar_sites == "Permitidos" ]; then
                               dialog  \
                                       --title 'Arquivo de sites Permitidos' \
                                       --textbox $sites_permitidos  \
                                       0 0
                        fi

                        if [ $visualizar_sites == "Orkut" ]; then
                               dialog \
                                       --title 'Arquivo de sites Orkut' \
                                       --textbox $sites_orkut  \
                                       0 0
                        fi
 if [ $visualizar_sites == "Pornografia" ]; then
                               dialog  \
                                       --title 'Arquivo de sites de conteudo adulto' \
                                       --textbox $sites_putaria  \
                                       0 0
                        fi

                        if [ $visualizar_sites == "Fotolog" ]; then
                               dialog  \
                                       --title 'Arquivo de sites de Fotologs e blogs' \
                                       --textbox $sites_fotolog  \
                                       0 0
                       fi

                       if [ $visualizar_sites == "Musica-Video" ]; then
                               dialog  \
                                       --title 'Arquivo de sites com musica e videos' \
                                       --textbox $sites_musica_video  \
                                       0 0
                       fi

                       if [ $visualizar_sites == "Email" ]; then
                               dialog  \
                                       --title 'Arquivo de sites com musica e videos' \
                                       --textbox $sites_email  \
                                       0 0
                       fi

;;
        4)alterar_sites=$(dialog --stdout \
               --radiolist 'Escolha os sites a visualizar' 0 0 0 \
               'Proibidos'      'Que não se encaixam a nenhuma outra regra' ON  \
               'Permitidos'     'Que todos podem acessar'   OFF \
               'Orkut'          'Site de relacionamento'           OFF \
               'Pornografia'    'Sites com conteúdo adulto'    OFF \
               'Musica-Video'   'Sites com música e vídeos'    OFF \
               'Email'          'Sites de E-mail'    OFF )

                        if [ $alterar_sites == "Proibidos" ]; then
                                mcedit $sites_bloqueados
                        fi

                        if [ $alterar_sites == "Permitidos" ]; then
                                mcedit $sites_permitidos
                        fi

                        if [ $alterar_sites == "Orkut" ]; then
                                mcedit $sites_orkut
                        fi

                        if [ $alterar_sites == "Pornografia" ]; then
                                mcedit $sites_putaria
                        fi

                        if [ $alterar_sites == "Fotolog" ]; then
                                mcedit $sites_fotolog
                        fi


                        if [ $alterar_sites == "Musica-Video" ]; then
                                mcedit $sites_musica_video
                        fi

                        if [ $alterar_sites == "Email" ]; then
                                mcedit $sites_email
                        fi

        ;;
 5)visualizar_palavras=$(dialog --stdout \
               --radiolist 'Escolha as palavras que deseja visualizar' 0 0 0 \
               'Proibidos'      'Que não se encaixam a nenhuma outra regra' ON  \
               'Orkut'          'Para Site de relacionamento'           OFF \
               'Pornografia'    'Para Sites com conteúdo adulto'    OFF \
               'Musica-Video'   'Para Sites com música e vídeos'    OFF )

                        if [ $visualizar_palavras == "Proibidos" ]; then
                               dialog \
                                       --title 'Arquivo de palavras proibidos' \
                                       --textbox $palavras_bloqueadas  \
                                       0 0
                        fi


                        if [ $visualizar_palavras == "Orkut" ]; then
                               dialog \
                                       --title 'Arquivo de palavras Orkut' \
                                       --textbox $palavras_orkut  \
                                       0 0
                        fi

                        if [ $visualizar_palavras == "Pornografia" ]; then
                               dialog  \
                                       --title 'Arquivo de palavras de conteudo adulto' \
                                       --textbox $palavras_putaria  \
                                       0 0
                        fi

                        if [ $visualizar_palavras == "Fotolog" ]; then
                               dialog  \
                                       --title 'Arquivo de palavras de Fotologs e blogs' \
                                       --textbox $palavras_fotologs  \
                                       0 0
                       fi

                       if [ $visualizar_palavras == "Musica-Video" ]; then
                               dialog  \
                                       --title 'Arquivo de palavras com musica e videos' \
                                       --textbox $palavras_musica_video  \
                                       0 0
                       fi

;;
6)alterar_palavras=$(dialog --stdout \
               --radiolist 'Escolha os sites a visualizar' 0 0 0 \
               'Proibidos'      'Que não se encaixam a nenhuma outra regra' ON  \
               'Orkut'          'Site de relacionamento'           OFF \
               'Pornografia'    'Sites com conteúdo adulto'    OFF \
               'Musica-Video'   'Sites com música e vídeos'    OFF )

                        if [ $alterar_palavras == "Proibidos" ]; then
                                mcedit $palavras_bloqueadas
                        fi

                        if [ $alterar_palavras == "Permitidos" ]; then
                                mcedit $palavras_permitidos
                        fi

                        if [ $alterar_palavras == "Orkut" ]; then
                                mcedit $palavras_orkut
                        fi

                        if [ $alterar_palavras == "Pornografia" ]; then
                                mcedit $palavras_putaria
                        fi

                        if [ $alterar_palavras == "Fotolog" ]; then
                                mcedit $palavras_fotolog
                        fi
                        if [ $alterar_palavras == "Musica-Video" ]; then
                                mcedit $palavas_musica_video
                        fi


        ;;
7)
                        # Pergunta o nome
                        dialog --inputbox 'Digite o nome do usuario :' 0 0  2>/tmp/nome.txt
                        nome=$( cat /tmp/nome.txt )

                        # Pergunta a senha
                        dialog --inputbox 'Digite a senha do usuario :' 0 0  2>/tmp/senha.txt
                        senha=$( cat /tmp/senha.txt )
                        htpasswd -b $arq_passwd $nome $senha > /tmp/log_gerenciador 2>&1

                        # Verifica status do comando
                                comando=$(cat /tmp/log_gerenciador |egrep Updating|wc -l)
                                if [ $comando == 1 ]; then
                                        dialog --msgbox 'Atualizado senha do usuario' 5 40
                                fi
                                comando=$(cat /tmp/log_gerenciador |egrep Adding|wc -l)
                                if [ $comando == 1 ]; then
                                        dialog --msgbox 'Adicionado usuario' 5 40
                                fi
                        # Apaga arquivos temporiarios
                        rm -rf /tmp/senha.txt
                        rm -rf /tmp/nome.txt
                        rm -rf /tmp/log_gerenciador

                ;;

        8)

                        # Pergunta o nome
                        dialog --inputbox 'Digite o nome do usuario a ser removido :' 0 0  2>/tmp/nome.txt
                        nome=$( cat /tmp/nome.txt )

                        # Verifica status do comando
                                comando=$(cat /usr/local/squid/etc/passwd |egrep $nome|wc -l)
                                if [ $comando == 1 ]; then
                                        htpasswd -D /usr/local/squid/etc/passwd $nome
                                        dialog --msgbox 'Usuario removido' 5 40
                                fi
                                comando=$(cat $arq_passwd |egrep $nome|wc -l)
                                if [ $comando == 0 ]; then
                                        dialog --msgbox 'Usuario nao existe' 5 40
                                fi
                        # Apaga arquivos temporiarios
                        rm -rf /tmp/senha.txt
                        rm -rf /tmp/nome.txt
                        rm -rf /tmp/log_gerenciador
                ;;

        9)
                        cat $arq_passwd |cut -d : -f 1 > /tmp/users.txt
                        dialog  \
                        --title 'Visualizando Arquivo' \
                        --textbox /tmp/users.txt  \
                        0 0
                        rm -rf /tmp/users.txt
                        ;;

        10)
             dialog  \
                  --title 'Visualizando Arquivo' \
                  --textbox $arq_fire  \
                  0 0

        ;;
        11) mcedit $arq_fire ;;
12)
                /etc/rc.d/rc.firewall start
                dialog --msgbox 'Firewall iniciado / reiniciado' 5 40

        ;;
        13)
                        /etc/rc.d/rc.firewall stop
                dialog --msgbox 'Firewall funcionando somente o minimo' 5 40

        ;;

        14)
                      /usr/local/squid/sbin/squid -k reconfigure
                dialog --msgbox 'Squid esta lendo agora as novas configurações' 5 40
        ;;

15)alterar_acls=$(dialog --stdout \
               --radiolist 'Escolha quais ACL visualizar' 0 0 0 \
               'Liberados'      'Usuarios com acesso total' ON  \
               'Geral'          'Usuarios nas regras gerais'   OFF \
               'Lista1'         'Lista personalizada 1'           OFF \
               'Lista2'         'Lista personalizada 2'    OFF )

                        if [ $alterar_acls == "Liberados" ]; then
                               dialog \
                                       --title 'Usuarios liberados' \
                                       --textbox $users_liberados  \
                                       0 0
                        fi

                        if [ $alterar_acls == "Geral" ]; then
                               dialog \
                                       --title 'Usuarios geral' \
                                       --textbox $users_geral  \
                                       0 0
                        fi

                        if [ $alterar_acls == "Lista1" ]; then
                               dialog \
                                       --title 'Usuarios lista 1' \
                                       --textbox $users_lista1  \
                                       0 0
                        fi

                        if [ $alterar_acls == "Lista2" ]; then
                               dialog \
                                       --title 'Usuarios da lista 2' \
                                       --textbox $users_lista2  \
                                       0 0
                        fi


        ;;

    16)alterar_acls=$(dialog --stdout \
               --radiolist 'Escolha quais ACL alterar' 0 0 0 \
               'Liberados'      'Usuarios com acesso total' ON  \
               'Geral'          'Usuarios nas regras gerais'   OFF \
               'Lista1'        'Lista personalizada 1'           OFF \
               'Lista2'        'Lista personalizada 2'    OFF )

                        if [ $alterar_acls == "Liberados" ]; then
                                       mcedit $users_liberados
                        fi

                        if [ $alterar_acls == "Geral" ]; then
                                      mcedit $users_geral
                        fi

                        if [ $alterar_acls == "Lista1" ]; then
                                       mcedit $users_lista1
                        fi

                        if [ $alterar_acls == "Lista2" ]; then
                                       mcedit $users_lista2
                        fi

        ;;

        0) break ;;

   esac

done

# Mensagem final :)
clear
echo ''
echo ''
echo ''
echo 'Obrigado por usar o servidor configurado por Sérgio Abrantes'
echo 'Dúvidas ou sugestões entre em contato com o seguinte e-mail:'
echo 'sergioabrantes@gmail.com'
echo ''
echo ''
echo ''
#sleep 2
                 

Scripts recomendados

iptables geral com roteamento de portas

Protegendo arquivos contra acessos simultâneos

Multiplicacao de vetores

Cálculo de Horas

Atualização do FreeBSD


  

Comentários
[1] Comentário enviado por smrabelo em 10/07/2008 - 10:19h

Pelo que vi, ficou muito bom seu gerenciador, vou testá-lo! =)


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts