Problema script iptables

1. Problema script iptables

Carlos
secretsportal

(usa Ubuntu)

Enviado em 16/01/2014 - 12:40h

Ola pessoal, gostaria de uma ajuda com um script de iptables, eu nao entendo mtu de iptables, mas fui procurando na internet informações ate criar um script pra uso no meu linux ubuntu de casa, porem estou tendo problemas , eu com o comando drop eu consigo bloquear tudo, ate ai tudo bem mas depois eu nao consigo abrir as portas que eu preciso como 80 e 443, preciso da ajuda de vcs pra rezsolver esse problema, segue o script:

#!/bin/bash
# Observações
#



# Script do Iptables
# Inicio de Comandos(código)

# Bloqueio Total ( DROP )

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP



# Permitir acesso a serviços (acesso a porta 80(HTTP) e 443(HTTPS)

iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT




------------------------------------


entao pessoal, fiz algom bem simples depois tornei o script um executavel com chmod + e joguei o script no init.d e dei um start no script ex:
sudo /etc/init.d/script_firewall start

feito isso bloqueou tudo porem nao consigo acessar as paginas web pelo navegador porta 80.

alguem poderia me ajudar?
DESDE ja Obrigado




  


2. Re: Problema script iptables

Buckminster
Buckminster

(usa Debian)

Enviado em 16/01/2014 - 14:01h

Essas regras

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP



# Permitir acesso a serviços (acesso a porta 80(HTTP) e 443(HTTPS)

iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT


deixe assim

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# Permitir acesso a serviços (acesso a porta 80(HTTP) e 443(HTTPS)

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

A política padrão OUTPUT pode deixar como ACCEPT e libere o INPUT para as portas desejadas.
Faça as alterações, reinicie o Iptables e teste.

FORWARD - pacotes sendo roteados através da máquina, pacotes que passam pelo servidor;
INPUT - entrada - para pacotes destinados a sockets locais, pacotes destinados para o próprio servidor;
OUTPUT - pacotes gerados localmente, pacotes oriundos no próprio servidor com destino para fora dele.

Por exemplo, grosso modo, quando você abre um site em uma máquina cliente da rede interna (site este que não esteja hospedado na mesma rede interna), você precisa liberar o FORWARD, pois os pacotes tem destino externo, mas passarão pelo servidor.

Quando você abre um site no próprio servidor onde está o Iptables, se você bloquear a chain OUTPUT, não conseguirá acessar o site por que o Iptables não deixará o pacote sair e se bloquear a chain INPUT também não conseguirá acessar por que o Iptables não deixará os pacotes entrarem para a máquina.

http://www.vivaolinux.com.br/artigo/Manual-do-IPtables-Comentarios-e-sugestoes-de-regras


3. Re: Problema script iptables

Roberto Costa
asparion

(usa CentOS)

Enviado em 16/01/2014 - 15:34h

eu to usando um ubuntu aqui e fiz dessa forma

acompanha as regras..




### cria o arquivo torna-o executavel e abre
touch iptables.sh && chmod +x iptables.sh && vi iptables.sh 


### dentro do arquivo coloque os comandos abaixo
#!/bin/bash

modprobe iptable_nat
modprobe iptable_mangle
modprobe iptable_filter

iptables -N PORTAS

iptables -P INPUT -j DROP
iptables -P FORWARD -j DROP

iptables -I INPUT -j PORTAS
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

iptables -I OUTPUT -j PORTAS
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -I FORWARD -j PORTAS
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A PORTAS -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A PORTAS -p tcp --dport 80 -j ACCEPT
iptables -A PORTAS -p tcp --dport 443 -j ACCEPT

iptables-save > /etc/iptables


### depois execute esse script
./iptables.sh 


### feito isso ja esta liberado as portas, depois adiciona essa linha no final do arquivo
vi /etc/network/interfaces
pre-up iptables-restore < /etc/iptables 

essa linha vai subir as regras que estao no arquivo. depois voce pode colocar as linhas direto no arquivo que agora esta salvo em /etc/iptables

voce pode inserir regras direto no arquivo vi /etc/iptables
ou no proprio shell mas ai tem de salvar com
# como essa linha voce salva
iptables-save > /etc/iptables

# com essa linha voce restaura <-- caso voce coloque a regras direto no arquivo /etc/iptables
iptables-restore < /etc/iptables


faz um teste ai

o legal que que aqui foi criado a chain PORTAS entao qualquer porta que for liberar e so usar

iptables -A PORTAS -p tcp --dport 99 -j ACCEPT

que sera liberado tanto na INPUT, OUTPUT e FORWARD

faz um teste ai abraços


4. Re: Problema script iptables

Carlos
secretsportal

(usa Ubuntu)

Enviado em 16/01/2014 - 15:41h

Buckminster escreveu:

Essas regras

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP



# Permitir acesso a serviços (acesso a porta 80(HTTP) e 443(HTTPS)

iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT


deixe assim

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# Permitir acesso a serviços (acesso a porta 80(HTTP) e 443(HTTPS)

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

A política padrão OUTPUT pode deixar como ACCEPT e libere o INPUT para as portas desejadas.
Faça as alterações, reinicie o Iptables e teste.

FORWARD - pacotes sendo roteados através da máquina, pacotes que passam pelo servidor;
INPUT - entrada - para pacotes destinados a sockets locais, pacotes destinados para o próprio servidor;
OUTPUT - pacotes gerados localmente, pacotes oriundos no próprio servidor com destino para fora dele.

Por exemplo, grosso modo, quando você abre um site em uma máquina cliente da rede interna (site este que não esteja hospedado na mesma rede interna), você precisa liberar o FORWARD, pois os pacotes tem destino externo, mas passarão pelo servidor.

Quando você abre um site no próprio servidor onde está o Iptables, se você bloquear a chain OUTPUT, não conseguirá acessar o site por que o Iptables não deixará o pacote sair e se bloquear a chain INPUT também não conseguirá acessar por que o Iptables não deixará os pacotes entrarem para a máquina.

http://www.vivaolinux.com.br/artigo/Manual-do-IPtables-Comentarios-e-sugestoes-de-regras



amigo vlw pela dica, se nao for pedir mtu como vc alteraria esse scrip, vc poderia colocar as alterações nesse meu scrip pra ver como ficariam pra eu poder testar aqui, vc adcionaria novas regras? se puder posta ae apartir desse meu scrip com alteraçoes do seu ponto de vista que possam trazer segurança pra minha rede, meu uso é domestico mesmo, preciso de um script simples que bloquei tudo e libere os serviços conforme a necessidade, mas a principio so porta 80 e 443 mesmo, desculpe a minha ignorancia no assunto ainda nao tenho mtu conhecimento de iptables nao, entao se nao for te incomodar coloca ae como vc acha que deveria ficar esse script, se puder comentar tbm sera show pro meu entendimento, ficarei mtu grato
Desde já Obrigado.



5. Re: Problema script iptables

Pedro
px

(usa Debian)

Enviado em 17/01/2014 - 07:27h

Script básico de iptables, com liberação dinâmica:

#!/bin/bash

# Limpando tabelas
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

# Configurando as políticas padrões
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Permitindo loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Regras de controle
iptables -A INPUT ! -p tcp -j DROP
iptables -A INPUT -f -j DROP
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# Mantém conexões iniciadas por você // coração do firewall //
iptables -I INPUT 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -I OUTPUT 1 -m conntrack --ctstate ESTABLISHED,RELATED,NEW -j ACCEPT


Testa ai, deve funcionar de boa para o que tu precisas.

PS: Querendo aprender mais sobre iptables em geral:

http://www.guiafoca.org/cgs/guia/avancado/ch-fw-iptables.html

http://www.linuxnarede.com.br/seguranca/ch-fw-iptables.html

De uma pesquisada aqui no VOL tem um acervo incrível de iptables e linux em geral também...


6. Re: Problema script iptables

Carlos
secretsportal

(usa Ubuntu)

Enviado em 21/01/2014 - 21:20h

blz pessoal, vou testar todas essas possibilidades e ver qual melhor funciona, obrigado a todos.


7. Re: Problema script iptables

Carlos
secretsportal

(usa Ubuntu)

Enviado em 25/01/2014 - 18:55h

px escreveu:

Script básico de iptables, com liberação dinâmica:

#!/bin/bash

# Limpando tabelas
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

# Configurando as políticas padrões
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Permitindo loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Regras de controle
iptables -A INPUT ! -p tcp -j DROP
iptables -A INPUT -f -j DROP
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# Mantém conexões iniciadas por você // coração do firewall //
iptables -I INPUT 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -I OUTPUT 1 -m conntrack --ctstate ESTABLISHED,RELATED,NEW -j ACCEPT


Testa ai, deve funcionar de boa para o que tu precisas.

PS: Querendo aprender mais sobre iptables em geral:

http://www.guiafoca.org/cgs/guia/avancado/ch-fw-iptables.html

http://www.linuxnarede.com.br/seguranca/ch-fw-iptables.html

De uma pesquisada aqui no VOL tem um acervo incrível de iptables e linux em geral também...


Ola amigo, me responde uma coisa, o que é essa liberação dinamica que vc diz referente ao scrip, como vc liberaria as portas 80, 443 nesse script?


8. Re: Problema script iptables

Buckminster
Buckminster

(usa Debian)

Enviado em 25/01/2014 - 20:09h

Leia o comentário 2. Está escrito ali como alterar.


9. Re: Problema script iptables

Celio Dellamo
rhus

(usa openSUSE)

Enviado em 25/01/2014 - 21:13h

px escreveu:

Script básico de iptables, com liberação dinâmica:

#!/bin/bash

# Limpando tabelas
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

# Configurando as políticas padrões
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Permitindo loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Regras de controle
iptables -A INPUT ! -p tcp -j DROP
iptables -A INPUT -f -j DROP
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# Mantém conexões iniciadas por você // coração do firewall //
iptables -I INPUT 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -I OUTPUT 1 -m conntrack --ctstate ESTABLISHED,RELATED,NEW -j ACCEPT


Testa ai, deve funcionar de boa para o que tu precisas.

PS: Querendo aprender mais sobre iptables em geral:

http://www.guiafoca.org/cgs/guia/avancado/ch-fw-iptables.html

http://www.linuxnarede.com.br/seguranca/ch-fw-iptables.html

De uma pesquisada aqui no VOL tem um acervo incrível de iptables e linux em geral também...


px, quando você vai liberar a versão 5 do seu FW?


10. Re: Problema script iptables

Pedro
px

(usa Debian)

Enviado em 25/01/2014 - 23:19h

rhus escreveu:

px, quando você vai liberar a versão 5 do seu FW?


Bom to usando proxy aqui e to sem tempo para testar, mas essa última versão vai vir com bloqueamento dinâmico a ips e krl4 :D

Nesse script que lhe fiz basta liberar a INPUT das portas que quizer deixar escutando.


11. Re: Problema script iptables

Pedro
px

(usa Debian)

Enviado em 26/01/2014 - 01:14h

secretsportal escreveu:

Ola amigo, me responde uma coisa, o que é essa liberação dinamica que vc diz referente ao scrip, como vc liberaria as portas 80, 443 nesse script?


Essa liberação dinâmica se faz ao usar as regras, chamadas do seu pc abrirem portas quando usadas, ou seja, se você mandar um pacote para o google.com (na 80 ou 443) querendo acessa-lo ele irá passar pela OUTPUT (sair) e sua regra INPUT manterá esta conexão, finalizando o handshake e iniciando a troca de dados ou e pacotes.

Para liberar portas externas (ter um serviço rodando na sua máquina) basta deixar o script assim:

#!/bin/bash

# Limpando tabelas
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

# Configurando as políticas padrões
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# Permitindo loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Regras de controle
iptables -A INPUT ! -p tcp -j DROP
iptables -A INPUT -f -j DROP
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# Mantém conexões iniciadas por você // coração do firewall //
iptables -I INPUT 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Liberando portas serviços externos
iptables -A INPUT -p tcp --dport 80 ##Web server
iptables -A INPUT -p tcp --dport 22 ##SSH


OBS: Note que ao liberar a politica padrão OUTPUT eu tirei a regra que mantinha o esquema das conexões... mas ainda funciona normalmente, só que desta vez seu pc poderá enviar qualquer tipo de pacotes que você quiser, mesmo que seja inválido (não inicie uma conexão, ou continue outra existente).






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts