PgAviso Inteligente.docx

download PgAviso Inteligente.docx

of 8

Transcript of PgAviso Inteligente.docx

PgAviso Inteligente

Boa noite pessoal,Vou compartilhar o minha pgina de aviso "pgaviso" bem simples de configurar, j esta tudo pronto, no precisa de boto para remover o cliente da lista de aviso nem ssh, api etc... "no desmerecendo os colegas que assim fizeram"pois peguei um pouco de tudo que foi apresentado aqui e fiz o meu, uma pgina de aviso funcional para mim e acredito que para muita gente vai ser tambm.vou explicar como funciona:primeiramente utilizando o mtodo do amigoWallace de Lima, 35% dos crditos so para ele."enviar o pgaviso por rdius"o sistema tem uma rotina de script mikrotik que verifica se o cliente esta na lista de pgaviso e adiciona as regras de redirecionamento para cada cliente uma regra "no se preocupe se voc tem muitos cliente na lista de pgaviso e seu firewall ficar cheio de regras" as regras so "dinamicas" o script se encarrega de criar e remover automaticamente.O sistema usa o squid "no para fazer cache" para capturar a url que o cliente solicitou, mostra o aviso e depois devolve a url original que o cliente solicitou.no precisa fazer alterao no html da pgina j esta padro com um aviso simples "no agressivo"A pgina de aviso:no momento que o cliente esta navegando em qualquer site http abre um pop up jquery no estilo modal com uma mensagem de voz, o texto de aviso, um boto com link para a central do assinante e um boto para fechar a pgina.se o cliente clicar em fechar ele sera redirecionado para sua url original, se o cliente esperar em 55 segundos a pgina redireciona automaticamente para sua url original.Funciona com pppoe e hotspot.mos a obra!1 Passo (peguei do poste original)Devemos copiar o script 'pgaviso.sh' anexado ao post para o diretrio '/usr/local/mkauth/scripts/'Feito isso incluiremos no crontab a chamada para o script.(a frequencia deve ser escolhida por vc, eu uso aqui a cada 6 horas)"Vou pular esse passo, quem j tem o pgaviso por rdius pode ir para o segundo passo, que no tem tAQUI."2 passoinstale o squid no mk-auth.# apt-get install squid3 passodepois de instalar edite o squid.conf, copie e cole no bloco de texto edite as informaes necessrias, depois copie e coleno terminal do linux.#####cat > /etc/squid/squid.conf -EOF# Configurao Squid# DIRETORIO ONDE TEM O AVISO NAO ALTEREerror_directory /var/www/pgaviso

# PORTA DO SQUIDhttp_port3128transparent# Altera se preferir# DIAS PARA BLOQUEIOcache_mgr15# Digite aqui o maximo de dias para bloqueio aparecer no aviso# TEL. CONTATO PROVEDORvisible_hostname22.3344-5566# Digite o telefone neste modelo DDD.PPPP-YYYY# IP DO MK-AUTH OU DOMINIOerr_html_textwww.seudominio.com.br# Digite seu dominio ou o ip do mk-auth sem o http://# O RESTO NAO PRECISA MEXER# Cachecache_mem 100 MBmaximum_object_size_in_memory 32 KB#maximum_object_size 100 MB#minimum_object_size 0 KB#cache_swap_low 90#cache_swap_high 95# Logs de acessoaccess_log /var/log/squid/access.log squid# ACL PADRAOacl all src 0.0.0.0/0.0.0.0#acl manager proto cache_objectacl localhost src 127.0.0.1/255.255.255.255#acl SSL_ports port 443 563 873#acl Safe_ports port 80 # http#acl purge method PURGE#acl CONNECT method CONNECT# Permisses e bloqueios padro#http_access allow manager localhost#http_access deny manager#http_access allow purge localhost#http_access deny purge#http_access deny !Safe_ports#http_access deny CONNECT !SSL_ports# NAO FAZER CACHEno_cache deny all# NEGAR TUDO REDIRECIONAR PARA O AVISOdeny_info ERR_ACCESS_DENIED all# BLOQUEIO EXTERNOhttp_access deny allEOF#####no reinicie o squid ainda, vamos copiar a os arquivos da pagina de aviso para o mk-auth4passodescompacte o pasta arquivos.zip e com o winscp copie a pasta pgaviso para o diretorio var/www5 passoreinicie o squid com o comando# /etc/init.d/squid restart6 passoteste a pagina assim digite no navegador o ip do mk-auth mais a porta do squid ex:http://172.31.255.2:3128se fez tudo certo j vai aparecer sua pgina de aviso.7 passocopie estas regras para o terminal do seu mikrotik.Ateno!essas regras so padro no altere.# aqui para no ter problemas com o youtube http ex: se o cliente estiver assistindo um video no ser interrompido na hora do aviso, ele s vera o aviso se atualizar a pagina e etc.../ip firewall layer7-protocoladd name=youtube regexp="^.+(youtube.com).*\$"/ip firewall filteradd action=add-src-to-address-list address-list=avisado address-list-timeout=20s chain=forward \comment="FORA DO AVISO" disabled=no dst-port=80 layer7-protocol=youtube \protocol=tcp src-address-list=pgaviso/ip firewall filter move [find comment="FORA DO AVISO"] 0# aqui o intervalo que vai rodar o script PGAVISO no mikrotikesta setado em 1 minuto para testes altere para o tempo que preferir interressante no passar de 10 minutos(no o intervalo do aviso!) so para atualizar as regras do firewall, o intervalo do aviso definido no proprio script PGAVISO.

/system scheduleradd disabled=no interval=1m name=PGAVISO on-event="/system script run PGAVISO" \policy=ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api \start-time=startup8 passocrie um script em seu mikrotik com o nome 'PGAVISO' e copie e cole esse contedo, edite as seguintes variveis em negrito. a varivel INTERVALO o intervalo que o cliente vai ver o aviso est setado 2 minutos para testes , depois altere para o tempo que preferir.#===============================## SCRIPT PGAVISO##===============================#==== VARIAVEIS#===============================#== IP MK-AUTH:global MKAUTH "172.31.255.2";#== PORTA SQUID:global PORTA "3128";#== INTERVALO DE AVISO EX: "1d" = 1dia, "1h" = 1hora, "1m" = 1minuto, "1s" = 1segundo:global INTERVALO "2m";##== LIST (nao altere):global AVISO "avisado";:global PGAVISO "pgaviso";##================================#==== REMOVER AS REGRAS ANTIGAS DE AVISO:foreach A in=[/ip firewall nat find where comment="$PGAVISO"] do={ /ip firewall nat remove $A };:foreach B in=[/ip firewall filter find where comment="$PGAVISO"] do={ /ip firewall filter remove $B };##===============================##==== PGAVISO PPPOE##===============================##:foreach ID in=[/ppp active find] do={ \:foreach LOGIN in=[/ppp active get $ID name] do={ \:foreach IP in=[/ppp active get $ID address] do={ \:foreach IPLISTA in=[/ip firewall address-list find where address="$IP"] do={ \:foreach LISTA in=[/ip firewall address-list find where list="$PGAVISO"] do={ \##==== CONDICAO PARA ENTRAR NO AVISO#:if ($IPLISTA = "$LISTA") do={ \##==== ADCIONAR NOVAS REGRAS DE AVISO#:delay 1s;/ip firewall nat add action=dst-nat chain=dstnat comment="$PGAVISO" disabled=no dst-address="!$MKAUTH" src-address=$IP \src-address-list=!avisado protocol=tcp dst-port=80 to-addresses=$MKAUTH to-ports=$PORTA;#/ip firewall filter add action=add-src-to-address-list address-list=$AVISO address-list-timeout="$INTERVALO" chain=forward \comment="$PGAVISO" disabled=no dst-address="$MKAUTH" src-address=$IP dst-port=90 protocol=tcp;#:log info "========================================";:log warning " adicionando regras de pgaviso para ";:log info "========================================";:delay 1s;#};};};};};};#==== FIM PGAVISO PPPOE ================##===============================##==== PGAVISO HOTSPOT##===============================#:foreach IA in=[/ip hotspot active find] do={ \:foreach LOGIN in=[/ip hotspot active get $IA user] do={ \:foreach IP in=[/ip hotspot active get $IA address] do={ \:foreach IPLISTA in=[/ip firewall address-list find where address="$IP"] do={ \:foreach LISTA in=[/ip firewall address-list find where list="$PGAVISO"] do={ \##==== CONDICAO PARA ENTRAR NO AVISO#:if ($IPLISTA = "$LISTA") do={ \##==== ADCIONAR NOVAS REGRAS DE AVISO#:delay 1s;/ip firewall nat add action=dst-nat chain=dstnat comment="$PGAVISO" disabled=no dst-address="!$MKAUTH" src-address=$IP \src-address-list=!avisado protocol=tcp dst-port=80 to-addresses=$MKAUTH to-ports=$PORTA;#/ip firewall filter add action=add-src-to-address-list address-list=$AVISO address-list-timeout="$INTERVALO" chain=forward \comment="$PGAVISO" disabled=no dst-address="$MKAUTH" src-address=$IP \dst-port=90 protocol=tcp;#:delay 1s;:log info "========================================";:log warning " adicionando regras de pgaviso para ";:log info "========================================";#};};};};};};#==== FIM PGAVISO HOTSPOT ================9 passoExplicando um pouco!no diretrio pgaviso tem uma pasta chamada logo.jpg delete e coloque sua logomarca com a mesma extenso .jpg,o arquivo ERR_ACCESS_DENIED o arquivo da pagina de aviso, s altere se souber o que est fazendo!o arquivo index.php um redirecionamento para seu site.no precisa abrir portas no apache,no tem problemas com ip fixo ou no,ex: uso esse sistema de aviso com meu servidor mk-auth hospedado fora da minha rede!o pop up jquery no bloqueado por navegadores foi testado em vrios inclusive emdispositivo movel,no se preocupe com o cliente ficar preso no aviso, se seguir todos os passos vai rodar certinho!----------->importante