Servidor Debian - Gateway de rede - Parte 01

Esse pequeno tutorial tem como objetivo servir de material auxiliar para a execução dos laboratórios realizados pelos alunos do curso Técnico em Redes SENAC/Lages-SC.

Seu objetivo principal é apontar os principais pontos para a instalação e configuração de uma maquina que tem como função servir de Gateway de uma rede de estudos montada através de um servidor Debian e clientes virtualizados.

Nesse tutorial será abordada as configurações básicas pós instalação do Debian e o compartilhamento da conexão com a Internet.




Material de apoio:
=> Servidor: maquina virtual criada no VirtualBox ou semelhante com as seguintes características: 
  • Disco rígido de 10 giga;
  • Memória 256 mega;
  • Rede:
    • Adaptador 1 em Modo Bridge
      • Será utilizada como interface WAN do servidor - provável eth0
    • Adaptador 2 em Modo Rede Interna
      • Será utilizada como interface LAN do servidor - provável eth1
=> Clientes: duas, ou mais, maquinas virtuais, podendo elas serem maquinas Windows, Linux ou de sua preferencia.
  • Rede:
    • Adaptador 1 em Modo Rede Interna
Para nosso laboratório utilizamos para o servidor o Debian Wheezy (debian-live-7.6.0-i386-standard.iso), Windows XP para os clientes e como ferramenta de virtualização o VirtualBox.


Instalação do Debian 7

A instalação do Debian é padronizada, devendo somente ter cuidado com os pontos citados abaixo:
  • Na configuração de rede escolher a interface que foi definida na maquina virtual como Modo Bridge e deixar como DHCP/Automático. Provavelmente essa interface deve estar com o nome eth0
    • Obs: Lembre nesse ponto de anotar o nome da outra interface que apareceu, por exemplo, eth1, pois utilizaremos ela posteriormente;
  • Em Seleção de Software deixe marcada somente a opção Sistema básico.

Realizando a configuração das interfaces de rede

Uma vez que o Debian esta instalado temos que realizar a configuração de rede, ação essa realizada através da configuração do arquivo /etc/network/interfaces.
Nosso servidor vai ficar com a interface WAN (eth0) como DHCP, e vamos configurar um IP static na LAN (eth1).
Abra o arquivo de configuração e o ajuste conforme o exemplo abaixo, ajustando os dados conforme sua rede:

# nano /etc/network/interfaces

###rede loopback
auto lo
iface lo inet loopback

###rede WAN
allow-hotplug eth0
iface eth0 inet dhcp


###rede LAN
auto eth1
iface eth1 inet static 
address 10.30.0.1
netmask 255.255.255.0
network 10.30.0.0
broadcast 10.30.0.255

Saia do editor e salve as alterações realizadas.

Obs: Abaixo segue legenda com a descrição das opções listadas acima:
  • auto: Ativa a interface de rede
  • iface : Inicio da configuração da interface
  • address : IP da placa de rede
  • netmask : Mascara de rede
  • network : Faixa de endereço da rede
  • broadcast : endereço de broadcast da rede
  • gateway: endereço de gateway da rede, quando tiver
Uma vez que já temos com as interfaces configuradas precisamos agora ajustar a configuração de DNS da nossa conexão, para isso vamos editar o arquivo /etc/resolv.conf.
Abra o arquivo de configuração e o ajuste conforme o exemplo abaixo, ajustando os dados conforme sua rede:

# nano /etc/resolv.conf

domain lab.lages.sc.senac.br
search lab.lages.sc.senac.br
nameserver 208.67.222.222
nameserver 208.67.220.220


OK! Configurações realizadas! Agora basta reiniciar o serviço de rede para aplicar as alterações:


# /etc/init.d/networking restart
  • reinicia os serviços de rede
# dhclient eth0
  • refaz a solicitação DHCP para a interface eth0
Nesse ponto já estamos com a parte de rede das interfaces configuradas, bastando nesse ponto realizar um teste básico de conexão de dentro do próprio servidor. Siga os passos abaixo:
  • ifconfig
    • Deve retornar qual IP esta configurado nas interfaces wan (eth0) e lan (eth1);
    • Obs: Caso tenha algum erro verifique os passos anteriores;
  • ping 208.67.222.222
    • caso o ping não funcione verificar as configurações de rede e tentar novamente
  • ping av.com
    • caso tenha retornado o ping por IP e não tenha retornado via domínio, verificar as configurações realizadas no resolv.conf e tentar novamente
Atualizar a lista de pacotes

A lista de pacotes permite que você realize a instalação ou atualização de novos pacotes (programas), ela é executada através da lista de repositórios configurada no arquivo /etc/apt/sources.list, arquivo esse que somente deve ser alterado caso haja real necessidade e certeza do que esteja fazendo. Futuramente vamos precisar editar esse arquivo, mas no momento somente memorize que ele exite e para que ele serve.

# apt-get update
  • atualiza a lista de pacote
# apt-get upgrade
  • aplica a atualização no sistema
Essas  operações demoram um tempo, ao concluir nosso sistema já esta atualizado e pronto para continuarmos nossa configuração.

Instalação e configuração básica do SSH

Inicialmente vamos instalar o servidor SSH para permitir acesso remoto ao nosso servidor:

# apt-get install openssh-server

Vamos agora realizar a configuração do SSH com o minimo desejável de segurança, focando nesse momento somente na troca da porta de conexão e não permitindo o login via root. Somente como complemento realizaremos também a configuração de um Banner de login do ssh.
Abra o arquivo de configuração do SSH, localize as linhas citadas abaixo e realize os ajustes necessários:

# nano /etc/ssh/sshd_config

Port 2211
PermitRootLogin no
Banner /etc/ssh/banner

# nano /etc/ssh/banner

escreva o texto do seu banner nesse arquivo!!!!

OK! Banner criado! SSH configurado! Vamos agora reiniciar o serviço do SSH para aplicar as alterações realizadas:

# /etc/init.d/ssh restart

Nesse ponto da nossa configuração já podemos realizar um teste com nossos clientes de rede! Ligue um dos clientes de rede e configure um IP dentro da faixa de IP da LAN, definindo como gateway o IP que foi configurado na interface LAN do servidor!
Realize nesse momento teste de ping de conectividade entre o cliente e o servidor, aproveite e realize também o teste de acesso remoto via SSH usando para isso o PUTTY ou software similar!
Se tudo correr bem até aqui podemos avançar, caso contrario volte e reveja os passos realizados anteriormente!

Compartilhar a internet do servidor com os clientes

Não vamos nesse momento nos preocupar ainda com a parte de segurança do nosso servidor, ficando nosso foco voltado para simplesmente compartilhar a conexão. As configurações de segurança serão tratadas em um laboratório especifico realizado futuramente.
Para realizar o compartilhamento dos pacotes necessitamos de três regras básicas: na primeira temos que ativar o NAT; em seguida temos que ativar o encaminhamento de pacotes e para finalizar teremos que criar uma regra no iptables que realize o roteamento dos pacotes.
OK, vamos por a mão na massa. Execute os comandos abaixo e ajuste conforme sua configuração:

# ativa o nat
modprobe iptable_nat

# ativa o encaminhamento de pacotes
echo 1 > /proc/sys/net/ipv4/ip_forward

# cria a regra de roteamento de todas as interfaces para eth0
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Nesse momento os clientes da rede já devem conseguir acessar a Internet normalmente, realize testes de conectividade dos clientes disparando ping externo e tentando navegar na internet, se tudo estiver OK prossiga, caso contrario retorne e verifique se realizou algo errado.

Aqui estamos com as regras do NAT funcionais, porem elas foram criadas somente na memória do servidor! No próximo passo veremos como incluir essas regras na inicialização do sistema. 

Ativar o nat na inicialização do sistema

O Debian possui o arquivo /etc/rc.local que tem seu conteúdo executado toda vez que o sistema é ligado/reiniciado, dessa forma basta que seja incluído os comandos da criação do NAT dentro desse arquivo para que eles sejam executados na inicialização do sistema. Copie os comandos do NAT e insira no arquivo antes do exit 0.

# nano /etc/rc.local

# ativa o nat
modprobe iptable_nat

# ativa o encaminhamento de pacotes
echo 1 > /proc/sys/net/ipv4/ip_forward

# cria a regra de roteamento de todas as interfaces para eth0
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


Pronto!!! Nosso servidor já esta compartilhando a Internet com as maquinas da LAN e quando reinicializado suas configurações são mantidas!

Para concluir esse laboratório precisamos ter uma forma de monitorar o que esta passando pelas interfaces LAN e WAN e utilizaremos o tcpdump para esse fim.

Monitorando interfaces com tcpdump

O tcpdump é uma das mais importantes ferramentas para monitoramento em tempo real de interfaces de um servidor baseado em Linux, BSD e derivados. Vamos nesse momento realizar sua instalação e verificar alguns exemplos básicos de uso.

A instalação segue o padrão do Debian e não tem nada de configuração para ser realizado depois:

# apt-get install tcpdump 

Abaixo agora veremos alguns exemplos de uso do tcpdump.

Monitorar todo o trafego que esta passando na interface LAN do nosso servidor:

# tcpdump -i eth1

Monitorar todo o trafego que esteja passando pela LAN do servidor vindo de uma maquina especifica:

# tcpdump -i eth1 src host 10.30.0.68

Monitorar todo o trafego vindo da LAN e indo para um IP especifico:

# tcpdump -i eth1 dst host 208.67.222.222

Assim como podemos monitorar um IP em especifico, podemos também monitorar todos menos o IP informado, para isso basta informar junto o parâmetro not:

# tcpdump -i eth1 not host 10.30.0.55 

Para finalizar nossos exemplos veja o uso do tcpdump com o filtro de portas de origem (src) e destino (dst). Veja abaixo um primeiro exemplo monitorando todo o trafego indo para o proxy, porta 3128:

# tcpdump -i eth1 dst port 3128

Nesse ponto já imagino você se perguntando... posso misturar filtro por ip e porta? Veja um exemplo de monitorando de todo trafego vindo de um IP especifico para uma porta especifica:

# tcpdump -i eth1 src host 10.30.0.1 and dst port 3128

Ai esta somente um pequeno aperitivo do tcpdump, abordando o minimo necessário para que você já tenha como se virar em suas rotinas diárias. Formas de uso adicionais são facilmente encontradas em documentação disponível na web, então divirta-se em usas pesquisas e monte uma biblioteca de comandos com as formas de uso mais adequadas as suas necessidades.

Pessoal, primeira etapa concluída! Debian instalado, interfaces configuradas, compartilhamento da conexão realizado. Em nosso próximo laboratório vamos incrementar nosso servidor com o serviço DHCP, e posteriormente proxy, http e por ai vamos...

Um forte abraço a todos e bons estudos...


Deixo abaixo somente a relação de mais alguns comandos uteis que podem facilitar seus estudos....


Comandos uteis 

=> Desligar o servidor
     shutdown -h now

  • evitar usar halt direto pois pode danificar o sistema de arquivos 
=> Reiniciar o servidor
     shutdown -r now

  • Evitar usrar reboot direto pois pode danificar o sistema de arquivos
=> Versão do sistema instalado
uname -a

=> Nome do sistema
hostname

=> Ver o uso de disco, formatado em GB
df -h

=> Ver o tamanho e permissão dos arquivos
ls -lh

=> Ver o tamanho de uma pasta
du -sh pasta

=> Excluir arquivo
rm arquivo

=> Excluir diretório/pasta e todo seu conteúdo
rm -rf pasta

=> trocar senha de usuário (nunca rode sem informar o usuário)
passwd senac

=> ver ocupação dos serviços (q para sair)
top

=> monitorar logs em tempo real
tail -f /var/log/XXXXXX

=> monitorar em tempo real o que passa por uma determinada interface
tcpdump
tcpdump -ni eht1
tcpdump -ni eht1 port 53
tcpdump -ni eht1 host 10.30.0.100
tcpdump -ni eht0 host 10.30.3.138 and port 53
tcpdump -ni eht0 host 10.30.3.129 | grep -v 2231
tcpdump -n ether host xx:xx:xx:xx:xx:xx
tcpdump -e -i eht1 | grep 'xx:xx:xx:xx:xx:xx'

=> Ver quem esta utilizando mais uma determinada interface
iftop -ni eth1

OBS: com base no retorno do iftop, é possível pesquisar no log do dhcp para ver quem é a maquina
grep {ip ou parte do ip} /var/log/dhcpd.log

OBS: Por padrão não vem instalado... instalar com o comando abaixo:
apt-get install iftop

=> Assume o Login de outro usuário
su

=> Mostra os usuarios logados no sistema
who

=> Mostra o conteudo de um arquivo
cat

=> Mostra o manual online de um comando
man

=> Mostra todos os atalhos criados na maquina - ex: tp, tm etc
alias

=> Fazer busca em arquivos
grep oque aquivo
grep 00:00 dhcpd.conf

=> Listar os grupos do sistema
cat /etc/group
cat /etc/group | grep ftp

=> Listar os usuarios do sistema
cat /etc/passwd
cat /etc/passwd | grep usuario

=> quais portas e processos estão rodando:
netstat -a
netstat -at
netstat -anp
netstat -anp | grep ssh
netstat -an inet             (mostra portas)
netstat -tan
netstat -tan | grep 2211

-a => mostra também as conexões estabelecidas, e não só as que estão sendo escutadas
-n => mostra o ip e não espera a resolução dos nomes (numeric)
-p => mostra o processo que usa a determinada porta (process)

Comentários

Postagens mais visitadas deste blog

Sub-rede / VLSM – IPv4

MIB Browser - SNMP

UltraSurf - Bloqueio definitivo