Instalação de um servidor debian

24
INSTALÇÃO DE UM SERVIDOR

description

Otima documentação, para inplementação de serviços no debian

Transcript of Instalação de um servidor debian

INSTALÇÃO DE UM SERVIDOR

Índice: 1. Instalação do Debian; 2. Atualização do Debian; 3. Instalação de pacotes adicionais necessários; 4. Estrutura geral da rede (em questão); 5. Políticas adotadas; 6. Configuração da rede do servidor; 7. Configuração do Bind9 - Servidor de nomes (DNS); 8. Configuração do DHCP - Servidor de IP (associado ao MAC); 9. Configuração do Iptables - Firewall; 10.Configuração do Squid (Proxy) - Controle de Acessos; 11.NÃO ABORDADO: Configuração do Apache - Servidor Web; 12.Configuração do Sarg - Gerador de relatórios para o Squid; 13.NÃO ABORDADO: Configuração do Samba - Compartilhador Linux/Windows.

㼡 Instale o Debian no computador que será o servidor.

Faça download do Debian netinst em: http://www.debian.org/CD/netinst/index.pt.html

OBS: Debian netinst contém apenas a quantidade mínima de software para começar a instalação e obter os outros pacotes através da Internet.

Caso queira, use uma versão mais completa:

Versão oficial mais recente das imagens de CD da distribuição estável: 3.1 rev3. Faça download em:

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

Durante a instalação, atribua o nome ao servidor. Exemplo: servidor

O superusuário "root" será criado.

Crie também o usuário comum "admin" para uso do sistema sem comprometê-lo.

Ao terminar, logue-se como root para proceder as configurações restantes.

Faça atualização do Debian:

# apt-get update

Instale mais alguns pacotes necessários (caso ainda não 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 programação para fazer websites)# apt-get install dhcp3-server (Servidor de IP fixo/dinâmico)# apt-get install ssh (Acesso remoto)# apt-get install sarg (Gerador de Relatórios do Squid)

OBS:

1) Caso a versão a versão Debian não venha com interface gráfica, como é o caso do netinst, instale-a:

# apt-get update# apt-get install x-window-system xserver-xfree86 gnome-core gdm

Caso após a instalação e configuração houver problemas com a interface gráfica, reconfigure-a:

# dpkg-reconfigure xserver-xfree86

2) Caso precise, baixe o mozilla firefox:

# apt-get update# apt-get install mozilla-firefox-locale-pt-br

㼡 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 | | | | | +------------------+ +------------------+ +------------------+

Políticas adotadas

Políticas de Acesso a Internet (AI):

01) Definir AI somente para PCs da rede interna (Intranet)02) Definir AI para todos PCs, fora do horário de expediente03) Proibir AI de determinados PCs no horário de expediente04) Definir lista de PC(s) sem AI (bloqueados) 24h/dia05) Proibir uso do Internet Explorer (Estimular Firefox)06) Definir PC(s) com permissão para uso do Internet Explorer07) Proibir formatos de vídeos, áudio e arquivos de risco08) Proibir palavras e sites impróprios/imoral09) Proibir downloads com mais de 5 MB10) Definir PC(s) (admin) com privilegio total de AI

OBS: O controle dos computadores (PC) será feito pelo seu endereço físico (MAC) e não pelo IP.

Políticas 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 endereço MAC (placa de rede) e não por IP

03) Definir PCs autorizados ao AI (por endereço MAC)

04) Analisar Log de acesso com SARG

05) Definir proxy transparente no iptables e Squid

06) NÃO IMPLEMENTADO: Implementar servidor Web Apache e disponibilizar web site (intranet)

07) NÃO IMPLEMENTADO: Criar seção de downloads no web site para diminuir o trafego em rede

08) NÃO IMPLEMENTADO: Divulgar políticas de acesso a internet no web site

㼡 Configure as placas de redes do servidor.

Reinicie a rede:

# /etc/init.d/networking restart

Defina um IP fixo e máscara 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 deverão ter IP fixo 10.0.0.2, 10.0.0.3, 10.0.0.n. No nosso caso em particular, tais IPs fixos serão atribuídos pelo DHCP, sem a necessidade de configuração no cliente.

Abra o arquivo /etc/network/interfaces e atualize para:

# /etc/network/interfaces## Interface de rede local - loopback#***********************************auto loiface lo inet loopback ## Primeira placa de rede - Internet#**********************************# auto eth0 # iface eth0 inet dhcpauto eth0iface eth0 inet staticaddress 192.168.0.2netmask 255.255.255.0broadcast 192.168.0.255network 192.168.0.0gateway 192.168.0.1 # IP do roteador

## Segunda placa de rede - Intranet#*********************************auto eth1iface eth1 inet staticaddress 10.0.0.1netmask 255.0.0.0broadcast 10.255.255.255network 10.0.0.0

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

Abra o arquivo /etc/resolv.conf e atualize para:

# /etc/resolv.conf#search localdomainnameserver 10.0.0.1nameserver 192.168.0.1nameserver 200.195.192.133

Reinicie o serviço:

# /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 associação ao endereço MAC da placa de rede.Abra o arquivo /etc/dhcp3/dhcpd.conf e atualize para:

# /etc/dhcp3/dhcpd.conf ## Configurações 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 serviço:

# /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 nano /etc/etc/init.d/iptables.conf e atualize para:

#!/bin/bash## /etc/etc/init.d/iptables.conf ## Limpa e inicializa os modulos#******************************#iptables -Fiptables -t nat -Fiptables -t mangle -Fmodprobe 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 MASQUERADEecho 1 > /proc/sys/net/ipv4/ip_forward

Coloque o iptables.conf para rodar na inicialização:

# cd /etc/rc2.d# ln -s /etc/init.d/iptables.conf /etc/rc2.d/S99iptables.conf

Inicie o serviço:

# /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 - [email protected]# Arquivo: /etc/squid/squid.conf## Políticas de Acesso a Internet (AI) adotadas#*********************************************## 01. Definir AI somente para PCs da rede interna (Intranet)# 02. Definir AI para todos PCs, fora do horário de expediente# 03. Proibir AI de determinados PCs no horário 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 permissão para uso do Internet Explorer# 07. Proibir formatos de vídeos, áudio e arquivos de risco# 08. Proibir palavras e sites impróprios/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# endereço físico (MAC) e não pelo IP.## Configuração Geral#*******************#http_port 3128cache_mem 32 MBcache_dir ufs /var/spool/squid 100 16 256cache_access_log /var/log/squid/access.logcache_log /var/log/squid/cache.logcache_store_log /var/log/squid/store.logpid_filename /var/run/squid.piderror_directory /usr/share/squid/errors/Portugueseemulate_httpd_log onvisible_hostname servidor.4pefcache_mgr [email protected]## Proxy Transparente#*******************#httpd_accel_host virtualhttpd_accel_port 80httpd_accel_with_proxy on

httpd_accel_uses_host_header on## acl - Recomendadas#*******************#acl all src 0.0.0.0/0.0.0.0acl manager proto cache_objectacl localhost src 127.0.0.1/255.255.255.255acl to_localhost dst 127.0.0.0/8acl SSL_ports port 443 563 # https, snewsacl SSL_ports port 873 # rsyncacl Safe_ports port 80 # httpacl Safe_ports port 21 # ftpacl Safe_ports port 443 563 # https, snewsacl Safe_ports port 70 # gopheracl Safe_ports port 210 # waisacl Safe_ports port 1025-65535 # unregistered portsacl Safe_ports port 280 # http-mgmtacl Safe_ports port 488 # gss-httpacl Safe_ports port 591 # filemakeracl Safe_ports port 777 # multiling httpacl Safe_ports port 631 # cupsacl Safe_ports port 873 # rsyncacl Safe_ports port 901 # SWATacl purge method PURGEacl CONNECT method CONNECT## acl - Personalizadas#*********************## *** Define portas liberadasacl Safe_ports port 3050 # Interbase/Firebirdacl Safe_ports port 23000 # Serproacl Safe_ports port 13352 # SIRFacl 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 Internetacl internet arp "/etc/squid/list/internet.txt"## *** Define a lista de sites imprópriosacl site dstdomain -i "/etc/squid/list/site.txt"

## *** Define a lista de palavras imprópriasacl palavra url_regex -i "/etc/squid/list/palavra.txt"## *** Define os formatos de vídeo, áudio e outros de riscoacl 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 Exploreracl ie_browser browser ^Mozilla/4.0 .compatible; MSIE## *** Define PC(s) autorizados a usar o Internet Exploreracl ie_usuario arp "/etc/squid/list/browser.txt"## *** Define PC(s) sem acesso a Internet (bloqueados) 24h/diaacl bloqueado arp "/etc/squid/list/bloqueado.txt"## *** Define o horário do expedienteacl exp1_seg-qui time MTWH 08:00-12:00acl exp2_seg-qui time MTWH 13:30-17:00acl exp1_sex time F 08:00-12:00## http_access - Recomendadas#***************************#http_access allow manager localhosthttp_access deny managerhttp_access allow purge localhosthttp_access deny purgehttp_access deny !Safe_portshttp_access deny CONNECT !SSL_ports## http_access - Personalizadas#*****************************## *** Libera dowloads de ate 5 MBreply_body_max_size 5242880 allow all !admin## *** Nega sites improprioshttp_access deny site !admin## *** Nega palavras imprópriashttp_access deny palavra !admin## *** Nega os formatos de vídeo, áudio e outros de riscohttp_access deny video !admin

http_access deny audio !adminhttp_access deny risco !admin## *** Nega o Internet Explorerhttp_access deny ie_browser !ie_usuario !admin## *** Nega Internet no expediente para quem não esta na listahttp_access deny !internet !admin exp1_seg-quihttp_access deny !internet !admin exp2_seg-quihttp_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 não foi liberado ou negadohttp_access deny all

Crie os diretórios/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 conteúdo dos arquivos de controle:

# Arquivo /etc/squid/list/admin.txt# Lista de PCs com MAC de privilegio total00:00:00:00:00:00 # Default - Não 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 - Não remova!00:C0:86:B3:AD:88 # pc-402:D0:F6:C4:F7:32 # pc-700:A0:A1:B3:21:19 # pc-8

# Arquivo /etc/squid/list/browser.txt# Lista de PCs com MAC autorizados usar Internet Explorer00:00:00:00:00:00 # Default - Não remova!00:A0:A1:B3:21:19 # pc-8

# Arquivo /etc/squid/list/internet.txt# Lista de PCs com MAC liberados a Internet00:00:00:00:00:00 # Default - Não remova!00:C0:9F:E3:9B:21 # pc-100:DD:31:F2:C1:96 # pc-5

# Arquivo /etc/squid/list/palavra.txt# Lista de palavra impróprios proibidosdefault.default # Default - Não remova!sexosexyporn

# Arquivo /etc/squid/list/site.txt# Lista de sites impróprios proibidosdefault.default # Default - Nao remova!playboy.abril.com.brastalavista.com

Reinicie o squid:

# squid -k reconfigure (atualiza sem parar o serviço)

Ou:

# /etc/init.d/squid restart

㼡 Sarg - Gerador de relatórios para o Squid.

NÃO ABORDADO: Configure o Apache - Servidor Web Basicamente após a instalação, o Apache estará funcionando normalmente. Em breve maiores informações...

Configure o Sarg - Gerador de relatórios para o squid Abra o arquivo /etc/squid/sarg.conf e atualize para:

# Traducao: TAYLOR LOPES - [email protected]# OBS: Algumas TAGs foram omitidas!# /etc/squid/sarg.conf## *** Idiomalanguage Portuguese## *** Arquivo de log a ser lido para gerar relatórioaccess_log /var/log/squid/access.log##*** Usar Gráfico - yes | nographs yes## *** Título da pagina HTMLtitle "Relatorio de uso da Internet"## *** Fonte da pagina HTMLfont_face Tahoma,Verdana,Arial## *** Nome do diretorio temporário dos arquivos em trabalho# sarg -w dirtemporary_dir /tmp## *** Diretório onde serão salvos os relatórios# sarg -o diroutput_dir /var/www/squid-reports## *** Converte IP em DNS (nome) - yes | no

# sarg -nresolve_ip## *** Usa IP ao inves de userid nos relatórios - yes | no# sarg -puser_ip no## *** Ordena - normal | reverse# Campos permitidos: USER | CONNECT | BYTES | TIMEtopuser_sort_field BYTES reverse## *** Usuarios contidos no sarg.users São excluídos do relatórioexclude_users /etc/squid/sarg.users## *** Exclui host, domínios ou subredes do relatório# 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 domínioexclude_hosts /etc/squid/sarg.hosts## *** Formata a data do relatório# e (European=dd/mm/yy)# u (American=mm/dd/yy)# w (Weekly=yy.ww)date_format e## *** Remove relatórios antigos automaticamente# 0 - sem limites.lastlog 0## *** Remove os arquivos temeráriosremove_temp_files yes## *** Gera o index.html - yes | no | only# only - gera apenas um unico index.html principalindex yes

## *** Sobrescrever relatório - yes | nooverwrite_report yes## *** O que fazer com registros sem identificação no access.log# ignore - Ignora os registros# ip - Usa o IP# everybody - Usa o texto "everybody"records_without_userid ip## *** Usa vírgula ao invés de ponto no | yesuse_comma yes## *** Comando para enviar relatório via SMTP - mail|mailxmail_utility mailx## *** Quantidade de sites do relatório topsitestopsites_num 100## *** Ordena os topsites - CONNECT|BYTES A|D# Onde A=Crescente, D=Descendentetopsites_sort_order CONNECT D## *** Ordena o index.html - A | D# Onde A=Crescente, D=Descendenteindex_sort_order D## *** Ignora registros com alguns códigos# Ex: NONE/400exclude_codes /etc/squid/sarg.exclude_codes## *** Máximo de tempo decorrido (milliseconds)# Use 0 para nao checarmax_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 | nolong_url no## *** Data/Hora ou Tempo decorrido - bytes | elapseddate_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-rcharset 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|noshow_successful_message no## *** Exibe a leitura de algumas estatisticasshow_read_statistics no## *** Quais campos devem ser do relatorio Topusertopuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE## *** Quais campos devem ser do relatorio Useruser_report_fields CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE## *** Quantidade de usuarios do relatorio Topsites# 0 = sem limitestopuser_num 0## *** Gera relatorio em formato de lista ou tabela-list|tablesite_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|noshow_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 desabilitardownload_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 relatórios, 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!

NÃO ABORDADO: Configuração do Samba - Compartilhador Linux/Windows