10
Ambiente O ambiente usado neste artigo consiste em uma VM ( Virtual Machine ou Máquina Virtual), rodando Centos 5.5 64 bits com duas placas de redes. Uma para o link de Internet, e outra para a rede interna. Testei e tenho em produção tudo que abordaremos neste artigo. Dúvidas, dicas e críticas construtivas são sempre bem-vindas. Lista dos pacotes que utilizaremos: Firewall: Iptables Proxy: Squid 2.6 Stable Relatórios de acesso a sites: Sarg 2.3.1 Web Server:Apache 2.2.3 Sistema Operacional: Centos 5.5 64 Bits Tendo em vista que: eth0 = Minha placa de rede INTERNA eth1 = Minha placa de rede EXTERNA 192.168.1.0/24 = Cadeia de ips da minha rede interna Instalação dos pacotes necessários Primeiramente atualizaremos o sistema: # yum update -y Depois instalaremos os pacotes necessários que incluem bibliotecas GCC, Apache, PHP, Joe e Squid: # yum install gcc* httpd php php-devel squid joe -y Instalado todos os pacotes acima, chegou a hora do Sarg: # cd /root/ # wget http://www.sfr-fresh.com/unix/privat/sarg-2.3.1.tar.gz Depois descompactamos o Sarg e efetuamos sua instalação: # tar -zxvf sarg-2.3.1.tar.gz # cd sarg-2.3.1 # ./configure # make && make install Configuração do seu Firewall (Iptables) O script que utilizaremos é simples, mas eficaz. Ele bloqueia TUDO e depois você tem que liberar que é necessário para sua rede. No script teremos todos os comentários possíveis ajudando na sua interpretação: Crie o arquivo:

Firewall+Squid+Sarg

Embed Size (px)

Citation preview

AmbienteO ambiente usado neste artigo consiste em umaVM (Virtual Machine ou Mquina Virtual), rodandoCentos 5.5 64 bits com duas placas de redes. Uma para o link de Internet, e outra para a rede interna. Testei e tenho em produo tudo que abordaremos neste artigo. Dvidas, dicas e crticas construtivas so sempre bem-vindas. Lista dos pacotes que utilizaremos:

Firewall: Iptables Proxy: Squid 2.6 Stable Relatrios de acesso a sites: Sarg 2.3.1 Web Server: Apache 2.2.3 Sistema Operacional: Centos 5.5 64 Bits

Tendo em vista que:

eth0 = Minha placa de rede INTERNA eth1 = Minha placa de rede EXTERNA 192.168.1.0/24 = Cadeia de ips da minha rede interna

Instalao dos pacotes necessriosPrimeiramente atualizaremos o sistema: # yum update -y Depois instalaremos os pacotes necessrios que incluem bibliotecas GCC, Apache, PHP, Joe e Squid: # yum install gcc* httpd php php-devel squid joe -y Instalado todos os pacotes acima, chegou a hora do Sarg: # cd /root/ # wget http://www.sfr-fresh.com/unix/privat/sarg-2.3.1.tar.gz Depois descompactamos o Sarg e efetuamos sua instalao: # # # # tar -zxvf sarg-2.3.1.tar.gz cd sarg-2.3.1 ./configure make && make install

Configurao do seu Firewall (Iptables)O script que utilizaremos simples, mas eficaz. Ele bloqueia TUDO e depois voc tem que liberar o que necessrio para sua rede. No script teremos todos os comentrios possveis ajudando na sua interpretao: Crie o arquivo:

# joe /etc/rc.d/rc.firewall E nele, cole o que estiver abaixo: #!/bin/sh ### Script criado por Lucas Possamai ###################################### ############################################################# ## ############################################################# ## ############ Define Variaveis ######################################## echo "Definindo variaveis.................................[OK]" EXT=eth1 INT=eth0 modprobe ip_conntrack modprobe ip_conntrack_ftp modprobe ip_nat_ftp echo "Ativando roteamento.................................[OK]" echo "1" > /proc/sys/net/ipv4/ip_forward echo "Limpando Regras.....................................[OK]" ### Limpando regras iptables ### iptables -F iptables -F INPUT iptables -F OUTPUT iptables -F FORWARD iptables -t nat -F iptables -t nat -F POSTROUTING iptables -t nat -F PREROUTING iptables -X ############################################################# ## ############ Politicas ############################################# ############################################################# ## echo "Dropando tudo.......................................[OK]" iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP ############################################################# ## ############## NAT ############################################# ############################################################# ## echo "Definindo NAT.......................................[OK]" ## Redireciona SQUID rede INT ## iptables -t nat -A PREROUTING -i $INT -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128 ## Mascarando internet ## iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o $EXT -j MASQUERADE ############################################################# ## ############ INPUT ############################################## #############################################################

## echo "Definindo INPUT......................................[OK]" iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT ## Aceita conexao SSH qualquer lugar ## iptables -A INPUT -p tcp --dport 22 -j ACCEPT ## Aceita APACHE ## iptables -A INPUT -p tcp --dport 80 -j ACCEPT ## Aceita ping ## iptables -A INPUT -p icmp -j ACCEPT ## Libera SQUID na rede INT ## iptables -A INPUT -i $INT -p tcp --dport 3128 -j ACCEPT ############################################################# ## ############ OUTPUT ############################################# ############################################################# ## echo "Definindo OUTPUT.....................................[OK]" iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -j ACCEPT iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT iptables -A OUTPUT -p udp -m udp --dport 53 -m state --state NEW -j ACCEPT iptables -A OUTPUT -p icmp -j ACCEPT ############################################################# ## ############ FORWARD ############################################ ############################################################# ## echo "Definindo FORWARD.....................................[OK]" iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT ## Liberando ( TCP ) DNS, smtp, pop, http e squid para rede interna ## iptables -A FORWARD -p tcp -m multiport --dports 25,53,80,110,3128 -j ACCEPT ## Liberando DNS ( UDP ) para rede interna ## iptables -A FORWARD -p udp --dport 53 -j ACCEPT ## Liberando PING para rede interna ## iptables -A FORWARD -p icmp -j ACCEPT Avisos:

Voc deve alterar a variavel EXT para qual for sua placa de rede ligada a internet Voc deve alterar a variavel INT para qual for sua placa de rede ligada a rede interna Voc deve alterar os campos aonde contm 192.168.1.0/24 para a range de IPS da sua rede interna

Agora daremos permisso de execuo ao script: # chmod 777 /etc/rc.d/rc.firewall

Configurao do seu Proxy autenticadoBom, chegou a hora de nosso amigo... o Squid! Com ele voc conseguir bloquear/liberar sites, downloads e palavras. Com a autenticao, ele permite que voc libere o sitewww.vivaolinux.com.br para o usurio lucas, mas para o joo fica ainda bloqueado, por exemplo. Liberao por grupos: Bem, vamos ao que interessa. Entremos na pasta do Squid: # cd /etc/squid/ Aps isso, vamos editar o arquivo de configurao: # joe squid.conf A seguir o meu arquivo squid.conf. O mesmo possu vrios comentrios que iro auxiliar voc. No final postarei meus comentrios extras. ### INICIO SQUID.CONF ### ############################################################# ##### By Lucas Possamai ########################################### ############################################################# acl manager proto cache_object acl localhost src 127.0.0.1/32 acl to_localhost dst 127.0.0.0/8 ############## REDE LOCAL ######################### ### Aqui ele libera a rede 192.168.1.0/24 para se conectar ao squid #### acl localnet src 192.168.1.0/255.255.255.0 ## Na linha a baixo, ficarao os ips que poderao ## Navegar sem passar pelo proxy acl ips_sem_senha src 192.168.1.168 ############## ACL PORTAS ############## acl all src 0.0.0.0/0.0.0.0 acl SSL_ports port 443 acl Safe_ports port 80 # http ; acl Safe_ports port 21 # ftp ; acl Safe_ports port 25 # SMTP ; acl Safe_ports port 443 # https ; acl Safe_ports port 70 # gopher ; acl Safe_ports port 210 # wais ; acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt ; acl Safe_ports port 488 # gss-http ; acl Safe_ports port 591 # filemaker ; acl Safe_ports port 777 # multiling http ; acl CONNECT method CONNECT ## ACL autenticacao ## auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd ## Nesta linha a baixo, vc ira informar qual mensagem ira aparecer ## Para o usuario, quando ele abrir o navegador auth_param basic realm | Proxy da xxxxx - Entre com seu usuario e senha | auth_param basic credentialsttl 10 hours auth_param basic children 10 ## ACL de GRUPOS ## acl diretoria proxy_auth "/etc/squid/grupos/diretoria" acl administrativo proxy_auth "/etc/squid/grupos/administrativo" acl informatica proxy_auth "/etc/squid/grupos/informatica" acl financeiro proxy_auth "/etc/squid/grupos/financeiro" ## ACL de MSN ## acl usuariosMSN proxy_auth acl MSN req_mime_type -i ^application/x-msn-messenger$

acl dll_MSN url_regex -i gateway.dll acl dll2_MSN url_regex -i sqmserver.dll acl msn_domains dstdomain .msn.com .msn.com:443 .hotmail.com .hotmail.com:443 .live.com .live.com:443 .microsoft.com .microsoft.com:443 #ACL's de update do Windows acl windows_update dstdomain download.windowsupdate.com download.microsoft.com update.microsoft.com www.update.microsoft.com:443 update.microsoft.com:443 ## ALCs de SITE ## acl sites_informatica url_regex -i "/etc/squid/regras/sites_liberados_informatica" acl sites_administrativo url_regex -i "/etc/squid/regras/sites_liberados_administrativo" acl sites_diretoria url_regex -i "/etc/squid/regras/sites_liberados_diretoria" acl sites_financeiro url_regex -i "/etc/squid/regras/sites_liberados_financeiro" ## EXTENCOES BLOQUEADAS ## acl extencoes urlpath_regex -i "/etc/squid/regras/extencoes" ## Bloqueando navegadores ## acl firefox browser Firefox acl chrome browser Chrome acl opera browser Opera hosts_file /etc/hosts ## Mailserver ## acl mailserver url_regex mailserver always_direct allow mailserver http_access allow windows_update http_access allow msn_domains http_access allow dll2_MSN http_access allow dll_MSN usuariosMSN http_access allow MSN http_access allow ips_sem_senha acl pass proxy_auth REQUIRED http_access allow manager localhost http_access deny administrativo !sites_administrativo http_access deny financeiro !sites_financeiro ## Libero tudo da informatica ## http_access allow informatica ## Libero tudo da diretoria ## http_access allow diretoria http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost http_access deny all icp_access deny all ############## PORTA SQUID ############## http_port 3128 visible_hostname proxy.xxxxxxx.com.br hierarchy_stoplist cgi-bin ? ############## LOGS ############## access_log /var/log/squid/access.log squid cache_log /var/log/squid/cache.log ############## DESEMPENHO/DISCO ############## cache_mem 512 MB maximum_object_size_in_memory 8 KB memory_replacement_policy lru cache_replacement_policy lru cache_dir ufs /var/spool/squid 60000 16 256

### Tamanho maximo do arquivo que ira ser armazenado em cache ### maximum_object_size 200000 KB icp_access allow all ### Limpa cache ### cache_swap_low 90 cache_swap_high 95 ### Icones ### icon_directory /usr/share/squid/icons short_icon_urls on ### Errors configuracao ### error_directory /usr/share/squid/errors/Portuguese refresh_pattern refresh_pattern refresh_pattern refresh_pattern ^ftp: 1440 20% 10080 ^gopher: 1440 0% 1440 (cgi-bin|\?) 0 0% 0 . 0 20% 4320

#Cache windowsupdate refresh_pattern windowsupdate.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reload-into-ims refresh_pattern download.microsoft.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reload-into-ims refresh_pattern www.download.microsoft.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reloadinto-ims refresh_pattern www.microsoft.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reload-into-ims refresh_pattern au.download.windowsupdate.com/.*\.(cab|exe|dll|msi) 4320 100% 43200 reloadinto-ims refresh_pattern download.windowsupdate.com/.*\.(cab|exe|dll|msi) 4320 100% 43200 reloadinto-ims refresh_pattern www.download.windowsupdate.com/.*\.(cab|exe|dll|msi) 4320 100% 43200 reload-into-ims #Cache atulizacao avira refresh_pattern personal.avira-update.com/.*\.(cab|exe|dll|msi|gz) 10080 100% 43200 reloadinto-ims debug_options ALL,2 icp_port 3130 coredump_dir /var/spool/squid ###### FIM DO ARQUIVO SQUID.CONF ###### Avisos:

Lembre de alterar o campo 192.168.1.0/255.255.255.0 para o range de ips da sua rede interna

Lembre de alterar no campo ips_sem_senha para os ips que vc queira que no utilizem proxy

Lembre de alterar o seu visible_hostname Lembre de alterar/incluir/excluir os grupos que quiser

Agora criaremos os arquivos de grupos e de sites. Digite na sua shell: # mkdir /etc/squid/grupos # mkdir /etc/squid/regras

# # # # #

cd /etc/squid/grupos touch diretoria touch informatica touch financeiro touch administrativo

Agora incluiremos os usurios nos seus respectivos grupos: # joe diretoria ## Neste arquivo, bote o usuario que fara parte do grupo diretoria ## diretoria01 Depois de salvar o arquivo edite o prximo: # joe financeiro ## Neste arquivo, bote o usuario que fara parte do grupo financeiro ## financeiro01 Depois de salvar o arquivo edite o prximo: # joe administrativo ## Neste arquivo, bote o usuario que fara parte do grupo administrativo ## administrativo01 Depois de salvar o arquivo edite o prximo: # joe informatica ## Neste arquivo, bote o usuario que fara parte do grupo informatica ## informatica01 Feito essa parte, vamos agora criar os arquivos de sites em /etc/squid/regras. # # # # cd /etc/squid/regras touch sites_liberados_financeiro touch sites_liberados_administrativo touch extencoes

Agora incluiremos os sites que desejamos que sejam liberado para os grupos nestes arquivos. # joe sites_liberados_financeiro ## Neste arquivo ficam os sites que esto liberados para o financeiro ## terra.com.br # joe sites_liberados_administrativo ## Neste arquivo ficam os sites que esto liberados para o administrativo ## terra.com.br bradesco.com.br bradesco.com.br:443 bb.com.br bb.com.br:443 # joe extencoes ## Neste arquivo, ficam as extencoes que os usuarios nao irao poder fazer download ## Exemplo, se voce quiser bloquear download de arquivos .exe ## basta incluir neste arquivo, da seguinte forma \.exe$ \.bat$ \.avi$

Pronto! Nos resta agora cadastrar os seguintes usurios:

administrativo01 informatica01 diretoria01 financeiro01

Para isto v em: # cd /etc/squid Digite em sua shell: # # # # htpasswd htpasswd htpasswd htpasswd -c passwd administrativo01 passwd financeiro01 passwd diretoria01 passwd informatica01

Esses comandos criaro o arquivo passwd, nele ficaro salvas as senhas dos respectivos usurios. Aps tudo isso, execute para iniciar o Squid: # squid -z # /etc/init.d/squid start Se no houver erro seu squid est no ar! Caso contrrio consulte os logs.

Configurao do seu Sarg (relatrios de acessos)Chegou a vez do nosso amigo Sarg para que possamos visualizar os sites acessados/negados e downloads efetuados em nosso Proxy. No inicio do artigo iniciamos a instalao do Sarg, ento nos resta agora apenas configur-lo. Editaremos agora o sarg.conf. Na sua shell digite: # joe /usr/local/etc/sarg.conf Caso no consiga localizar o arquivo sar.conf utilize: # find /* -name sarg.conf ## INICIO DO ARQUIVO SARG.CONF ## language Portuguese access_log /var/log/squid/access.log graphs yes graph_days_bytes_bar_color orange title "Relatorios de acesso" font_face Tahoma,Verdana,Arial font_size 10px header_font_size 10px title_font_size 12px temporary_dir /tmp output_dir /var/www/html/relatorios resolve_ip yes topuser_sort_field BYTES reverse user_sort_field BYTES reverse date_format e remove_temp_files yes index yes overwrite_report yes topsites_num 100 topsites_sort_order BYTES D report_type topusers topsites sites_users users_sites date_time denied auth_failures site_user_time_date downloads download_suffix "zip,arj,bzip,gz,ace,doc,iso,adt,bin,cab,com,dot,drv$,lha,lzh,mdb,mso,ppt,rtf,src,shs,sys,exe,dll,m p3,avi,mpg,mpeg" ## FIM DO ARQUIVO SARG.CONF ## Aviso: Voc pode alterar o campo "output_dir /var/www/html/relatorios" conforme sua necessidade.

rc.local + cron e ConclusoMuito bem. Firewall configurado. Squid configurado e Sarg configurado. Agora incluiremos no rc.local o que queremos que inicie com o sistema: # joe /etc/rc.local ## Inicio do arquivo rc.local ## echo "Iniciando Firewall" /etc/rc.d/rc.firewall echo "Iniciando Proxy" /etc/init.d/squid start echo "Iniciando apache"

/etc/init.d/httpd/start ## Fim do arquivo rc.local ## Com isso, quando voc reiniciar o seu servidor, tudo iniciar com ele. Vamos agra configurar para que o Sarg gere relatrios diariamente dos sites acessados. V em: # cd /etc/cron.daily # joe sarg #!/bin/bash HOJE=$(date --date "1 day ago" +%d/%m/%Y) /usr/local/bin/sarg -f /usr/local/etc/sarg.conf -d $HOJE-$HOJE exit 0

Com tudo iniciado, seu servidor reiniciado, voc pode visualizar os relatrios acessando:

http://127.0.0.1/relatorios