Ir para o conteúdo
ou

Software livre Brasil

0 comunidades

Nenhum(a)

Tela cheia
 Feed RSS

Blog

27 de Maio de 2009, 0:00 , por Software Livre Brasil - | Ninguém está seguindo este artigo ainda.

1. O que é um Firewall..........................................................................................................................3
2. Conceito de protocolos.........................................................................................................................4
2.1 O que é um protocolo de rede.....................................................................................................4
2.1.1 Protocolo TCP.....................................................................................................................4
2.1.1.1 Estabelecendo uma conexão...........................................................................................4
2.1.1.2 Flags do protocolo TCP..................................................................................................5
2.1.2 Protocolo UDP....................................................................................................................5
2.1.3 Protocolo ICMP...................................................................................................................5
3. Conceito de portas...............................................................................................................................5
4. IPTABLES...........................................................................................................................................7
4.1 Principais funções do iptables.......................................................................................................7
4.2 Tabelas..........................................................................................................................................7
4.2.1 FILTER...............................................................................................................................7...
4.2.2 NAT.......................................................................................................................................7
4.2.3 MANGLE.............................................................................................................................7
4.3 Chains...........................................................................................................................................8
4.3.1 Chains embutidas...................................................................................................................8
4.3.1.1 Chains da tabela FILTER...............................................................................................8
4.3.1.2 Chains da tabela NAT....................................................................................................8
4.3.2 Chains criadas pelo usuário................................................................................................9
4.3.3 Trabalhando com as chains.................................................................................................9
4.3.3.1 Especificando o policiamento padrão de uma chain....................................................9
4.4 Regras...........................................................................................................................................9
4.4.1 Adicionando regras...........................................................................................................10
4.4.2 Listando regras.....................................................................................................................10
4.4.3 Apagando regras...............................................................................................................11
4.4.4 Posição das regras................................................................................................................12
4.4.5 Inserindo regras em posição definida..................................................................................12
4.4.6 Substituindo uma regra.....................................................................................................12
4.5 Definindo regras.........................................................................................................................13
4.5.1 Tipos de protocolos...........................................................................................................13
Este trabalho é licenciado sobre a licença Creative Commons AttributionShareAlike
2.5. Para visualizar uma cópia
desta licença visite o endereço: http://creativecommons.org/licenses/bysa/
2.5/br/deed.pt ou envie uma carta para
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
2
4.5.1.1 TCP..............................................................................................................................13
4.5.1.2 UDP.............................................................................................................................13
4.5.1.3 ICMP.........................................................................................................................13
4.5.2 Endereços de origem............................................................................................................14
4.5.3 Endereços de destino............................................................................................................14
4.5.4 Portas de destino...............................................................................................................14
4.5.5 Portas de origem...............................................................................................................15
4.5.6 Definindo múltiplas portas..................................................................................................15
4.5.6.1 Definindo uma faixa de portas.....................................................................................15
4.5.6.2 Definindo várias portas.............................................................................................1. 5
4.5.7 Definindo a interface...........................................................................................................15
4.5.8 Endereço MAC.....................................................................................................................16
4.5.9 Pacotes SYN.....................................................................................................................16
4.5.10 Estado da conexão...........................................................................................................16
4.5.11 Exceções à regra..............................................................................................................17
4.5.12 Alvo das regras................................................................................................................17
4.5.12.1 DROP..........................................................................................................................17
4.5.12.2 REJECT......................................................................................................................17
4.5.12.3 LOG............................................................................................................................18
4.5.12.4 RETURN.................................................................................................................18
4.5.12.5 DNAT......................................................................................................................19
4.5.12.6 SNAT..........................................................................................................................19
4.5.12.7 MASQUERADE........................................................................................................19
4.5.12.8 Limite de conferencia de uma regra...........................................................................19
Este trabalho é licenciado sobre a licença Creative Commons AttributionShareAlike
2.5. Para visualizar uma cópia
desta licença visite o endereço: http://creativecommons.org/licenses/bysa/
2.5/br/deed.pt ou envie uma carta para
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.

1. O que é um Firewall
É um dispositivo de rede que tem a função de regular o tráfego que entre redes distintas,

controlar as conexões entre elas. Podemos entender por firewall filtros de pacotes e proxy de protocolos.
O Firewall tem como objetivo proteger uma máquina ou rede contra acessos indesejados,
controlar estes acesso e manter informações sobre as conexões.
2. Conceito de protocolos
Para entendermos um firewall é necessário um conhecimento básico de protocolos de redes.
Pelo menos os dois mais importantes: TCP e UDP.
2.1 O que é um protocolo de rede
É um padrão que específica o formato de dados e as regras a serem seguidas para
comunicação de máquinas em uma rede.
2.1.1 Protocolo TCP
O protocolo TCP baseiase
na comunicação pontoaponto
entre duas máquinas em rede.
Este protocolo possui algumas características será útil na configuração de um firewall:
• Orientado a conexão: Antes do início da transferência de dados é necessário que ambas
as partes estejam de acordo.
• Confiabilidade: O TCP confirma a entrega de todos os pacotes ao destinatário.
• Three Handshake: Mecanismo de estabelecimento e finalização de conexão a três e
Este trabalho é licenciado sobre a licença Creative Commons AttributionShareAlike
2.5. Para visualizar uma cópia
desta licença visite o endereço: http://creativecommons.org/licenses/bysa/
2.5/br/deed.pt ou envie uma carta para
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
4
quatro tempos, respectivamente, o que permite a autenticação e encerramento de uma
sessão completa. O TCP garante que, no final da conexão, todos os pacotes foram bem
recebidos.
2.1.1.1 Estabelecendo uma conexão
Geralmente, em uma conexão TCP existe a máquina designada servidor (a máquina que inicia
o serviço e fica aguardando uma conexão) e em outro extremo o cliente (a máquina que se conecta a
um servidor).
Para iniciar a conexão a máquina cliente envia ao servidor um pacote TCP com a flag SYN
ativa, e aguarda que o servidor aceite e lhe devolva um pacote com as flags SYN+ACK ativas. O
cliente para informar o recebimento da confirmação do servidor devolve um pacote com a flag ACK
ativa.
Em cada pacote contém o número de identificação do pacote.
2.1.1.2 Flags do protocolo TCP
• SYN: Quando setado em 1, significa que é um pacote de pedido de abertura de conexão.
• ACK: Quando setado, sinaliza que este segmento contém o próximo octeto que o host
origem espera receber. É a flag de confirmação de recebimento de pacotes.
• FIN: Esta flag é a informação de término da transferência de pacotes. Solicita a
desconexão. Este flag também deve ser confirmado.
• RST: A flag reset indica que a conexão deve ser abortada e reiniciase
novamente a
conexão.
2.1.2 Protocolo UDP
É um protocolo considerado não seguro. Isto se deve por ele não ser orientado a conexão. O
pacote poder ser entregue ou não, ele não irá tratar isto. Mas tem como vantagem a velocidade na
entrega dos pacotes. Esta velocidade se deve já que ele não necessita fazer todas as verificações que o
pacote TCP realiza. Este padrão de comunicação é muito utilizado em transmissão de vídeo e voz.
Este trabalho é licenciado sobre a licença Creative Commons AttributionShareAlike
2.5. Para visualizar uma cópia
desta licença visite o endereço: http://creativecommons.org/licenses/bysa/
2.5/br/deed.pt ou envie uma carta para
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
5
Comunicações que necessitam de velocidade e não a garantia da entrega do pacote.
2.1.3 Protocolo ICMP
O protocolo ICMP é utilizado para reportar erros na rede. Mas ele também serve para a
localização de hosts, através da aplicação PING. Também é possível com este protocolo descubrir a
rota utilizada para se chegar a determinado host, com a aplicação TRACEROUTE (Linux, ou
TRACERT no Windows).
3. Conceito de portas
Portas são links para conexões de um computador para outro. Cada porta somente pode ter um
serviço por protocolo.
Para efetuar uma conexão é necessário que no computador servidor tenha um serviço
aguardando em determinada porta, e o computador cliente saia por determinada porta para se
conectar.
Para direcionar a qual serviço o cliente deseja conectar, ele informa no protocolo qual o
endereço do destino, e em qual porta ele irá se conectar, e qual porta ele está utilizando para iniciar
esta conexão.
Para exemplicar, utilizaremos uma conexão SSH.
Para se fazer uma conexão SSH é necessário que haja um serviço aguardando a conexão em
determinada porta, como no caso do SSH já é definida que será a porta 22. O computador cliente irá
iniciar a conexão alocando uma porta nele, uma porta maior que 1024 (portas abaixo destas são portas
reservadas), por exemplo a porta 1030, e vai conectarse
ao servidor na porta 22.
ssh edmafer@127.0.0.1
Visualização da conexão:
Na primeira tela nós temos uma conexão ssh efetuada (neste caso estamos conectados na
mesma máquina), na segunda tela nós podemos analisar as conexões efetuadas e utilizamos um filtro
Este trabalho é licenciado sobre a licença Creative Commons AttributionShareAlike
2.5. Para visualizar uma cópia
desta licença visite o endereço: http://creativecommons.org/licenses/bysa/
2.5/br/deed.pt ou envie uma carta para
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
6
(grep :22) para facilitar a visualização.
Observaremos que nós possuímos um serviço que está com o estado ESTABELECIDA que
tem como endereço local 127.0.0.1:33730 e a remota o endereço 127.0.0.1:22, na porta 22 um serviço
com o estado OUÇA que é o servidor ssh aguardando uma nova conexão.
A terceira é justamente o contrário, já que o teste foi testado na máquina local. É o servidor no
endereço 127.0.0.1:22 e o cliente no endereço 127.0.0.1:33730.
As portas abaixo de 1024 são portas reservadas para os serviços mais comuns, como exemplo:
• ftp porta 21 TCP
• ssh porta 22 TCP
• telnet porta 23 TCP
• smtp porta 25 TCP
• dns porta 53 UDP
• http porta 80 TCP
• pop3 porta 110 TCP
Esta é uma lista resumida dos serviços mais comuns, é possível estar verificando os serviços
mais comuns em: http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
As portas acima de 1024 são liberadas para outros serviços, e devem ser tratadas com muita
atenção em um firewall. Estas portas devem obrigatoriamente ser bloqueadas e ir liberando somente o
que é necessário.
4. IPTABLES
Netfilter é um módulo no kernel do Linux disponível desde o kernel versão 2.4.x que lhe
abilita as funções de firewall, NAT e Log de utilização. Técnicamente o conhecido apenas como
iptables.
Iptables é o nome dado a ferramenta em linha de comando que configura este módulo. Esta
ferramenta permite configurar as regras de firewall, NAT e logs.
4.1 Principais funções do iptables
a) Listar as regras de filtragem dos pacotes
b) Adicionar, remover ou modificar as regras de filtragem dos pacotes
c) Listar, apagar por regras os contadores das regras de filtragem dos pacotes
4.2 Tabelas
Tabelas é o local onde são armazenados os chains e conjuntos de regras com determinadas
características em comum. As tabelas são referenciadas através da opção t
e há 3 tabelas padrões no
Este trabalho é licenciado sobre a licença Creative Commons AttributionShareAlike
2.5. Para visualizar uma cópia
desta licença visite o endereço: http://creativecommons.org/licenses/bysa/
2.5/br/deed.pt ou envie uma carta para
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
7
IPTABLES.
4.2.1 FILTER
Tabela padrão, caso não seja definido uma tabela com a opção t.
Nesta tabela estarão as
regras de filtragem e controle dos pacotes.
4.2.2 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, já que elas irão
modificar as regras.
4.2.3 MANGLE
Esta tabela ser para modificações especiais no cabeçalho dos pacotes. Esta tabela contém
cinco chains: PREROUTING, POSTROUTING, INPUT, OUTPUT e FORWARD. 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.
Usando o alvo TOS podese
especificar a prioridade de uma pacote, tendo como valores
aceitos:
Espera Mínima
É especificado através de MinimizeDelay,
16 ou 0x10
Máximo Processamento
É especificado através de MaximizeThroughput,
8, ou 0x08.
Máxima Confiança
É especificado através de MaximizeReliability,
4 ou 0x04.
Custo mínimo
Especificado através de MinimizeCost,
2 ou 0x02.
Prioridade Normal
Especificado através de NormalService,
0 ou 0x00.
Regra para a chain output: iptables t
mangle A
OUTPUT p
tcp dport
80 j
TOS settos
16
4.3 Chains
Chains são os locais onde serão armazenadas as regras do firewall definidas pelo usuário.
Existem dois tipos de chains, os embutidos e os criados pelo usuário.
Este trabalho é licenciado sobre a licença Creative Commons AttributionShareAlike
2.5. Para visualizar uma cópia
desta licença visite o endereço: http://creativecommons.org/licenses/bysa/
2.5/br/deed.pt ou envie uma carta para
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
8
4.3.1 Chains embutidas
4.3.1.1 Chains da tabela FILTER
• INPUT Regras
responsáveis pelo controle das conexão que chegam com destino à
máquina
Regra para a chain INPUT: iptables t
filter A
INPUT s
200.200.200.200 j
DROP
• OUTPUT Regras
responsáveis pelo controle das conexões que saem da máquina
Regra para a chain OUTPUT: iptables t
filter A
OUTPUT d
200.200.200.200 j
DROP
• FORWARD Regras
responsáveis pelo controle das conexões que são redirecionadas
pela máquina
Regra para a chain FORWARD: iptables t
filter A
FORWARD s
200.200.200.200 j
DROP
4.3.1.2 Chains da tabela NAT
• PREROUTING Consulta
os dados que deverão ser modificados antes de serem enviados
para a chain
Regra para a chain PREROUTING: iptables t
nat A
PREROUTING s
200.200.200.200 j
DNAT to
192.168.1.5
• 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
Regra para a chain POSTROUTING: iptables t
nat A
POSTROUTING s
192.168.1.0/24 p
tcp dport
80 j
MASQUERADE
4.3.2 Chains criadas pelo usuário
Existe a possibilidade de o usuário criar suas próprias chains, organizando as regras
agrupando regras de mesmas características. Como por exemplo regras para determinada interface, ou
determinada rede.
Criando uma nova chain: iptables N
nova_chain
Inserindo regras nesta chain: iptable A
nova_chain p
tcp dport
80 j
DROP
Chamando esta chain: iptables j
nova_chain
Excluindo uma chain: iptables X
nova_chain
Alterando o nome de uma chain: iptables E
nova_chain novo_nome_chain
Desta forma sempre que a chain for chamada ela irá verificar todas as regras que nela estão
contidas.
Este trabalho é licenciado sobre a licença Creative Commons AttributionShareAlike
2.5. Para visualizar uma cópia
desta licença visite o endereço: http://creativecommons.org/licenses/bysa/
2.5/br/deed.pt ou envie uma carta para
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
9
4.3.3 Trabalhando com as chains
Apagando as regras de uma chain: iptables F
INPUT
Zerando o contador de bytes de uma chain: iptables t
nat Z
PREROUTING
Também é possível alterar toda uma tabela quando se omite a chain: iptables t
nat F
4.3.3.1 Especificando o policiamento padrão de uma chain
O policiamento padrão determina qual será a ação da chain caso o pacote não se enquadre em
nenhuma das regras que estão nela.
As opções de policiamento padrão são:
iptables P
INPUT DROP
iptables P
INPUT ACCEPT
Onde na primeira opção todas os pacotes que não conferirem com as regras serão negados. E a
segunda opção justamente o contrário, os pacotes serão aceitos.
Um bom firewall bloqueia tudo para estar liberando somente o que é necessário, para
bloquearmos tudo, definimos como policiamento padrão das chains como DROP, com isto os pacotes
que não são tratados pelas regras serão negados.
4.4 Regras
Regras são comando passados ao iptables para configurálo
para o tratamento dos pacotes.
Liberálos,
bloqueálos
ou registrar log da sua passagem, ou tentativa de conexão.
O iptables nos permite criar regras complexas, com várias condicionais para tratamento dos
pacotes. As regras não possui um dinamismo de acordo com as situação, mas isto pode ser fácilmente
contornado com a utilização de scripts.
4.4.1 Adicionando regras
Todas as regras para o iptables são adicionadas com o uso da opção A
e com a seguinte
sintaxe:
iptables t
[tabela] A
[chain] [opções] j
[alvo]
Todos os comandos são casesensitive,
ou seja ele diferencia maiúsculas de minúsculas.
Abaixo um exemplo de adição de uma regra:
iptables A
INPUT s
127.0.0.1 j
LOG logprefix
“Log de acesso ”
A regra acima é uma regra de controle, onde podemos logar todos os pacotes que coincidam
com as condições descritas na regra.
Abaixo listo outros tipos de regras:
Bloqueando a porta 80 (http)
Este trabalho é licenciado sobre a licença Creative Commons AttributionShareAlike
2.5. Para visualizar uma cópia
desta licença visite o endereço: http://creativecommons.org/licenses/bysa/
2.5/br/deed.pt ou envie uma carta para
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
10
iptables A
INPUT p
tcp dport
80 j
DROP
Liberando acesso a porta 53 (DNS)
iptables A
INPUT p
udp dport
53 j
ACCEPT
Liberando acesso acesso de uma determinada rede 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
Fazendo um redirecionamento de porta
iptables t
nat A
PREROUTING s
192.168.5.0/24 p
tcp dport
80 j
REDIRECT toport
3128
4.4.2 Listando regras
Para listar as regras utilizase
a opção L,
a sintaxe do comando:
iptables t
[tabela] L
Exemplificando o comando:
iptables L
Seu retorno será:
root@ferrari:/home/edmafer# iptables L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp anywhere
anywhere tcp dpt:www
ACCEPT udp anywhere
anywhere udp dpt:domain
ACCEPT tcp 192.168.5.0/
24 anywhere multiport dports smtp,pop3
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
root@ferrari:/home/edmafer#
Visualizando as regras da tabela nat:
iptables t
nat L
E seu retorno será:
root@ferrari:/home/edmafer# iptables t
nat L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
REDIRECT tcp 192.168.5.0/
24 anywhere tcp dpt:www redir ports 3128
Este trabalho é licenciado sobre a licença Creative Commons AttributionShareAlike
2.5. Para visualizar uma cópia
desta licença visite o endereço: http://creativecommons.org/licenses/bysa/
2.5/br/deed.pt ou envie uma carta para
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
11
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
root@ferrari:/home/edmafer#
Temos ainda algumas opções que poderemos estar verificando a na listagem das regras:
• v
Exibe mais detalhes sobre as regras criadas, como a quantidade de pacotes e bytes
tratados pelas regras. E a quantidade de pacotes e bytes tratados pelas regras padrões das
chains.
• n
Endereços de máquinas/portas não serão resolvidos, serão exibidos como números. Util
quando se possui muitas regras em um firewall.
• x
Exibe valores exatos ao invés de arredondamentos.
• linenumbers
Exibe o número da posição da regra na primeira coluna da listagem.
4.4.3 Apagando regras
Para apagar as regras usaremos a opção F,
e com a seguinte sintaxe:
iptables t
[tabela] F
Apagando as regras da tabela
Apagando da tabela filter
iptables F
Apagando da tabela nat
iptables t
nat F
4.4.4 Posição das regras
A ordem na regra na inserção dos comandos é importante. Percebese
que os iniciantes na
configuração de um firewall erram muito aqui. Uma regra inserida antes prevalecerá a outra inserida
posteriormente.
iptables A
INPUT p
tcp dport
80 j
DROP
iptables A
INPUT p
tcp dport
s
127.0.0.1 j
ACCEPT
Verifique as regras acima. Na primeira regra nós bloqueamos o acesso a porta 80, na segunda
nós liberamos o acesso a porta 80, desde que esta conexão seja proveniente da máquina local.
Isto não irá funcionar. Pois quando nosso firewall estiver verificando em qual regra se encaixa
o pacote, ele irá encontrar a primeira e não fará mais verificações. Com isto a regra que libera o
Este trabalho é licenciado sobre a licença Creative Commons AttributionShareAlike
2.5. Para visualizar uma cópia
desta licença visite o endereço: http://creativecommons.org/licenses/bysa/
2.5/br/deed.pt ou envie uma carta para
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
12
acesso da máquina local não terá função nenhuma já que a primeira a excluirá.
Para funcionar as regras devem ficar assim:
iptables A
INPUT p
tcp dport
80 s
127.0.0.1 j
ACCEPT
iptables A
INPUT p
tcp dport
80 j
DROP
A não ser que a conexão seja local ele irá passar pela primeira regra já que os pacotes não
coincidiram com as condições descritas na regra, e ela será negada na segunda.
4.4.5 Inserindo regras em posição definida
Com o uso da opção A
inserimos as regras sempre uma posição depois da última inserida, e
como vimos no tópico anterior isto pode nos gerar problemas se precisarmos inserir uma regra com
mais especificações do que a já inserida.
Por isto é possível inserimos uma regra em uma posição definida com a opção I.
iptables I
INPUT 1 s
127.0.0.1 p
tcp dport
80 j
ACCEPT
Assim nós estaremos inserindo esta regra na primeira posição, e a regra que estava na primeira
posição automaticamente irá para a posição 2, e assim por diante.
Desta forma nossa regra será verificada antes de uma regra mais abrangente atenda a conexão.
4.4.6 Substituindo uma regra
É possível nós mantermos um controle sobre as nossas regras, alterandoas
sem a necessidade
de se reiniciar todo o firewall. Por isto podemos estar substituindo as regras com a opção R.
Vamos substituir a regra anterior para liberar acesso para toda a rede interna:
iptables R
INPUT 1 s
192.168.5.0/24 p
tcp dport
80 j
ACCEPT
Com este controles controles de regras, adicionar, excluir, inserir em posição definida e
substituir, é possível criar scripts que vão alterando o nosso firewall de acordo com a necessidade de
forma automática.
4.5 Definindo regras
Na definições de regras, podemos estar nos utilizando de várias verificações que nos permitem
um controle maior sobre as conexões direcionadas ou originadas ao servidor.
4.5.1 Tipos de protocolos
4.5.1.1 TCP
Em cada regra é possível estar definindo os tipos de protocolos a serem tratados, seja TCP,
UDP e ICMP. Para isto utilizamos a opção p.
iptables A
INPUT p
tcp dport
80 j
DROP
Este trabalho é licenciado sobre a licença Creative Commons AttributionShareAlike
2.5. Para visualizar uma cópia
desta licença visite o endereço: http://creativecommons.org/licenses/bysa/
2.5/br/deed.pt ou envie uma carta para
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
13
Na regra acima as conexões que forem direcionadas a porta 80 e utilizem o protocolo tcp serão
tratadas por ela. No caso negando a conexão.
Mais informações: iptables p
tcp h
4.5.1.2 UDP
iptables A
INPUT s
192.168.5.0/24 p
udp dport
53 j
ACCEPT
Já na regra acima estaremos fazendo um filtro para permitir que o DNS seja consultado
somente pela máquinas da rede interna utilizando o protocolo udp.
Mais informações: iptables p
udp h
4.5.1.3 ICMP
iptables A
INPUT s
! 192.168.5.0/24 p
icmp j
REJECT
Definimos nesta regra que qualquer pacote com o protocolo ICMP (ex. ping) que não tenha se
originado na rede interna seja negado, e como mensagem de retorno será rejectwith
icmpportunreachable,
por causa do alvo reject.
No protocolo icmp é possível a utilização da opção –icmptype[
tipo]. Onde poderemos estar
informando qual é o tipo de comunicação icmp que deve ser tratada.
Alguns tipos de comunicação icmp:
echoreply
(pong)
destinationunreachable
networkunreachable
hostunreachable
protocolunreachable
portunreachable
Para outros tipos: iptables p
icmp h
Quando não definido o protocolo a regra aceitará qualquer protocolo.
4.5.2 Endereços de origem
É possível nas regras definirmos os endereços de origem. Isto é útil para estarmos validando
as conexões e permitindo que determinados hosts, ou redes, sejam liberados, ou negados.
iptables A
INPUT s
192.168.5.0/24 p
tcp dport
80 j
ACCEPT
Nesta regra definimos que a rede 192.168.5.0 pode acessar o servidor http.
iptables A
INPUT s
200.200.200.200 j
DROP
Aqui definimos que a máquina na internet com o ip 200.200.200.200 em qualquer porta, com
qualquer protocolo não pode acessar nosso servidor.
Este trabalho é licenciado sobre a licença Creative Commons AttributionShareAlike
2.5. Para visualizar uma cópia
desta licença visite o endereço: http://creativecommons.org/licenses/bysa/
2.5/br/deed.pt ou envie uma carta para
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
14
4.5.3 Endereços de destino
Podemos definir o destino das conexões com a opção d.
Com isto é possível negar o acesso
do servidor ou da rede a determinados endereços.
iptables A
FORWARD d
200.200.200.200 j
DROP
Na regra acima definimos que qualquer conexão que seja com o destino a máquina na internet
200.200.200.200 não será redirecionada.
Uma grande preocupação dos administradores de redes é o bloqueio de determinados sites,
com esta opção podemos estar bloqueando.
iptables A
FORWARD d
orkut.com j
DROP
Como visto foi utilizado como destino uma url ao invés do ip da máquina que se deseja
bloquear o acesso. Isto é possível pois o iptables irá fazer a resolução do nome sempre que precisar
verificar a regra. Assim é possível manter o controle sobre aqueles endereços que possuem ip
dinâmicos.
Assim qualquer que seja a origem do pacotes, indiferente da porta e do protocolo toda e
qualquer conexão que desejar acessar o orkut.com não será redirecionada.
4.5.4 Portas de destino
Podemos definir qual é a porta de destino em que as regras estarão verificando com a opção destinationport,
ou simplesmente dport.
Esta opção somente funcionará se anteriormente foi definido o tipo de protocolo que a regra
estará conferindo.
iptables A
INPUT s
! 192.168.5.0/24 p
tcp dport
110 j
DROP
Foi definido aqui que não será possível conexões de fora da rede interna acessem o nosso
servidor pop3.
Com a definição das portas nós controlamos quais serviço poderão ser acessados através do
nosso firewall. Verifique a tabela das portas comuns.
4.5.5 Portas de origem
Também podemos definir em qual porta está se originando a conexão com a opção sourceport
ou sport.
iptables A
INPUT s
200.200.200.200 p
tcp sport
25 j
ACCEPT
Assim definiremos que a conexão que for proveniente do host 200.200.200.200 e que esteja
sendo originada na porta 25 (smtp) seja aceita.
Este trabalho é licenciado sobre a licença Creative Commons AttributionShareAlike
2.5. Para visualizar uma cópia
desta licença visite o endereço: http://creativecommons.org/licenses/bysa/
2.5/br/deed.pt ou envie uma carta para
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
15
4.5.6 Definindo múltiplas portas
Para facilitar o controle, poderemos estar definindo várias portas para a mesma regra, seja de
destino ou de origem.
4.5.6.1 Definindo uma faixa de portas
iptables A
INPUT p
tcp dport
1024:65535 j
DROP
Nesta regra nós 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.
4.5.6.2 Definindo várias portas
Para definir várias portas que não estejam em uma faixa, poderemos estar utilizando o módulo
multiport, que nos permite adicionar até 15 portas na mesma regra.
iptables A
INPUT s
192.168.5.0/24 p
tcp m
multiport dport
22,25,80,110 j
ACCEPT
Aqui foram liberados os acessos para rede interna para os serviços ssh,smtp,http e pop3
respectivamente.
4.5.7 Definindo a interface
Geralmente máquinas firewall trabalham com várias interfaces (placas de rede). Com a opção
i
e o
podemos estar definindo as interfaces de origem ou destino, respectivamente.
Não é possível adicionar esta opção as regras de todas as chains, na tabela filter a interface de
origem não poderá ser especificar em uma chain OUTPUT, e a de destino em um chain INPUT. E na
tabela nat não será possível especificar a interface de saída na chain PREROUTING e a interface de
origem nas chains OUTPUT E PREROUTING.
iptables A
INPUT i
eth0 p
tcp dport
80 j
ACCEPT
Definimos que toda conexão que tenha chego pela eth0 (poderia ser a interface da rede
interna) tenha acesso ao servidor http.
iptables A
FORWARD i
eth0 o
eth1 j
DROP
Sendo a interface eth0 nossa interface da rede interna, e a eth1 a interface conectada a internet,
estaríamos bloqueando todo o acesso da rede interna a internet.
Também é possível a utilização do coringa + que permite que definamos vários interfaces.
iptables A
FORWARD i
wlan+ o
eth0 j
DROP
Para aumentar a segurança da nossa rede, bloqueamos o acesso de todos os usuários
conectados a nossa wireless, nas interfaces de 0 à 9 a rede interna.
É possível fazer referências a interfaces que ainda não existem. Como conexões intermitentes
Este trabalho é licenciado sobre a licença Creative Commons AttributionShareAlike
2.5. Para visualizar uma cópia
desta licença visite o endereço: http://creativecommons.org/licenses/bysa/
2.5/br/deed.pt ou envie uma carta para
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
16
como ppp.
4.5.8 Endereço MAC
Para aumentar a segurança na validação da origem da conexão, é possível que se especifique
qual é o endereço físico do host de origem, o endereço mac, com o módulo mac e a opção macsource.
iptables A
INPUT s
192.168.5.2 m
mac macsource
00:11:2F:DE:5F:4A p
tcp dport
22 j
ACCEPT
Estaremos aceitando somente a conexão do host 192.168.5.2 e que tenha como endereço físico
00:11:2F:DE:5F:4A no serviço ssh.
A especificação do mac em uma regra aumenta a segurança, mas não garante que um outro
host não tenha seu endereço ip e seu endereço mac alterado.
4.5.9 Pacotes SYN
O pacotes SYN são utilizados para iniciarem uma conexão TCP, assim é possível bloquear
novas conexões, ou filtralas
utilizando a opção –syn.
iptables A
INPUT p
tcp dport
22 syn
j
DROP
Esta regra não permite que nenhuma outra conexão ao serviço ssh se inicie, mas não irá
cancelar as conexões já existentes.
4.5.10 Estado da conexão
Com o módulo state é possível estarmos conferindo o estado de uma conexão.
• NEW: Verifica se o pacote é responsável pelo inicio de uma nova conexão.
• ESTABLISHED: Se o pacote faz parte de uma conexão já estabilizada.
• RELATED: São pacotes que estão relacionados a outras conexões, como por exemplo
mensagens de erro icmp
• INVALID: Pacotes que não estão relacionados a nada, não puderam ser conferidos, como
respostas de conexões desconhecidas.
iptables A
INPUT s
192.168.5.0/24 p
tcp –dport 22 m
state –state NEW,ESTABLISHED j
ACCEPT
Estamos aceitando todas as novas conexões e as já existentes, desde que venham da nossa rede
interna para o serviço ssh.
Para se evitar processamento, como umas das primeiras regras deve se adicionar uma regra
para negar conexões inválidas.
iptables A
INPUT m
state –state INVALID j
DROP
4.5.11 Exceções à regra
Como em alguns casos devemos criar uma exceção à regra, nós podemos estar utilizando o
Este trabalho é licenciado sobre a licença Creative Commons AttributionShareAlike
2.5. Para visualizar uma cópia
desta licença visite o endereço: http://creativecommons.org/licenses/bysa/
2.5/br/deed.pt ou envie uma carta para
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
17
identificador ! (not) para informar que a próxima informação não deve ser verdadeira para conferir a
regra.
iptables A
INPUT s
!192.168.5.2 p
tcp –dport 23 j
DROP
Neguei o acesso de todos que não possuam o ip 192.168.5.2 ao serviço telnet.
iptables t
nat A
PREROUTING p
! icmp d
200.200.200.200 j
DNAT –to 200.200.200.111
Só faço o redirecionamento da conexão se o protocolo for diferente de icmp.
iptables A
INPUT p
tcp –dport 25 m
state –state ! NEW,ESTABLISHED j
DROP
Proibindo o acesso de pacotes que não estejam iniciando uma conexão, ou que não estejam
relacionados a uma conexão já existente no serviço smtp.
4.5.12 Alvo das regras
Em toda regra é necessário se especificar um alvo. É ele que vai definir qual será a ação da
regra quando as condições impostas sejam satisfeitas.
4.5.12.1 DROP
É o alvo padrão para negação de uma conexão. DROP faz o bloqueio e não retorna nada a
máquina que originou a conexão, isto delata a um scanner que a a máquina possui um firewall.
iptables A
INPUT s
! 192.168.5.0/24 m
state –state NEW,INVALID j
DROP
Estou negando toda nova conexão, e toda conexão inválida que seja originada de fora da rede
interna.
4.5.12.2 REJECT
Também um alvo de negação, mas com reject é possível enviar de volta uma mensagem do
tipo icmp.
iptables A
INPUT p
tcp dport
80 j
REJECT rejectwith
icmpportunreachable
Será negada a conexão, e remetido a máquina que originou o pacote que a porta não existe.
Verifique as opções de tipos icmp.
4.5.12.3 LOG
Este alvo nos permite um controle dos pacotes que são verificados pelo firewall. Definese
como se fosse uma regra, e ao satisfazer as condições, ele gera o log. Como o netfilter é um módulo
do kernel, ele gera um log em /var/log/kern.log como um log do kernel. Mas é possível definir qual é
o nível de log.
iptables A
INPUT p
tcp –dport 22 j
LOG –logprefix”
Acessaram o ssh ”
E sempre que houver uma conexão ssh o resultado do log será:
Nov 16 17:49:02 controle kernel: Acessaram o ssh IN=eth0 OUT= MAC=00:00:e8:77:0c:69:00:e0:12:34:56:78:08:00
Este trabalho é licenciado sobre a licença Creative Commons AttributionShareAlike
2.5. Para visualizar uma cópia
desta licença visite o endereço: http://creativecommons.org/licenses/bysa/
2.5/br/deed.pt ou envie uma carta para
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
18
SRC=10.1.58.108 DST=10.1.58.252 LEN=48 TOS=0x00 PREC=0x00 TTL=128 ID=13237 DF PROTO=TCP
SPT=4912 DPT=22 WINDOW=65535 RES=0x00 SYN URGP=0
Nov 16 17:49:02 controle kernel: Acessaram o ssh IN=eth0 OUT= MAC=00:00:e8:77:0c:69:00:e0:12:34:56:78:08:00
SRC=10.1.58.108 DST=10.1.58.252 LEN=40 TOS=0x00 PREC=0x00 TTL=128 ID=13238 DF PROTO=TCP
SPT=4912 DPT=22 WINDOW=65535 RES=0x00 ACK URGP=0
Nov 16 17:49:02 controle kernel: Acessaram o ssh IN=eth0 OUT= MAC=00:00:e8:77:0c:69:00:e0:12:34:56:78:08:00
SRC=10.1.58.108 DST=10.1.58.252 LEN=68 TOS=0x00 PREC=0x00 TTL=128 ID=13239 DF PROTO=TCP
SPT=4912 DPT=22 WINDOW=65494 RES=0x00 ACK PSH URGP=0
Nos logs temos informações importantes sobre o acesso, como a data, a frase informada em –
logprefix,
a interface de entrada, e se houve a interface de saída, o mac da máquina que originou o
pacote, endereço ip da máquina de origem e o destino do pacote, protocolo, porta utilizada pela
máquina de origem e a porta de destino, flags e outras informações.
4.5.12.4 RETURN
Este alvo permite que se retorne a chain anterior, sem continuar verificando as regras da chain
atual.
Útil para se fazer tratamento de exceções à regra.
1. iptables N
WEB
2. iptables A
INPUT p
tcp dport
80 j
WEB
3. iptables A
INPUT p
tcp dport
80 j
ACCEPT
4. iptables A
WEB s
192.168.5.2 j
RETURN
5. iptables A
WEB j
DROP
Estamos fazendo um bloqueio do serviço http se a máquina que originou a conexão não seja a
192.168.5.2.
No passo 1 criamos uma chain chamada WEB, no passo 2 chamamos esta chain. No passo 3
eu libero acesso ao serviço, mas como eu chamei a chain antes, eu redirecionei as regras, e esta não
será verificada. A primeira regra da chain WEB é a verificação da origem. Caso seja a origem
especificada, ela chama RETURN. Ele redireciona a verificação para a chain anterior, que no caso
será a liberação da porta 80.
4.5.12.5 DNAT
Regra utilizada na chain PREROUTING, este alvo altera os pacotes editando o seu destino,
assim redirecionando a conexão para outras máquinas.
iptables t
nat A
PREROUTING p
tcp –dport 80 j
DNAT –to 192.168.5.2:3128
Nesta regra estamos redirecionando toda a conexão que chega na porta 80 para a máquina
192.168.5.2 na porta 3128, que é a porta padrão de um proxy.
Na omissão da porta, será usada a porta de destino do pacote.
Este trabalho é licenciado sobre a licença Creative Commons AttributionShareAlike
2.5. Para visualizar uma cópia
desta licença visite o endereço: http://creativecommons.org/licenses/bysa/
2.5/br/deed.pt ou envie uma carta para
Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
19
4.5.12.6 SNAT
Regra da chain POSTROUTING ela faz alteração da origem do pacote, serve para fazer o
acesso das máquinas da rede interna a internet, quando se utiliza um ou mais ip's fixos.
iptables t
nat A
POSTROUTING s
192.168.5.0/24 p
tcp dport
80 j
SNAT to
200.200.200.200
Com esta regra estamos alterando a origem do pacote para o ip da internet 200.200.200.200,
quando é feita esta alteração o iptables cria uma tabela em memória onde no retorno da conexão ele
sabe quem foi a máquina que originou esta conexão e devolve a ela os pacotes.
iptables t
nat A
POSTROUTING s
192.168.5.0/24 j
SNAT to
200.200.200.200200.200.200.250
A diferença nesta regra é que ele vai utilizar uma faixa de ip's para as conexões. Será


ipcop

8 de Janeiro de 2011, 0:00, por Software Livre Brasil - 0sem comentários ainda

Definição de cores - IpCop

Como havia mencionando anteriormente, o IpCop é baseado em cores, ou melhor, poderíamos dizer tipos de acesso, e para melhor exemplificar este tipo de acesso segue abaixo um esquema prático de como são definidas regras e acessos em um firewall como o IpCop:

Regras:

Green - Área destinada a configuração da rede local, podemos exemplificar dizendo que nesta área é aonde se encontra os computadores, impressoras e servidores da empresa, departamento ou instituto onde será montado o firewall. O acesso nesta área é livre, permitindo acesso com os demais computadores e equipamentos localizados nesta região, já seu acesso externo é limitado ao nível de permissão que um usuário possui, seu ip e regras de acesso. É necessário um cuidado redobrado nesta área, pois uma regra mal elaborado pode colocar em risco acessos externos, quanto acessos internos. Red - Região voltada para o acesso externo, classificada como área de Internet, sua localização fica oposta à área Green, como descrito na figura acima. É desta região que provém os dados, requisições de aplicativos web, sites e atualizações de sistemas internos, logo nesta área não é preciso controlar o acesso interno, pois a função do IpCop é controlar os dados da área (Red) que são enviados para as demais regiões da Rede (Green) + (Blue) + (Orange). Blue - Área parecida com a Green, sua diferença principal é que na área Green sua conexão com os computadores e firewall é feita por cabos de par trançado, fibra óptica etc. Já na área Blue é utilizado o conceito de Wi-fi, ou seja, conexão sem cabos, que podem ser feitas via wireless, bluetooth. Logo é possível que as duas regiões se comuniquem sem que haja restrições rigorosas, como é o caso da área Red com a Green. Sua configuração obedece os mesmos conceitos que a região Green, no entanto para se conectar a esta área é necessário que seu dispositivo possua permissão ou o usuário possua a autenticação para acessar a rede. Orange - A região Orange, denominada "DMZ", é destinada a fazer algumas rotas não comuns dentro de uma rede, como por exemplo descrever uma rota ou regra exata sempre que um serviço de fora for requisitado para dentro da rede (firewall). Podemos utilizar como hipótese o conceito de Intranet, ou seja, caso um administrador precise acessar a rede interna de uma empresa de sua casa ou uma lan house, seu acesso será feito de fora da rede local, sendo assim via região Red (Internet), para este caso pode ser feito uma rota para região Orange e posteriormente desta área ser feito um acesso as áreas Red + Blue. É necessário entender cada etapa e regras das cores acima para que você possa acompanhar com êxito a explicação a seguir, para isso segue abaixo o link do site (projeto de redes), lá você encontra apostilas relacionadas a firewall e IpCop necessárias para seu auto-estudo:

http://www.projetoderedes.com.br/apostilas/apostilas_seguranca.php