Firewall Iptables Desktop

Publicado por Daniel 13/06/2009

[ Hits: 10.255 ]

Homepage: https://d4n1.org

Download rc.firewall




Firewall iptables para desktop.

Autor: Daniel - d4n1h4ck3r@gmail.com
Licença: GPL
Sistema ultilizado: Slackware 12.2

Usabilidade: qualquer distribuição linux.

Uso: adicionar permissão de execução (chmod +x) ao arquivo como root (Ex.: # chmod +x
rc.firewall). Mover o arquivo para o diretório /etc/rc.d/ para o Slackware e distribuições
derivadas, para outra distribuições mover para o local adequado (Ex.: /etc/init.d/).

  



Esconder código-fonte

#!/bin/sh
#
# /etc/rc.d/rc.firewall
#
# Start/stop/restart the Firewall.
#
# To make Firewall start automatically at boot, make this
# file executable:  chmod 755 /etc/rc.d/rc.firewall
# Author: Daniel - d4n1h4ck3r@gmail.com
# Criation: 04/04/2009
# Atualization: 13/06/2009

# Modules
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_filter
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_limit
/sbin/modprobe ipt_state
/sbin/modprobe ipt_owner
/sbin/modprobe ipt_REJECT
/sbin/modprobe ip_conntrack_ftp

# Firewall Start
firewall_start() {
    # Clean 
    iptables -X
    iptables -Z
    iptables -F 
    iptables -t nat -F

    # Politics default
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT ACCEPT

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

    # Conections enabled
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

   # Security
    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
    echo 1 > /proc/sys/net/ipv4/tcp_syncookies
    iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
    iptables -A FORWARD -p tcp -m limit --limit 1\s -j ACCEPT
    iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
    iptables -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP

    echo "Firewall Start."
}

# Firewall Stop 
firewall_stop() {
    # Clean 
    iptables -X
    iptables -Z
    iptables -F 
    iptables -t nat -F

    # Politics default
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT

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

    # Conections enabled
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    echo "Firewall Stop (without security)."
}

# Firewall Restart 
firewall_restart() {
    firewall_stop
    sleep 3
    firewall_start
}

# Options
case "$1" in
'start')
    firewall_start
    ;;
'stop')
    firewall_stop
    ;;
'restart')
    firewall_restart
    ;;
*)
    echo "rc.firewall start"
    echo "rc.firewall stop"
    echo "rc.firewall restart"
esac


Scripts recomendados

Verificar o tipo dos arquivo de um diretório

Gzipar arquivos com determinadas extensões

Solicitar senha para abrir programa

Jogo de labirinto feito em shell script

chwall.sh


  

Comentários
[1] Comentário enviado por akelon em 14/06/2009 - 13:37h

Vc não descreveu as portas que deseja abrir ?

[2] Comentário enviado por d4n1 em 14/06/2009 - 14:11h

Somente serão abertas as portas requisitadas pelo desktop. A política padrão é negar INPUT e FORWARD, aceitando somente o OUTPUT, ou seja saida, se preciso abrir algumas portas adicionais é só inclementar de acordo com a necessidade do usuário.

Obs.: Firewall básico, se puderem inclementar ou corrigir algo, agradeço!

[3] Comentário enviado por akelon em 14/06/2009 - 14:51h

Ficou xique o seu script, eu li rapidamente o guia do morimoto e fiz com pressa o no meu arch ta assim:

#!/bin/bash
iniciar(){
#interface loopback
iptables -A INPUT -i lo -j ACCEPT

#abre as portas DNS
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT

#abre as portas HTTP e HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

#garante que o firewall permitira pacotes de conexões ja iniciadas
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#ignora pings
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

#protege contra IP spoofing
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter

#descarta pacotes mal formados protegendo contra ataques diversos
iptables -A INPUT -m state --state INVALID -j DROP

#bloqueia as portas UDP de 0 a 1023 (com exceção das abertas acima)
iptables -A INPUT -p udp --dport 0:1023 -j DROP

#bloqueia conexões nas demais portas
iptables -A INPUT -p tcp --syn -j DROP
echo "Regras do firewall ativadas"
}

parar(){
iptables -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
echo "Regras do firewall desativadas"
}

case "$1" in
"start") iniciar ;;
"stop") parar ;;
"restart") parar; iniciar ;;
*) echo "Use os parametros start ou stop"
esac

E pior q ta funcionando. kkkk
na proxima vez eu vo usar o seu.

[4] Comentário enviado por d4n1 em 14/06/2009 - 15:18h

É semelhante os scripts, o que difere é a definição da política padrão e as portas abertas explicitamente..., mas funciona :)

[5] Comentário enviado por d4n1 em 13/07/2009 - 13:54h

O script do link "fazer download" não é o que postei..., está baixando outro..., pois o que eu postei está no link "código fonte"..., estranho isso...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts