Académique Documents
Professionnel Documents
Culture Documents
Manual do TuxFrw
----------------
(versão 3.00)
===============================================================================
- EXT ==> rede externa ou Internet. Um dos pontos mais vulneráveis para uma
corporação que possua acesso direto à Internet. Existem módulos do TF
específicos para estes acessos que vão bloquear alguns tipos de
ataques e gerar registros para posterior auditoria.
- INT ==> rede corporativa do cliente. Nesta rede não pode haver acessos da
rede externa ou Internet, embora algumas empresas cometam esse erro.
Todos os acessos desta rede para Internet e/ou DMZ serão controlados
pelo TuxFrw e serão registradas todas as tentativas de acesso não
autorizado.
O TuxFrw possui alguns recursos avançados como SPF (Stateful Packet Filtering),
que controla o estado de uma conexão, diminuindo assim a quantidade de regras e
tornando-as mais simples de gerenciar, além de uma maior segurança, já que o
firewall se encarrega de avaliar se uma respota é válida ou não. Outro recurso
que o TF já possui em sua estrutura modular é o NAT (Network Address
Translation), que pode ser de três tipos:
- 1:1 ==> este recurso é muito utilizado numa DMZ por permitir que um servidor
não necessite um IP público. Dessa forma não é preciso subdividir o
intervalo de IPs públicos cedidos por um provedor já que isso
implicaria em "perda" de IPs.
Dessa forma poderíamos associar um IP 192.168.0.1 à 200.xxx.0.1 e
vice-versa.
- N:N ==> muito pouco utilizado, este tipo de NAT faz nada menos que uma
troca de um pool de IPs de uma subrede por outro pool de IPs de outra
subrede.
Como observação o NAT não existe no IPv6, pois não foi implementado. A
filosofia do IPv6 diz que todo device deve ter seu próprio IP sem a necessidade
do uso de NAT porque não haverá falta de IPs.
tuxfrw---tuxfrw.conf
|
tf_BASE.mod
|
+----------------------------+---------+------+------------+-----+
| | | | | | |
tf_KERNEL.mod | | tf_NAT-IN.mod | | tf_OUTPUT.mod
| | | |
tf_INPUT.mod tf_FORWARD.mod tf_NAT-OUT.mod tf_MANGLE.mod
|
+------------+-------+---------+---------+--------+--------+
| | | | | |
tf_INT-EXT.mod | tf_INT-VPN.mod tf_EXT-DMZ.mod | tf_DMZ-EXT.mod
| |
+-------+--+------+ +-------+---+-------+
| | | | | | | |
| | | | | | | |
tf_INT-DMZ.mod | | tf_DMZ-INT.mod tf_DMZ-VPN.mod | | tf_VPN-DMZ.mod
| | | |
tf_EXT-INT.mod tf_EXT-VPN.mod tf_VPN-EXT.mod tf_VPN-INT.mod
tuxfrw---tuxfrw.conf
|
tf_BASE.mod
|
+----------------------------+------------------+-----+
| | | | |
tf_KERNEL.mod | | | tf_OUTPUT.mod
| | |
tf_INPUT.mod tf_FORWARD.mod tf_MANGLE.mod
|
+------------+-------+---------+---------+--------+--------+
| | | | | |
tf_INT-EXT.mod | tf_INT-VPN.mod tf_EXT-DMZ.mod | tf_DMZ-EXT.mod
| |
+-------+--+------+ +-------+---+-------+
| | | | | | | |
| | | | | | | |
tf_INT-DMZ.mod | | tf_DMZ-INT.mod tf_DMZ-VPN.mod | | tf_VPN-DMZ.mod
| | | |
tf_EXT-INT.mod tf_EXT-VPN.mod tf_VPN-EXT.mod tf_VPN-INT.mod
Olhando pela primeira vez a estrutura do TuxFrw, temos a impressão de algo
confuso, mas logo veremos que além de prático é muito simples administrá-lo e
implementá-lo em uma instituição.
Os diagramas acima ilustram quais módulos estão interligados, demonstrando que
o arquivo "tuxfrw" é responsável pela chamada dos módulos abaixo dele. Reparem
que no IPv6 não existem os módulos tf_NAT-IN.mod e o tf_NAT-OUT.mod.
- tf_INT-VPN.mod ==> o TuxFrw tem suporte 100% a VPN (Virtual Private Network)
tf_VPN-INT.mod utilizando o OpenVPN http://openvpn.net ou PPTP
http://pptpclient.sourceforge.net.
O princípio de funcionamento é o mesmo já apresentado
anteriormente, só que entre as interfaces de rede interna
e tun+ ou ppp+. Ex.: da interface eth2 para tun0 e
vice-versa.
Para se entender mais sobre esses módulos é necessário um
estudo sobre VPNs.
- tf_DMZ-VPN.mod ==> o mesmo já descrito acima só que entre a rede DMZ e a VPN,
tf_VPN-DMZ.mod EXT e a VPN.
tf_VPN-EXT.mod
tf_EXT-VPN.mod
- install.sh ==> este shell script somente instala o TuxFrw nos seus devidos
diretórios. Todos os módulos são colocados a partir de
/etc/tuxfrw/ assim como o tuxfrw.conf. O script tuxfrw é
colocado em /etc/rc.d/init.d/ caso exista o utilitário
chkconfig, senão também ficará em /etc/tuxfrw/.
O TuxFrw, na presença do utilitário chkconfig, poderá se
comportar como um serviço a ser executado na inicialização
do sistema.
Algumas observações importantes:
================================
=========================================================================
=== TuxFrw 3.00 ===
=== Copyright (C) 2001-2010 ===
=== Marcelo Gondim <gondim@linuxinfo.com.br> ===
+-----------------------------------------------------------------------+
| TuxFrw is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation; either version 2 of the License, or |
| (at your option) any later version. |
+-----------------------------------------------------------------------+
Opening TuxFrw configuration file: [OK]
Clearing all current rules and user defined chains: [OK]
Changing target policies to DROP: [OK]
Applying TuxFrw configuration:
# less /tmp/error.check
Este é o modo DEBUG para o shell script, linguagem na qual o TuxFrw foi criado.
No tuxfrw.conf:
ADMIN_IP="192.168.1.15"
No tf_INT-EXT.mod:
Repare que essa regra nunca será efetivada por causa dessa variável errada!
- tf_INT-VPN.mod ==> estes tem tanta importância quanto os de cima mas somente
tf_VPN-INT.mod nos casos onde existir uma VPN com o Firewall.
tf_DMZ-VPN.mod
tf_VPN-DMZ.mod
tf_VPN-EXT.mod
tf_EXT-VPN.mod
Para os administradores que queiram adicionar mais interfaces de rede:
======================================================================
Digamos que se queira criar mais uma interface de rede no TuxFrw, porque o
firewall em questão possui quatro interfaces de rede ao invés de apenas três.
Vejamos um exemplo prático, para criação da interface de rede TST de teste:
TST_IFACE=""
TST_IP=""
TST_NET=""
TST_BRO=""
TST_IP6=""
TST_NET6=""
2 - Digamos que se queira criar regras entre a rede interna e essa nova rede
para que ambos troquem informações:
Repare na troca de INT2TST para TST2INT e sempre a última linha serve para
registrar os logs das tentativas de acesso não permitidas.
.
.
.
.
.
.
.
.
.
.
.
.
# DMZ<->EXT rules
if [ "$DMZ_IFACE" != "" -a "$EXT_IFACE" != "" ]; then
$IPTABLES -N DMZ2EXT
$IPTABLES -N EXT2DMZ
$IP6TABLES -N DMZ2EXT
$IP6TABLES -N EXT2DMZ
. $CONF_DIR/ipv4/tf_DMZ-EXT.mod 2> /tmp/tf_error
echo -n "Loading DMZ->EXT IPv4"
evaluate_retval
. $CONF_DIR/ipv6/tf_DMZ-EXT.mod 2> /tmp/tf_error
echo -n "Loading DMZ->EXT IPv6"
evaluate_retval
. $CONF_DIR/ipv4/tf_EXT-DMZ.mod 2> /tmp/tf_error
echo -n "Loading EXT->DMZ IPv4"
evaluate_retval
. $CONF_DIR/ipv6/tf_EXT-DMZ.mod 2> /tmp/tf_error
echo -n "Loading EXT->DMZ IPv6"
evaluate_retval
fi
# INT<->TST rules
if [ "$INT_IFACE" != "" -a "$TST_IFACE" != "" ]; then
$IPTABLES -N INT2TST
$IPTABLES -N TST2INT
$IP6TABLES -N INT2TST
$IP6TABLES -N TST2INT
. $CONF_DIR/ipv4/tf_INT-TST.mod 2> /tmp/tf_error
echo -n "Loading INT->TST IPv4"
evaluate_retval
. $CONF_DIR/ipv6/tf_INT-TST.mod 2> /tmp/tf_error
echo -n "Loading INT->TST IPv6"
evaluate_retval
. $CONF_DIR/ipv4/tf_TST-INT.mod 2> /tmp/tf_error
echo -n "Loading TST->INT IPv4"
evaluate_retval
. $CONF_DIR/ipv6/tf_TST-INT.mod 2> /tmp/tf_error
echo -n "Loading TST->INT IPv6"
evaluate_retval
fi
.
.
.
.
.
.
Obs.: Repare que a nova entrada de bloco INT2TST e TST2INT ficou antes da
chamada do bloco FORWARD acima e precisa ser assim para todas as novas
entradas desse tipo.
================================================================================
Autor
-----
- Marcelo Gondim <gondim@linuxinfo.com.br>
================================================================================
Links
-----