Autor Tópico: script firewall.sh  (Lida 7625 vezes)

Offline vitorss

  • Usuário Ubuntu
  • *
  • Mensagens: 11
    • Ver perfil
script firewall.sh
« Online: 08 de Novembro de 2012, 21:11 »
Este script está funcionando perfeitamente no Ubuntu 9.04. No ubuntu 12.04.1 lts ocorre um erro na linha "case "$1" in". Se possível, me ajude... Desde já, agradeço pela vossa atenção. Grato. Vitor.

#Firewall.sh
iniciar(){

IFINT="eth1"
IFEXT="eth0"
DMZ="eth2"
MASCARA="255.255.255.0"
RANG="192.168.100.0/24"
RANGDMZ="192.168.120.0/24"

echo 1 > /proc/sys/net/ipv4/ip_forward

modprobe ip_conntrack_pptp
modprobe ip_nat_pptp
modprobe ip_tables
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
modprobe ip_conntrack
modprobe iptable_nat

echo   "Modulos Carregados"   

iptables -F
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -F -t nat
iptables -F POSTROUTING -t nat
iptables -F PREROUTING -t nat
iptables -X

echo   "Tabela limpa"

echo   "Definindo Politicas de Acesso"

iptables -P FORWARD DROP
iptables -P INPUT ACCEPT

echo   "Iniciando Novas Regras"

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 139 -m state --state NEW -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 138 -m state --state NEW -j ACCEPT

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 1723 -j DNAT --to 192.168.100.100

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 389 -j DNAT --to 192.168.100.100

iptables -t nat -A PREROUTING -i eth0 -p gre -j DNAT --to 192.168.100.100

iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.100.100
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 5900 -j DNAT --to-destination 192.168.100.203

iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 5800 -j DNAT --to-destination 192.168.100.203
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 10001 -j DNAT --to-destination 192.168.100.251

iptables -t nat -A POSTROUTING -s $RANG -o eth0 -j SNAT --to 178.94.185.14
iptables -t nat -A POSTROUTING -s $RANGDMZ -o eth0 -j SNAT --to 178.94.185.14

iptables -A FORWARD -s $RANG -i eth1 -p tcp --dport 465 -j ACCEPT
iptables -A FORWARD -s $RANG -i eth1 -p tcp --dport 995 -j ACCEPT

iptables -A FORWARD -p tcp -s $RANG -d 0/0 --dport 465 -j ACCEPT
iptables -A FORWARD -p tcp -d $RANG -s 0/0 --sport 465 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -p tcp -s $RANG -d 0/0 --dport 587 -j ACCEPT
iptables -A FORWARD -p tcp -d $RANG -s 0/0 --sport 587 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -s $RANG -i eth1 -p tcp --dport 220 -j ACCEPT
iptables -A FORWARD -s $RANG -i eth1 -p udp --dport 220 -j ACCEPT

iptables -A FORWARD -s $RANG -i eth1 -p tcp --dport 3006 -j ACCEPT
iptables -A FORWARD -s $RANG -i eth1 -p udp --dport 3006 -j ACCEPT


iptables -A FORWARD -s $RANG -p tcp --dport 5000 -j ACCEPT
iptables -A FORWARD -s $RANG -p udp --dport 5000 -j ACCEPT

iptables -A FORWARD -p tcp -s $RANG -d 0/0 --dport 443 -j ACCEPT
iptables -A FORWARD -p tcp -d $RANG -s 0/0 --sport 443 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp -s $RANG -d 0/0 --dport 1863 -j ACCEPT
iptables -A FORWARD -p tcp -d $RANG -s 0/0 --sport 1863 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -p udp -s $RANG -s 0/0 -j ACCEPT
iptables -A FORWARD -p udp -d $RANG -s 0/0 -m state --state ESTABLISHED,RELATED -j ACCEPT


iptables -A FORWARD -s $RANG -p udp -m udp --dport 21 -j ACCEPT

iptables -A FORWARD -s $RANG -p tcp -m tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s $RANG -p tcp -m tcp --dport 110 -j ACCEPT
iptables -A FORWARD -s $RANG -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A FORWARD -s $RANG -p tcp -m tcp --dport 587 -j ACCEPT

iptables -A FORWARD -s $RANG -p tcp -m tcp --dport 1863 -j ACCEPT

iptables -A FORWARD -s $RANG -i eth1 -p tcp --dport 7001 -j ACCEPT
iptables -A FORWARD -s $RANG -i eth1 -p udp --dport 7001 -j ACCEPT
iptables -A FORWARD -s $RANG -i eth1 -p tcp --dport 5004:65535 -j ACCEPT
iptables -A FORWARD -s $RANG -i eth1 -p udp --dport 5004:65535 -j ACCEPT
iptables -A FORWARD -s $RANG -i eth1 -p tcp --dport 5061 -j ACCEPT
iptables -A FORWARD -s $RANG -i eth1 -p udp --dport 5061 -j ACCEPT


iptables -A FORWARD -d 192.168.100.100 -s www.facebook.com -j DROP
iptables -A INPUT -d 192.168.100.100 -s www.facebook.com -j DROP

iptables -A FORWARD -m mac --mac-source 88:53:2E:57:B0:52 -j ACCEPT

iptables -A FORWARD -m mac --mac-source 00:19:5B:3B:B0:26 -j ACCEPT

iptables -A FORWARD -s 192.168.100.15 -p tcp -j ACCEPT
iptables -A FORWARD -s 192.168.100.15 -p udp -j ACCEPT
iptables -A FORWARD -d 192.168.100.15 -p tcp -j ACCEPT
iptables -A FORWARD -d 192.168.100.15 -p udp -j ACCEPT

iptables -A FORWARD -s 192.168.120.1 -p udp -j ACCEPT
iptables -A FORWARD -s 192.168.120.1 -p udp -j ACCEPT
iptables -A FORWARD -d 192.168.120.1 -p tcp -j ACCEPT
iptables -A FORWARD -d 192.168.120.1 -p udp -j ACCEPT

iptables -A INPUT -s $RANGDMZ -j ACCEPT
iptables -A FORWARD -s $RANGDMZ -j ACCEPT

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s $RANG -j ACCEPT
iptables -A INPUT -s 201.0.150.218 -p tcp -j ACCEPT

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

echo   "Regras Ativas"

}
parar(){
iptables -F
iptables -X
iptables -t nat -F
iptables -P FORWARD ACCEPT
iptables -P INPUT ACCEPT

echo   "Regras Desativadas"
}

case "$1" in
   "start") iniciar ;;
   "stop") parar;;
   "restart") parar; iniciar;;
*) echo "Usar start stop"
esac
« Última modificação: 08 de Novembro de 2012, 21:40 por irtigor »

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: script firewall.sh
« Resposta #1 Online: 08 de Novembro de 2012, 21:41 »
Olá,

A enquete não fazia sentido, removi e passei o texto para a mensagem.

[]'s

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re: script firewall.sh
« Resposta #2 Online: 08 de Novembro de 2012, 22:40 »
Experimente adicionar esta linha como primeira linha do seu script, vai estabilizar a chamada do shell.

Código: [Selecionar]
#!/bin/bash
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

Offline vitorss

  • Usuário Ubuntu
  • *
  • Mensagens: 11
    • Ver perfil
Re: script firewall.sh
« Resposta #3 Online: 09 de Novembro de 2012, 16:33 »
zekkerj,


Eu adicionei a linha "#!/bin/bash", como você me pediu, porém, agora está ocorrendo o erro abaixo:

"-bash: .]firewall.sh: /bin/bash^M: bad interpreter: No such file or directory".


Valeu!
Vitor.

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re: script firewall.sh
« Resposta #4 Online: 10 de Novembro de 2012, 02:04 »
Você está usando um editor Windows?
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

Offline vitorss

  • Usuário Ubuntu
  • *
  • Mensagens: 11
    • Ver perfil
Re: script firewall.sh
« Resposta #5 Online: 12 de Novembro de 2012, 07:37 »
Sim! O WordPad.
Copiei por cp (Linux) no pendriver e depois fiz algumas alterações no WordPad.
Seria interessante redigitá-lo pelo vim ou vi?

Grato.
Vitor.

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re: script firewall.sh
« Resposta #6 Online: 12 de Novembro de 2012, 08:54 »
Taí a origem desse "^M". O Windows usa os arquivos de texto diferentes do Linux. Quando vc cria o arquivo todo no Windows, o arquivo todo fica dessa forma, e o sistema consegue perceber e corrigir. Mas quando é só uma linha, ele estranha.


Edite novamente o arquivo com um editor Linux, como o vi, nano, ou gedit; apague essa linha e crie-a novamente.
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

Offline vitorss

  • Usuário Ubuntu
  • *
  • Mensagens: 11
    • Ver perfil
Re: script firewall.sh
« Resposta #7 Online: 13 de Novembro de 2012, 08:24 »
zekkerj,


Digitei o script novamente no nano e deu certo.


Você é o cara.
Valeu, mano!

Abraço.
Vitor.

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re: script firewall.sh
« Resposta #8 Online: 13 de Novembro de 2012, 11:32 »
Vc acredita que eu tive esse mesmo problema ontem, com um arquivo de script que baixei da internet? Acabei descobrindo uma forma mais rápida de consertar, usando o próprio vi.

[Descobrindo, nem tanto; eu já sabia que era possível pq já tinha visto alguém daqui comentando que fez]

P/ resolver, abra o documento no vi, depois digite ":ff unix" e salve.

Meio tarde, mas fica o registro pra vc ou outro que nos leia não precisar digitar tudo de novo.
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

Offline vitorss

  • Usuário Ubuntu
  • *
  • Mensagens: 11
    • Ver perfil
Re: script firewall.sh
« Resposta #9 Online: 13 de Novembro de 2012, 14:01 »
Blz. Valeu d +...


Há, Zekkerj...

Agora, tenho um problema na execução do script. Está ocorrendo alguns erros no ubuntu 12.04.1 lts, que não ocorre no ubuntu 9.04. Gostaria de saber se posto neste mesmo assunto ou abro outro.

Favor me informar.

Valeu d+ irmão...

Abraço.
Vitor.



Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re: script firewall.sh
« Resposta #10 Online: 13 de Novembro de 2012, 17:39 »
Claro que posta aqui, pra quê abrir outro tópico sobre problema no mesmo arquivo?
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

Offline vitorss

  • Usuário Ubuntu
  • *
  • Mensagens: 11
    • Ver perfil
Re: script firewall.sh
« Resposta #11 Online: 14 de Novembro de 2012, 10:11 »
Segue abaixo o erro ao executar o script no Ubuntu 12.04.1 LTS:

/lib/xtables/libxt-state.so: no "state" extension found this protocol iptables v1.4.12: unknown option "--state"
Try 'iptables -h' or 'iptables --help' for more information

iptables v1.4.12: "--state" requires a list of states with no spaces, e.g. ESTABLISHED, RELATED
Try 'iptables -h' or 'iptables --help' for more information


Grato.
Vitor.

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re: script firewall.sh
« Resposta #12 Online: 14 de Novembro de 2012, 10:48 »
Hã? sem o módulo state??? Mas esse é um módulo obrigatório...

Faça uma coisa, execute o script com as opções "-x", e cole aqui o trecho onde acusa o erro.

sudo bash -x firewall.sh

Outra coisa, a vantagem do módulo state é que ele "lembra" quais foram os pacotes que foram liberados pra sair, na hora de liberar o retorno da resposta. Assim, você não precisa repetir essa regra "iptables -A FORWARD -p tcp -d $RANG -s 0/0 --sport <porta> -m state --state ESTABLISHED,RELATED -j ACCEPT" a cada porta que libera pra sair. Basta liberar, uma vez só, todo o tráfego de retorno, com um "iptables -A FORWARD -p tcp -d $RANG -s 0/0 -m state --state ESTABLISHED,RELATED -j ACCEPT", bem no início do script (e não no final, como você fez).

Ah!!! Esses "-d 0/0" e "-s 0/0" são totalmente desnecessários.
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

Offline vitorss

  • Usuário Ubuntu
  • *
  • Mensagens: 11
    • Ver perfil
Re: script firewall.sh
« Resposta #13 Online: 14 de Novembro de 2012, 15:52 »
Olá Zekkerj!


Comentei todas as linhas referente ao módulo state e inclui na 3ª linha do script o conteúdo abaixo:

iptables -A FORWARD -p tcp -d $RANG -s 0/0 -m state --state ESTABLISHED,RELATED -j ACCEPT

E executei: ./firewall.sh restart

Conteúdo:
./firewall.sh: line 146: para: command not found
ad argument '0/0'
Try 'iptables -h' 'iptables --help for more information

iptables v1.4.12: multiple -s flags not allowed
Try 'iptables -h' 'iptables --help for more information

Abaixo, o contúdo do comando: sudo bash -x firewall.sh
+ case "$1" in
+ echo 'Usar start stop'
Usar start stop


Valeu mano!
Abraço.
Vitor.


Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re: script firewall.sh
« Resposta #14 Online: 14 de Novembro de 2012, 15:57 »
Agora tem uma indicação da linha com erro...
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