s i s t e m a o p e r a c i o n a l m a g n u x l i n u x | ~/ · documentação · suporte · sobre |
Página seguinte
Página anterior
Índice
277. IntroduçãoComo as firewalls estão amplamente mais e mais usadas na segurança de Internet e Intranet, a capacidade de fazer boas VPNs é importante. Aqui estão as minhas experiências, e comentários são bem-vindos.
277.1 Convenções
Usarei os termos "firewall mestre" e "firewall escravo", apesar de uma VPN não ser feita com uma arquitetura cliente-servidor. Eu simplesmente me referi a elas como participantes ativos e passivos da configuração da conexão. A máquina que é o início da configuração será referida como mestre, e o participante passivo seráo escravo.
277.2 Planejamento
Antes de você iniciar a configuração do seu sistema, você deve conhecer os detalhes da rede. Eu assumo que você tem duas firewalls protegendo uma intranet por firewall, e ambas estão conectadas a internet. Então agora você deve duas interfaces de rede (pelo menos) por firewall. Pegue um pedaço de papel, e escreva o seu endereço IP e sua máscara de rede. Você precisará de mais de um endereço IP por firewall para a VPN que você quer construir agora. Aqueles endereços deve ser exteriores a suas subredes existentes; eu sugiro usar os endereços do grupo de endereços "privado". Eles são os seguintes:
Por causa do exemplo, aqui está uma amostra de configuração: As duas fortalezas são chamadas fellini e polanski. Elas tem uma interface para a internet (-out), uma para intranet (-in) euma para a vpn (-vpn). Os endereços e as máscaras de rede:
Deste modo nós temos um plano.
277.3 Juntando as FerramentasVocê precisará de:
Versões atuais:
277.4 Compilar e InstalarCompile ou instale as ferramentas coletadas. Olhe cada uma das documentações (e o COMO FAZER do firewall) para detalhes. Agora nós temos as ferramentas.
277.5 Configure os outros subsistemas
Configure sua firewall. Você precisa habilitar o tráfego do ssh entre as duas máquinas da firewall; significa uma conexão para a porta 22 no escravo originado do mestre. Inicie o sshd no escravo e verifique se você pode efetuar o login. Este pass é sem teste, por favor fale-me de seus resultados.
277.6 Configure as contas para a VPNCrie uma conta na firewall escravo usando a sua ferramenta favorita (por exemplo, vi, mkdir, chown, chmod). Você deve criar uma conta no mestre também, mas eu acho que você precisa configurar a conexão na hora da inicialização, desta maneira a sua conta de root fará. Qualquer um pode apontar os riscos do uso da conta de root no mestre?
277.7 Gerar uma chave ssh para a conta do mestre
Use o programa ssh-keygen. Ajuste a senha vazia para a chave privada se você quiser fazer a configuração automática da VPN.
277.8 Configure login automático do ssh para a conta do escravo
Copie a chave pública recentemente gerada na conta do escravo no .ssh/authorized_keys, e as permissões do arquivo de configuração como a seguir: drwx------ 2 slave slave 1024 Apr 7 23:49 ./ drwx------ 4 slave slave 1024 Apr 24 14:05 ../ -rwx------ 1 slave slave 328 Apr 7 03:04 authorized_keys -rw------- 1 slave slave 660 Apr 14 15:23 known_hosts -rw------- 1 slave slave 512 Apr 21 10:03 random_seed A primeira linha sendo o ~slave/.ssh, e a segunda a ~slave.
277.9 Segurança ssh estreita
Isto refere-se aos recursos na minha configuração no sshd_conf:
PermitRootLogin no IgnoreRhosts yes StrictModes yes QuietMode no FascistLogging yes KeepAlive yes RhostsAuthentication no RhostsRSAAuthentication no RSAAuthentication yes PasswordAuthentication no PermitEmptyPasswords no A autenticação da senha é desligada, então o acesso só é possível com chaves autoriazadas (é claro que você desligou telnet e os comandos 'r').
277.10 Habilite a execução do ppp e da rota para ambas as contas
Como a conta do mestre é o root no meu caso, não há nada a fazer. Para a conta do escravo, as linhas a seguir aparecem em /etc/sudoers: Cmnd_Alias VPN=/usr/sbin/pppd,/usr/local/vpn/route slave ALL=NOPASSWD: VPN Como você pode ver, estou usando alguns scripts para configurar o ppp e as tabelas de roteamento no escravo.
277.11 Faça os scriptsNo mestre existe um script de inicialização completamente desenvolvido que eu estou usando: #! /bin/sh # skeleton arquivo de exemplo para a construção de scripts /etc/init.d/. # Este arquivo deve ser usado para construir scripts para o /etc/init.d. # # Escrito por Miquel van Smoorenburg <miquels@cistron.nl>. # Modificado pela Debian GNU/Linux # por Ian Murdock <imurdock@gnu.ai.mit.edu>. # # Versão: @(#)skeleton 1.6 11-Nov-1996 miquels@cistron.nl # PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/bin/X11/: PPPAPP=/home/slave/ppp ROUTEAPP=/home/slave/route PPPD=/usr/sbin/pppd NAME=VPN REDIR=/usr/local/bin/pty-redir SSH=/usr/bin/ssh MYPPPIP=192.168.0.1 TARGETIP=192.168.0.2 TARGETNET=193.6.37.0 MYNET=193.6.35.0 SLAVEWALL=polanski-out SLAVEACC=slave test -f $PPPD || exit 0 set -e case "$1" in start) echo setting up vpn $REDIR $SSH -o 'Batchmode yes' -t -l $SLAVEACC $SLAVEWALL sudo $PPPAPP >/tmp/device TTYNAME=`cat /tmp/device` echo tty is $TTYNAME sleep 10s if [ ! -z $TTYNAME ] then $PPPD $TTYNAME ${MYPPPIP}:${TARGETIP} else echo FAILED! logger "vpn setup failed" fi sleep 5s route add -net $TARGETNET gw $TARGETIP $SSH -o 'Batchmode yes' -l $SLAVEACC $SLAVEWALL sudo $ROUTEAPP ;; stop) ps -ax | grep "ssh -t -l $SLAVEACC " | grep -v grep | awk '{print $1}' | xargs kill ;; *) # echo "Usage: /etc/init.d/$NAME {start|stop|reload}" echo "Usage: /etc/init.d/$NAME {start|stop}" exit 1 ;; esac exit 0 O escravo usa um script para configuração do roteador (/usr/local/vpn/route): #!/bin/bash /sbin/route add -net 193.6.35.0 gw 192.168.0.1 e o seu .ppprc consiste do seguinte: passive Página seguinte Página anterior Índice |