Escolar Documentos
Profissional Documentos
Cultura Documentos
Não utilizaremos um
firewall, apenas um script que habilitará a navegação em rede e redirecionará o trafego para o squid. Além do squid,
configuraremos um servidor dhcp, ssh para acesso remoto, apache2 para visualizarmos o relatório de trafego gerado
pelo sarg. Dessa forma, o artigo foi escrito especialmente para quem nunca configurou um servidor.
Introdução
Nossa base será o Debian. Para esta instalação, poderá baixar a versão netinst usando este link:
http://cdimage.debian.org/debian-cd/6.0.0/i386/iso-cd/debian-6.0.0-i386-netinst.iso
Atenção: Este artigo não tem por objetivo abranger a instalação ou particionamento de disco. Para isso existem
inúmeros artigos aqui mesmo no VOL com este objetivo.
Observações:
1-) Durante a instalação, na tela de “Seleção de Software” deixe marcado apenas última opção (sistema básico).
2-) Como instalamos o sistema básico o mesmo ainda não possui o pacote sudo instalado ou configurado. Todavia para
todas as configurações que faremos, use o root, ou se preferir poderá logar-se com seu usuário, e depois usar o
comando su para obter os privilégios de root.
3-) Nossa forma de conexão com a internet, será por ADSL, IP dinâmico, conectado através de pppoe. O modem possui
o IP 10.0.0.1, e distribui via DHCP endereços entre 10.0.0.100 e 10.0.0.199.
4-) Nossa rede interna será 192.168.0.0, e nosso servidor terá o IP 192.168.0.1.
5-) O objetivo do servidor DHCP é fornecer um IP às maquinas para que estas estejam em rede com as outras, porém a
navegação não estará disponível.
# lspci
...
00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)
00:08.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 40)
Usaremos agora o comando dmesg | grep eth para identificar qual modulo carregaremos para cada placa:
1
De acordo com a saída do comando, eth0 é a placa PCnet e eth1 é placa Intel. Usaremos eth0 para a conexão externa
(internet) e eth1 para a rede interna. Voce poderá inverter se preferir. Esta é a minha preferencia, mas há quem prefira
fazer o contrário.
Utilize agora o comando lsmod para ver uma lista dos módulos que estão carregados na memória, mesmo os que não
estão em uso. Baseado nessa lista carregaremos os módulos necessários:
# lsmod
...
e1000 77317 0
pcnet32 22226 0
...
# modprobe e1000
# modprobe pcnet32
# ifconfig eth0 up
# ifconfig eth1 up
Agora é só conferir se está tudo OK. Use o comando ifconfig. Caso a saída do comando não caber em sua tela,
adicione “| more” ao ifconfig (sem aspas). O símbolo antes da palavra more é a barra vertical, mais conhecida como
“pipe”.
# ifconfig
eth0 Link encap: Ethernet Endereco de HW 08:00:27:f6:c4:fb
UP BROADCASTMULTICAST MTU:1500 Metrica:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
colisoes:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Se o resultado do comando for parecido com este acima, as placas estão carregadas. Agora adicionaremos os módulos
ao arquivo modules para que o processo fique automático. Use o editor de sua preferencia. Visto que usamos a netinst
para instalar o sistema, apenas o vi e o nano estarão disponíveis. Visto que o nano é mais simples de usar, usaremos ele
no artigo todo.
# nano /etc/modules
2
alias eth0 pcnet32
alias eth1 e1000
Para salvar suas alterações, tecle CTRL + O + ENTER, para sair do editor tecle CTRL + X
O próximo passo é configurar os ips das interfaces. Vamos editar o arquivo interfaces:
# nano /etc/network/interfaces
Iremos inserir as informações necessárias abaixo da ultima linha. Dessa forma o arquivo deverá ficar assim:
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
# /etc/init.d/networking restart
Ao término do comando, execute ifconfig novamente para verificar se as alterações estão realmente OK. Se tudo
correu bem na configuração, a saída deste comando será algo do tipo:
# ifconfig
eth0 Link encap: Ethernet Endereco de HW 08:00:27:f6:c4:fb
inet end.: 10.0.0.100 Bcast:255.255.255.255 Masc:255.255.255.0
endereco inet6: fe80::a00:27ff:fef6:c4fb/64 Escopo:Link
UP BROADCASTRUNNING MULTICAST MTU:1500 Metrica:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
colisoes:0 txqueuelen:1000
RX bytes:1797 (1.7 B) TX bytes:1982 (1.9 B)
Para se certificar de que tudo está OK, reinicie o servidor. (Este passo não é necessário. Seu fim é apenas didático
quanto ao comando shutdown).
# shutdown –r now
Caso prefira fazer a reinicialização do sistema, logue-se novamente e veja se está tudo OK com o comando ifconfig.
Agora que estamos com nossas placas de rede configuradas e inicializando, vamos configurar a internet no servidor.
# ping www.vivaolinux.com.br
PING vivaolinux.com.br (174.123.53.162) 56(84) bytes of data.
64 bytes from sunshine.vivaolinux.com.br (174.123.53.162): icmp_seq=1 ttl=52 time=208 ms
64 bytes from sunshine.vivaolinux.com.br (174.123.53.162): icmp_seq=2 ttl=50 time=232 ms
64 bytes from sunshine.vivaolinux.com.br (174.123.53.162): icmp_seq=3 ttl=51 time=217 ms
64 bytes from sunshine.vivaolinux.com.br (174.123.53.162): icmp_seq=4 ttl=51 time=215 ms
64 bytes from sunshine.vivaolinux.com.br (174.123.53.162): icmp_seq=5 ttl=52 time=222 ms
64 bytes from sunshine.vivaolinux.com.br (174.123.53.162): icmp_seq=6 ttl=51 time=212 ms
64 bytes from sunshine.vivaolinux.com.br (174.123.53.162): icmp_seq=7 ttl=50 time=209 ms
Mas seguindo a sequencia de acordo com o predisposto para o artigo, precisaremos instalar o pacote pppoeconf. Para
isso insira seu cd de instalação, e execute o seguinte comando:
# pppoeconf
Prossiga a instalação, e forneça os dados solicitados. Quando o instalador perguntar se deseja iniciar a conexão na
inicialização, escolha a opção sim. Agora podemos fazer manualmente a conexão:
# pon dsl-provider
Obs.: Se precisar desconectar use o comando:
# poff
Agora vamos verificar se a conexão foi bem sucedida. Use novamente ifconfig. Voce notará que no final do comando,
apareceu uma nova interface: ppp0. O resultado do comando será mais ou menos assim:
4
# ifconfig
eth0 Link encap: Ethernet Endereco de HW 08:00:27:f6:c4:fb
inet end.: 10.0.0.100 Bcast:255.255.255.255 Masc:255.255.255.0
endereco inet6: fe80::a00:27ff:fef6:c4fb/64 Escopo:Link
UP BROADCASTRUNNING MULTICAST MTU:1500 Metrica:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
colisoes:0 txqueuelen:1000
RX bytes:1797 (1.7 B) TX bytes:1982 (1.9 B)
Agora que nossa conexão está configurada e iniciada, vamos atualizar os repositórios que usaremos para as demais
instalações.
Configurando os repositórios
Vamos editar o arquivo sources.list:
# nano /etc/apt/sources.list
Você notará que ao término da atualização, será apresentado um erro de chave pública, em uma tela como abaixo:
...
Lendo listas de pacotes... Pronto
W: Erro GPG: http://download.webmin.com sarge Release: As assinaturas a seguir não puderam ser
verificadas devido à chave pública não estar disponível: NO_PUBKEY D97A3AE911F63C51
Execute os seguintes comandos para adicionar a chave pública (Obs.: Observe que a chave requerida são os 8 últimos
dígitos da chave publica fornecida, neste caso “11F63C51”):
# apt-get update
Já temos nossos repositórios configurados e atualizados. Agora partiremos para a instalação dos serviços.
Configurando linuxlogo
*** Note que este passo é unicamente estético, não importando em nada para o funcionamento do servidor.
Para deixar uma tela mais apresentável, vamos configurar o linuxlogo. O linuxlogo exibe o logo da distribuição debian
em formato texto, substituindo a conhecida tela preta. Antes de alterarmos a tela, faremos uma copia de segurança do
arquivo original. Execute os seguintes comandos:
# cp /etc/issue /etc/issue.bak
# cp /etc/issue.linuxlogo /etc/issue
Para testar sua nova tela, use o comando exit. Após reiniciar o servidor, o mesmo ficara aguardando a digitação do user
e senha com a nova tela.
6
# exit
Configurando o apache2
Agora, vamos configurar os serviços propriamente ditos, iniciando pelo apache2.
# nano /etc/apache2/httpd.conf
ServerName localhost
# /etc/init.d/apache2 restart
Configurando o ssh
Vamos configurar agora o ssh, não permitindo que o root faça login via ssh (medida de segurança).
# nano /etc/ssh/sshd_config
PermitRootLogin yes
# /etc/init.d/ssh restart
# nano /etc/default/isc-dhcp-server
INTERFACES=”eth1”
Salve e saia, e edite o próximo arquivo:
# nano /etc/dhcp/dhcpd.conf
ddns-update-style none;
log-facility local7;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.109;
option domain-name-servers 200.204.0.10, 200.204.0.138;
option domain-name "mylan.com.br";
option routers 192.168.0.1;
option broadcast-address 255.255.255.255;
default-lease-time 600;
max-lease-time 7200;
host patrao_notebook{
7
hardware ethernet 00:11:22:33:44:55;
fixed-address 192.168.0.15;
}
}
Obs.: No campo option domain-name-servers, não esqueça de trocar o dns que eu usei pelos dnss de seu provedor.
# /etc/init.d/isc-dhcp-server restart
Configurando o sarg
Vamos instalar e configurar o sarg (gerador de relatórios). Visto que o sarg não se encontra disponível (pelo menos por
enquanto) no debian squeeze, vamos adicionar um repositório apenas para instalar a última versão do sarg, depois
removeremos ele:
# nano /etc/apt/sources.list
ou
# apt-get update
Responda “yes” e aguarde o término da instalação. Ao terminar, vamos fazer uma pequena edição no sarg.conf.
# nano /etc/sarg/sarg.conf
# nano /etc/sarg/usertab
Neste arquivo iremos atribuir nomes aos IPs. Assim fica mais fácil a identificação nos relatórios. Por exemplo, o usuário
do IP 192.168.0.20 é “fulano” e do IP 192.168.0.21 é o “cicrano”. Dessa forma nosso arquivo ficaria assim:
# Insert userid/ip address mapping information – see sarg.conf for more info
192.168.0.20 fulano
192.168.0.21 cicrano
#
Edite conforme sua necessidade. Logo após salve e saia, e retiraremos o repositório do debian sid da lista.
# nano /etc/apt/sources.list
Apague a linha:
# apt-get update
Configurando o squid
Agora configuraremos o squid, que fará o controle da navegação. Para este artigo vamos fazer uma configuração
relativamente simples. Nosso servidor oferecerá 3 níveis de acesso.
1 nível diretoria
Acesso total
2 nível gerencia
Navegação liberada, exceto os sites que estiverem na lista de bloqueio
3 nível funcionários
Navegação liberada, exceto os sites que estiverem na lista de bloqueio, e as palavras que estiverem na
lista de palavras bloqueadas, e downloads proibidos
# touch /etc/squid/downloads.allow
# touch /etc/squid/downloads.deny
# touch /etc/squid/ip.diretoria
# touch /etc/squid/ip.gerencia
# touch /etc/squid/ip.funcionarios
# touch /etc/squid/palavras.deny
# touch /etc/squid/sites.allow
# touch /etc/squid/sites.deny
# nano /etc/squid/downloads.allow
Neste arquivo colocaremos os downloads permitidos. Adapte conforme sua necessidade. Segue um exemplo abaixo:
.pps$
.ppt$
.doc$
.docx$
.xls$
.xlsx$
.jpg$
.jpeg$
.pdf$
#
Salve e saia, e agora vamos editar o arquivo que conterá os downloads proibidos:
# nano /etc/squid/downloads.deny
.exe$
.com$
.zip$
.rar$
.iso$
.ace$
.mp3$
.wmv$
.bat$
.pif$
.avi$
.asf$
.mpe$
9
.mpg$
.mpeg$
.wav$
.wma$
.rmvb$
.rm$
.ra$
#
Salve e saia, e agora editaremos o arquivo que conterá os IPs dos diretores:
# nano /etc/squid/ip.diretoria
192.168.0.10
192.168.0.11
#
# nano /etc/squid/ip.gerencia
192.168.0.20
192.168.0.21
#
Salve e saia, e por fim vamos editar o arquivo com os IPs dos funcionários:
# nano /etc/squid/ip.funcionarios
192.168.0.30
192.168.0.31
192.168.0.32
192.168.0.33
192.168.0.34
192.168.0.35
192.168.0.36
192.168.0.37
192.168.0.38
192.168.0.39
192.168.0.40
192.168.0.41
192.168.0.42
192.168.0.43
192.168.0.44
192.168.0.45
192.168.0.46
192.168.0.47
192.168.0.48
192.168.0.49
192.168.0.50
192.168.0.51
192.168.0.52
192.168.0.53
192.168.0.54
#
Salve e saia. Vamos agora editar o arquivo que conterá uma lista de palavras que serão bloqueadas. O bloqueio ocorrerá
quando alguma URL, não o conteúdo do site, contiver as palavras da lista. Você deve ter um certo cuidado ao editar esta
lista, pois algumas palavras podem gerar um bloqueio indevido. Um exemplo típico, é o bloqueio da palavra seio/seios.
Talvez isso iniba o acesso a sites impróprios, porém poderá bloquear algum site que esteja falando sobre saúde
feminina.
10
Por exemplo, o site abaixo, tem um artigo relacionado à saúde:
http://cliquesaude.com.br/tamanho-dos-seios-descubra-ate-que-idade-eles-podem-crescer-768.html
Enquanto este outro site, não tem conteúdo informativo, e sim erótico.
http://seiosfantasticos.tumblr.com/
Porém se a palavra seios estiver na lista, ambos serão bloqueados, independente de conteúdo. Em todo o caso, vamos
editar o arquivo:
# nano /etc/squid/palavras.deny
Agora insira uma palavra por linha, como no caso dos outros arquivos (altere conforme sua necessidade):
batepapo
chat
playboy
sex
strip
erotic
porno
porn
adults
hardcore
ninfeta
sexy
orgia
games
orkut
facebook
webmessenger
#
Vamos agora ao arquivo com os sites que estarão totalmente liberados, incluindo downloads.
# nano /etc/squid/sites.allow
Algumas sugestões (você poderá incluir quantos sites precisar, um por linha):
.gov.br/*
site_do_cliente.com.br/*
correios.com.br
telefonica.com
#
# nano /etc/squid/sites.deny
Poderá incluir sites pornográficos, sites de relacionamento, entre outros. Veja abaixo alguns exemplos:
.playboy.
.sexy.
.sandrinha.
.galinhas.
.pombaloca.com.br
.redsex.com.br
.redtube.
sexo.uol.com.br
.youtube.
.facebook.com
.twitter.com
.flickr.com
.orkut.
.tv
11
.games.
.video.
.megaupload.com
.rapidshare.com
.easyshare.com
#
# nano /etc/squid/squid.conf
# Configuracoes gerais
http_port 3128 transparent
visible_hostname LINUX
hierarchy_stoplist cgi-bin?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 350 MB
maximum_object_size_in_memory 100 KB
maximum_object_size 15360 KB
minimum_object_size 0 KB
ipcache_size 1024
ipcache_low 90
ipcache_high 95
cache_replacement_policy lru
memory_replacement_policy lru
logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt
access_log /var/log/squid/access.log squid
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /var/spool/squid 3000 16 256
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_swap_log /var/spool/squid/swap.log
cache_mgr vaini@itelefonica.com.br
error_directory /usr/share/squid/errors/Portuguese
coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
dns_nameservers 200.204.0.10 200.204.0.138
12
# Sites Bloqueados/Liberados
acl SitesLiberados url_regex -i "/etc/squid/sites.allow"
acl SitesBloqueados url_regex -i "/etc/squid/sites.deny"
# Grupos de Acesso
acl Diretoria src "/etc/squid/ip.diretoria"
acl Gerencia src "/etc/squid/ip.gerencia"
acl Funcionarios src "/etc/squid/ip.funcionarios"
# Fim do arquivo
# /etc/init.d/squid stop
# squid –z
# /etc/init.d/squid start
# squid –k reconfigure
Uma observação importante. Sempre que você fizer qualquer alteração relacionada ao squid, seja no squid.conf, ou em
qualquer um dos arquivos que criamos, é necessário colocar essas alterações em vigor com o comando “ squid –k
reconfigure”. Note que não é necessário restartar o squid toda vez. Fizemos isso somente na primeira vez que
executamos o squid, dessa forma, ele criou a estrutura necessária para seu bom funcionamento. Mesmo que você
incluir apenas um site na lista dos bloqueados, será necessário squid –k reconfigure.
Configurando o cron
Iremos agora configurar o cron para que o sarg gere relatórios a cada duas horas.
# nano /etc/crontab
# /etc/init.d/cron restart
13
# touch /etc/init.d/firewall
# nano /etc/init.d/firewall
#!/bin/sh
iptables –F
iptables –X
iptables –t nat –F
iptables –t nat –X
modprobe ip_tables
modprobe iptable_nat
echo “1” > /proc/sys/net/ipv4/ip_forward
iptables –t nat –A POSTROUTING –o ppp0 –j MASQUERADE
iptables –t nat –A PREROUTING –p tcp –i eth1 -–dport 80 –j REDIRECT --to 3128
iptables –t nat –A PREROUTING –p tcp –i ppp0 –-dport 3389 –j DNAT –to 192.168.1.200:3389
#
Aqui cabe uma observação. Lembra-se que na seção “Configurando a internet no servidor”, você viu o seguinte
comentário:
“Note que se sua internet usar IP fixo, ou você tiver um modem roteado e preferir enviar o sinal já roteado para o
servidor, seu servidor já estará com internet (eth0). Se este for o seu caso, poderá testar sua conectividade pelo
comando ping.”
Caso você se encaixe nesse caso, seu script terá o seguinte conteúdo, ao invés do conteúdo acima:
#!/bin/sh
modprobe iptable_nat
iptables –F
iptables –t nat –F
iptables –X
echo “1” > /proc/sys/net/ipv4/ip_forward
iptables –t nat –A PREROUTING –p tcp –i eth1 -–dport 80 –j REDIRECT --to 3128
iptables –t nat –A POSTROUTING –o eth0 –j MASQUERADE
# chmod +x /etc/init.d/firewall
Agora vamos inclui-lo na inicialização, para que o processo fique automático. Para isso execute o rcconf
# rcconf
14
â â
â â
â <Ok> <Cancelar> â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Desça na lista até encontrar firewall (provavelmente será a última opção). Você notará que a opção estará desmarcada.
Marque-a teclando a barra de espaços e em seguida tecle ENTER para confirmar as alterações e voltar ao prompt.
Agora é só executar o script para o servidor funcionar 100%, e quando precisar reiniciar o servidor, o script já será
executado automaticamente.
# /etc/init.d/firewall
Considerações finais
Nas máquinas da rede, você irá configurar o IP, a mascara, o gateway e os DNSs. O gateway deverá ser 192.168.0.1 e os
DNSs você poderá usar o de sua operadora. Visto que configuramos o squid para rodar transparente, não é necessário
configurar endereço proxy no navegador.
Para acessar o Webmin (para visualizar ou gerar relatórios, bem como outras configurações) você poderá usar qualquer
maquina da rede e acessar o seguinte endereço: https://192.168.0.10:10000
O usuário/senha, será o root com sua respectiva senha. Você poderá criar um usuário para você, assim evitará usar a
senha de root.
Há um ditado popular que diz: “a repetição é a mãe da retenção”, assim, com o tempo e a prática, você conseguirá
enxergar mil maneiras de configurar seu próprio servidor. Uma sugestão é usar máquinas virtuais com as placas de rede
configuradas em modo Brigde. Também recorra sempre ao VOL em busca de mais conhecimento, e claro, não deixe de
pesquisar sobre um bom script de firewall para proteger melhor seu servidor.
Enfim, espero que o artigo possa ser útil para você que está iniciando.
Um abraço.
15