Autor Tópico: Meu Firewall - Sugestão  (Lida 2850 vezes)

Offline joaotime

  • Usuário Ubuntu
  • *
  • Mensagens: 210
    • Ver perfil
Meu Firewall - Sugestão
« Online: 28 de Novembro de 2013, 09:35 »
Ola Pessoal tenho um script de firewall que peguei aqui peguei ali gostaria de saber opinião sobre

#!/bin/sh


#Declaração de Variaçoes
PATH=/sbin:/bin:/usr/sbin:/usr/bin
IPTABLES="/sbin/iptables"
PROGRAMA="/usr/local/bin/firewall"
PORTSLIB="/usr/local/bin/portlib"
PORTSBLO="/usr/local/bin/portblock"

#Interfaces de Rede
LAN=eth0
WAN=eth1
REDE="192.168.0.0/24"

# Os diversos m.dulos do iptables s.o chamdos atrav.s do modprobe
modprobe ip_tables
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_LOG
modprobe ipt_REJECT
modprobe ipt_MASQUERADE
modprobe ipt_state
modprobe ipt_multiport
modprobe iptable_mangle
modprobe ipt_tos
modprobe ipt_limit
modprobe ipt_mark
modprobe ipt_MARK
case "$1" in
start)

$IPTABLES -F
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
$IPTABLES -t mangle -F
$IPTABLES -t nat -F
$IPTABLES -X

# Determina a politica Padrão
$IPTABLES -P INPUT  ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
# ativar o redirecionamento no arquivo ip_forward
echo "1" > /proc/sys/net/ipv4/ip_forward

#habilitando o fluxo interno entre os processos
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT
for i in `cat $PORTSLIB`; do
$IPTABLES -A INPUT -p tcp --dport $i -j ACCEPT
$IPTABLES -A FORWARD -p tcp --dport $i -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --sport $i -j ACCEPT
$IPTABLES -A INPUT -p udp  --dport $i -j ACCEPT
done

#estabeliza conexão
$IPTABLES -I INPUT -m state --state ESTABLISHED -j ACCEPT
$IPTABLES -I INPUT -m state --state RELATED -j ACCEPT
$IPTABLES -I OUTPUT -p icmp -o $WAN -j ACCEPT
$IPTABLES -I INPUT -p icmp -j ACCEPT
#Bloqueio de portas
#for i in `cat $PORTSBLO`; do
#$IPTABLES -A INPUT -p tcp -i $WAN --dport $i -j DROP
#$IPTABLES -A INPUT -p udp -i $WAN --dport $i -j DROP
#$IPTABLES -A FORWARD -p tcp --dport $i -j DROP
#done
#$IPTABLES -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j REDIRECT --to-port 3128
# ativar o mascaramento
$IPTABLES -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.9
$IPTABLES -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 1025 -j DNAT --to-destination 192.168.0.10
$IPTABLES -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 3306 -j DNAT --to-destination 192.168.0.10
$IPTABLES -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 33899 -j DNAT --to-destination 192.168.0.110:33899
$IPTABLES -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 222 -j DNAT --to-destination 192.168.0.10
$IPTABLES -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 12020 -j DNAT --to-destination 192.168.0.110
$IPTABLES -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 4550 -j DNAT --to-destination 192.168.0.4
$IPTABLES -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 5550 -j DNAT --to-destination 192.168.0.4
$IPTABLES -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 6550 -j DNAT --to-destination 192.168.0.4
$IPTABLES -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 1200 -j DNAT --to-destination 192.168.0.4
$IPTABLES -t nat -A PREROUTING -i $WAN -p tcp -m tcp --dport 37777 -j DNAT --to-destination 192.168.0.4
$IPTABLES -t nat -A POSTROUTING  -o $WAN -j MASQUERADE

# Fim Fecho tudo que nao tiver no firewall
$IPTABLES -A INPUT -j LOG --log-prefix "FIREWALL: INPUT "

#cabecalho do firewall exibido na tela
echo
echo "==============================================================================="
echo "| REGRAS DO FIREWALL CARREGADAS COM SUCESSO |"
echo "==============================================================================="
echo
;;

stop)
$IPTABLES -F
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
$IPTABLES -t mangle -F
$IPTABLES -t nat -F
$IPTABLES -t nat -F
$IPTABLES -X
$IPTABLES -Z
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
echo
echo "==============================================================================="
echo "| FIREWALL DESLIGADO |"
echo "==============================================================================="
echo

;;

restart)
$PROGRAMA stop
$PROGRAMA start
;;
*)
echo -e "{TTEXTO}33[01;31mATENCAO \c";tput sgr0
echo -e "Argumento Invalido!!!"
echo "Uso Correto: firewall {start|stop|restart}" >&2
echo
echo "Restartando o Firewall..."
echo
sleep 5
$PROGRAMA restart
exit 1
esac
exit 0

so uma pergunta esta parte
# Determina a politica Padrão
$IPTABLES -P INPUT  ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT

eu devo deixar assim como esta ou devo bloquear tudo e ir liberando o que preciso

a empresa que eu fiz é de médio porta segunda total de dentro da empresa de fora preciso melhorar a segurança para não ter problemas de invasão estas coisa não deixar dar ping no servidor nem de dentro nem de fora

Bom gostaria de sugestão de melhoria

Obrigado

Joao


Offline Arthur Bernardes

  • Usuário Ubuntu
  • *
  • Mensagens: 4.692
    • Ver perfil
Re: Meu Firewall - Sugestão
« Resposta #1 Online: 28 de Novembro de 2013, 21:13 »
Qual a aplicação desse servidor? Ou é apenas um desktop?

Esse firewall tá cheio de "firulas" e muita coisa aí poderia ser removida, outras adicionadas, sem contar que tá desorganizado.

Offline joaotime

  • Usuário Ubuntu
  • *
  • Mensagens: 210
    • Ver perfil
Re: Meu Firewall - Sugestão
« Resposta #2 Online: 29 de Novembro de 2013, 08:37 »
somente proxy de rede e liberao de internet somente isto se puder me ajudar fico grato

Offline Arthur Bernardes

  • Usuário Ubuntu
  • *
  • Mensagens: 4.692
    • Ver perfil
Re: Meu Firewall - Sugestão
« Resposta #3 Online: 29 de Novembro de 2013, 10:46 »
O proxy é transparente?

Veja esse firewall, simples e funcional, uso aqui.

Código: (/etc/init.d/firewall) [Selecionar]
#!/bin/bash
 
echo "Produzido por Arthur Bernardes (17)99199-1157"
 
echo "Declarando variáveis"
 
# Interface da Internet
ifinternet="eth0"
 
# IP da Internet
ip_internet="192.168.1.2"
 
# Interface da rede local
iflocal="eth1"
 
# IP da Rede Local
rede_local="10.0.0.0/23"
 
# Portas à serem liberadas
portas_liberadas="21,23,25,53,110,143,22,80,443,3128,3306,3389,5432,5900,9091"
 
echo "Variáveis declaradas"
 
#### Função "start" ####
 
iniciar(){
 
echo "Carregando módulos"
 
modprobe ip_tables
modprobe iptable_mangle
modprobe iptable_nat
 
echo "Módulos carregados"
 
echo "Limpando regras"
 
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
iptables -Z
iptables -t nat -Z
iptables -t mangle -Z
 
echo "Regras limpas"
 
echo "Definindo política padrão"
 
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
 
echo "Política padrão definida"
 
echo 1 > /proc/sys/net/ipv4/ip_forward
 
iptables -t nat -A POSTROUTING -o $ifinternet -j MASQUERADE

echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
 
echo "Internet compartilhada"
 
echo "Manter conexões establecidas"
 
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
 
echo "Negando pacotes inválidos"
 
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
 
echo "Liberando portas"
 
iptables -A INPUT -m multiport -p tcp --dport $portas_liberadas -j ACCEPT
iptables -A FORWARD -m multiport -p tcp --dport $portas_liberadas -j ACCEPT
iptables -A OUTPUT -m multiport -p tcp --dport $portas_liberadas -j ACCEPT
iptables -A INPUT -m multiport -p udp --dport $portas_liberadas -j ACCEPT
iptables -A FORWARD -m multiport -p udp --dport $portas_liberadas -j ACCEPT
iptables -A OUTPUT -m multiport -p udp --dport $portas_liberadas -j ACCEPT
 
echo "Liberando tráfego"
 
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i $iflocal -j ACCEPT
iptables -A FORWARD -i lo -j ACCEPT
iptables -A FORWARD -i $iflocal -j ACCEPT
 
echo "Tráfego liberado"
 
echo "Redirecionando tráfego para proxy transparente"
 
iptables -t nat -A PREROUTING -i $iflocal -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i $iflocal -p udp --dport 80 -j REDIRECT --to-port 3128
 
echo "Tráfego redirecionado para proxy transparente"
 
}
 
parar(){
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
iptables -Z
iptables -t nat -Z
iptables -t mangle -Z
}
 
status(){
iptables -L -v -n
}
 
case "$1" in
"start") iniciar ;;
"stop") parar ;;
"restart") parar; iniciar ;;
"status") status;;
*) echo "Use os parâmetros start ou stop"
esac

Adapte de acordo à sua rede.

O script é salvo em /etc/init.d, dê permissão de execução com sudo chmod +x /etc/init.d/firewall e pode iniciar, reiniciar ou parar o firewall com o comando sudo service firewall action, onde "action" é a ação desejada (start, stop, restart, status), para carregar durante a inicialização, execute sudo update-rc.d firewall defaults, espero ter ajudado.

Offline joaotime

  • Usuário Ubuntu
  • *
  • Mensagens: 210
    • Ver perfil
Re: Meu Firewall - Sugestão
« Resposta #4 Online: 29 de Novembro de 2013, 10:55 »
Artur meu proxy não é transplante estou usando sem por causa de autenticação achei melhor fazer assim
este proxy seu vc usar ele em servidor squid também certo
so me corriga se estiver errado por padrão todas as portas estão bloqueado certo ?
posso fazer redirecionanmento normal com ele certo ?


Obrigado pela resposta

Offline Arthur Bernardes

  • Usuário Ubuntu
  • *
  • Mensagens: 4.692
    • Ver perfil
Re: Meu Firewall - Sugestão
« Resposta #5 Online: 29 de Novembro de 2013, 11:01 »
Sim, a política padrão da cadeia "forward" e "input" é "drop", ou seja, tudo bloqueado.

Você pode sim fazer redirecionamentos usando a tabela "nat", antes libere as portas desejadas na cadeia "input" e "forward".

Como não usa proxy transparente, remova essas linhas do firewall.

Código: [Selecionar]
echo "Redirecionando tráfego para proxy transparente"
 
iptables -t nat -A PREROUTING -i $iflocal -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i $iflocal -p udp --dport 80 -j REDIRECT --to-port 3128
 
echo "Tráfego redirecionado para proxy transparente"