Firewall Iptables

13. Re: Firewall Iptables

Vitor Lucas
vlcunes

(usa Debian)

Enviado em 03/08/2013 - 21:14h

Caros amigos, desde já fico agradecido!!

Bom, vamos lá....

De acordo com o nosso amigo "amarildosertorio" eu posso usar uma um arquivo em uma determinada pasta como: "/usr/local/sbin/firewall" e dentro de "/etc/rc.local" eu posso colocar conforme abaixo:


#!/bin/sh -e

#

# rc.local



# This script is executed at the end of each multiuser runlevel.

# Make sure that the script will "exit 0" on success or any other

# value on error.

#

# In order to enable or disable this script just change the execution

# bits.

#

# By default this script does nothing.



#FIREWALL

/usr/local/sbin/firewall

exit 0



  


14. Re: Firewall Iptables

Perfil removido
removido

(usa Nenhuma)

Enviado em 04/08/2013 - 22:24h

Essa é uma sugestão. Agora... como sua casa deve ser arrumada... isso fica a seu critério.

Inclusive no meu not uso o rc.local para carregar minhas regras de iptables na inicialização.

# cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

#FIREWALL
/usr/local/sbin/firewall

exit 0


# cat /usr/local/sbin/firewall
#!/bin/bash

IPT=`which iptables`

$IPT -F
$IPT -F -t nat
$IPT -X
$IPT -X -t nat
$IPT -Z
$IPT -Z -t nat

$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT

$IPT -A INPUT -i lo -j ACCEPT

$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT


Se preciso carregar uma nova regra apenas executo firewall.

# cat /usr/local/sbin/firewall
#!/bin/bash

IPT=`which iptables`

$IPT -F
$IPT -F -t nat
$IPT -X
$IPT -X -t nat
$IPT -Z
$IPT -Z -t nat

$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT

$IPT -A INPUT -i lo -j ACCEPT

$IPT -A INPUT -p tcp --syn --dport 22 -j ACCEPT

$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT


# firewall

# iptables -nvL

Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22flags: 0x17/0x02
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED

Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination



15. Re: Firewall Iptables

Eduardo
vchacal

(usa Debian)

Enviado em 04/08/2013 - 22:57h

Eu particularmente gosto de fazer da seguinte forma:
Crio o firewall.sh dentro de /etc/init.d
Obs.: Pois os programas que eu preciso reinicializar eu encontro neste diretório ... então coloco o firewall lá para ficar centralizado e saber onde esta caso eu passe um bom tempo sem acessar o arquivo.

Depois, eu apenas insiro o caminho do arquivo dentro do /etc/rc.local


Um simples e que pode servidor de ponto de partida ... já que voce usa o squid.

#! /bin/bash
#rezando as regras;
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -t nat -F
iptables -t mangle -F

#adicionando modulos no kernel;
modprobe ip_tables
modprobe iptable_nat

#liberando encaminhamento de pacotes;
echo "1" > /proc/sys/net/ipv4/ip_forward

#compartilhando a internet;
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

#Proxy transparente, tratando dos protocolos UDP e TCP, e movendo o trafego da porta 80 #para porta 3128;
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 80 -j REDIRECT --to-port 3128


Dar permissão de execução no arquivo com o comando:
# chmod +x /etc/init.d/firewall.sh

E agora adicioná-lo à inicialização do sistema operacional:
# ln -s /etc/init.d/firewall.sh /etc/rc2.d/S20firewall

Ou adicione no rc.local o caminho do arquivo;


Então resumindo ... monto o firewall.sh em /etc/init.d
E no rc.local eu adiciono o caminho do arquivo, ou jogo ele no rc2.d

Estou começando a estudar iptables tmb ... e estou usando esta pratica.
As apostilas do http://www.guiafoca.org/ são excelentes, tem uma boa base para iniciar os estudos.

Boa sorte colega.



16. Re: Firewall Iptables

Buckminster
Buckminster

(usa Debian)

Enviado em 05/08/2013 - 00:20h

Em relação à segurança é indiferente onde o script ficará uma vez que a segurança depende da senha e de outros fatores de acesso ao sistema.
Porém, não é recomendável e nem aconselhável colocar script dentro do rc.local. Deve se colocar somente o caminho com o comando de execução para o script.

Quanto à execução do script do Iptables eu sempre faço assim, como root:

Crio o script em /etc/init.d/
# vim /etc/init.d/firewall.sh << você usa o teu editor de texto preferido e coloca o nome que quiser no arquivo.
Coloco as regras dentro.
Salvo e saio.

Dou permissão de execução:
# chmod +x /etc/init.d/

E coloco em /etc/rc.local antes de 'exit 0', assim:
/etc/init.d/firewall.sh start
exit 0

Dessa maneira o script inicia junto com o sistema e você pode iniciar, parar e reiniciar no terminal com o comando:
# /etc/init.d/firewall.sh start, stop ou restart

Você também pode fazer dessa maneira, depois de dar permissão de execução para o script:
Entro em /etc/init.d:
# cd /etc/init.d

E crio um link simbólico com o comando:
# update-rc.d firewall.sh

Ou pode utilizar as duas conjuntamente.

Segue link para o Manual do IPtables traduzido:
http://www.vivaolinux.com.br/artigo/Manual-do-IPtables-Comentarios-e-sugestoes-de-regras/?pagina=1


17. Re: Firewall Iptables

Estefanio Brunhara
stefaniobrunhara

(usa CentOS)

Enviado em 05/08/2013 - 11:54h

O rc.local, é só par quebrar um galho, se ficar fazendo tudo nele, é como amarrar as coisas com arrame. Minha opinião.



18. Re: Firewall Iptables

Vitor Lucas
vlcunes

(usa Debian)

Enviado em 06/08/2013 - 16:18h

Olha eu de volta...

Segue minha prática:
Criei um arquivo chamado firewall.sh dentro de "/etc/init.d". Dentro de rc.local eu coloquei o caminho do firewall "/etc/init.d/firewall.sh start" antes de exit 0.

Segue configuração inicial de firewall:
#!/bin/sh -e

## LIMPAR REGRAS
iptables -t filter -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

## POLITICAS PADRAO
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

## INPUT
#iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -s 10.102.1.0/255.255.255.0 -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -s 10.102.1.30 -p tcp --dport 22 -j ACCEPT

## FORWARD
iptables -A FORWARD -s 10.102.1.0/255.255.255.0 -p icmp --icmp-type 8 -j ACCEPT

Nas políticas padrão eu coloquei tudo como DROP, excerto OUTPUT. Mas dessa maneira eu não consigo pingar em nenhum site de dentro do servidor, mesmo com a regra de icmp como escrita acima. A única maneira que achei mudando as politicas padrão todas para ACCEPT. Como devo proceder nessa situaçao?

Enquanto as demais regras, como estou indo?




19. Re: Firewall Iptables

20. Re: Firewall Iptables

Vitor Lucas
vlcunes

(usa Debian)

Enviado em 07/08/2013 - 08:59h

Estou verificando o link acima. Mas a minha prática acima está sobre controle?


21. Re: Firewall Iptables

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 07/08/2013 - 09:16h

amarildosertorio escreveu:

Não há risco!

Eu também gosto de usar o rc.local. Não vejo problemas nisso!

Nunca ouvi falar ou li em manuais que é menos seguro utilizar-se do rc.local. Poderia postar as fontes onde leu que é menos seguro?


Eu ja usei o rc.local para firewall sem problemas até onde sei o rc.local apenas se difere da ordem de inicio que é antes do restante.

O unico problema que vejo nessa forma é que se tiver uma regra que use url Ex:(iptables -A FORWARD -p tcp -d dominio.com.br -j DROP) o script roda antes de iniciar a rede e vai fica procurando resolver a url para um IP até falhar e isso aumenta o tempo de boot.

Por este único motivo passei a usar o init.d


22. Re: Firewall Iptables

Pedro
px

(usa Debian)

Enviado em 07/08/2013 - 09:32h

Buckminster escreveu:

Em relação à segurança é indiferente onde o script ficará uma vez que a segurança depende da senha e de outros fatores de acesso ao sistema.
Porém, não é recomendável e nem aconselhável colocar script dentro do rc.local. Deve se colocar somente o caminho com o comando de execução para o script.

Quanto à execução do script do Iptables eu sempre faço assim, como root:

Crio o script em /etc/init.d/
# vim /etc/init.d/firewall.sh << você usa o teu editor de texto preferido e coloca o nome que quiser no arquivo.
Coloco as regras dentro.
Salvo e saio.

Dou permissão de execução:
# chmod +x /etc/init.d/

E coloco em /etc/rc.local antes de 'exit 0', assim:
/etc/init.d/firewall.sh start
exit 0

Dessa maneira o script inicia junto com o sistema e você pode iniciar, parar e reiniciar no terminal com o comando:
# /etc/init.d/firewall.sh start, stop ou restart

Você também pode fazer dessa maneira, depois de dar permissão de execução para o script:
Entro em /etc/init.d:
# cd /etc/init.d

E crio um link simbólico com o comando:
# update-rc.d firewall.sh

Ou pode utilizar as duas conjuntamente.

Segue link para o Manual do IPtables traduzido:
http://www.vivaolinux.com.br/artigo/Manual-do-IPtables-Comentarios-e-sugestoes-de-regras/?pagina=1




O Debian não usa o systemd para isso não Buck?




---
Atenciosamente, Pedro.

Já leu meu último artigo?
LINK:
http://www.vivaolinux.com.br/artigos/userview.php?login=px

Dúvidas?! pergunte pra caixinha... ali em cima ---------------------------------------------------------------------------------------------------------------------------------------^

E seja feliz!


23. Re: Firewall Iptables

Vitor Lucas
vlcunes

(usa Debian)

Enviado em 07/08/2013 - 09:44h

Vejo que em alguns scripts as pessoas usam os eguintes comandos:

start(){
stop()

case "$1" in
"start") start ;;
"stop") stop ;;
"restart") stop; start ;;
*)
echo "Use os paramentros: start|stop|restart"<br />
esac

PARA QUE SERVEM ESSAS LINHAS?


24. Re: Firewall Iptables

Buckminster
Buckminster

(usa Debian)

Enviado em 08/08/2013 - 06:28h

px escreveu:

Buckminster escreveu:

Em relação à segurança é indiferente onde o script ficará uma vez que a segurança depende da senha e de outros fatores de acesso ao sistema.
Porém, não é recomendável e nem aconselhável colocar script dentro do rc.local. Deve se colocar somente o caminho com o comando de execução para o script.

Quanto à execução do script do Iptables eu sempre faço assim, como root:

Crio o script em /etc/init.d/
# vim /etc/init.d/firewall.sh << você usa o teu editor de texto preferido e coloca o nome que quiser no arquivo.
Coloco as regras dentro.
Salvo e saio.

Dou permissão de execução:
# chmod +x /etc/init.d/

E coloco em /etc/rc.local antes de 'exit 0', assim:
/etc/init.d/firewall.sh start
exit 0

Dessa maneira o script inicia junto com o sistema e você pode iniciar, parar e reiniciar no terminal com o comando:
# /etc/init.d/firewall.sh start, stop ou restart

Você também pode fazer dessa maneira, depois de dar permissão de execução para o script:
Entro em /etc/init.d:
# cd /etc/init.d

E crio um link simbólico com o comando:
# update-rc.d firewall.sh

Ou pode utilizar as duas conjuntamente.

Segue link para o Manual do IPtables traduzido:
http://www.vivaolinux.com.br/artigo/Manual-do-IPtables-Comentarios-e-sugestoes-de-regras/?pagina=1




O Debian não usa o systemd para isso não Buck?




---
Atenciosamente, Pedro.

Já leu meu último artigo?
LINK:
http://www.vivaolinux.com.br/artigos/userview.php?login=px

Dúvidas?! pergunte pra caixinha... ali em cima ---------------------------------------------------------------------------------------------------------------------------------------^

E seja feliz!


O systemd não vem instalado por padrão no Debian. Mas se você quiser utilizar é só instalar:

http://gnutwoall.wordpress.com/2013/05/11/instalacao-do-systemd-no-debian-wheezy/






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts