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
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
#!/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
iptables geral com roteamento de portas
Protegendo arquivos contra acessos simultâneos
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Problemas ao instalar o PHP (10)
Descompactar arquivos winrar no linux (9)
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (12)