De uma olhada no Firewall ???

Iniciado por Lucas Peregrino, 24 de Julho de 2012, 18:43

tópico anterior - próximo tópico

Lucas Peregrino

Bem pessoal trago meu firewall aqui para vc da uma olhada para ver o que posso melhorar nele. E se alguem pode comenta ai se ele ta bom ou ruim para eu saber obrigado.

#!/bin/bash

   #digite
   net=ppp+
   rede=eth0
   ip_rede=192.168.3.0/24

   ## Ativa roteamento no kernel
   # -------------------------------------------------------
   # Habilita repasse de pacotes
   echo "1" > /proc/sys/net/ipv4/ip_forward
   # Habilitar protecao contra synflood
   echo "1" > /proc/sys/net/ipv4/tcp_syncookies
   # Controle de ICMP
   echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

   ## Ativa Modulos
   # -------------------------------------------------------
   modprobe ip_tables
   modprobe iptable_nat
   modprobe ipt_string
   modprobe ipt_REJECT
   modprobe ipt_MASQUERADE
   modprobe ip_conntrack_ftp
   modprobe ip_nat_ftp

   ## Zera regras
   # -------------------------------------------------------
   iptables -F
   iptables -Z
   iptables -X
   iptables -t nat -F

   ## Determina a politica ACCEPT
   # -------------------------------------------------------
   iptables -P INPUT ACCEPT
   iptables -P FORWARD ACCEPT
   iptables -P OUTPUT ACCEPT

   ## Liberando SSH (porta 9089)
   # -------------------------------------------------------
   iptables -A INPUT -p tcp --dport 9089 -j ACCEPT

   #--------------------------------------------------------
    case "$1" in
       start)
   #--------------------------------------------------------

   # Definindo o DROP
   # -------------------------------------------------------
   iptables -P INPUT DROP
   iptables -P FORWARD DROP
   iptables -P OUTPUT ACCEPT

   ## Abre para a interface de loopback.
   # -------------------------------------------------------
   iptables -A INPUT -s 127.0.0.1/32 -j ACCEPT

# Libera rede interna
   # -------------------------------------------------------
   iptables -A INPUT -i $rede -j ACCEPT
   iptables -A FORWARD -i $rede -j ACCEPT

   ## ACCEPT (libera) pacotes de retorno da internet
   # -------------------------------------------------------
   iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
   iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

   ## Mascaramento de rede para acesso externo
   # -------------------------------------------------------
   iptables -t nat -A POSTROUTING -o $net -j MASQUERADE

   ## Abre para uma faixa de endereco da rede local
   # -------------------------------------------------------
   iptables -A INPUT -p tcp --syn -i $rede -j ACCEPT

   ## Libera as portas do samba para Rede.
   # -------------------------------------------------------
   #iptables -A INPUT -p tcp --sport 137 -i $rede -j ACCEPT
   #iptables -A INPUT -p tcp --sport 138 -i $rede -j ACCEPT
   #iptables -A INPUT -p tcp --sport 139 -i $rede -j ACCEPT
   #iptables -A INPUT -p tcp --sport 445 -i $rede -j ACCEPT

   # Libera DNS
   # -------------------------------------------------------
   iptables -A INPUT -p udp -s 127.0.0.1 --sport 53 -i $rede -j ACCEPT
   iptables -A INPUT -p tcp --dport 53 -d $ip_rede -j ACCEPT
   iptables -A INPUT -p udp --dport 53 -d $ip_rede -j ACCEPT
   iptables -A INPUT -p tcp --sport 53 -d $ip_rede -j ACCEPT
   iptables -A INPUT -p udp --sport 53 -d $ip_rede -j ACCEPT

# Libera DHCP
   # -------------------------------------------------------
   iptables -A INPUT -p tcp --sport 67 -i $rede -j ACCEPT

   # Libera HTTP
   # -------------------------------------------------------
   iptables -A INPUT -p tcp --sport 80 -i $rede -j ACCEPT
   iptables -A INPUT -p tcp --sport 443 -i $rede -j ACCEPT

   # Libera Apache 2
   # -------------------------------------------------------
   iptables -A INPUT -p tcp --dport 6789 -i $net -j ACCEPT

   # Libera Spark
   # -------------------------------------------------------
   #iptables -A INPUT -p tcp --dport 5222 -i $net -j ACCEPT
   #iptables -A INPUT -p tcp --dport 9090 -i $net -j ACCEPT

   # Libera FTP
   # -------------------------------------------------------
   iptables -A INPUT -p tcp --dport 3166  -j ACCEPT
   iptables -A INPUT -p tcp --dport 31666 -j ACCEPT

# Libera POP e SMTP
   # -------------------------------------------------------
   #25-110
   iptables -A FORWARD -p tcp --sport 25 -j ACCEPT
   iptables -A FORWARD -p tcp --sport 110 -j ACCEPT
   iptables -A FORWARD -s $ip_rede -p tcp --dport 25 -i $net -j ACCEPT
   iptables -A FORWARD -s $ip_rede -p tcp --dport 110 -i $net -j ACCEPT

   #465-587-995
   iptables -A FORWARD -p tcp --sport 465 -j ACCEPT
   iptables -A FORWARD -p tcp --sport 587 -j ACCEPT
   iptables -A FORWARD -p tcp --sport 995 -j ACCEPT
   iptables -A FORWARD -s $ip_rede -p tcp --dport 465 -i $net -j ACCEPT
   iptables -A FORWARD -s $ip_rede -p tcp --sport 587 -i $net -j ACCEPT
   iptables -A FORWARD -s $ip_rede -p tcp --sport 995 -i $net -j ACCEPT

   # Libera IMAP
   # -------------------------------------------------------
   #143-993
   iptables -A FORWARD -p tcp --sport 143 -j ACCEPT
   iptables -A FORWARD -p tcp --sport 993 -j ACCEPT
   iptables -A FORWARD -s $ip_rede -p tcp --sport 143 -i $net -j ACCEPT
   iptables -A FORWARD -s $ip_rede -p tcp --sport 993 -i $net -j ACCEPT

# Libera ntpdate (NTP)
   # -------------------------------------------------------
   iptables -A INPUT -p udp --sport 123 -j ACCEPT

## Liberar ping (ICMP)
   #--------------------------------------------------------
   iptables -A INPUT -p icmp --icmp-type 0 -m limit --limit 1/s -j ACCEPT
   iptables -A INPUT -p icmp --icmp-type 3 -m limit --limit 1/s -j ACCEPT
   iptables -A INPUT -p icmp --icmp-type 5 -m limit --limit 1/s -j ACCEPT
   iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 1/s -j ACCEPT
   iptables -A INPUT -p icmp --icmp-type 11 -m limit --limit 1/s -j ACCEPT
   iptables -A INPUT -p icmp --icmp-type 12 -m limit --limit 1/s -j ACCEPT
   iptables -A FORWARD -p icmp --icmp-type 0 -m limit --limit 2/s -j ACCEPT
   iptables -A FORWARD -p icmp --icmp-type 3 -m limit --limit 2/s -j ACCEPT
   iptables -A FORWARD -p icmp --icmp-type 5 -m limit --limit 2/s -j ACCEPT
   iptables -A FORWARD -p icmp --icmp-type 8 -m limit --limit 2/s -j ACCEPT
   iptables -A FORWARD -p icmp --icmp-type 11 -m limit --limit 2/s -j ACCEPT
   iptables -A FORWARD -p icmp --icmp-type 12 -m limit --limit 2/s -j ACCEPT

   ## Fechando as portas do samba caso fique de cara para a internet.
   # -------------------------------------------------------
   #TCP
   iptables -A INPUT -p tcp --dport 137 -i $net -j DROP
   iptables -A INPUT -p tcp --dport 138 -i $net -j DROP
   iptables -A INPUT -p tcp --dport 139 -i $net -j DROP
   iptables -A INPUT -p tcp --dport 445 -i $net -j DROP
   #UDP
   iptables -A INPUT -p udp --dport 137 -i $net -j DROP
   iptables -A INPUT -p udp --dport 138 -i $net -j DROP
   iptables -A INPUT -p udp --dport 139 -i $net -j DROP
   iptables -A INPUT -p udp --dport 445 -i $net -j DROP

## Bloqueando U89 - software burlador de proxy
   # -------------------------------------------------------
   iptables -A FORWARD -p tcp --dport 9666 -i $net -j DROP
   iptables -A INPUT -p tcp --dport 9666 -i $net -j DROP

   iptables -A FORWARD -s $ip_rede -p tcp --dport 9666 -i $net -j DROP
   iptables -A INPUT -s $ip_rede -p tcp --dport 9666 -i $net -j DROP

   ## Bloqueio de Multicast
   # -------------------------------------------------------
   iptables -A INPUT -s 224.0.0.0/8 -d 0/0 -i $net -j DROP
   iptables -A INPUT -s 0/0 -d 224.0.0.0/8 -i $net -j DROP

   ## Bloqueio de Black Orifice
   # -------------------------------------------------------
   iptables -A INPUT -p tcp --dport 12345:12345 -i $net -j DROP
   iptables -A INPUT -p udp --dport 12345:12345 -i $net -j DROP

   ## Bloqueio acesso X server
   # -------------------------------------------------------
   iptables -A INPUT -p tcp --dport 5999:6003 -i $net -j DROP
   iptables -A INPUT -p udp --dport 5999:6003 -i $net -j DROP
   iptables -A INPUT -p tcp --dport 7100 -i $net -j DROP

   ## Bloqueio de NetBus
   # -------------------------------------------------------
   iptables -A INPUT -p tcp --dport 31337 -i $net -j DROP
   iptables -A INPUT -p udp --dport 31337 -i $net -j DROP

 ## Protecao Contra IP Spoofing
   # -------------------------------------------------------
   iptables -A INPUT -s 10.0.0.0/8 -i $net -j DROP
   iptables -A INPUT -s 127.0.0.0/8 -i $net -j DROP
   iptables -A INPUT -s 172.16.0.0/16 -i $net -j DROP
   iptables -A INPUT -s 192.168.0.0/24 -i $net -j DROP

   #Impedindo ataque Ping of Death na rede
   # -------------------------------------------------------
   iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

   #Impedindo ataque de Denial Of Service Dos na rede e servidor
   # -------------------------------------------------------
   iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
   iptables -A INPUT -p tcp -m limit --limit 1/s -j ACCEPT

   #Protecao contra worms
   # -------------------------------------------------------
   iptables -I FORWARD -p tcp --dport 135 -j LOG --log-level info --log-prefix 'WORMS REDE>'
   iptables -A FORWARD -p tcp --dport 135 -j DROP
   iptables -I INPUT -p tcp --dport 135 -j LOG --log-level info --log-prefix 'WORMS >'
   iptables -A INPUT -p tcp --dport 135 -j DROP

   #Bloquear ataque do tipo SYN-FLOOD
   # -------------------------------------------------------
   iptables -N syn-flood
   iptables -A INPUT -i $net -p tcp --syn -j syn-flood
   iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
   iptables -A syn-flood -j DROP

   iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

#Bloqueio de scanners ocultos (Shealt Scan)
   # -------------------------------------------------------
   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

   iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
   iptables -A INPUT -s 0.0.0.0/0 -p icmp -j DROP

   #Protecoes contra ataque
   # -------------------------------------------------------
   iptables -A INPUT -m state --state INVALID -j DROP
   iptables -A FORWARD -m state --state INVALID -j DROP

   iptables -A FORWARD -p tcp --syn -m state --state NEW -j DROP
   iptables -A OUTPUT -p tcp ! --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j DROP

   # Bloqueio de tracertroute
   # -------------------------------------------------------
   iptables -A INPUT -p udp -s 0/0 -i $net --dport 33435:33525 -j DROP

   ## Protecao diversas contra portscanners, ping of death, ataques DoS, etc.
   # -------------------------------------------------------
   iptables -A INPUT -i $net -m unclean -j LOG --log-prefix "Pacote INPUT mal formado:"
   iptables -A INPUT -i $net -m unclean -j DROP
   iptables -A INPUT -i $net -f -j LOG --log-prefix "Pacote INPUT fragmentado: "
   iptables -A INPUT -i $net -f -j DROP

## Protecao contra port VALID_CHECK
   # -------------------------------------------------------
   iptables -N VALID_CHECK
   iptables -A VALID_CHECK -m limit --limit 5/m -j LOG --log-level 6 --log-prefix "FIREWALL: port valid_check: "
   iptables -A VALID_CHECK -j DROP
   iptables -A VALID_CHECK -p tcp --tcp-flags ALL FIN,URG,PSH -i $net -j VALID_CHECK
   iptables -A VALID_CHECK -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -i $net -j VALID_CHECK
   iptables -A VALID_CHECK -p tcp --tcp-flags ALL ALL -i $net -j VALID_CHECK
   iptables -A VALID_CHECK -p tcp --tcp-flags ALL FIN -i $net -j VALID_CHECK
   iptables -A VALID_CHECK -p tcp --tcp-flags SYN,RST SYN,RST -i $net -j VALID_CHECK
   iptables -A VALID_CHECK -p tcp --tcp-flags SYN,FIN SYN,FIN -i $net -j VALID_CHECK
   iptables -A VALID_CHECK -p tcp --tcp-flags ALL NONE -i $net -j VALID_CHECK

   ## Protecao contra port scanners
   # -------------------------------------------------------
   iptables -N SCANNER
   iptables -A SCANNER -m limit --limit 5/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 $net -j SCANNER
   iptables -A INPUT -p tcp --tcp-flags ALL NONE -i $net -j SCANNER
   iptables -A INPUT -p tcp --tcp-flags ALL ALL -i $net -j SCANNER
   iptables -A INPUT -p tcp --tcp-flags ALL FIN,SYN -i $net -j SCANNER
   iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -i $net -j SCANNER
   iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -i $net -j SCANNER
   iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -i $net -j SCANNER

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

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

   # Fecha todas as portas
   # -------------------------------------------------------
   iptables -A INPUT -p tcp --dport 3128 -j REJECT --reject-with tcp-reset

   ## Esta regra e coracao do firewall ,
   # -------------------------------------------------------
   iptables -A INPUT -p tcp --syn -j DROP

   ## Redirencionar portas 80 para 3128
   # -------------------------------------------------------
   iptables -t nat -A PREROUTING -p tcp -i $rede --dport 80 -j DNAT --to 192.168.3.254:8080

   iptables -t nat -A PREROUTING -p tcp -i $rede --dport 80 -j REDIRECT --to-port 8080

echo "Start Firewall:" ;
   ;;
   stop)
   echo "Stop Firewall:" ;
   ;;
   restart)
   $0 stop
   $0 start
   ;;
   status)
   iptables -L
   ;;
   *)
   echo "Use: ./regras.sh {start|stop|restart|status}"
   exit 1
   esac
   exit 0
echo  iptables -A INPUT -p tcp --dport 31337 -i $net -j DROP
  exit 1

zekkerj

Eu não olhei o firewall todo... mas observei que logo no início, vc coloca várias instruções redundantes. Tipo este trecho:

Citar# Libera rede interna
    # -------------------------------------------------------
    iptables -A INPUT -i $rede -j ACCEPT
    iptables -A FORWARD -i $rede -j ACCEPT

    ## ACCEPT (libera) pacotes de retorno da internet
    # -------------------------------------------------------
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

    ## Mascaramento de rede para acesso externo
    # -------------------------------------------------------
    iptables -t nat -A POSTROUTING -o $net -j MASQUERADE

    ## Abre para uma faixa de endereco da rede local
    # -------------------------------------------------------
    iptables -A INPUT -p tcp --syn -i $rede -j ACCEPT

    ## Libera as portas do samba para Rede.
    # -------------------------------------------------------
    #iptables -A INPUT -p tcp --sport 137 -i $rede -j ACCEPT
    #iptables -A INPUT -p tcp --sport 138 -i $rede -j ACCEPT
    #iptables -A INPUT -p tcp --sport 139 -i $rede -j ACCEPT
    #iptables -A INPUT -p tcp --sport 445 -i $rede -j ACCEPT
Observa que lá no início você já liberou todo o tráfego que entra pela interface de rede local ("-i $rede") a entrar no seu servidor ("-A INPUT ... -j ACCEPT"). Então todo tráfego que entrar pela rede local já é aceito lá em cima; qualquer outra regra entrando pela mesma interface, não vai ser nem analisada, pq o tráfego já foi todo aceito.

Então essas regras liberando portas do Samba são inúteis pra você, pq vc já aceitou esse tráfego. Se isso já não fosse redundante, vc ainda tem mais uma regra "abrindo uma faixa de endereço para a rede local" ("iptables -A INPUT -p tcp --syn -i $rede -j ACCEPT"). Pois bem, o tráfego onde essa regra iria trabalhar já foi aceito lá em cima; e as portas do samba, que vc tenta liberar mais tarde, já estão inclusas nesse mesmo tráfego.

Com uma pequena diferença: como essa regra "abrindo uma faixa de endereço para a rede local" usa o flag "--syn", ela só permitiria a passagem de pacotes de abertura de conexão (independente da porta). As regras "abrindo portas do samba" não usam esse flag, então qualquer tipo de pacote seria aceito, tanto os de abertura, quanto os de dados. Só que lá em cima, há uma regra "ACCEPT (libera) pacotes de retorno da internet" (iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT) que libera a passagem de pacotes em conexões abertas (state ESTABLISHED).

Como você não associou essa regra à interface da internet ($net), ela vai aceitar pacotes de todas as interfaces --- loopback, rede local e internet. Então os mesmos pacotes que vc poderia estar lidando nas regras "abrindo portas do samba", já foram aceitos lá em cima. Ou seja, regras redundantes, e portanto desnecessárias.

Daí o que acontece? Teu firewall está enooooorme, e cheio de regras totalmente desnecessárias. Se você retirar as regras desnecessárias, o firewall vai ficar muito menor, o que também significa mais fácil de entender e de dar manutenção.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Lucas Peregrino

#2
poderia me mostra entao tudo que posso retirar dele para melhora lo ????
fiz o que falou obrigado pela dica pois quando comecei esse firewall n tive nem uma ajuda.

zekkerj

Tudo que seja redundante... o iptables funciona em esquema de "curto circuito".

Cada pacote que chega às cadeias é analisado passando regra por regra. Quando todas as condições de uma determinada regra são atendidas, a ação dessa regra é executada. Se for uma ação final (ACCEPT, DROP, REJECT na cadeia filter, MASQUERADE, SNAT, DNAT, RETURN na tabela nat) nenhuma outra regra da cadeia é executada pra esse pacote.

Você tem que arrumar suas regras de forma que as regras mais específicas apareçam antes das regras mais gerais, e observar se você não está fazendo regras redundantes.

Exemplo de regras específicas contra regras gerais:

iptables -A INPUT -p tcp --syn --dport 22 -i ppp0 -j ACCEPT # aceite pacotes de abertura de conexão na porta 22/tcp quando entrarem pela interface ppp0
iptables -A INPUT -p tcp --syn -i ppp0 -j DROP # descarte pacotes de abertura de conexão tcp, independente da porta, quando entrarem pela interface ppp0
iptables -A INPUT -p tcp -j ACCEPT # aceite pacotes tcp.

Veja que a primeira regra é bem específica: ela permite que se abra conexões SSH a partir da internet.
A segunda regra é mais geral; ela impede que a máquina aceite pedidos de abertura de conexão, quando vindos da internet. Observe também que um pacote de abertura de conexão vindo da internet na porta 22/tcp também se encaixa nesta regra; se eles chegassem aqui, também seriam descartados. Mas como esses pacotes são tratados na regra anterior, eles nunca chegam a esta regra.
A terceira regra é mais geral ainda. Ela aceita qualquer pacotes tcp, independente do número da porta ou da interface por onde eles entram. Pacotes de abertura de conexão vindos da internet também se encaixariam aqui, mas eles são descartados pela regra anterior.
Observe que a última regra permite a passagem de pacotes vindos da internet pra conexões em portas diferentes da porta 22/tcp. No entanto, só os pacotes que não correspondem a tentativas de abertura de conexão vão chegar aqui. E se não houver uma conexão aberta que possa ser associada com esse pacote, o próprio sistema o rejeitará. Isso por um lado é bom, mas abre seu sistema pra port scanning.

Exemplo de regras redundantes

iptables -A INPUT -p tcp --dport 22 -i ppp0 -j REJECT
iptables -A INPUT -p tcp -j REJECT
iptables -A INPUT -j REJECT

Essas três regras atendem ao princípio das regras mais específicas primeiro, mas são redundantes. Pq? Porque tomam a mesma ação (rejeitar o pacote). Quem escapa da primeira regra, fica na segunda; quem escapa da segunda, fica na terceira. Se não houver outras regras de ACCEPT entre essas três, e você não quer ter uma estatística dos pacotes rejeitados em cada modalidade, pode perfeitamente retirar as duas primeiras regras e ficar só com a última.

Aplique essa regra em seu firewall, tente identificar regras que não estejam de acordo com esses dois princípios.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

zekkerj

Ah, uma dica específica pro script. Esse script parece ter sido feito pra ficar no diretório /etc/init.d.
Assim, procure organizá-lo com duas funções, uma chamada "start" e a outra chamada "stop". Mais ou menos assim:


#!/bin/bash
# Comentários explicando o que o script faz
# Mais comentários

IPT=<caminho pro iptables>
NET=<interface da internet>
REDE=<interface da rede local>
FAIXA=<endereço da rede local>
VARIAVEL=<alguma outra variável que você precise>

function stop()
{
# Coloque aqui as regras pra limpar o firewall.
# Se usar política DROP, não esqueça de voltar a política pra ACCEPT, senão
# ao limpar suas regras, sua máquina vai ficar quase travada, de tão lenta.
# Sugestão de regras de "stop":
#
# ${IPT} -F
# ${IPT} -X
# ${IPT} -t nat -F
# ${IPT} -t nat -X
# ${IPT} -P INPUT ACCEPT
# ${IPT} -P OUTPUT ACCEPT
# ${IPT} -P FORWARD ACCEPT
#
# Você também pode fazer seu script chamar um script externo. Exemplo abaixo.
# . /etc/init.d/firewall.stop
}

function start()
{
# Coloque aqui todo o código de inicialização do seu firewall.
# Você também pode colocar esse código em outro script, e chamar esse script aqui. Exemplo abaixo.
# . /etc/init.d/firewall.start
}

# Os scripts em /etc/init.d recebem um parâmetro quando são acionados na inicialização ou desligamento do sistema.
# O código abaixo trata esses parâmetros e aciona as funções acima, quando necessário.

case $1 in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop
    start
    ;;
  *)
    echo "Use: $0 {start | stop | restart}
    exit -1
esac
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D