Professor: Macêdo Firmino
Disciplina: Sistemas Operacionais de Rede
Podemos utilizá-lo um sistema operacional
para interligar computadores em uma rede interna. Os orgãos padronizadores da Internet
criaram faixas de endereçamento IP exclusivas
para redes internas, a fim de prevenir que um
conflito de endereço IP posso ocorrer quando
um PC interno tente acessar a Internet, por
exemplo.
Dessa forma, tais endereços IP para redes
internas não podem ser registrados, ou seja, nenhum computador na Internet obterá um endereço IP que esteja incluso nesta faixa de IPs
livres:
ˆ 10.0.0.0 – 10.255.255.255
ˆ 172.16.0.0 – 172.31.255.255
ˆ 192.168.0.0 – 192.168.255.255
O Compartilhamento da conexão de Internet fornece aos computadores a capacidade de
compartilhar uma única conexão para a Internet. Desta forma, o servidor de acesso precisa
de duas placas de rede, uma para a rede interna
e outra para a rede externa. Também são necessários dois endereços IPs diferentes, um para
a rede interna (endereços mostrados anteriormente) e outro para a rede externa (que é fornecido pelo provedor de acesso).
O computador com acesso a Internet deve
ser configurado para funcionar como Internet
gateway. Os outros computadores da rede
acessa a Internet indiretamente via o gateway.
Os demais computadores da rede utilizam a Internet como se estivessem diretamente conectados. Ou seja, para os usuários o uso da conexão compartilhada é transparente. Aula de
hoje descreve este recurso no Ubuntu/Linux.
I - Compartilhamento de Conexão com
a Internet
A conversão de endereços internos e externos é feito através do servidor utilizando o mecanismo de NAT. Como visto anteriormente, na
comunicação através de um servidor NAT, este
servidor troca os endereços dos clientes pelo seu
endereço IP quando envia uma mensagem para
a rede externa e desfaz quando recebe as respostas.
1. Configure a sua interface de erro externa.
Para isso, obtenha os dados de configuração do seu provedor de Internet;
2. Configure a dua interface de rede interna
com um dos endereços das faixas de IPs
livres. Por exemplo: 192.168.0.1.
3. Configure o seu firewall para permitir o
NAT.
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1
-j MASQUERADE
No Linux o NAT é feito pelo iptables, o firewall padrão do sistema, que incorpora a função de compartilhamento através do módulo
“iptable nat”. Para ativar o compartilhamento,
precisamos apenas carregar o módulo, ativar o
roteamento de pacotes e em seguida executar
o comando que ativa o compartilhamento propriamente dito. Explicando assim pode parecer
difı́cil, mas na prática isso é feito usando apenas
3 comandos (como usuário root ).
O “eth1” no terceiro comando indica a placa
onde está a conexão com a Internet. Não se esqueça de indicar a interface apropriada ao executar o comando (na dúvida você pode checar
a configuração da rede usando o ifconfig).
Masquerade é um alvo utilizado também
para alterar a origem de um pacote, permitindo
que as máquinas da rede interna possam estar
acessando a internet. Ele é utilizado nos casos
em que não se possui um ip fixo. Ele verifica
o endereço ip da interface de saı́da e utiliza ele
para alterar o pacote.
Após isso o seu Linux já está configurado.
Agora os clientes da rede precisarão ser configurados para usar o endereço IP do servidor
Linux como gateway e informe o servidor DNS
de rede.
II - Firewall
Muitas empresas têm grandes quantidades
de informações confidenciais, segredos comerciais, planos de desenvolvimento de produtos,
estratégias de marketing, análises financeiras e
etc. A revelação dessas informações para um
concorrente poderia ter terrı́veis consequências.
No entanto, estas empresas precisam ter acesso
a Internet.
Em consequência disso, foi criado um dispositivo de centraliza a entrada e a saı́da de dados da empresa, ou seja, quando o tráfego que
entra/sai de uma rede é registrado, descartado
e/ou retransmitido. A entidade que faz isso é
um dispositivo conhecido como firewall.
Rede Privada
Firewall
Internet
Figura 1: Localização de um firewall entre a
rede administrada e o mundo exterior
O firewall é uma combinação de hardware
e software que isola a rede interna de uma organização da Internet, permitindo que alguns
pacotes passem e bloqueando outros.
II.1 - Netfilter
O netfilter é um módulo que fornece ao sistema operacional Linux as funções de firewall,
NAT e log de utilização de rede de computadores. Para administrar e inspecionar as regras do
netfilter é utilizado uma ferramenta chamada
iptables. Esta ferramenta esta presente em todas as distribuições Linux atuais.
As principais funções do iptables são:
ˆ Listar as regras de filtragem dos pacotes;
ˆ Adicionar, remover ou modificar as regras
de filtragem dos pacotes;
ˆ Listar, apagar por regras os contadores
das regras de filtragem dos pacotes.
Há muitas ferramentas disponı́veis para
ajudá-lo a construir um firewall com GUI (Interfaces Gráficas), por exemplo, o Firestarter e
o fwbuilder. Na aula de hoje utilizaremos apenas o iptables.
O firewall funciona mediante tabelas e regras pré-estabelecidas. São definidas tabelas.
Cada tabela contém um número de chains. As
chains são as situações possı́veis (por exemplo, entrada, saı́da, retransmissão). Cada chain
contém uma lista de regras que irão determinar
como um pacote deverá ser tratado (por exemplo, aceito e rejeitado).
No Linux as tabelas são:
ˆ Filter : tabela padrão. Nesta tabela estarão as regras de filtragem e controle dos
pacotes. As chains da tabela Filter são:
– INPUT : regras responsáveis pelo
controle das conexão que chegam
com destino à máquina servidora;
– OUTPUT : regras responsáveis pelo
controle das conexões que saem (são
gerados) da máquina servidora;
– FORWARD : regras responsáveis
pelo controle das conexões que
são redirecionadas pela máquina
servidora (pacote que atravessa o
firewall, oriundo de uma máquina e
direcionado a outra);
ˆ NAT: tabela que contém regras que irão
modificar conexões. Regras que gerarão
outras conexões através de masquerading,
source nat, destination nat, port forwarding. As regras contidas nesta tabela serão verificadas antes da tabela filter.
– PREROUTING: consulta os dados
que deverão ser modificados antes de
serem enviados para a chain.
– OUTPUT : consulta os dados gerados localmente e que necessitam ser
modificados antes de serem roteados.
Este chain somente é consultado por
conexões que se originam pela interfaces da máquina firewall ;
– POSTROUTING: verificando os dados que precisam ser modificados
após as verificações das regras.
ˆ Mangle: esta tabela ser para modificações
especiais no cabeçalho dos pacotes. As regras contidas nas chains desta tabela serão verificadas antes das regras de outras
tabelas. Como exemplo de utilização de
uma regra na tabela mangle seria a alteração a alteração do TOS (Type of Service)
do pacote.
Regras são comando passados ao iptables
para configurá-lo para o tratamento dos pacotes. Por exemplo, Liberá-los, bloqueá-los ou registrar log da sua passagem. O iptables nos
permite criar regras complexas, com várias condicionais para tratamento dos pacotes.
As regras do iptables, geralmente, são compostas assim:
sudo iptables [tabela] [chain] [opç~
ao]
-j [aç~
ao]
As opções divididas em:
-P : define uma regra padrão;
-A : acrescenta uma nova regra às existentes;
ˆ Liberando acesso acesso de uma determinada rede (192.168.5.0/24) ao servidor de
email (pop3 e smtp).
iptables -A INPUT -p tcp -m multiport
--dport 25,110 -s 192.168.5.0/24
-j ACCEPT
ˆ Utilizando a tabela nat para realizar um
redirecionamento da porta 80 (http) para
a porta 3128.
-D : apaga uma regra;
-L : lista as regras existentes;
-F : apaga todas as regras;
-I : insere uma nova regra;
-h : mostra a ajuda;
-R : substitui uma regra;
-C : chega as regras existentes;
-Z : zera uma regra especifica;
-N : cria uma nova regra com um nome;
-X : exclui uma regra especı́fica pelo seu nome.
As principais ações são:
ACCEPT : aceitar, permite a passagem do
pacote.
DROP : abandonar, não permite a passagem
do pacote, descartando-o. Não avisa a origem sobre o ocorrido.
REJECT : igual ao DROP, mas avisa a origem sobre o ocorrido (envia pacote icmp
unreachable).
LOG : cria um log referente à regra, em
“/var/log/messages“.
II.2 - Exemplos de Regras
Vejamos alguns exemplos de regras:
ˆ Adicionar a tabela filter, na chain INPUT
a informação que os dados que entrarem
na rede na porta 80 (http) serão bloqueados.
iptables -A INPUT -p tcp --dport 80
-j DROP
ˆ Adicionar a tabela filter, na chain INPUT
a informação para liberar acesso a porta
53 (DNS)
iptables -A INPUT -p udp --dport 53
-j ACCEPT
iptables -t nat -A PREROUTING -p tcp
--dport 80 -j REDIRECT --to-port 3128
ˆ Definindo que a conexão que for proveniente do host 200.200.200.200 e que esteja
sendo originada na porta 25 (smtp) seja
aceita.
iptables -A INPUTs 200.200.200.200
-p tcp --sport 25 -j ACCEPT
ˆ Nesta regra definimos que todas as conexões com destino a portas altas (de 1024
até 65535) sejam bloqueadas. Caso não
seja definido a porta de inicial (:1024) ele
assumirá como porta inicial a 0, e caso
não seja definido a porta final (1024:) será
assumido como porta final a 65535.
iptables -A INPUT -p tcp --dport
1024:65535 -j DROP
ˆ Todos os pacotes oriundos de qualquer
sub-rede e destinados a qualquer sub-rede
deverão ser aceitos.
iptables -A FORWARD -j ACCEPT
ˆ Os pacotes oriundos da sub-rede
10.0.0.0/8 e destinados ao host
www.chat.com.br deverão ser descartados. Deverá ser enviado um ICMP
avisando à origem.
iptables -A FORWARD -s 10.0.0.0/8 -d
www.chat.com.br -j REJECT
ˆ Os pacotes destinados oriundo do host
www.orkut.com deverão ser descartados.
iptables -A FORWARD -s www.orkut.com.
-j DROP
ˆ Caso tenha uma máquina suspeita com
esta regra, todo o tráfego de pacotes TCP oriundos da porta 80 do host
10.0.0.5 e destinados a qualquer lugar
deverá ser gravado em log. No caso,
”/var/log/messages”.
iptables -A FORWARD -s 10.0.0.5 -p tcp
--sport 80 -j LOG
ˆ Exemplos de regras para bloquear o MSN.
iptables -A FORWARD -p tcp --dport 1863
-j REJECT
iptables -A FORWARD -d loginnet.passport
.com -j REJECT
ˆ Regra para bloquear uma máquina de
acordo com o seu endereço MAC.
iptables -A INPUT -m mac --mac-source
XX:XX:XX:XX:XX:XX -j DROP
As regras são processadas na ordem em que
aparecem. Deste modo, se houver conflito entre
regras, sempre valerá a primeira. Assim, entre
as regras:
iptables -A FORWARD -p icmp -j DROP
iptables -A FORWARD -p icmp -j ACCEPT
Valerá a primeira (DROP).
Exercı́cio
1. Pesquisar e implemente um controle sobre
os serviços P2P, impedindo o uso desse
recurso na sua Intranet.
2. Mostre as regras necessárias para Configurar
de modo a bloquear as conexões ICMP,
TELNET e FTP de entrada.
3. Permitir as conexões ao serviço SSH de seu
servidor e bloquear as demais conexões da
sua rede interna.
4. Descreve uma regra que bloquei o site www.
4share.com para um IP (192.168.0.134)
da sua rede.
5. Qual a regra para um computador
(192.168.0.12) da rede interna possa
se comunicar via RDESKTOP (porta
3389).
Download

Aula prática: Firewall e Configuração do NAT.