Script para firewall [RESOLVIDO]

1. Script para firewall [RESOLVIDO]

Jeferson
volt

(usa KUbuntu)

Enviado em 12/11/2009 - 13:31h

Galera tenho que montar um script com as especificações abaixo, mas estou em dúvida em algumas coisas. Se alguém puder me mostrar maneiras de o fazer. O script tem que ficar na máquina que vai ser o firewall, e esta máquina interliga uma interface para a internet (eth0)e a rede (eth1; IP=192.168.100.1), e use pelo menos uma máquina na rede interna para fazer o teste(IP=192.168.100.2). Desde já agradço.

Escreva um script que faça a configuração da máquina firewall da rede:
– Configura as interfaces de rede eth0 e eth1 do firewall;
– Ativa roteamento no kernel;
– Carrega todos os módulos do netfilter no kernel;
– Ressetar as regras de firewall que estejam ativas;
– Configura as politicas padrões da tabela filter de forma mais restritiva possível;
– Permitir pacotes em loopback;
– Configurar o mascaramento de pacotes NAT para que a rede interna acesse a rede externa (internet), para isso use
obviamente a interface eth0 (rede externa) ou seu endereço;
– Permitir conexões originadas pelo próprio firewall;
– Permitir conexões originadas pela rede interna para a rede externa;
– Permite a entrada e o encaminhamento de pacotes vindos ou relacionados de conexões já estabelecidadas;
– Qualquer máquina da rede interna poderá fazer acesso Web (HTTP e HTTPS) e Consultas DNS;
– Gravar log de todas tentativas de acesso da rede interna ao serviços SSH no firewall;
– Permite acesso da rede interna ao serviços SSH no firewall;
– Redirecionar as tentativas de acesso da rede externa (internet) ao serviço SSH do firewall para a máquina
192.168.100.2;


  


2. Re: Script para firewall [RESOLVIDO]

Jeferson
volt

(usa KUbuntu)

Enviado em 15/11/2009 - 13:42h

Terminei o script, mas gostaria que fizessem critical e deem sugestões nos comandos usados. Sou leigo no assunto e provavelmente usei algum comando de forma erronea.

OBS1.: Gostaria de saber onde é gravado o LOG e se posso modificar o lugar?
OBS2.: Se eu excluir o EXT e usar apenas eth0 vai funcionar igual?


#!/bin/bash
# ===================================
# SCRIPT : FIREWALL
# DATA : 20/11/2009
# BY : JEFERSON CARLOS VOLTARELLI
# ===================================
#
# Este script deve ser colocado em "/etc/init.d/"
# Crie um link simbolico dentro de "/usr/bin", "ls -s /etc/init.d/rc.firewall /usr/bin/rc.firewall"
# No arquivo "/etc/init.d/bootmisc.sh", escreva "/etc/init.d/ ./rc.firewall"
#
# Configurando as interfaces de rede eth0 e eth1
dhclint eth0
EXT=eth0 # interface de rede externa (internet)
ifconfig eth1 192.168.100.0 netmask 255.255.255.0

# CARREGANDO TODOS OS MODULOS DO NETFILTER NO KERNEL
modprobe ip_tables
modprobe iptable_nat
modprobe iptable_filter
modprobe iptable_mangle
modprobe ipt_LOG
modprobe ipt_MASQUERADE
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
modprobe ipt_REDIRECT

# HABILITANDO O IP_FORWARD DO KERNEL
echo 1 > /proc/sys/net/ipv4/ip_forward

# APLICANDO UM FLUSH (LIMPANDO) NAS TABELAS DO NETFILTER
iptables -F -t filter
iptables -X -t filter
iptables -F -t nat
iptables -X -t nat
iptables -F -t mangle
iptables -X -t mangle

# CONFIGURANDO AS POLITICAS DA TABELA FILTER DE FORMA MAIS RESTRITIVA POSSÍVEL
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# PERMITINDO PACOTES EM LOOPBACK
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# CONFIGURANDO O MASCARAMENTO DE PACOTES NAT PARA QUE A REDE INTERNA ACESSE A REDE ESTERNA (INTERNET), PARA ISSO OBVIAMENTE USE A INTERFACE ETH0 (REDE EXTERNA) OU SEU ENDEREÇO
iptables -t nat -A POSTROUTING -o $EXT -j MASQUERADE

# PERMITINDO CONEXÕES ORIGINADAS PELA REDE INTERNA PARA A REDE EXTERNA
iptables -A FORWARD -s 192.168.100.0/24 -d $EXT -j ACCEPT

# PERMITINDO A ENTRADA E O ENCAMINHAMENTO DE PACOTES VINDOS OU RELACIONADOS DE CONEXÕES JÁ ESTABELECIDAS
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# PERMITINDO QUALQUER MÁQUINA DA REDE INTERNA A FAZER ACESSO WEB (HTTP E HTTPS) E CONSULTAS DNS
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT

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

iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT

iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT


# GRAVANDO LOG DE TODAS AS TENTATIVAS DE ACESSO DA REDE INTERNA AOS SERVIÇOS SSH NO FIREWALL
iptables -A INPUT -p ssh --dport 22 -j LOG

# PERMITINDO ACESSO DA REDE INTERNA AO SERVIÇO SSH NO FIREWALL
iptables -A INPUT -p ssh --dport 22 -j ACCEPT

# REDIRECIONANDO AS TENTATIVAS DE ACESSO DA REDE EXTERNA (INTERNET) AO SERVIÇO SSH DO FIREWALL PARA A MÁQUINA 192.168.100.2
iptables -t nat -A PREROUTING -d $EXT -p ssh -m ssh --dport 22 -j DNAT -d 192.168.100.2:22


3. Script para firewall

Jeferson
volt

(usa KUbuntu)

Enviado em 20/11/2009 - 15:56h

Andei estudando algumas bibliografias e cheguei ao seguinte scrip. Mesmo assim se alguém fizer alguma crítica ao mesmo ficaria grato.

# !/bin/bash
# ====================================
# SCRIPT : FIREWALL
# DATA : 20/11/2009
# BY : JEFERSON CARLOS VOLTARELLI
# ====================================
#
# Este script deve ser colocado em "/etc/init.d/"
# Crie um link simbolico dentro de "/usr/bin", "ls -s /etc/init.d/rc.firewall / usr/bin/rc.firewall"
# No arquivo "/etc/init.d/bootmisc.sh", escreva "/etc/init.d/ ./rc.firewall"
#
# CONFIGURANDO AS INTERFACES DE REDE eth0 E eth1
echo "CONFIGURANDO INTERFACES..."
dhclient eth0
EXT=eth0 # interface de rede externa (internet)
ifconfig eth1 192.168.100.1 netmask 255.255.255.0
INT=eth1 # interface de rede interna (lan)
INTRANET=192.168.100.0/24 # rede interna
echo "PRONTO!"
echo " "
echo " "

# CARREGANDO TODOS OS MODULOS DO NETFILTER NO KERNEL
echo "CARREGANDO MODULOS..."
modprobe ip_tables
modprobe iptable_nat
echo "PRONTO!"
echo " "
echo " "

# HABILITANDO O IP_FORWARD DO KERNEL
echo "HABILITANDO O ROTEAMENTO..."
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "PRONTO!"
echo " "
echo " "

# LIMPANDO NAS TABELAS DO NETFILTER
echo "LIMPANDO NETFILTER..."
iptables -F -t filter
iptables -X -t filter
iptables -F -t nat
iptables -X -t nat
iptables -F -t mangle
iptables -X -t mangle
echo "PRONTO!"
echo " "
echo " "

# CONFIGURANDO AS POLITICAS DA TABELA FILTER DE FORMA MAIS RESTRITIVA POSSIVEL
echo "HABILITANDO POLITICAS RESTRITIVAS..."
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
echo "PRONTO!"
echo " "
echo " "

# PERMITINDO PACOTES EM LOOPBACK
echo "ATIVANDO INTERFACE DE LOOPBACK..."
iptables -I INPUT -i lo -j ACCEPT
iptables -I OUTPUT -i lo -j ACCEPT
echo "PRONTO!"
echo " "
echo " "

# CONFIGURANDO O MASCARAMENTO DE PACOTES NAT PARA QUE A REDE INTERNA ACESSE A REDE EXTERNA (INTERNET)
echo "HABILITANDO MASCARAMENTO..."
iptables -t nat -A POSTROUTING -s $INTRANET -o $EXT -j MASQUERADE
echo "PRONTO!"
echo " "
echo " "

# PERMITINDO CONEXÔES ORIGINADAS PELO PROPRIO FIREWALL
echo "HABILITANDO CONEXOES PELO FIREWALL..."
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
echo "PRONTO!"
echo " "
echo " "

# PERMITINDO CONEXÔES ORIGINADAS PELA REDE INTERNA PARA A REDE EXTERNA
echo "HABILITANDO CONEXOES INTERNAS..."
iptables -A FORWARD -m state --state NEW -s $INTRANET -o $EXT -j ACCEPT
echo "PRONTO!"
echo " "
echo " "

# PERMITINDO A ENTRADA E O ENCAMINHAMENTO DE PACOTES VINDOS OU RELACIONADOS DE CONEXÔES JÁ ESTABELECIDAS
echo "HABILITANDO ENCAMINHAMENTO DE ESTADO..."
iptables -A INPUT -m state --state RELATED, ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED, ESTABLISHED -j ACCEPT
echo "PRONTO!"
echo " "
echo " "

# PERMITINDO QUALQUER MÁQUINA DA REDE INTERNA A FAZER ACESSO WEB E CONSULTAS DNS
echo "HABILITANDO ACESSO WEB E DNS..."
iptables -A FORWARD -s $INTRANET -o $EXT -p tcp -m multiport --dport 80,443. -j ACCEPT
iptables -A FORWARD -s $INTRANET -o $EXT -p udp --dport 53 -j ACCEPT
echo "PRONTO!"
echo " "
echo " "

# GRAVANDO LOG DE TODAS AS TENTATIVAS DE ACESSO DA REDE INTERNA AOS SERVIÇOS SSH NO FIREWALL
echo "HABILITANDO GRAVACAO DE LOG AO ACESSO SSH..."
iptables -A INPUT -s $INTRANET -p tcp --dport 22 -j LOG --log-prefix "Acesso ao servico SSH no Firewall" # arquivado em /var/log/messages
echo "PRONTO!"
echo " "
echo " "

# PERMITINDO ACESSO DA REDE INTERNA AO SERVIÇO SSH NO FIREWALL
echo "HABILITANDO ACESSO INTERNO AO SSH..."
iptables -A INPUT -s $INTRANET -p tcp --dport 22 -j ACCEPT
echo "PRONTO!"
echo " "
echo " "

# REDIRECIONANDO AS TENTATIVAS DE ACESSO DA REDE EXTERNA (INTERNET) AO SERVIÇO SSH DO FIREWALL PARA A MÁQUINA 192.168.100.2
echo "REDIRECIONANDO ACESSO DA REDE EXTERNA AO SSH..."
iptables -t nat -A PREROUTING -i $EXT -p tcp --dport 22 -j DNAT --to 192.168.100.2:22
echo "PRONTO!"
echo " "
echo " "
echo "FIREWALL HABILITADO COM SUCESSO!!!"
echo " "
echo " "







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts