Você está na página 1de 22

Servidor Debian http://www.vivaolinux.com.

br/artigo/Instalando-servidor-Debian-Memento/

Instalando servidor Debian - Memento

taylor 16/11/2006 Partindo da prtica resolvi registrar cada passo para ter um servidor Debian funcionando: instalao, atualizao, rede, bind (DNS), DHCP atribuindo IP associado ao MAC, iptables no compartilhar de internet com proxy transparente, Squid para controle de acesso e o Sarg para visualizao dos log do Squid. Tudo comentado e traduzido, inclusive os .conf. Por: Taylor Lopes [ Hits: 192038 ] Conceito: 10.0 +

Instalando servidor Debian - Memento Autor: TAYLOR LOPES - taylor - at - pop.com.br Atualizao: 11 Out 2006 Verso: debian-31r2-i386-netinst.iso AVISO: Isto no um tutorial, mas roteiro das aes realizadas na instalao de um servidor Debian (neste caso, o Debian netinst). como uma "receita de bolo": saboroso pra uns, solado pra outros... ndice: 1. 2. 3. 4. 5. 6. 7. Instalao do Debian; Atualizao do Debian; Instalao de pacotes adicionais necessrios; Estrutura geral da rede (em questo); Polticas adotadas; Configurao da rede do servidor; Configurao do Bind9 - Servidor de nomes (DNS);

8. Configurao do DHCP - Servidor de IP (associado ao MAC); 9. Configurao do Iptables - Firewall; 10.Configurao do Squid (Proxy) - Controle de Acessos; 11.NO ABORDADO: Configurao do Apache - Servidor Web; 12.Configurao do Sarg - Gerador de relatrios para o Squid; 13.NO ABORDADO: Configurao do Samba - Compartilhador Linux/Windows.

Pginas do artigo 1. Introduo 2. Instale o Debian no computador que ser o servidor 3. Estrutura geral da rede 4. Configure as placas de redes do servidor (deve haver duas) 5. Configure o Bind9 - Servidor de nomes (DNS) e DHCP 6. Iptables - Firewall 7. Configure o Squid (Proxy) - Controle de acessos 8. Sarg - Gerador de relatrios para o Squid

Instale o Debian no computador que ser o servidor


Faa download do Debian netinst em:

http://www.debian.org/CD/netinst/index.pt.html

OBS: Debian netinst contm apenas a quantidade mnima de software para comear a instalao e obter os outros pacotes atravs da Internet. Caso queira, use uma verso mais completa: Verso oficial mais recente das imagens de CD da distribuio estvel: 3.1 rev3. Faa download em:

http://www.debian.org/CD/http-ftp/

Durante a instalao, atribua o nome ao servidor. Exemplo: servidor O superusurio "root" ser criado.

Crie tambm o usurio comum "admin" para uso do sistema sem compromet-lo. Ao terminar, logue-se como root para proceder as configuraes restantes. Faa atualizao do Debian: # apt-get update Instale mais alguns pacotes necessrios (caso ainda no tenha): # apt-get install squid (Proxy - Cache e controle de acesso a internet) # apt-get install samba (Integra sistema de arquivos Linux x Windows) # apt-get install bind9 (DNS - Servidor de nomes) # apt-get install apache (Servidor Web) # apt-get install php4 (Linguagem de programao para fazer websites) # apt-get install dhcp3-server (Servidor de IP fixo/dinmico) # apt-get install ssh (Acesso remoto) # apt-get install sarg (Gerador de Relatrios do Squid) OBS: 1) Caso a verso a verso Debian no venha com interface grfica, como o caso do netinst, instale-a: # apt-get update # apt-get install x-window-system xserver-xfree86 gnome-core gdm Caso aps a instalao e configurao houver problemas com a interface grfica, reconfigure-a: # dpkg-reconfigure xserver-xfree86 2) Caso precise, baixe o mozilla firefox:

# apt-get update # apt-get install mozilla-firefox-locale-pt-br << Pgina anterior Prxima pgina >>

Estrutura geral da rede


+------------------+ | | | Internet | | | +------------------+ | +---------+--------+ +------------------+ +------------------+ | Roteador | | pc-1 | | pc-2 | | 192.168.0.1 | | 10.0.0.2 | | 10.0.0.3 | | (ou outro IP) | | | | | +---------+--------+ +---------+--------+ +------------------+ | | / +---------+--------+ +---------+--------+` +------------------+ | Servidor | | | | pc-n | | eth0 192.168.0.2 +--+ Hub/Switch +--+ 10.0.0.n | | eth1 10.0.0.1 | | | | | +------------------+ +------------------+ +------------------+

Polticas adotadas
Polticas de Acesso a Internet (AI): 01) Definir AI somente para PCs da rede interna (Intranet) 02) Definir AI para todos PCs, fora do horrio de expediente 03) Proibir AI de determinados PCs no horrio de expediente 04) Definir lista de PC(s) sem AI (bloqueados) 24h/dia 05) Proibir uso do Internet Explorer (Estimular Firefox) 06) Definir PC(s) com permisso para uso do Internet Explorer 07) Proibir formatos de vdeos, udio e arquivos de risco 08) Proibir palavras e sites imprprios/imoral 09) Proibir downloads com mais de 5 MB 10) Definir PC(s) (admin) com privilegio total de AI OBS: O controle dos computadores (PC) ser feito pelo seu endereo fsico (MAC) e no pelo IP.

Polticas do administrador da rede: 01) Utilizar DHCP para atribuir IP fixo associado ao MAC da placa de rede 02) Fazer o controle de acesso por endereo MAC (placa de rede) e no por IP 03) Definir PCs autorizados ao AI (por endereo MAC) 04) Analisar Log de acesso com SARG 05) Definir proxy transparente no iptables e Squid 06) NO IMPLEMENTADO: Implementar servidor Web Apache e disponibilizar web site (intranet) 07) NO IMPLEMENTADO: Criar seo de downloads no web site para diminuir o trafego em rede 08) NO IMPLEMENTADO: Divulgar polticas de acesso a internet no web site

Configure as placas de redes do servidor (deve haver duas)


Defina um IP fixo e mscara de rede para as duas placas de redes: Fica convencionado:

eth0 (internet) - inet 192.168.0.2 masca 255.255.255.0 (Recebe a Internet) eth1 (intranet) - inet 10.0.0.1 masc 255.0.0.0

Perceba que, pelo exemplo acima, os computadores da rede devero ter IP fixo 10.0.0.2, 10.0.0.3, 10.0.0.n. No nosso caso em particular, tais IPs fixos sero atribudos pelo DHCP, sem a necessidade de configurao no cliente. Abra o arquivo /etc/network/interfaces e atualize para: # /etc/network/interfaces # # Interface de rede local - loopback #*********************************** auto lo iface lo inet loopback

# # Primeira placa de rede - Internet #********************************** # auto eth0 # iface eth0 inet dhcp auto eth0 iface eth0 inet static address 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255 network 192.168.0.0 gateway 192.168.0.1 # IP do roteador # # Segunda placa de rede - Intranet #********************************* auto eth1 iface eth1 inet static address 10.0.0.1 netmask 255.0.0.0 broadcast 10.255.255.255 network 10.0.0.0 Reinicie a rede: # /etc/init.d/networking restart

Configure o Bind9 - Servidor de nomes (DNS) e DHCP


Abra o arquivo /etc/resolv.conf e atualize para: # /etc/resolv.conf # search localdomain nameserver 10.0.0.1 nameserver 192.168.0.1 nameserver 200.195.192.133

Reinicie o servio: # /etc/init.d/bind9 restart

Configure o DHCP - Servidor de IP (associado ao MAC)


Para atribuir IP fixo sem configur-lo no cliente, utilize o DHCP com associao ao endereo MAC da placa de rede. Abra o arquivo /etc/dhcp3/dhcpd.conf e atualize para: # /etc/dhcp3/dhcpd.conf # # Configuraes gerais #********************* # INTERFACES="eth1"; ddns-update-style none; default-lease-time 600; max-lease-time 7200; authoritative; subnet 10.0.0.0 netmask 255.0.0.0 { range 10.0.0.5 10.0.0.50; option routers 10.0.0.1; option domain-name-servers 200.195.192.133; option broadcast-address 10.0.0.255; } host pc-1 { hardware ethernet 00:C0:9F:E5:9B:18; fixed-address 10.0.0.2; } host pc-2 {

hardware ethernet 00:00:86:3B:AD:96; fixed-address 10.0.0.3; } Reinicie o servio: # /etc/init.d/dhcp3-server restart

Iptables - Firewall
Utilizaremos o iptables para: 1) Proxy Transparente - Redirecionar o fluxo da porta 80 (http) para a porta 3128 (squid); 2) Compartilhar a Internet; Para isto, crie o arquivo que conter as regras: # touch /etc/init.d/iptables.conf # chmod 755 /etc/init.d/iptables.conf Abra o arquivo /etc/etc/init.d/iptables.conf e atualize para: #!/bin/bash # # /etc/etc/init.d/iptables.conf # # Limpa e inicializa os modulos #****************************** # iptables -F iptables -t nat -F iptables -t mangle -F modprobe iptable_nat #

# Proxy transparente (Redireciona para o squid) - eth1 -> Placa de rede da intranet #******************************************************** # iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128 # # Compartilha Internet - eth0 -> Placa de rede da internet #******************************************************** # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward Coloque o iptables.conf para rodar na inicializao: # cd /etc/rc2.d # ln -s /etc/init.d/iptables.conf /etc/rc2.d/S99iptables.conf Inicie o servio: # /etc/init.d/iptables.conf

Configure o Squid (Proxy) - Controle de acessos


Abra o arquivo /etc/squid/squid.conf e atualize para: # Autor: TAYLOR LOPES - taylor@pop.com.br # Arquivo: /etc/squid/squid.conf # # Polticas de Acesso a Internet (AI) adotadas #********************************************* # # 01. Definir AI somente para PCs da rede interna (Intranet) # 02. Definir AI para todos PCs, fora do horrio de expediente # 03. Proibir AI de determinados PCs no horrio de expediente

# 04. Definir lista de PC(s) sem AI (bloqueados) 24h/dia # 05. Proibir uso do Internet Explorer (Estimular Firefox) # 06. Definir PC(s) com permisso para uso do Internet Explorer # 07. Proibir formatos de vdeos, udio e arquivos de risco # 08. Proibir palavras e sites imprprios/imoral # 09. Proibir downloads com mais de 5 MB # 10. Definir PC(s) (admin) com privilegio total de AI # # OBS: O controle dos computadores (PC) feito pelo seu # endereo fsico (MAC) e no pelo IP. # # Configurao Geral #******************* # http_port 3128 cache_mem 32 MB cache_dir ufs /var/spool/squid 100 16 256 cache_access_log /var/log/squid/access.log cache_log /var/log/squid/cache.log cache_store_log /var/log/squid/store.log pid_filename /var/run/squid.pid error_directory /usr/share/squid/errors/Portuguese emulate_httpd_log on visible_hostname servidor.4pef cache_mgr taylor@pop.com.br # # Proxy Transparente #******************* # httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on # # acl - Recomendadas #*******************

# acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0/8 acl SSL_ports port 443 563 # https, snews acl SSL_ports port 873 # rsync acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews 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 Safe_ports port 631 # cups acl Safe_ports port 873 # rsync acl Safe_ports port 901 # SWAT acl purge method PURGE acl CONNECT method CONNECT # # acl - Personalizadas #********************* # # *** Define portas liberadas acl Safe_ports port 3050 # Interbase/Firebird acl Safe_ports port 23000 # Serpro acl Safe_ports port 13352 # SIRF acl Safe_ports port 500 # FAP Digital # # *** Define a rede interna (Intranet) acl intranet src 10.0.0.0/255.0.0.0 # # *** Define PC(s) com privilegio total - CUIDADO!

acl admin arp "/etc/squid/list/admin.txt" # # *** Define a lista de PC(s) autorizados ao acesso a Internet acl internet arp "/etc/squid/list/internet.txt" # # *** Define a lista de sites imprprios acl site dstdomain -i "/etc/squid/list/site.txt" # # *** Define a lista de palavras imprprias acl palavra url_regex -i "/etc/squid/list/palavra.txt" # # *** Define os formatos de vdeo, udio e outros de risco acl video urlpath_regex .wma$ .asf$ .mov$ mpg$ .mpeg$ .avi$ acl audio urlpath_regex .mp3$ .wav$ .mid$ acl risco urlpath_regex .exe$ .pps$ .com$ .bat$ .scr$ # # *** Define o browser Internet Explorer acl ie_browser browser ^Mozilla/4.0 .compatible; MSIE # # *** Define PC(s) autorizados a usar o Internet Explorer acl ie_usuario arp "/etc/squid/list/browser.txt" # # *** Define PC(s) sem acesso a Internet (bloqueados) 24h/dia acl bloqueado arp "/etc/squid/list/bloqueado.txt" # # *** Define o horrio do expediente acl exp1_seg-qui time MTWH 08:00-12:00 acl exp2_seg-qui time MTWH 13:30-17:00 acl exp1_sex time F 08:00-12:00 # # http_access - Recomendadas #*************************** # 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 # # http_access - Personalizadas #***************************** # # *** Libera dowloads de ate 5 MB reply_body_max_size 5242880 allow all !admin # # *** Nega sites improprios http_access deny site !admin # # *** Nega palavras imprprias http_access deny palavra !admin # # *** Nega os formatos de vdeo, udio e outros de risco http_access deny video !admin http_access deny audio !admin http_access deny risco !admin # # *** Nega o Internet Explorer http_access deny ie_browser !ie_usuario !admin # # *** Nega Internet no expediente para quem no esta na lista http_access deny !internet !admin exp1_seg-qui http_access deny !internet !admin exp2_seg-qui http_access deny !internet !admin exp1_sex # # *** Nega PC(s) sem acesso a internet (bloqueados) http_access deny bloqueado # # Permite acesso da rede interna (Intranet) http_access allow intranet #

# *** Nega tudo que no foi liberado ou negado http_access deny all Crie os diretrios/arquivos de controle: # mkdir /etc/squid/list # touch /etc/squid/list/admin.txt # touch /etc/squid/list/bloqueado.txt # touch /etc/squid/list/browser.txt # touch /etc/squid/list/internet.txt # touch /etc/squid/list/palavra.txt # touch /etc/squid/list/site.txt # chmod 755 /etc/etc/squid/list # chmod 755 /etc/squid/list/admin.txt # chmod 755 /etc/squid/list/bloqueado.txt # chmod 755 /etc/squid/list/browser.txt # chmod 755 /etc/squid/list/internet.txt # chmod 755 /etc/squid/list/palavra.txt # chmod 755 /etc/squid/list/site.txt Exemplo do contedo dos arquivos de controle: # Arquivo /etc/squid/list/admin.txt # Lista de PCs com MAC de privilegio total 00:00:00:00:00:00 # Default - No remova! 00:C0:9F:E3:9B:21 # pc-1 # Arquivo /etc/squid/list/bloqueado.txt # Lista de PCs com MAC bloqueados a Internet 24h/dia 00:00:00:00:00:00 # Default - No remova! 00:C0:86:B3:AD:88 # pc-4 02:D0:F6:C4:F7:32 # pc-7 00:A0:A1:B3:21:19 # pc-8 # Arquivo /etc/squid/list/browser.txt # Lista de PCs com MAC autorizados usar Internet Explorer

00:00:00:00:00:00 # Default - No remova! 00:A0:A1:B3:21:19 # pc-8 # Arquivo /etc/squid/list/internet.txt # Lista de PCs com MAC liberados a Internet 00:00:00:00:00:00 # Default - No remova! 00:C0:9F:E3:9B:21 # pc-1 00:DD:31:F2:C1:96 # pc-5 # Arquivo /etc/squid/list/palavra.txt # Lista de palavra imprprios proibidos default.default # Default - No remova! sexo sexy porn # Arquivo /etc/squid/list/site.txt # Lista de sites imprprios proibidos default.default # Default - Nao remova! playboy.abril.com.br astalavista.com Reinicie o squid: # squid -k reconfigure (atualiza sem parar o servio) Ou: # /etc/init.d/squid restart

Sarg - Gerador de relatrios para o Squid


NO ABORDADO: Configure o Apache - Servidor Web

Basicamente aps a instalao, o Apache estar funcionando normalmente. Em breve maiores informaes...

Configure o Sarg - Gerador de relatrios para o squid


Abra o arquivo /etc/squid/sarg.conf e atualize para: # Traducao: TAYLOR LOPES - taylor@pop.com.br # OBS: Algumas TAGs foram omitidas! # /etc/squid/sarg.conf # # *** Idioma language Portuguese # # *** Arquivo de log a ser lido para gerar relatrio access_log /var/log/squid/access.log # #*** Usar Grfico - yes | no graphs yes # # *** Ttulo da pagina HTML title "Relatorio de uso da Internet" # # *** Fonte da pagina HTML font_face Tahoma,Verdana,Arial # # *** Nome do diretorio temporrio dos arquivos em trabalho # sarg -w dir temporary_dir /tmp # # *** Diretrio onde sero salvos os relatrios # sarg -o dir output_dir /var/www/squid-reports # # *** Converte IP em DNS (nome) - yes | no # sarg -n

resolve_ip # # *** Usa IP ao inves de userid nos relatrios - yes | no # sarg -p user_ip no # # *** Ordena - normal | reverse # Campos permitidos: USER | CONNECT | BYTES | TIME topuser_sort_field BYTES reverse # # *** Usuarios contidos no sarg.users So excludos do relatrio exclude_users /etc/squid/sarg.users # # *** Exclui host, domnios ou subredes do relatrio # Ex: 192.168.10.10 - exclui ip apenas # 192.168.10.0 - exclui toda classe C # s1.acme.foo - exclui hostname apenas # acme.foo - exclui tod domnio exclude_hosts /etc/squid/sarg.hosts # # *** Formata a data do relatrio # e (European=dd/mm/yy) # u (American=mm/dd/yy) # w (Weekly=yy.ww) date_format e # # *** Remove relatrios antigos automaticamente # 0 - sem limites. lastlog 0 # # *** Remove os arquivos temerrios remove_temp_files yes # # *** Gera o index.html - yes | no | only # only - gera apenas um unico index.html principal index yes

# # *** Sobrescrever relatrio - yes | no overwrite_report yes # # *** O que fazer com registros sem identificao no access.log # ignore - Ignora os registros # ip - Usa o IP # everybody - Usa o texto "everybody" records_without_userid ip # # *** Usa vrgula ao invs de ponto no | yes use_comma yes # # *** Comando para enviar relatrio via SMTP - mail|mailx mail_utility mailx # # *** Quantidade de sites do relatrio topsites topsites_num 100 # # *** Ordena os topsites - CONNECT|BYTES A|D # Onde A=Crescente, D=Descendente topsites_sort_order CONNECT D # # *** Ordena o index.html - A | D # Onde A=Crescente, D=Descendente index_sort_order D # # *** Ignora registros com alguns cdigos # Ex: NONE/400 exclude_codes /etc/squid/sarg.exclude_codes # # *** Mximo de tempo decorrido (milliseconds) # Use 0 para nao checar max_elapsed 28800000 # # *** O que os relatorios geram:

# topsites - exibe o site, conexao e bytes # sites_users - exibe que usuario esteve num site # users_sites - exite site acessados pelo usuario # date_time - exibe a quatidade de bytese num dia/h # denied - exibe todos os sites negados # auth_failures - exibe as falhas nas autenticacoes # site_user_time_date - exibe sites, datas, tempo e bytes # Ex.: report_type topsites denied # report_type topsites sites_users users_sites date_time denied auth_failures site_user_time_date # # *** Troca o IP ou userid pelo nome do usuario no relatorio # Ex: # SirIsaac Isaac Newton # vinci Leonardo da Vinci # 192.168.10.1 Karol Wojtyla # Cada linha precisa terminar com ' ' (enter) usertab /etc/squid/sarg.usertab # # *** Exibe a URL longa ou so o site - yes | no long_url no # # *** Data/Hora ou Tempo decorrido - bytes | elapsed date_time_by bytes # # *** Padroes de multilinguagem # Voce pode usar os seguintes caracteres: # Latin1 - West European # Latin2 - East European # Latin3 - South European # Latin4 - North European # Cyrillic # Arabic # Greek # Hebrew

# Latin5 - Turkish # Latin6 # Windows-1251 # Koi8-r charset Latin1 # # *** Gera relatorios apenas dos usuarios listados # Ex: include_users "user1:user2:...:usern" #include_users none # # *** Gera relatorio ignorando uma lista de string # Ex: exclude_string "string1:string2:...:stringn" #exclude_string none # # *** Exibe mensagem de sussesso do relatorio gerado-yes|no show_successful_message no # # *** Exibe a leitura de algumas estatisticas show_read_statistics no # # *** Quais campos devem ser do relatorio Topuser topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHEOUT USED_TIME MILISEC %TIME TOTAL AVERAGE # # *** Quais campos devem ser do relatorio User user_report_fields CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE # # *** Quantidade de usuarios do relatorio Topsites # 0 = sem limites topuser_num 0 # # *** Gera relatorio em formato de lista ou tabela-list|table site_user_time_date_type table # # *** Salva o resultado do relatorio em um arquivo

#datafile /tmp/p8 # # *** Usa um caracter separador dos campos no arquivo #datafile_delimiter ";" # # *** Quais campos de dados devem ter o arquivo # Ex: datafile_fields all ou user # Campos permitidos: # user;date;time;url;connect;bytes; # in_cache;out_cache;elapsed #datafile_fields #user;date;time;url;connect;bytes;in_cache;out_cache;elapsed # # *** Dias da semana levados em conta (Domingo->0,Sabado->6) # Ex: weekdays 1-3,5 #weekdays 0-6 # # *** Horas levadas conta # Ex: hours 7-12,14,16,18-20 #hours 0-23 # # *** Gera um relatorio para o log do SquidGuard # Ex: squidguard_conf /usr/local/squidGuard/squidGuard.conf #squidguard_conf none # # *** Exibe informacoes do sarg e site no relatorio - yes|no #show_sarg_info yes # # *** Exibe logotipo do sarge - yes|no show_sarg_logo yes # # *** Onde esta seus documentos Web #www_document_root /var/www # # *** Sufixo de arquivos considerados como dowloads no # relatorio de downloads. Use 'none' para desabilitar

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, mp3, avi, mpg, mpeg" Para gerar relatrios, v ao terminal e digite: # sarg OBS: Abra com o browser o arquivo squid-reports gerado em /var/www/ ou abra o browser (firefox) e digite http://localhost/squid-reports. IMPORTANTE: Seu servidor Apache deve estar funcionado! NO ABORDADO: Configurao do Samba - Compartilhador Linux/Windows Em breve maiores informaes...