Para navegação quando levanto o firewall [RESOLVIDO]

1. Para navegação quando levanto o firewall [RESOLVIDO]

André Romero Alves de Souza
arasouza

(usa Debian)

Enviado em 02/09/2014 - 15:14h

Olá Pessoal, já fazem 2 semanas que estou tentando levantar este servidor proxy com o debian whezzy 7, vale salientar que estou com uma maquina similar de 64 bits rodando com o mesmo iptables e squid 2.7 stable + dansguardian funcionado legal, porém esta não funciona de jeito nenhum.... agradeço qualquer colaboração no script abaixo. (obs. se não levantar o script ele navega, faz os bloqueis sem problema):

----------------------- INICIO DO SCRIPT - IPTABLES ----------------------

#!/bin/sh

# Variaveis
# -------------------------------------------------------
iptables=/sbin/iptables
IF_EXTERNA=eth2
IF_INTERNA=eth1

# Ativa modulos
# -------------------------------------------------------
/sbin/modprobe iptable_nat
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_MASQUERADE



# Ativa roteamento no kernel
# -------------------------------------------------------
echo "1" > /proc/sys/net/ipv4/ip_forward


# Protecao contra IP spoofing
# -------------------------------------------------------
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter

# Zera regras
# -------------------------------------------------------
$iptables -F
$iptables -X
$iptables -F -t nat
$iptables -X -t nat
$iptables -F -t mangle
$iptables -X -t mangle


# Determina a politica padrao
# -------------------------------------------------------
$iptables -P INPUT DROP
$iptables -P OUTPUT DROP
$iptables -P FORWARD DROP


#################################################
# Tabela FILTER
#################################################

# Dropa pacotes TCP indesejaveis
# -------------------------------------------------------
$iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j LOG --log-level 6 --log-prefix "FIREWALL: NEW sem syn: "
$iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP


# Desativa conexoes IPV6
# -------------------------------------------------------
#$ip6tables -p INPUT -j REJECT
#$ip6tables -p OUTPUT -j REJECT
#$ip6tables -p FORWARD -j REJECT


# Dropa pacotes mal formados
# -------------------------------------------------------
$iptables -A INPUT -i $IF_EXTERNA -m unclean -j LOG --log-level 6 --log-prefix "FIREWALL: pacote mal formado: "
$iptables -A INPUT -i $IF_EXTERNA -m unclean -j DROP


# Aceita os pacotes que realmente devem entrar
# -------------------------------------------------------
$iptables -A INPUT -i !$IF_EXTERNA -j ACCEPT
$iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$iptables -A OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
$iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT


# Protecao contra trinoo
# -------------------------------------------------------
$iptables -N TRINOO
$iptables -A TRINOO -m limit --limit 15/m -j LOG --log-level 6 --log-prefix "FIREWALL: trinoo: "
$iptables -A TRINOO -j DROP
$iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 27444 -j TRINOO
$iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 27665 -j TRINOO
$iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 31335 -j TRINOO
$iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 34555 -j TRINOO
$iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 35555 -j TRINOO


# Protecao contra tronjans
# -------------------------------------------------------
$iptables -N TROJAN
$iptables -A TROJAN -m limit --limit 15/m -j LOG --log-level 6 --log-prefix "FIREWALL: trojan: "
$iptables -A TROJAN -j DROP
$iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 666 -j TROJAN
$iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 666 -j TROJAN
$iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 4000 -j TROJAN
$iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 6000 -j TROJAN
$iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 6006 -j TROJAN
$iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 16660 -j TROJAN


# Protecao contra worms
# -------------------------------------------------------
$iptables -A FORWARD -p tcp --dport 135 -i $IF_INTERNA -j REJECT


# Protecao contra syn-flood
# -------------------------------------------------------
$iptables -A FORWARD -p tcp --syn -m limit --limit 2/s -j ACCEPT


# Protecao contra ping da morte
# -------------------------------------------------------
$iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT


# Protecao contra port scanners
# -------------------------------------------------------
$iptables -N SCANNER
$iptables -A SCANNER -m limit --limit 15/m -j LOG --log-level 6 --log-prefix "FIREWALL: port scanner: "
$iptables -A SCANNER -j DROP
$iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -i $IF_EXTERNA -j SCANNER
$iptables -A INPUT -p tcp --tcp-flags ALL NONE -i $IF_EXTERNA -j SCANNER
$iptables -A INPUT -p tcp --tcp-flags ALL ALL -i $IF_EXTERNA -j SCANNER
$iptables -A INPUT -p tcp --tcp-flags ALL FIN,SYN -i $IF_EXTERNA -j SCANNER
$iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -i $IF_EXTERNA -j SCANNER
$iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -i $IF_EXTERNA -j SCANNER
$iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -i $IF_EXTERNA -j SCANNER

####################
# Bloqueio Netbios #
####################

#iptables -t nat -A PREROUTING -p tcp --dport 445 -j DROP
#iptables -t nat -A PREROUTING -P tcp --dport 137 -j DROP
#iptables -t nat -A PREROUTING -P tcp --dport 138 -j DROP
#iptables -t nat -A PREROUTING -p tcp --dport 139 -j DROP
#iptables -t nat -A PREROUTING -p udp --dport 445 -j DROP
#iptables -t nat -A PREROUTING -p udp --dport 137 -j DROP
#iptables -t nat -A PREROUTING -p udp --dport 138 -j DROP
#iptables -t nat -A PREROUTING -p udp --dport 139 -j DROP


# Loga tentativa de acesso a determinadas portas
# -------------------------------------------------------
# -------------------------------------------------------
$iptables -A INPUT -p tcp --dport 21 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: ftp: "
$iptables -A INPUT -p tcp --dport 23 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: telnet: "
$iptables -A INPUT -p tcp --dport 25 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: smtp: "
$iptables -A INPUT -p tcp --dport 80 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: http: "
$iptables -A INPUT -p tcp --dport 110 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: pop3: "
$iptables -A INPUT -p udp --dport 111 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: rpc: "
$iptables -A INPUT -p tcp --dport 113 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: identd: "
$iptables -A INPUT -p tcp --dport 137:139 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: samba: "
$iptables -A INPUT -p udp --dport 137:139 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: samba: "
$iptables -A INPUT -p tcp --dport 161:162 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: snmp: "
$iptables -A INPUT -p tcp --dport 6667:6668 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: irc: "
$iptables -A INPUT -p tcp --dport 3128 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: squid: "
$iptables -A INPUT -p tcp --dport 3389 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: RDP: "

#################################################
# Tabela NAT
#################################################

# Ativa mascaramento de saida
# -------------------------------------------------------
$iptables -t nat -A POSTROUTING -o $IF_EXTERNA -j MASQUERADE


# Proxy transparente
# -------------------------------------------------------
#
$iptables -t nat -A POSTROUTING -o $IF_INTERNA -j MASQUERADE
$iptables -t nat -A PREROUTING -i $IF_INTERNA -p tcp --dport 3128 -j REDIRECT --to-port 8081
$iptables -t nat -A PREROUTING -i $IF_INTERNA -p tcp --dport 80 -j REDIRECT --to-port 8081
$iptables -A INPUT -m tcp -p tcp -s !127.0.0.1/8 --dport 3128 -j DROP


# Redireciona portas para outros servidores
# -------------------------------------------------------
#$iptables -t nat -A PREROUTING -d 192.168.200.1 -p tcp --dport 22 -j DNAT --to-destination 10.0.0.1

# Redireciona portas na própria máquina
# -------------------------------------------------------
#$iptables -A PREROUTING -t nat -d 192.168.200.1 -p tcp --dport 5922 -j REDIRECT --to-ports 22

#################################################
# FIM da Tabela NAT
#################################################


# Liberando porta 53 (DNS)
$iptables -A FORWARD -i $IF_INTERNA -p tcp --dport 53 -j ACCEPT
$iptables -A FORWARD -i $IF_INTERNA -p udp --dport 53 -j ACCEPT


#teste do cache full
# -------------------------------------------------------
$iptables -t mangle -A OUTPUT -p tcp -m connmark --mark 0 -m string --string "X-Cache: HIT" --algo kmp -j CONNMARK --set-mark 6
$iptables -t mangle -A OUTPUT -p tcp -j CONNMARK --restore-mark
$iptables -t mangle -A OUTPUT -p tcp -m mark --mark 6 -j CLASSIFY --set-class 1:10000000



# FECHA P2P
#$iptables -A FORWARD -p tcp -m ipp2p --ipp2p -j DROP

# Bittorrent - Funcionando
#$iptables -t nat -A PREROUTING -i eth9 -p tcp --dport 6881:6889 -j DNAT --to-des 10.0.0.1
#$iptables -A FORWARD -p tcp -i eth9 --dport 6881:6889 -d 10.0.0.1 -j DROP

# IMESH
$iptables -A FORWARD -d 216.35.208.0/24 -j DROP

# BEARSHARE
$iptables -A FORWARD -p TCP --dport 6346 -j REJECT

#TOADNODE
$iptables -A FORWARD -p TCP --dport 6346 -j REJECT

#WINMX
$iptables -A FORWARD -d 209.61.186.0/24
$iptables -A FORWARD -d 64.49.201.0/24

#Napigator
$iptables -A FORWARD -d 209.25.178.0/24 -j REJECT


# Morpheus - Funcionando
$iptables -A FORWARD -d 206.142.53.0/24 -j REJECT
# Kazaa lite
#$iptables -m string --string "X-Kazaa-Username:" -j REJECT
#$iptables -m string --string "X-Kazaa-Network:" -j REJECT
#$iptables -m string --string "X-Kazaa-IP:" -j REJECT
#$iptables -m string --string "X-Kazaa-SupernodeIP:" -j REJECT

# Limeware - Funcionando
$iptables -A FORWARD -p TCP --dport 6346 -j REJECT

# Audiogalaxy
$iptables -A FORWARD -d 64.245.58.0/23 -j REJECT

# Kazaa - Funcionando
$iptables -A FORWARD -d 213.248.112.0/24 -j REJECT
$iptables -A FORWARD -p TCP --dport 1214 -j REJECT





#Fim do arquivo
#--------------------------------------------------------




  


2. MELHOR RESPOSTA

Carlos Alberto de Souza Barbosa
souzacarlos

(usa Outra)

Enviado em 17/09/2014 - 13:52h

Boa tarde.

# Protecao contra ping da morte - VAI SER RETIRADO SEM UTILIDADE
# -------------------------------------------------------
#iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT # Não que seja sem utilidade, está mal implementado dá uma olhada nisso e analisa principalmente o --limit-burst: ( Isso é só um caso para uma necessidade ).

iptables -A INPUT -p icmp --icmp-type echo-request -j PING-MORTE # Lembrar que tem que ser criada a Chain PING-MORTE
iptables -A PING-MORTE -m limit --limit 20/s --limit-burst 4 -j RETURN
iptables -A PING-MORTE -j DROP


Com relação ao PING para redes externas tenta isso:

iptables -A FORWARD -p icmp --icmp-type 8 -s $REDE_LOCAL -j ACCEPT # Lembrar que a variável $REDE_LOCAL faz referencia a faixa de rede local sua, agora vc pode ser mais específico quando tratar de requisições internas ex: máquinas locais precisam apenas saber acessar o proxy ele que tem q conversar com outras máquinas na internet, caso seja preciso vc pode fazer liberações mais específicas.


# Libera o acesso SSH apenas da rede interna - FUNCIONANDO
iptables -A INPUT -s 10.10.20.0/24 -p tcp --dport 807 -j ACCEPT # Recomendo usar uma --dport acima de 1023


# Libera o squid
iptables -A INPUT -p tcp --dport 3128 -j ACCEPT # Relativo a sua pergunta sobre acesso ao proxy via internet

Neste momento sim está liberado para todos, tenta definir a origem das requisições assim como você na regra do SSH acima entendeu?



Faltou alguma?

3. Re: Para navegação quando levanto o firewall [RESOLVIDO]

Carlos Alberto de Souza Barbosa
souzacarlos

(usa Outra)

Enviado em 03/09/2014 - 17:29h

Boa tarde.

Cara seguinte, não estou dizendo que seu código está mal desenhado mas, já tentou organizar melhor as ideias? ex:

vc disse que sua política default é:

->> $iptables -P OUTPUT DROP
->> $iptables -P FORWARD DROP

Mas ao mesmo tempo vc diz que aceita tudo de qualquer lugar, perdi o sentido de usar DROP na POLICE

->> $iptables -A OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
->> $iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT


Já tentou fazer o básico primeiro e só depois ir implementando?

aguardo.


4. Re: Para navegação quando levanto o firewall [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 03/09/2014 - 17:43h

O Debian possui o pacote arno-iptables-firewall que implementa um completo firewall em modo texto,
sem complicação. Você pode modificar com regras customizadas e ajustar com valores de variáveis.

Dá para configurar com DEBCONF com

#dpkg-reconfigure arno-iptables-firewall

ou editar na mão os arquivos em /etc/default ou /etc/arno-iptables-firewall.

As regras desse firewall cobrem 95% das necessidades... O resto, se for o caso fica moleza fazer a mão.


5. Politica drop

André Romero Alves de Souza
arasouza

(usa Debian)

Enviado em 04/09/2014 - 09:26h

souzacarlos escreveu:

Boa tarde.

Cara seguinte, não estou dizendo que seu código está mal desenhado mas, já tentou organizar melhor as ideias? ex:

vc disse que sua política default é:

->> $iptables -P OUTPUT DROP
->> $iptables -P FORWARD DROP

Mas ao mesmo tempo vc diz que aceita tudo de qualquer lugar, perdi o sentido de usar DROP na POLICE

->> $iptables -A OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
->> $iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT


Já tentou fazer o básico primeiro e só depois ir implementando?

aguardo.


Grande souzacarlos, primeiro valeu pela observação, apenas uma dúvida o q eu tinha pesquisado nesse caso que toda politica default (por questão de segurança é DROP, ou seja barrar tudo) nesse caso:

$iptables -A OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
->> $iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
Aqui ele não vai aceitar apenas os pacotes que primeiro ESTABLISHED, evitando assim a tentantiva de envio de pacotes de origem suspeita? olha só state ESTABLISHED,RELATED,NEW -j ACCEPT, caso ele não tenha este estado DROP, estou errado no meu entendimento? agradeço a ajuda cara... realmente estou levando um coro aqui.


6. arno-iptables-firewall

André Romero Alves de Souza
arasouza

(usa Debian)

Enviado em 04/09/2014 - 10:16h

kyetoy escreveu:

O Debian possui o pacote arno-iptables-firewall que implementa um completo firewall em modo texto,
sem complicação. Você pode modificar com regras customizadas e ajustar com valores de variáveis.

Dá para configurar com DEBCONF com

#dpkg-reconfigure arno-iptables-firewall

ou editar na mão os arquivos em /etc/default ou /etc/arno-iptables-firewall.

As regras desse firewall cobrem 95% das necessidades... O resto, se for o caso fica moleza fazer a mão.


Blz kyetoy, vou baixar e fazer uns testes aqui para tentar, estou tentando de tudo para ver se dar pois realmente quero centralizar alguns servidores nesta maquina, pois ficaria mais fácil para mim a adm, bkp etc. agradeço sua ajuda também. assim q testar eu te respondo. Vou tentar editar na mão pois nunca usei o debconf, mas aproveitarei a oportunidade para dar uma olhada.


7. Re: Para navegação quando levanto o firewall [RESOLVIDO]

Carlos Alberto de Souza Barbosa
souzacarlos

(usa Outra)

Enviado em 04/09/2014 - 15:49h

arasouza escreveu:

kyetoy escreveu:

O Debian possui o pacote arno-iptables-firewall que implementa um completo firewall em modo texto,
sem complicação. Você pode modificar com regras customizadas e ajustar com valores de variáveis.

Dá para configurar com DEBCONF com

#dpkg-reconfigure arno-iptables-firewall

ou editar na mão os arquivos em /etc/default ou /etc/arno-iptables-firewall.

As regras desse firewall cobrem 95% das necessidades... O resto, se for o caso fica moleza fazer a mão.


Blz kyetoy, vou baixar e fazer uns testes aqui para tentar, estou tentando de tudo para ver se dar pois realmente quero centralizar alguns servidores nesta maquina, pois ficaria mais fácil para mim a adm, bkp etc. agradeço sua ajuda também. assim q testar eu te respondo. Vou tentar editar na mão pois nunca usei o debconf, mas aproveitarei a oportunidade para dar uma olhada.


############

Boa tarde.

Seguindo sua linha de raciocínio: ex: um cliente interno está tentando acessar um serviço na porta de destino 2222
De acodo com sua POLICE default ele irá negar!!! agora logo em seguida vc diz que tudo que tiver como estado da conexão NEW que faz referencia a novas conexões é pra ele aceitar, ai te pergunto qual das duas irá valer?

Uma dica vc pode permitir conexões com state NEW somente oriundas da sua rede local.

Obs01: Não que isso vá resolver seu problema.

Obs02: Acho que vc pode começar com o básicão, e ir implementando conforme for dando ok nas etapas.



8. bloqueia tudo e depois libera?

André Romero Alves de Souza
arasouza

(usa Debian)

Enviado em 05/09/2014 - 13:03h

souzacarlos escreveu:

arasouza escreveu:

kyetoy escreveu:

O Debian possui o pacote arno-iptables-firewall que implementa um completo firewall em modo texto,
sem complicação. Você pode modificar com regras customizadas e ajustar com valores de variáveis.

Dá para configurar com DEBCONF com

#dpkg-reconfigure arno-iptables-firewall

ou editar na mão os arquivos em /etc/default ou /etc/arno-iptables-firewall.

As regras desse firewall cobrem 95% das necessidades... O resto, se for o caso fica moleza fazer a mão.


Blz kyetoy, vou baixar e fazer uns testes aqui para tentar, estou tentando de tudo para ver se dar pois realmente quero centralizar alguns servidores nesta maquina, pois ficaria mais fácil para mim a adm, bkp etc. agradeço sua ajuda também. assim q testar eu te respondo. Vou tentar editar na mão pois nunca usei o debconf, mas aproveitarei a oportunidade para dar uma olhada.


############

Boa tarde.

Seguindo sua linha de raciocínio: ex: um cliente interno está tentando acessar um serviço na porta de destino 2222
De acodo com sua POLICE default ele irá negar!!! agora logo em seguida vc diz que tudo que tiver como estado da conexão NEW que faz referencia a novas conexões é pra ele aceitar, ai te pergunto qual das duas irá valer?

Uma dica vc pode permitir conexões com state NEW somente oriundas da sua rede local.

Obs01: Não que isso vá resolver seu problema.

Obs02: Acho que vc pode começar com o básicão, e ir implementando conforme for dando ok nas etapas.


cara, realmente as coisas estão clareando valeu mesmo pela sua explicação souzacarlos, blz entedi, realmente e até aconteceu pois algumas conexões eu precisei liberar depois tipo porta para acesso a cameras etc, softwares que precisa liberar uma porta especifica, blz, então nesse caso eu vou refinar ele mas deixando default como bloqueado para a eth-externa e liberado com state NEW para a interface interna (teoricamente - suscetível a risco), blz eu estava pesquisando e achei este script e vou trabalhar nele para testar o novo servidor, se não for pedir muito dê uma olhada rapida nele e veja se posso iniciar com ele ok? mas agradeço a ajuda as observações já me ajudaram muito:


------INICIO SCRIPT----------------------


#!/bin/bash

# A linha acima é conhecida como shebang e server para chamar o interpretador do script
# poderia-se trocar o bash pelo sh ou outro shell de sua preferência

########################################################
# EXEMPLO DE SCRIPT DE FIREWALL PARA ARTIGO NO SITE www.vivaolinux.com.br
# CRIADO POR phrich
# Data da última alteração: 11/01/2012
# ######################################################

######################
# DECLARANDO AS VARIÁVEIS #
######################

# Interface de rede ligada a internet
IFACE_WEB="eth0"

# Interface de rede ligada a rede interna
IFACE_REDE="eth1"

# Rede interna
REDE_INTERNA="10.0.0.0/24"

# Portas liberadas TCP
PORTAS_TCP="20,21,53,80,443"

# Portas liberadas UDP
PORTAS_UDP="53"

# Portas liberadas para a rede interna
PORTAS_REDE_INTERNA="25,110"

############################################################
# FUNÇÃO START #
# Esta função limpa as regras criadas anteriormente, e insere as regras listadas na função
###########################################################

function start () {

#++++++++++++++++++++++
# LIMPA AS REGRAS EXISTENTES #
#+++++++++++++++++++++#

# Limpa as regras da tabela filter
iptables -F

# Limpa as regras da tabela nat
iptables -t nat -F

# DEFINE AS POLÍTICAS PADRÕES DO IPTABLES COMO DROP #
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# HABILITA O ROTEAMENTO NO KERNEL #
echo 1 > /proc/sys/net/ipv4/ip_forward

# CRIA A IDA E VOLTA DO ACESSO NAS CHAINS INPUT, OUTPUT E FORWARD, ASSIM NÃO PRECISAMOS CRIAR A IDA E VOLTA NAS REGRAS
# Não vamos nos aprofundar neste assunto, mas vale a pena dar uma estudada no módulo state ;-)
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

##############
# REGRAS DE NAT #
#############

# COMPARTILHA A INTERNET #
iptables -t nat -A POSTROUTING -s $REDE_INTERNA -o $IFACE_WEB -j MASQUERADE

# REDIRECIONA O ACESSO RDP PARA OUTRO SERVIDOR DENTRO DA REDE INTERNA#
iptables -t nat -A PREROUTING -p tcp --dport 3389 -j REDIRECT --to 10.0.0.2:3389

###############
# REGRAS DE INPUT #
###############

# Libera o acesso SSH de qualquer origem
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Libera o squid a partir da rede interna
iptables -A INPUT -p tcp --dport 3128 -j ACCEPT

# Aceita ping apenas da rede interna
iptables -A INPUT -s $REDE_INTERNA -p icmp --icmp-type 8 -j ACCEPT

################
# REGRAS DE OUTPUT #
################

# Libera as portas constantes na variável $PORTAS_TCP (para liberar mais portas, basta inserir as mesmas na variável citada)
iptables -A OUTPUT -p tcp -m multiport --dports $PORTAS_TCP -j ACCEPT

# Libera ping para qualquer lugar
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT

##################
# REGRAS DE FORWARD #
#################

# Libera as portas constantes em na variável $PORTAS_REDE_INTERNA (para liberar mais portas, basta inserir as mesmas na variável citada)
iptables -A FORWARD -p tcp -m multiport --dports $PORTAS_REDE_INTERNA -j ACCEPT

# Libera RDP citado na regra de NAT
iptables -A FORWARD -p tcp --dport 3389 -d 10.0.0.2 -j ACCEPT
# FINAL DA FUNÇÃO START #
}

############################################################################
# CRIA FUNÇÃO STOP #
# Esta função limpa todas as regras, deixa as políticas padrões com ACCEPT e deixa todo e qualquer acesso liberado
############################################################################

functio stop () {

# LIMPA AS REGRAS EXISTENTES #
iptables -F
iptables -t nat -F

# DEFINE AS POLÍTICAS PADRÕES DO IPTABLES COMO DROP #
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

# HABILITA O ROTEAMENTO NO KERNEL #
echo 1 > /proc/sys/net/ipv4/ip_forward

# COMPARTILHA A INTERNET #
iptables -t nat -A POSTROUTING -s $REDE_INTERNA -o $IFACE_WEB -j MASQUERADE

# Caso queira manter as regras de NAT favor copiar as regras de nat
# e as correspondentes as mesmas de forward aqui

# FINAL DA FUNÇÃO STOP #
}

# Criando os parâmetros para o script, esses parâmetros serão start, stop e restart vejamos:
# start - chama a função start (Regras inseridas e política padrão como DROP)
# stop - chama a função stop (Sem regras e com a política padrão como ACCEPT, util para realizar testes)
# restart - chama a função stop e depois a função start (Carrega as novas regras que venha a ser inseridas na função start)

# Qualquer parâmetro que não seja start, stop ou restart não será válido e nada será alterado.

case $1 in

start)
start
;;

stop)
stop
;;

restart)
stop
start
;;

*)
echo "Insira um parâmetro para /etc/init.d/firewall... start | stop | restart
exit 0
;;

esac
# FIM DO SCRIPT DE FIREWALL #



9. Re: Para navegação quando levanto o firewall [RESOLVIDO]

Carlos Alberto de Souza Barbosa
souzacarlos

(usa Outra)

Enviado em 09/09/2014 - 16:32h

Boa tarde.

Seguinte, cada caso, um caso. O script acima é bom, porém, bom pra quem? pra quem montou ele baseado em uma topologia específica, no teu caso pode ser que sim, como também pode ser que não, minha dica, pega esse script começa a avaliar linha por linha e pensa: isso se encaixa no meio modelo/topologia de rede? se sim blz, caso não, descarta.

Um exemplo disse seria: $PORTAS_TCP="20,21,53,80,443" essa variável está no script, ai te pergunto:
Você realmente precisa nesse momento de portas abertas para um servidor FTP? Entendeu a sutileza?

Caso precise de ajuda para montar um novo script pode falar estamos ai.

Abraço.


10. Configuração Iptables

André Romero Alves de Souza
arasouza

(usa Debian)

Enviado em 12/09/2014 - 14:58h

souzacarlos escreveu:

ok


Certo souzacarlos, nesses dias peguei este script e fiz várias pesquisas em cima dele, e também modifiquei e finalmente começou a dar certo veja como ficou e depois digo quais são os pró e dúvidas:

############################inicio script - firewall##########
#!/bin/bash

# A linha acima e conhecida como shebang e server para chamar o interpretador do script
# poderia-se trocar o bash pelo sh ou outro shell de sua preferencia

########################################################
# EXEMPLO DE SCRIPT DE FIREWALL PARA ARTIGO NO SITE www.vivaolinux.com.br
# CRIADO POR phrich
# Data da ultima alteracao: 09/09/2014
# ######################################################

######################
# DECLARANDO AS VARIAVEIS #
######################

# Interface de rede ligada a internet
IFACE_WEB="eth2"

# Interface de rede ligada a rede interna
IFACE_REDE="eth1"

# Rede interna
REDE_INTERNA="10.0.0.0/24"

# Portas liberadas TCP
PORTAS_TCP="53,443"

# Portas liberadas UDP
PORTAS_UDP="53"

# Portas liberadas para a rede interna
PORTAS_REDE_INTERNA="22"


#++++++++++++++++++++++
# LIMPA AS REGRAS EXISTENTES #
#+++++++++++++++++++++#

# Limpa as regras da tabela filter
iptables -F

# Limpa as regras da tabela nat
iptables -t nat -F

# DEFINE AS POLTICAS PADRAOS DO IPTABLES COMO DROP #
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# HABILITA O ROTEAMENTO NO KERNEL #
echo 1 > /proc/sys/net/ipv4/ip_forward

# CRIA A IDA E VOLTA DO ACESSO NAS CHAINS INPUT, OUTPUT E FORWARD, ASSIM NAO PRECISAMOS CRIAR A IDA E VOLTA NAS REGRAS
# NAO vamos nos aprofundar neste assunto, mas vale a pena dar uma estudada no modulo state ;-)
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
# Protecao contra ping da morte
# -------------------------------------------------------
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

##############
# REGRAS DE NAT #
#############

# COMPARTILHA A INTERNET #
iptables -t nat -A POSTROUTING -o $REDE_INTERNA -o $IFACE_WEB -j MASQUERADE

###############
# REGRAS DE INPUT #
###############

# Libera o acesso SSH de qualquer origem
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Libera o squid a partir da rede interna

iptables -A INPUT -p tcp --dport 3128 -s 10.10.20.0/24 -j ACCEPT

#Liberando o dansguardian
iptables -A INPUT -p tcp --dport 8081 -j ACCEPT

####################
# REGRAS DE OUTPUT #
####################

#Aceita ping apenas da rede interna
iptables -A OUTPUT -p icmp --icmp-type 8 -o $IFACE_WEB -j ACCEPT

# Libera as portas constantes na variavel $PORTAS_TCP (para liberar mais portas, basta inserir as mesmas na variavel citada)
iptables -A OUTPUT -p tcp -m multiport --dports $PORTAS_TCP -j ACCEPT

# Libera ping para qualquer lugar
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT

##################
# REGRAS DE FORWARD #
#################

# Libera as portas constantes em na variavel $PORTAS_REDE_INTERNA (para liberar mais portas, basta inserir as mesmas na variavel citada)
iptables -A FORWARD -p tcp -m multiport --dports $PORTAS_REDE_INTERNA -j ACCEPT


##################Final do Firewall#########

Certo então vamos lá:
O script acima funcionou legal, consigo navegar, definindo o proxy manualmente, ainda vou testar o redirecionamento, mas isso fica pra depois, o que estou encucado é que neste caso o proxy fica liberado geral interna e externamente, quando dou uma varredura com o nmap ele mostra que as portas 53, 80 e 3128 estão abertas, mas pelo que já li a boa prática pede que a porta 3128 não fique liberada correto? outra coisa em relação ao ping testei os comandos acima mas não estou conseguido liberar o ping interna e externamente, até consegui com a interface de rede interna mas ele não pinga para fora, alguma dica, outra coisa ao final sempre que rodo o script ele dá o seguinte erro:
Warning: weird character in interface `10.0.0.0/24' ('/' and ' ' are not allowed by the kernel).
iptables v1.4.14: multiple -o flags not allowed
Try `iptables -h' or 'iptables --help' for more information.

Ele fala q não posso usar a '/' mas como vou definir minha rede interna? tentei 10.10.20.0/24, 10.10.20.0/255.255.255.0, mas não deu certo agradeço até agora a ajuda de todos. e continuo pesquisando também. fico no aguardo galera.





11. Re: Para navegação quando levanto o firewall [RESOLVIDO]

Carlos Alberto de Souza Barbosa
souzacarlos

(usa Outra)

Enviado em 12/09/2014 - 17:10h

iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # Essa linha nãp precisa

iptables -A OUTPUT -p icmp --icmp-type 8 -o $IFACE_WEB -j ACCEPT # Essa linha nãp precisa


iptables -A OUTPUT -p tcp -m multiport --dports $PORTAS_TCP -j ACCEPT # Essa linha nãp precisa

iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT # Se sua ideia era habilitar o ping tá errado, lembre que vc precisa permitir que outros tentam um request no teu servidor!

Vc defiviu OUTPUT -j ACCEPT então não precisa definir nada em ACCEPT (para OUTPUT)

iptables -A INPUT -p tcp --dport 22 -j ACCEPT # Você vai precisar de acesso SSH da internet? Recomendo vc fazer um nat para alguma máquina interna e só então acessar o SSH de dentro da sua rede

iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT # Você está dando tiro no pé, dá uma olhada depois no que essa regra pode fazer!!!

iptables -A FORWARD -p tcp -m multiport --dports $PORTAS_REDE_INTERNA -j ACCEPT # Olha a brexa de segurança pra sua rede interna, vai que um usuário resolve subir um serviço dentro da tua rede!!!


12. Montando firewall

André Romero Alves de Souza
arasouza

(usa Debian)

Enviado em 13/09/2014 - 11:24h

Blz cara valeu pela presteza na resposta vamos lá

Linha retiradas:

iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # Essa linha nãp precisa

iptables -A OUTPUT -p icmp --icmp-type 8 -o $IFACE_WEB -j ACCEPT # Essa linha nãp precisa


iptables -A OUTPUT -p tcp -m multiport --dports $PORTAS_TCP -j ACCEPT # Essa linha nãp precisa
==============================#####==================================
Certo vou fazer os testes pois não estou conseguindo o ping nem dentro da rede, nem para fora, mas tudo bem preciso pesquisar, vou aproveitar o fim de semana. e te retorno na segunda.
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT # Se sua ideia era habilitar o ping tá errado, lembre que vc precisa permitir que outros tentam um request no teu servidor!

#Sim claro, redundância... blz cara.. tá clareando legal
Vc defiviu OUTPUT -j ACCEPT então não precisa definir nada em ACCEPT (para OUTPUT)


################Blz, na verdade vou deixar o acesso apenas pela rede interna########
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # Você vai precisar de acesso SSH da internet? Recomendo vc fazer um nat para alguma máquina interna e só então acessar o SSH de dentro da sua rede


##### blz, vou dá uma pesquisada e retorno na segunda########3
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT # Você está dando tiro no pé, dá uma olhada depois no que essa regra pode fazer!!!

###### realmente não tinha olhado este ainda "multiport" --- blz...
iptables -A FORWARD -p tcp -m multiport --dports $PORTAS_REDE_INTERNA -j ACCEPT # Olha a brexa de segurança pra sua rede interna, vai que um usuário resolve subir um serviço dentro da tua rede!!![/quote]

########## fim##


Cara brigadão mesmo vou fazer as alterações e testar com proxy transparente, e fazer os outros testes e te aviso. valeu... a força...



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts