Instalando e configurando um servidor proxy com o Ubuntu Server - Em menos de duas horas!

Em mais um post para compartilhar informações com internautas, explicarei para vocês de forma simples e didática como utilizar o Ubuntu Linux Server 6.10 para levantar um servidor proxy seguro em menos de duas horas. A idéia surgiu de um situação real, o servidor proxy da empresa onde trabalho estava começando a dar problemas (no hardware…), e travava direto. Como a instalação já tinha quase três anos, achei melhor atualizar tudo num sistema novo do que só trocar o HD de computador.

E, como eu já tinha baixado a ISO do Ubuntu Server para testar, só precisei tomar coragem, pegar um computador novo que estava sobrando e arregaçar as mangas. Depois de mais ou menos duas horas (desconte aí alguns minutos de download), o sistema já estava prontinho, só faltando uns acertos que poderiam ser feitos com ele em produção.

Percebam duas coisas antes de começar a ler: 1) não há nenhum segredo no que estará sendo relatado, todas as informações podem ser encontradas nas documentações oficiais e pela internet. 2) Não me considero expert ou guru do Linux, então podem haver vários erros nos processos relatados aqui (muito embora o servidor esteja funcionando muito bem, obrigado…). Eu aceito de bom grado sugestões e comentários sobre os passos seguidos, mas não vou aceitar comentários do tipo ‘LOL, seu noob!’. Pessoas que insistam em fazer isso terão câncer genital.
Passo 1 - Preparando o Computador

Primeiramente, você deve começar pela parte que chuta: examine o hardware do seu novo servidor, e dimensione-o para suas necessidades. Ou seja, não configure um P100 com 16MB de RAM para servir uma empresa com 200 funcionários, nem compre um P4 de última geração e 1GB RAM para servir aquele escritório com 6 funcionários.

Leve em conta também que serão instalados vários serviços adicionais (e opcionais) além do squid que tomarão conta dos recursos da máquina. Memória é essencial aqui. No meu caso, peguei um Sempron 2600+ com 512MB num PCChips A31g que tinha acabado de chegar. Isso, para distribuir internet para 50 computadores, dá e sobra, mas a idéia é justamente essa, ter uma boa folga no uso. Lembre-se também que serão necessárias duas placas de rede. Pessoalmente, não recomendo o uso da placa onboard, mas fica ao critério de vocês.

Agora, antes de começar a instalar o sistema, entre no SETUP e desabilite TUDO aquilo que não será usado: som onboard, usb, modem, portas seriais e paralelas, e o que mais for possível. Com isso, conseguimos um pouco mais de segurança (através de qualquer porta usb ou equivalente), confiabilidade (com menos recursos habilitados, menor será a chance de uma falha de hardware, e menor será o seu trabalho para identificar uma possível falha futura) e velocidade (menos coisas para levantar no boot, menos serviços rodando desnecessariamente). Configure o boot pelo CD, coloque uma senha para o setup e saia, para começarmos a instalação de verdade.

Passo 2 - Instalando o sistema

Nenhum segredo aqui, se você já fez isso antes: configure o idioma, o teclado, crie um usuário, defina uma senha, formate as partições necessárias (ou deixe o Ubuntu cuidar disso), e aguarde a instalação. Dois pontos importantes:

1 - Será útil já ter uma conexão com a internet durante a instalação (diretamente ligada à máquina ou através de um outro proxy), pois o Ubuntu já fará uns ‘apt-get update’ durante a instalação.
2 - Em dado momento, o instalador perguntará se você deseja instalar dois perfis pré-configurados: DNS Server e LAMP Server. A instalação fica a critério de vocês, já que boa parte dos pacotes desses perfis serão instalados mais pra frente. No meu caso, não instalei nada por enquanto.

Ao término, o sistema irá reiniciar o sistema.

Passo 3 - Configurações iniciais

Primeiramente, vamos configurar a rede. No meu caso, como eu já tenho um servidor DHCP em outro servidor, o Ubuntu já configurou automaticamente a primeira placa de rede. Mas o que queremos é um endereço estático, então vamos editar o arquivo /etc/network/interfaces

sudo vi /etc/network/interfaces

Seu arquivo deve estar qualquer coisa parecida com isso:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
#The primary network interface
auto eth0
iface eth0 inet dhcp


Altere as informações para algo parecido com:

auto lo eth0 eth1
iface lo inet loopback
#The primary network interface
iface eth0 inet static
address 192.168.1.254
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
#segunda interface. Outras podem ser adicionadas segundo a mesma lógica
iface eth1 inet static
address xxx.xxx.xxx.xxx
netmask xxx.xxx.xxx.xxx
network xxx.xxx.xxx.xxx
broadcast xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx

Nesse caso, considerei que a primeira placa de rede ficará ligada à rede local, e a segunda é que ficará ligada à internet. Nesse caso, tudo dependerá de como é a sua conexão. Para Speedy Businnes, é bem fácil, a Telefônica já te passa todas as informações logo no começo. Outros serviços não devem ser diferente.

Altere também o /etc/resolv.conf , inserindo os endereços DNS que o provedor utiliza:
sudo vi /etc/resolv.conf

nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx

Novamente, os dados deverão ser obtidos com seu provedor. A partir daqui, o computador já deverá estar conectado à internet. Tente um ping www.ubuntu.org e veja se está tudo OK. Mas ainda não está pronto, precisamos instalar e configurar os pacotes necessários para que o proxy funcione e os outros usuários também acessem a internet.

É agora que a parte legal começa. Você com certeza já deve ter percebido isso, mas o CD do Ubuntu Server já traz vários pacotes de serviços prontos para o uso. Se você quiser, pode usar esse repositório, o que diminuiria e muito o tempo de download pelo APT-GET. No meu caso, como eu queria me livrar do drive de CD, copiei os pacotes para minha máquina, com os comandos abaixo:

sudo mount /media/cdrom/
sudo cp -r /media/cdrom/dists /edgy
sudo cp -r /media/cdrom/pool /edgy

Logo depois, editem o arquivo de repositórios do apt, com um sudo vi /etc/sources.list

Comentem a linha

deb cdrom:(...)

Colocando um # na frente. Adicionem as linhas:

deb file:/edgy edgy main
deb file:/edgy edgy restricted

Aproveitem e descomentem as linhas dos repositórios ‘Universe‘, retirando o # da frente delas. Salvem, e executem o apt:

sudo apt-get update
sudo apt-get upgrade

Se tudo der certo, vocês terão o sistema pronto para a instalação dos pacotes. Percebam que esse passo é totalmente opcional. No meu caso, eu pude liberar o CD do Ubuntu (assim como o drive) e acelerar bastante as instalações. Se você quiser continuar com o CD, ou se todas as versões do mesmo já estiverem obsoletas, pule essa parte, apenas configurando para aceitar o repositório Universe.

Passo 4 - Instalando e Configurando o ‘Pacote básico do Administrador Feliz

Agora, vamos tratar de instalar e configurar alguns programas que irão nos ajudar a administrar o sistema: a trinca MC (Midnight Commander), OpenSSH e Webmin. Muitos experts que estejam lendo isso provavelmente irão querer me bater, mas considero o MC um ótimo navegador de arquivos/editor de textos, ainda mais quando estou com pressa. Se você prefere o VI, simplesmente não instale o MC.

sudo apt-get install mc openssh-server libmd5-perl libnet-ssleay-perl libauthen-pam-perl libio-pty-perl
sudo wget http://prdownloads.sourceforge.net/webadmin/webmin_1.320_all.deb
sudo dpkg -i webmin_1.320_all.deb

Com isso, já podemos acessar o servidor via SSH e via Browser. Mas… já que queremos um mínimo de segurança, porque não alterarmos algumas coisinhas?

sudo mcedit /etc/ssh/sshd_config

Altere as seguintes opções:

Port 2756 #Altera a porta padrão do SSH, diminuindo a possibilidade de um port scan
ListenAddress 192.168.1.254 # Somente poderá ser acessado por esse endereço de rede
PermitRootLogin no # Precisa explicar?
AllowUsers <seu usuário padrão no Ubuntu> #somente o usuário criado na instalação poderá se logar.

Assim já temos algo mais seguro. O mesmo pode ser feito com o Webmin, alterando o /etc/webmin/miniserv.conf. Nesse caso, alterar a opção “port” para 4044 ou qualquer outro número já é uma boa.

Agora, já podemos mexer no servidor pela rede, e sem muito medo de uma invasão. Que tal pararmos de enrolar e instalar logo o bendito do proxy, hein?

Passo 5 - Instalando o Squid, o Sarg e o Dansguardian

Apenas para entender: o Squid será o responsável por compartilhar o acesso à internet com todas as máquinas, o Dansguardian irá habilitar alguns filtros de acesso, e o Sarg será o ‘dedo-duro’ do sistema, gerando arquivos HTML com os ‘logs’ de navegação do Squid.

E aqui começa uma parte da configuração onde ‘cada caso é um caso’. O Squid permite um sem fim de combinações de restrições, permitindo que eu simplesmente compartilhe a internet, ou que eu compartilhe apenas para alguns IPs, ou que eu exija uma autenticação para o uso, ou que eu bloqueie algumas páginas de acordo com o horário.

A configuração das ACLs (regras que controlam o acesso) dependerá exclusivamente de como a empresa vê o acesso à internet pelos funcionários, e do quão odiado você quer ser pelos seus colegas de trabalho que não podem mais acessar o orkut.

Se a empresa para o qual você está instalando o proxy não se importa com restrições de acesso, a configuração padrão do squid já está perfeita. Caso contrário, sugiro que você leia a documentação do mesmo e encontre quais regras se adaptam melhor à sua situação. O exemplo aqui é bem restrito, mas já montei um servidor para um escritório de contabilidade onde TUDO era bloqueado, menos uma meia dúzia de páginas….

Vamos às configurações: Comece instalando os pacotes:

sudo apt-get install squid squid-common bind sarg dansguardian

E depois dê um

sudo mcedit /etc/squid/squid.conf

Comece alterando as primeiras linhas, antes das ACL’s:
#Inicio
http_port 192.168.1.254:3129 transparent
visible_hostname proxyspeedy2
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache_mem 48 MB
#Opções para otimização do sistema
maximum_object_size 1024 MB
minimum_object_size 0 KB
cache_swap_low 50
cache_swap_high 90
cache_access_log /var/log/squid/access.log

Vamos às explicações, pra quem não conhece o squid:

http_port - qual porta o squid estará escutando. Ao colocar o endereço IP, eu impeço que alguém tente acessar pelas outras interfaces. O ‘transparent’ será explicado em breve.
visible_hostname - Hostname do servidor
cache_mem - Quantidade de memória RAM que o squid estará utilizando para guardar as páginas acessadas, aumentando a velocidade de acesso posterior.
maximum_object_size e minimum_object_size - Qual o tamanho máximo e mínimo dos arquivos que ficarão armazenados no cache em disco.
cache_swap_low e cache_swap_high - Com o cache_swap_high você define qual a porcentagem máxima que o cache deverá atingir para começar a apagar arquivos antigos. O cache_swap_low define qual a porcentagem deverá ser atingida durante a remoção desses arquivos.

Caso você queira que os usuários se autentiquem para usar a internet, insira esses dados no squid.conf:

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm

Agora, as ACL’s. Novamente, cada caso é um caso, e vou colocar as minhas aqui apenas para exemplo. Se você quiser entender mais sobre ACL’s do Squid e como usá-las, recomendo uma leitura desse texto .

# ACLs normais
acl all src 192.168.1.0/255.255.255.0
delay_pools 1
delay_class 1 2
delay_parameters 1 114688/114688 32768/32768
delay_access 1 allow all
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl SSL_ports port 873
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443 563
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl Safe_ports port 631
acl Safe_ports port 873
acl Safe_ports port 901
acl purge method PURGE
acl CONNECT method CONNECT
no_cache deny QUERY
# ACLs paulo
acl Diretoria proxy_auth "/etc/squid/users/diretoria.acl"
acl administracao proxy_auth "/etc/squid/users/administracao.acl"
acl producao proxy_auth "/etc/squid/users/producao.acl"
acl castigo proxy_auth "/etc/squid/users/castigo.acl"
acl PornoURLs url_regex "/etc/squid/users/porno.acl"
acl ProducaoURLs url_regex "/etc/squid/users/producaoURLs.acl"
acl AdministracaoURLs url_regex "/etc/squid/users/administracaoURLs.acl"
acl almoco time MTWHF 12:00-14:00
acl executaveis url_regex -i "/etc/squid/users/executaveis.acl"
acl castigo_ip src "/etc/squid/users/castigo_ip.acl"
#Aplicação das ACL's
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow purge localhost
http_access deny purge
http_access allow localhost
http_access deny administracao PornoURLs
http_access deny producao PornoURLs
http_access deny castigo PornoURLs
http_access deny Diretoria PornoURLs
http_access deny administracao AdministracaoURLs !almoco
http_access deny producao ProducaoURLs !almoco
http_access deny castigo AdministracaoURLs
http_access deny administracao executaveis
http_access deny producao executaveis
http_access allow Diretoria
http_access allow producao
http_access allow administracao
http_access allow castigo
http_access deny all
http_reply_access allow all

Basicamente, existem três níveis de acesso diferentes, com várias restrições baseado em cada nível, mas com a possibilidade de liberar alguns sites no horário de almoço, a menos que você esteja na ACL ‘castigo’ (sacou? hein?). Pode parecer castrante, mas são normas da empresa, não me odeiem por configurar isso.

Salve o arquivo e saia. Agora que já temos o básico configurado, vamos configurar o firewall para compartilhar conexões. No terminal, digite os comandos abaixo:

sudo modprobe iptable_nat
sudo modprobe ip_nat_ftp
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Na verdade, apenas os quatro primeiros comandos são necessários. Nesse caso, substitua o ‘eth1′ pela interface que está conectada à internet. O último comando gera o que chamamos de ‘proxy transparente’. Com ela habilitada, qualquer um que queira acessar a internet deverá obrigatoriamente passar pelo Squid (vocês lembram daquele ‘transparent’ logo na primeira linha do squid.conf, né?).

Uma ótima idéia é inserir esses comandos de firewall no arquivo /etc/init.d/boomisc.sh. Assim, caso o computador seja reiniciado, as regras passarão a funcionar automaticamente….

Aqui, já podemos testar o Squid. Primeiro, dê o comando:

sudo /etc/init.d/squid restart

E verifique se não apareceu nenhum erro. Uma lida nos arquivos em /var/log pode ser útil, caso apareça algo estranho. Agora, numa máquina qualquer, abre o seu browser e configure o proxy. No Firefox2, vá em Ferramentas > Opções > Avançado > Rede > Configurações e insira o endereço IP do servidor e a porta do squid. Tente acessar alguma página. Se der tudo certo, parabéns. O grosso do trabalho já foi, agora é cuidar da segurança.

Nota: Percebam que até o momento não é possível usar o Squid com transparência E autenticação ao mesmo tempo. Ao usar os dois você no máximo não terá acesso se não configurar o proxy nas máquinas locais. O que já ajuda em alguma coisas….

Nota2: Para criar um usuário no Squid, você pode usar o comando

sudo htpasswd /etc/squid/passwd <usuário>

E depois cadastrá-lo em uma das regras do squid. OU você pode usar o Webmin, o que eu considero um pouco mais prático…

O Sarg não exige muita configuração, podendo ser executado via Webmin mesmo, ou através do crontab, caso você queira automatizar a tarefa. Uma lida no /etc/squid/sarg.conf pode dar boas dicas do tipo de configuração que o Sarg permite. Para acessar os relatórios, acesse http://192.168.1.254/squid-reports/ que eles deverão estar lá.

Agora, vamos ao Danguardian. Antes, uma observação importante: o DanGuardian é um super-filtro de conteúdo, conseguindo barrar vários tipos de conteúdos diferentes, sejam sites, frase, ou até mesmo tipos de arquivos. A configuração padrão é bem restrita, e você pode penar um pouco até ter uma configuração que lhe permita acessar tudo o que você precisa, e bloqueie o resto. Sempre que possível, utilize os arquivos de exceção para liberar apenas o necessário (exemplo, incluir o endereço da Caixa Econômica Federal como exceção, ao invés de liberar o acesso a arquivos .zip).

Outro ponto é que você pode precisar configurar bastante o DG no quesito performance. Ele utiliza o Clamav para fazer uma varredura antí-virus no que passa pelo proxy, o que pode ser bem ruim se você está usando um Pentium 100 como proxy para 100 máquinas… O Dansguardian é recomendado para ambientes corporativos preocupados com a segurança, e PRINCIPALMENTE em escolas ou universidades.

Comece com um:

sudo mcedit /etc/dansguardian/dansguardian.conf

Para uma configuração simples, comente a linha ‘UNCONFIGURED’ e altere as linhas:

language = ‘portuguese’
loglocation = ‘/var/log/dansguardian/access.log’
filterport = 3128
proxyip = 127.0.0.1
proxyport = 3129

Nota: muitos devem estar achando estranho eu ter configurado o Dansguardian na porta padrão do Squid. O motivo é simples: preguiça. Assim eu não preciso reconfigurar todos os outros computadores… :P

No ‘/etc/dansguardian/dansguardianf1.conf‘ verifique a opção ‘naughtynesslimit. Ele é o ‘medidor de putaria’ do Dansguardian. Quanto menor esse valor, maior será a possibilidade da página ser bloqueada. Para adultos, um bom valor é 200. Para crianças, pense em valores por volta de 40…

Agora, precisamos baixar as definições em português. Execute os comandos:

sudo wget http://dansguardian.org/downloads/grosvenor/languages.tar.gz
sudo tar -zxvf languages.tar.gz
sudo cp -r languages/* /etc/dansguardian/languages/portuguese/

Agora, insira no arquivo ‘/etc/dansguardian/weightedphraselist’ as linhas:

.Include</etc/dansguardian/languages/portuguese/weightedphraselist.pornsites.portuguese>
.Include</etc/dansguardian/languages/portuguese/weightedphraselist.pornwords.portuguese>

E, no ‘/etc/dansguardian/bannedphraselist’

.Include</etc/dansguardian/languages/portuguese/bannedphraselist.portuguese>

Salve tudo, e reinicie o Dans:

sudo /etc/init.d/dansguardian restart

Se tudo correu bem, você provavelmente é o cara mais odiado pelos funcionários que enrolam no serviço…..

Há um extra para acelerar um pouco a navegação, que é instalar um servidor DNS na máquina. Com isso, as resoluções de nome ficarão mais rápidas, pois haverá um cache de endereços na sua máquina. Até onde eu sei, não é necessário alterar algum arquivo, apenas instalar o bind


Passo 6 - Incrementando o Firewall e instalando o Snort e o Guardian

A parfir daqui, tudo o que será feito é instalar sistemas que bloqueiem ataques externos, ou evitem problemas que um vírus possa causar internamente. As regras de Firewall servem para fechar portas e evitar ataques. O Snort é uma ferramenta de detecção de intrusos, ótima para ficar vigiando a sua rede e verificando se há algo errado. O Guardian trabalha junto com o Snort, criando regras de firewall de acordo com os alertas do Snort.

Para o firewall, vamos utilizar o kurumin-firewall mesmo (disponível no GuiadoHardware), mas com algumas modificações. Novamente, as portas que você irá abrir ou fechar dependerão exclusivamente das necessidades da empresa ou local onde você instalando o servidor.

sudo mcedit /etc/init.d/kurumin-firewall

E edite o arquivo:

#!/bin/bash

# Script de configuração do iptables gerado pelo configurador do Kurumin
# Este script pode ser usado em outras distribuições Linux que utilizam o Kernel 2.4 em diante
# Por Carlos E. Morimoto

firewall_start(){

# Abre para uma faixa de endereços da rede local
iptables -A INPUT -p tcp --syn -s 192.168.1.0/255.255.255.0 -j ACCEPT

# Abre uma porta (inclusive para a Internet)
iptables -A INPUT -p tcp --destination-port 21 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 110 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 2535 -j DROP
iptables -A INPUT -p tcp --destination-port 139 -j DROP
iptables -A OUTPUT -p tcp --destination-port 139 -j DROP

# Fechando as portas do SSH pra fora
iptables -A INPUT -p tcp --dport 2756 -m iprange --src-range 192.168.1.0-192.168.1.255 -j ACCEPT
iptables -A INPUT -p tcp --dport 2756 -j DENY

# Ignora pings
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

# Protege contra synflood
echo "1" > /proc/sys/net/ipv4/tcp_syncookies

# Desabilita o suporte a source routed packets
# Esta recurso funciona como um NAT ao contrário, que em certas circunstancias pode permitir que alguem de fora envie pacotes para micros dentro da rede local.
echo "0" > /proc/sys/net/ipv4/conf/eth0/accept_source_route
echo "0" > /proc/sys/net/ipv4/conf/eth1/accept_source_route
# Proteção contra ICMP Broadcasting
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Proteções diversas contra portscanners, ping of death, ataques DoS, etc.
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
iptables -A FORWARD -m unclean -j DROP
iptables -A INPUT -m state --state INVALID -j DROP
iptables -N VALID_CHECK
iptables -A VALID_CHECK -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
iptables -A VALID_CHECK -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
iptables -A VALID_CHECK -p tcp --tcp-flags ALL ALL -j DROP
iptables -A VALID_CHECK -p tcp --tcp-flags ALL FIN -j DROP
iptables -A VALID_CHECK -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A VALID_CHECK -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
iptables -A VALID_CHECK -p tcp --tcp-flags ALL NONE -j DROP

# Abre para a interface de loopback.
# Esta regra é essencial para o KDE e outros programas gráficos funcionarem adequadamente.
iptables -A INPUT -p tcp --syn -s 127.0.0.1/255.0.0.0 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

# Esta regra é o coração do firewall do Kurumin,
# ela bloqueia qualquer conexão que não tenha sido permitida acima, justamente por isso ela é a última da cadeia.
iptables -A INPUT -p tcp --syn -j DROP

}
firewall_stop(){
iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
}
case "$1" in
"start")
firewall_start
;;
"stop")
firewall_stop
echo "O kurumin-firewall está sendo desativado"
sleep 2
echo "ok."
;;
"restart")
echo "O kurumin-firewall está sendo desativado"
sleep 1
echo "ok."
firewall_stop; firewall_start
;;
*)
iptables -L -n
esac

Salve, e configure para rodar no boot. Você pode testar as configurações do iptables dando um

sudo iptables -L

e verificando se ele lista todas as regras criadas.

Para o Snort e o Guardian, o procedimento é exatamente o encontrado na página do Ubuntu Brasil portanto eu não pretendo me repetir. Como dica adicional, insiram as linhas abaixo no bootmisc.sh, para que os serviços sempre rodem ao reinicar o servidor:

snort -c /etc/snort/snort.conf &
guardian.pl /etc/guandian.conf

Faça alguns testes finais, reinicie a máquina, e pronto. Você terá um servidor proxy leve, seguro, e que permite adicionar novos serviços (DHCP, SAMBA, Cups, LDAP, Postfix) facilmente. E tudo em menos de duas horas!

Nota final:
- Caso algum passo descrito aqui não funcione, sempre veja as mensagens de erro e os arquivos de log. Boa parte das soluções podem ser encontradas vendo qual é exatamente o problema.

Compartilhe:
  • bodytext
  • del.icio.us
  • Google
  • Live
  • Rec6
  • Reddit
  • StumbleUpon
  • TwitThis
  • dihitt
  • Envie para um amigo!
  • PlugIM
  • ueba

32 Comentários

  1. Thiago Berti Says:

    Muito bom o post.
    Agora sei onde encontrar isso quando eu precisar fazer um proxy denovo.

    Só uma pergunta… funciona com o Ubuntu pra desktops?

  2. GraveHeart Says:

    Sim. Mas aí vc não vai ter um servidor tão leve assim. :P

  3. Anônimo Says:

    nstalando e configurando um servidor proxy com o Ubuntu

    manual excelente para instalar proxy no ubuntu

  4. Andre Noel Says:

    “um computador novo que estava sobrando”… Tá bom o negócio aí, hein?? Se sobrar mais computadores *novos*, aceito doação… :)
    Ah, não se preocupem com o fato de te chamarem de noob… Acho muito bom o que vc fez colocando isso no ar (vou até testar mais tarde). E outra: ninguém que já saiba fazer isso bem vai ter paciência de ler isso “de novo”…

    Abração.
    Bom post.

  5. GraveHeart Says:

    Meh…. Sobrou porque o funcionário que estava usando saiu. Mas normalmente as máquinas que eu consigo pra testes são verdadeiros ‘Frankensteins’, pegando peças boas de computadores e montando um outro. Já fiz cada milagre aqui atrás de um computador….

  6. DodgeCharger Says:

    Cara, você tah de parabens por ter tido a paciência de ter feito esse tutorial, eu tava afim de fazer um proxy aqui na empresa por causa desses sites de putarias, e tinha feito em red hat, so q o red hat eh uma BOSTA e eu tou totalmente a favor do Ubuntu…

    Vou fazer isso amanha aqui, e testar tudo… e assim q eu fizer eu colocarei um reply…

    Valeu.

  7. Alex Pedro Says:

    Cara, parabêns pela iniciativa, gostaria de saber como fazer um proxy como esse em qualquer distribuição linux (ubutum não tenho nenhuma experiência) com preferencia no linux Kurumin, mas no meu caso, estou pensando em contratar um outro link de internet e assim ter dois links de internet no servidor compartilhado para rede interna, sendo que, ambos os links são de internet via rádio, instalados através de placas de rede comum 10/100, eu precisária que um dois links ficasse disponivel para rede inteira e o outro para apenas um computador para ficar fazendo downloads, e apenas no caso de o link principal cair o link alternativo fosse disponibilizado para rede toda? tem como fazer isso, caso não tenha por favor me de alternativas?
    Desde já, meus agradecimentos

  8. Guilherme Pinheiro Says:

    Cara, muito obrigado pela sua ajuda, é por causa de pessoas como você que eu amo a minha profissão, todo mundo se ajuda e vamos em frente.

    Valew

  9. Thiago Says:

    Autenticação!

    Parabéns pelo artigo, quebrou um galho interessante :)
    Tenho uma pergunta: criei os usuários para autenticação, porém meu squid não pede senha nenhuma ao acessar. Aonde que coloco o usuário na máquina?

    Obrigado,
    Thiago

  10. GraveHeart Says:

    Verifique se na parte de conexões de rede do seu navegador você configurou o proxy:

    No Firefox, você vai encontrar em Preferências > Avançado > Rede > Conexão > Configuração

    Aí coloca o ip do servidor e a porta.

    Se mesmo assim não pedir senha, reveja a configuração do squid.

    Outra coisa a verificar é colocar o ip do servidor nos campos de DNS e Gateway da configuração de rede dos computadores.

  11. cicero Says:

    nao consigo configurar net no ubuntu 7.04 uso net via radio :consigo sinal ,porem nao conecta de forma alguma.me agudaa

  12. cicero Says:

    no momento uso vista ultimate 64bit e xp 64 tambem

  13. Reinaldo Guerra Says:

    Parabens pela iniciativa, vou iniciar em linux pois o windons no serve dá muito pau, sou leigo em linux, mas vou iniciar ja c/ suas dicas. Deus abencoe.

  14. Anderson Says:

    Cara otimo post , valeu pela dicas
    teste seu post e ficou dez no ubuntu dapper server , so ta meio lento meu server quando ativo o dansguardian , mais e pq a maquina e um duron 1.2 com 512 mb e meia fraquinha mesma , rs .
    valeu !

  15. Graveheart Says:

    Opa! Verifique as configurações do Dansguardian. Ele consome muita memória, mas dá pra ir ‘tunando’ aos poucos. Se você realmente precisa que ele rode ao máximo, o melhor é colocar bem mais memória aí…..

  16. Anderson Says:

    Man,

    Parabéns pela dica, tenho uma pergunta, como faço para configurar o postifix + Mailscanner + clamav. grato.

  17. Adriano M. Santos Says:

    Cara é o melhor tutoral que eu encontrei até hoje… meu parabens.

    Agora gostaria de uma ajuda, fiz a instalação todinha do Ubuntu 7.04 só que configurei as placas de rede.
    Mas, mando pigar na rede local vai legal mas, na rede publica dá Host desconhecido.. que poderia fazer?

    valeu!

  18. Graveheart Says:

    Provavelmente, alguma configuração de DNS ou Gateway. Mais provavel DNS

  19. Adriano M. Santos Says:

    mano… consegui.. seguindo direitinho os passo do seu tutorial acima… mais uma vez parabens… muito bom! bom mesmo!!

    agora pingou legal!

  20. Paulo DJ Says:

    tá… mas se é proxy transparente, pra que informar o IP nas configurações do browser ?

  21. Graveheart Says:

    Dá uma lida no tutorial: só vai ser necessário colocar o IP se você quiser autenticação. Autenticação e proxy transparente ainda não funcionam juntos…

    No caso, a ‘transparência’ é só pra evitar que alguém tente navegar sem se autenticar

  22. oiciruan Says:

    Cara achei o máximo. Mas gostaria de saber como ficaria em um Ubunto 7.04 feisty. e se ficar pode me dar mais detalhes de como fazer a configuração.Ou posso usar esse tutotial.

  23. oiciruan Says:

    Correção: Ubuntu 7.04 Feisty

  24. Graveheart Says:

    Sim, dá pra fazer no Ubuntu 7.04. O DansGuardian vai pedir algumas configurações a mais, mas é só ler os logs que não tem enrosco.

  25. oiciruan Says:

    Da para me dar mais detalhes, pois, cara sou leigo no assunto, e to aqui fazendo na raça mesmo.

  26. Graveheart Says:

    Não tem como dar mais detalhes, está tudo na documentação, e são umas três linhas que devem ser arrumadas.

    No mais, se você é realmente leigo no assunto, sugiro que estude mais antes de tentar implementar essa solução, ou contrate um profissional para lhe ajudar, para evitar problemas futuros. Provavelmente você terá que realizar manutenção nessa instalação, e é sempre bom saber como as coisas funcionam.

  27. oiciruan Says:

    Tem algum material especifico que vc possa me indicar.

    E de já agradeço pela atenção.

  28. oiciruan Says:

    Olá amigo, consegui configurar a minha rede seguindo suas orientações contudo apresentou dois erros
    na autenticação de usuários e também na iniciação do dansguardian. Com relação a autenticação de usuários descomentei as linhas relacionadas aos erros e esta funcionado.
    Você pode me ajudar a resolve-los.
    Grato

    Erros abaixo:

    auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
    auth_param basic children 5
    auth_param basic realm

    FATAL: Bungled squid.conf line 23: auth_param basic realm
    Squid Cache (Version 2.6.STABLE5): Terminated abnormally.

    Error opening messages file (does it exist?): /etc/dansguardian/languages/‘portuguese’/messages
    Error parsing the dansguardian.conf file or other DansGuardian configuration files

  29. eschuch Says:

    oiciruan
    Sobre o erro do dansguard:
    Abra o arquivo dansguardian.conf e retire as ” da linha /etc/dansguardian/languages/‘portuguese’/messages.

    Qualquer coisa, entr ano meu site e me manda um mail.

    Abraços

  30. fernando Says:

    Bom dia…
    tenho uma duvida nas configurações da placa de rede, to montando aqui na empresa meu primeiro servidor linux, com o ubuntu server…
    vou ligar o modem direto em uma placa de rede e a outra irá distribuir na rede local. no caso, minha conexao é pppoe, a placa de rede que receber o modem pode deve ser ip fixo? ou pode ser dhcp tb?
    no caso meu modem é dlink com o ip de configuracao 10.1.1.1, vc poderia me ajudar esboçando como ficaria?
    Muito Obrigado =)
    Obrigado! =)

  31. BrSeek | Manual do servidor linux ubuntu server Says:

    [...] Aqui esta um artigo em português que ensina a configurar um completo servidor ubuntu rapidamente. [...]

  32. BrSeek » Montar servidor para provedor de internet com linux ubuntu 8.04 Says:

    [...] No blog GuraveHaato desu ka? tem um manual que ensina a configurar um servidor ubuntu em duas horas. [...]