Iptables rápido
Por:
Flavio Torres - flaviotorres[@]linuxmasters.info
Publicado em: 08/11/2008 Torres, Flavio. IPTABLES
PARA QUEM NÃO CONHECE IPTABLES. São Paulo, 2008.
Sumário
1 Conceito de segurança
2 Mecanismos de segurança
3 Conceitos de Firewall
Iptables, funcionalidades
Trabalhando com NAT em sua rede
Trabalhando com filtros de pacote
Tratamentos especiais, TOS
Módulos
Resumão
ativando nat
apagando regras
redirecionamento para squid
redirecionamento de portas
liberando portas
bloqueio de ping
bloqueio de portas
bloqueio de
conexões
1 Conceito de segurança
A segurança da informação
é, sem dúvida, um dos assuntos mais importantes dentre as
pautas de reunião de tecnologia em qualquer entidade.
Autenticidade, confidencialidade
em manter as informações a salvo de acesso e divulgação
não autorizadas, confiabilidade, compartilhamento de dados, disponibilidade
e integridade da informação estão diretamente ligados
à segurança. Segurança da informação
são mecanismos que promovem a integridade de uma estrutura de rede
que se aplicam nos conceitos mais simples, que vão desde políticas
de troca periódica de senhas até a trituração
de documentos impressos.
Mobilidade e facilidade já fazem
parte do nosso dia-a-dia, comprar e configurar um roteador Wi-Fi tornou-se
trivial, já com as mais diversas distribuições de
Linux, instalar e configurar um servidor como proxy acaba sendo tarefa
de 15 minutos. É exatamente neste tipo de facilidade que pessoas
mal intencionadas aplicam as mais diversas formas comumente utilizadas
para explorar estas “vulnerabilidades”, com o simples uso
de ferramentas desenvolvidas especialmente para esta finalidade, a invasão.
Ataques direcionados às
redes além de comprometer os recursos e a disponibilidade comprometem
o principal: as informações. Como os ataques podem ser originados
de qualquer posição dentro ou fora da área da rede
em questão, acaba dificultando a tarefa de localização
precisa da origem do ataque e do atacante. O intruso que consiga entrar
em uma rede ficará com um acesso privilegiado para lançar
ataques aos elementos constituintes dessa rede havendo risco acrescido
para ocorrência das situações exemplificadas a seguir:
• Furto ou violação da informação e
dos serviços da rede;
• Abuso da conexão com à Internet;
• Utilização dessa conexão “ponte”
para prática de atos ilícitos, o que, em caso de posterior
investigação policial, envolverá o utilizador titular
do link invadido;
• Vandalismo – destruição de dados, interferência
ao normal funcionamento da rede, etc.
A contra medida simples configurada em separado ou em conjunto não
devem ser consideradas medidas de segurança suficientes para impedir
um indivíduo motivado a entrar na rede.
2 Mecanismos de segurança
Contamos com os mecanismos de segurança físicos e lógicos:
• os métodos físicos são barreiras que limitam
o contato ou acesso à informação ou a infra-estrutura
de dados que contém as informações, podem ser exemplificados
como: portas, trancas, acesso por identificação biométrica,
blindagem, entre outros.
• os métodos lógicos destacam-se por controles eletrônicos
que impedem ou limitam o acesso à informação.
Adicionalmente, agregamos aos mecanismos lógicos:
- Criptografia: É a forma de cifrar dados, utilizando algoritmos
altamente complexos, ou não, para tornar a informação
ininteligível à terceiros. A decriptografia é utilizada
pela parte autorizada a receber esta informação e devidamente
com o algoritmo de decriptação é realizado o processo
inverso.
- Assinatura digital: Código utilizado para verificar a integridade
de um documento, porém, não garante sua confidencialidade.
- Garantia da integridade da informação: Conseguimos facilmente
utilizando funções de “Hashing”, seria como
tirar uma “foto” do documento antes de enviar, e então
para o receptor verificar sua integridade ele tiraria outra “foto”
do documento e realizava a comparação.
- Controle de acesso: destacam-se por senhas, sistemas biométricos,
controle de acesso explícito, como por exemplo, um firewall...
3 Conceitos de Firewall
Firewall, não é nada mais
do que um porteiro ou um segurança com sua árdua função
de verificar quem pode entrar e sair, além de manter a consonância
das coisas, atualmente, já se tornou imprescindível sua
utilização.
Existem firewalls comerciais, muitos; também
existe um método de construção onde podemos definir
as próprias regras, onde você define o que quer controlar;
praticidade? Nem tanto para uma corporação com mais de 5
mil regras. De qualquer forma, com um pouco de organização,
conseguimos trabalhar, e muito bem, com o iptables.
No Linux, o iptables é embutido no
kernel, o que o torna, sem dúvida, superior em relação
aos seus concorrentes. Obviamente nenhum firewall irá corrigir
os erros de sua rede, mas ele poderá limitar o uso destes serviços
à certos computadores. Não faz sentido disponibilizar um
serviço de FTP a toda a internet sendo que apenas a filial necessita
deste acesso, muito menos manter um serviço web ativo no seu servidor,
se nem ao menos você necessita dele lá. Então, como
definir políticas de acesso aos serviços em que eu realmente
necessito mante-los?
Iptables
Para entendermos o iptables, veremos como ele trabalha para então
conhecermos o quê ele pode nos proporcionar. Teremos agora, um método
bem didático de explicação. Preparado??
O iptables está organizado por 3 tabelas, a saber:
Filter: Onde é controlado o de filtro de pacotes,
basicamente, quem entra e quem sai da sua rede. É composta por
três funções:
• INPUT: Controla o que entra no servidor.
• FORWARD: Controla o que entra no servidor mas deve ser redirecionado
a uma outra máquina.
• OUTPUT: Controla o que sai do servidor.
NAT: Ela trabalha com funções de NAT (Network
Address Translation), seria uma troca do endereço de rede. As funções
dela são:
• PREROUTING: Utilizada quando necessitamos tomar ações
ANTES do datagrama ser roteado.
• POSTROUTING: Utilizada quando necessitamos tomar ações
APÓS o roteamento do datagrama.
• OUTPUT: Utilizada quando necessitamos realizar alterações
nos datagramas após eles serem roteados.
Mangle: Trabalha com alterações especiais
nos pacotes, por exemplo alterar a prioridade de um datagrama IP, ou marcar
um determinado datagrama para que ele seja trabalhado por um roteamento
especial, como sair por outro gateway. As funções dela são:
• PREROUTING: Utilizada quando necessitamos modificar os datagramas
dando um tratamento especial antes que eles sejam roteados.
• OUTPUT: Modifica especialmente os datagramas gerados pelo servidor
antes que eles sejam roteados.
Veja um exemplo didático:
Agora que já sabemos tudo sobre as situações das
tabelas, vamos conhecer alguns comandos:
Comandos do iptables
iptables: o binário
iptables-save: binário que salva as regras em
memória.
ip6tables: iptables para IPv6.
iptables-restore: binário responsável carregar
em memória as regras que foram salvas pelo ‘iptables-save’.
Forma de utilização:
# iptables –t nat
diz ao iptables que será usado a tabela nat
# iptables –t filter
diz ao iptables que será usado a tabela filter
# iptables –t mangle
diz ao iptables que será usado a tabela mangle
iptables -<comando> [cadeia]
Ex: iptables -A INPUT
| -A chain |
Ex: iptables –A INPUT
Iptables, insira as regras ao final da chain INPUT. |
| -D chain |
Ex: iptables –D INPUT
Iptables, apague as regras da chain INPUT, não vou mais utilizá-las. |
| -D chain regra_num |
Ex: iptables –D FORWARD 25
Iptables, apague da chain FORWARD a regra residente na posição
25. |
| -R chain regra_num |
Ex: iptables –R FORWARD 20 –s 192.168.30.10
–d 192.168.40.0/24
Iptables, substitua a regra 20 da chain FORWARD pela regra dada ‘–s
192.168.20.10 –d 192.168.30.0/24 -j DROP.’ |
| -I chain |
Ex: iptables –I INPUT
Iptables, insira no inicio da lista a regra. |
| -L chain |
Ex: iptables –L INPUT
Iptables, liste as regras da chain INPUT. Nota: Caso não haja
nenhuma chain especificada, todas as regras em todas as chains são
listadas. |
| -F chain |
Ex: iptables –F FORWARD
Iptables, remova todas as regras da chain FORWARD. Nota: Se nenhuma
chain for especificada, remove as regras de todas as chains existentes,
inclusive as do usuário |
| -Z chain |
Ex: iptables –Z
Iptables, zere os contadores de datagramas e de bytes em todas as
regras da chain especificada, ou para todas as chains se nenhuma for
especificada. |
| -N chain |
Ex: iptables –N VIRUS
Iptables, crie uma chain chamada VIRUS, utilizado para tratar diversos
casos com o mesmo ALVO. |
| -e chain |
Ex: iptables –e WORMS worms
Iptables, renomeie a chain WORMS para worms |
| -X chain |
Ex: iptables –X WORMS
Iptables, apague a chain WORMS, não vou mais utilizá-la.
Nota: o iptables apagará todas se não for especificada
uma. |
| -C chain |
Ex: iptables –C WORMS
Iptables, verifique o datagrama descrito pela regra especificada contra
a chain especificada. Este comando retorna uma mensagem descrevendo
como a chain processou o datagrama. Isso é muito útil
para testar a configuração do firewall, e para uma análise
posterior. |
| -P chain política |
Ex: iptables –P INPUT DROP
Iptables, defina a política padrão para a chain INPUT
dentro de uma política especificada a DROP. As políticas
válidas são: ACCEPT, DROP,
QUEUE e RETURN. |
Controles a serem tomados:
| -p <protocolo> |
Ex: -p tcp.
Iptables, é sobre o protocolo tcp! (você encontra uma
tabela de protocolos em /etc/protocol) |
| -i <interface> |
Ex: -i eth0, -i eth1, -i eth+ (todas eth)
Iptables, controle tudo o que ENTRA (-i de INPUT)
pela interface ethX . Esta regra também se aplica a chain FORWARD. |
| -o <interface> |
Ex: -o eth0, -o eth1, -o eth+ (todas eth)
Iptables, controle o que SAI (-o de OUTPUT). Esta
regra também se aplica nas chains FORWARD e OUTPUT |
| -s <ip> |
Ex: -s 192.168.0.1/24
Iptables, controle o que vier da ORIGEM (-s de SOURCE)
192.168.0.1/24 |
| -d <ip> |
Ex: -d 192.168.0.2/24
Iptables, controle o que vai com DESTINO (-d de DESTINATION) |
| ! <pacote|ip> |
Ex: -d ! 192.168.0.2/24, ou –p ! udp
Iptables, com qualquer DESTINO (-d de DESTINATION)
EXCETO 192.168.0.2, o mesmo para protocolo, qualquer
um exceto udp. |
| -j <ação> |
Ex: -j ACCEPT, -j DROP, -j REJECT, -j LOG
Iptables, o que casar com as ações definidas voce vai
ACEITAR, vai NEGAR, vai REJEITAR
ou vai GRAVAR. |
| --sport <porta> |
Ex: --sport 22
Iptables, o que for da PORTA de ORIGEM
(--sport de SOURCE PORT) 22 |
| --dport <porta> |
Ex: --dport 80
Iptables, o que for para a PORTA de DESTINO
80 (--dport de DESTINATION PORT) |
DICA: Tanto para --sport quanto
para --dport podemos utilizar range de portas:
Ex: --dport 6881:6889
Ou multiportas:
Ex: -m multiport --dport 5190,4000,53
Ações a serem tomadas quando alguma regra combina
ou casa (para os íntimos)
| ACCEPT |
Aceitar o datagrama IP |
| DROP |
Bloquear o datagrama IP, descarta o datagrama sem informar ao emissor |
| REJECT |
Rejeita o datagrama IP, informa o emissor, Ex: icmp destination
host unreacheable |
| LOG |
Cria Logs das ações solicitadas. |
| SNAT |
Modifica o endereço de origem (SOURCE NAT) dos datagramas
IP antes deles serem roteados. Ex: Dizer que um datagrama enviado
do host X para o Y originou-se do host Z. |
| DNAT |
Modifica o endereço de destino (DESTINATION NAT) dos datagramas
IP das máquinas clientes. Ex: Encaminhar um datagrama com destino
a porta 80 para a 3128 (do squid!) |
| REDIRECT |
Redireciona a porta. Ex: o que vier para a porta 7153 redirecionar
para a porta 3389 (a porta do Terminar Service) |
| TOS |
Tratamento especial no datagrama, veremos mais adiante! |
Nossa! Quanta coisa hein? Se você
conseguiu chegar até aqui, é sinal de que apenas passou
os olhos pelas tabelas, não!? Tome notas, leia, imprima, releia
e tenha as tabelas no bolso, se entendê-las dominará o iptables
facilmente!
Agora chega de “bla bla bla” e vamos as reais situações.
A maioria das situações abaixo foram retiradas da lista
linux-board do YahooGroups, a qual sempre presto uma ajuda nas horas vagas.
Vamos tomar como exemplo a situação de rede, a quase padrão
na maioria dos casos:
Rede: eth0 interna
Rede: eth1 externa
Trabalhando com NAT em sua
rede
Mascarar conexão
Devemos habilitar, antes, o nat em seu kernel:
echo 1 > /proc/sys/net/ipv4/ip_forward
E então:
iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0
-j MASQUERADE

Iptables, adicione na tabela nat (-t nat), após ser roteado (-A
POSTROUTING):
• O que for de origem da minha rede (-s 192.168.0.0/24)
Qual o alvo, o que fazer?
• -j MASQUERADE (mascarar a conexão)
SNAT: modificação do endereço de
origem das máquinas para um único IP ou faixa de IP's.
Qualquer regra que utilize
SNAT deve ser aplicada a chain POSTROUTING.
DNAT: modificação do endereço de
destino das máquinas para um único IP ou fixa de IP's.
Qualquer regra que utilize
DNAT deve ser aplicada a chain PREROUTING.
E então, fácil? Calma, veremos muitos exemplos, até
você decorá-los. Vejamos uma regra:
iptables –t nat –A POSTROUTING –s 192.168.0.1
–o eth0 –j SNAT -–to 192.168.2.12
Iptables, adicione na tabela POSTROUTING (-t nat –A POSTROUTING):
• o que vier com origem do host (-s 192.168.0.1)
• e especificamente o que sai pela rede eth0 (-o eth0)
• deverá ter seu endereço alterado (-j SNAT) para
192.168.2.12
Tá ficando bom, vejamos uma com DNAT:
Redirecionar conexões que entrem na porta 7155 para a porta 3389
(Terminal Service) de uma máquina interna de sua rede.
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 7152
-j DNAT --to 192.168.0.126:3389

iptables como vai? Adicione na tabela PREROUTING (-t nat –A PREROUTING):
• O que for TCP e que vier com destino à porta 7152 (--dport
7152)
terá seu destino de rede alterado para 192.168.0.126 (-j DNAT –-to
192.168.0.126:3389)
Quando não especificamos
uma origem ou um destino (-s <IP>, -d <IP>) o iptables segue
o padrão que é ANY, ou seja, qualquer (0/0). É redundante
colocarmos algo como –s 0/0 ou –d 0/0. Note que na regra acima,
deixamos explícito a porta destino do pacote, já que ele
viria pela 7152 e além de alterarmos o IP de destino, alteramos
também a porta para 3389.
Redirecionar conexões da porta 80 para 3128
iptables -t nat -A PREROUTING -s 192.168.0.0/24 -p tcp
-i eth0 --dport 80 -j REDIRECT --to-port 3128

iptables, adicione na tabela nat (-t nat), antes de ser roteado (-A PREROUTING)
:
• O que for de origem (-s, de source) 192.168.0.0./24
• E que seja do protocolo tcp (-p tcp)
• E que entre pela interface eth0 (-i de input, eth0)
• Com destino a porta 80 (--dport 80)
Qual o alvo, o que fazer? :
• Redirecionar para a porta 3128 (-j REDIRECT –to-port 3128)
Trabalhando com filtros de pacote
Há pessoas que trabalham, de cara,
bloqueando tudo e liberando apenas o necessário. Há outras
que trabalham liberando tudo o que necessita e bloqueia o resto, veja,
é diferente...
Note que quando se lista uma tabela do iptables (iptables
–t filter –L), você vê que a política
padrão é ACCEPT:
# iptables -t filter -L
Chain INPUT (policy ACCEPT)
Então, vamos montar a política de que, por padrão
o pacote é bloqueado.
iptables –P INPUT DROP
iptables –P OUTPUT DROP
iptables –P FORWARD DROP
Bloquear tudo com destino ao site www.pornografia.com
iptables –A FORWARD –s 192.168.0.0/24 –d
www.pornografia.com –j DROP

iptables, adicione na tabela de encaminhamento de pacotes (iptables –A
FORWARD):
• Tudo o que for de origem (-s, de source, origem ) 192.168.0.0/24
• e com destino a (-d, de destination, destino) www.pornografia.com
• seja bloqueado (-j alvo, “o que fazer?”) DROP (bloquear,
negar)
Liberar tudo o que vier do site www.empresa.com.br
iptables –A FORWARD –s www.empresa.com.br
–d 192.168.0.0/24 –j ACCEPT

iptables, adicione na tabela de encaminhamento (iptables –A FORWARD):
• O que vier da origem (-s www.empresa.com.br)
• Com destino a minha rede interna (-d 192.168.0.0/24)
• Será liberado (-j ACCEPT)
Bloquear totalmente aquele cara que esta consumindo sua banda:
iptables –A FORWARD –s 192.168.0.15 –d
192.168.0.1 –j DROP

Adicionar na tabela de encaminhamento (-A FORWARD):
• o que for de origem (-s) do IP 192.168.0.15 e com destino ao gateway
de internet (-d) 192.168.0.1 será bloqueado (-j DROP).
Já deu um susto? Então você pode excluir a regra:
iptabes –D FORWARD –s 192.168.0.15 –d
192.168.0.1 –j DROP
Há uma forma de excluir a regra pelo seu número, para listar
as regras e sua ordem fazemos:
# iptables -t filter -nL --line-numbers
26 DROP 0 -- 192.168.0.15 192.168.0.1
E então, excluímos:
# iptables -D FORWARD 26
Tratamentos especiais em pacotes, TOS
“O tipo de serviço é
um campo existente no cabeçalho de pacotes do protocolo ipv4 que
tem a função especificar qual é a prioridade daquele
pacote. A prioridade é definida usando o algoritmo FIFO do próprio
kernel, sendo uma das alternativas de controle/priorização
de tráfego das mais simples e rápidas.
Uma das vantagens da utilização do tipo de serviço
é dar prioridade ao tráfego de pacotes interativos (como
os do ICQ, IRC, servidores de chat), etc. Com o TOS especificado, mesmo
que esteja fazendo um download consumindo toda a banda de sua interface
de rede, o tráfego com prioridade interativa será enviado
antes, aumentando a eficiência do uso de serviços em sua
máquina.” - Guia Foca Linux.
Antes de começar, algumas definições:
Tipo de TOS |
AJUSTE |
| Espera mínima (Minimize-delay) |
16 |
| Máximo processamento (Maximize-throughput) |
8 |
| Máxima confiança (Maximize-reability) |
4 |
| Customínimo (Minimize-cost) |
2 |
| Prioridade normal (Normal-service). |
0 |
Prioridade máxima para conexões SSH:
iptables –t mangle –A PREROUTING –i
eth1 –p tcp –-sport 22 –j TOS –-set-tos 16

iptables, adicione na tabela mangle (-t mangle) antes de ser roteado (-A
PREROUTING):
• o que entrar pela interface eth1 (-i eth1) que for tcp (-p tcp)
• com origem da porta 22 (--sport 22) dar o máximo de processamento
(-j TOS –-set-tos 16)
Você deve ter notado, na regra de DNAT láaa em cima, há
uma coisinha estranha (-p tcp -m tcp) –m
tcp... o que seria isto? Módulos!
Módulos
Os módulos ampliam o poder do iptables, é uma forma de
explandir ainda mais suas regras, afinal, já somos expert em iptables!
Veja alguns módulos:
TIPO |
DESCRIÇÃO |
| limit |
Limita o número de vezes de uma regra |
| state |
Estado da conexão, (NEW,ESTABLISHED, RELATED e INVALID “já
obsoleto”) |
| mac |
Isto mesmo, podemos trabalhar por endereços MAC, bacana,
não? |
| multiport |
Já pensou especificar 10 regras de tratamento de portas?
O Multiport faz isto por você! |
| string |
Dá uma espiada no conteúdo do pacote em busca de uma
“string” |
| owner |
Observa quem criou o pacote, trabalha apenas com a chain OUTPUT. |
A opção limit limita a quantidade
de vezes que a regra deve ser executada em um intervalo de tempo, estremamente
útil para trabalhar com tentativas de ataques. Ataque DoS (Denial
of Service), entende?
iptables –A INPUT –p icmp --icmp-type echo-request
–m limit --limit 1/s –j ACCEPT

Definimos que aceitaremos pacotes de icmp (-p icmp) tipo do ping (--icmp-type
echo-request) se eles forem recebidos apenas no limite de um segundo (-m
limit --limit 1/s). Podemos ter s, m, h, d (segundo, minuto, hora e dia).
Certo, se eu desejar bloquear estes tipos de requisições,
afinal, ninguém precisa saber se estamos vivos ou não, a
regra seria ... ?
iptables –A INPUT –p icmp –j DROP
Bloquear tudo o que entrar e que seja do tipo icmp. Esta ficou fácil,
não?
Mas...
Como ele controla isto, a quantidade de vezes... é memória,
banco de dados?
Não, ele utiliza as flags de inicialização de um
datagrama IP, elas são:
FLAG |
Descrição |
| ACK |
Acknowledgement. Informa ao receptor o próximo número
da seqüência do pacote |
| SYN |
Syncronize. Utilizada para realizar o sincronismo dos números
seqüênciais. |
| FIN |
Finalização. Flag utilizada para indicar
a finalização de uma conexão |
| PSH |
Push. Informa ao tcp que se deve enviar todos os pacotes
que estejam no buffer ao destinatário |
| URG |
Urgent. Prioridade no envio. |
Para um melhor entendimento, veja:
- O Cliente envia um datagrama com a flag SYN, para o firewall, é
uma nova conexão;
- O servidor recebe a requisição, e responde com a dupla
SYN+ACK;
- Para o firewall, há uma conversa, estabilizou!
Fechamento de uma conexão:

“Imagine o que aconteceria se enviássemos vários
pacotes SYN forjando a origem para um Host B, este host B enviaria um
pacote SYN+ACK de volta para o Host A e ficaria aguardando o estabelecimento
de conexão (ora se forjamos a origem, é óbvio que
nunca o receberá), este é o tipo de conexão three-way
e várias requisições neste estado de ‘half-connection’
geram o famoso Syn-flood, muitas conexões abertas aguardando um
pacotinho ACK de confirmação que nunca chegará.”
A opção state trabalha com o estado da
conexão:
NEW: nova conexão
ESTABLISHED: conexão já pertencente e estabilizada entre
as duas pontas.
RELATED: conexão que se relaciona com um outro pacote, por exemplo
mensagens de erro.
INVALID: Conexões inválidas, pacotes com problemas ou
não formados corretamente.
iptables –A INPUT –m state --state INVALID
–i eth1 –j DROP
Bloqueia o que entrar (-A INPUT) pela interface
eth1 (-i eth1) e com estado inválido
(--state INVALID).
A opção mac permite-nos trabalhar por
este tipo de endereçamento:
iptables –A INPUT –m mac --mac-source 00:50:04:EE:3D:FD
–j DROP
Bloqueia o que for do endereço mac de origem (--mac-source)
A opção multiport permite-nos trabalhar
com várias portas, por exemplo:
iptables -A FORWARD -p udp -m multiport --dport 5190,4000
-j DROP
Bloqueia o encaminhamento de mensagens udp das portas 5190 e 4000
iptables -A FORWARD -s 192.168.0.0/24 -p tcp -m multiport
--dports domain,ftp-data,ftp,https,pop3,smtp,21 -j ACCEPT
Libera o encaminhamento de mensagens das portas de destino domain,ftp-data,ftp,https,pop3,smtp,21.
Uma relação de portas está disponível em /etc/services
Se você quer liberar um range de portas, pode fazer:
iptables -A INPUT -p udp -i eth+ --dport 33435:33525
-j DROP
Bloquear tudo o que for udp e que entrar por qualquer interface (-i eth+)
para as portas de 33435 até 33525. Bloqueia o traceroute =)
A opção string permite-nos vasculhar o conteúdo
do pacote, por exemplo, bloquear o que contém a string Kazaa.
iptables –A INPUT –m string --string “X-Kazaa”
–j DROP
Hum… vamos ver o que está acontecendo? Log
nele!
iptables –A INPUT –m string --string “sexo”
–j LOG --log-prefix “IPTABLES: Log da string sexo, masculino
ou feminino? =)”
Dicas
Não
esqueça de sempre logar e depois bloquear, sempre liberar o chefe
e depois bloquear o restante da empresa, e assim por diante, pois o iptables
irá ler suas regras de cima para baixo, sempre.
O seu arquivo de firewall nada mais é que um “shell script”,
permitindo, então você fazer:
# Redireciona VPN e TS para o PDC
PORTS=”1723 3306”
PROTOCOLOS=”tcp udp”
IFACEWEB=”eth1”
for PORTA in $PORTS;do
for PROTO
in $PROTOCOLOS;do
$IPTABLES -t nat -A PREROUTING -p $PROTO -m $PROTO --dport $PORTA -i $IFACEWEB
-j DNAT --to 192.168.0.3
done
done
Resumão
# Ativando o NAT e definindo variáveis.
echo 1 > /proc/sys/net/ipv4/ip_forward
IPTABLES=”/sbin/iptables”
LAN=”192.168.0.0/24”
IFACEWEB=”eth1”
# Apagando as regras anteriores
$IPTABLES -t nat -F
$IPTABLES -t nat -X
$IPTABLES -t nat -Z
$IPTABLES -t filter -F
$IPTABLES -t filter -Z
$IPTABLES -t filter –X
# Configurando NAT e redirecionamento
para SQUID, NINGUEM SAI PELA
# porta 80
$IPTABLES -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0
-j MASQUERADE
$IPTABLES -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports
3128
$IPTABLES -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j DROP
# Liberando acesso remoto
Terminal Service a uma máquina da rede.
# Lembre-se, tudo o que entrar pela porta 7150 será redirecionado
para
# a máquina interna 192.168.0.117 na porta 3389.
$IPTABLES -t nat -A PREROUTING -p tcp -m tcp --dport
7150 -j DNAT --to 192.168.0.117:3389
# Liberando acesso a uma determinada
porta de um programa especifico
# (ERP) vindas da Filial (200.200.200.200)
$IPTABLES -A FORWARD -s 200.200.200.200 -p tcp -m
tcp --dport 1494 -j ACCEPT
#Bloqueando ping com resposta unreachable
$IPTABLES -I INPUT -i $IFACEWEB -p icmp -j REJECT --reject-with icmp-host-unreachable
# Bloquear Bittorrent, ou outras
portas, SQUID, Samba, DNS, etc...
$IPTABLES -I INPUT -p tcp -m tcp --dport 6881:6889
-j DROP
$IPTABLES -I OUTPUT -p tcp -m tcp --dport 6881:6889 -j DROP
# Bloquear conexões de
algum programa que utilize algum destino ou
# alguma porta de destino, KAZAA, Emule
$IPTABLES -A FORWARD -d 216.35.208.0/24 -j DROP
$IPTABLES -A FORWARD -p tcp --dport 6346 -j DROP
$IPTABLES -A FORWARD -d 209.61.186.0/24 -j DROP
|