Neste artigo vou dar uma dica pra não “inchar” muito seu script de firewall, e se você se interessou em ler todo o título do tópico já deve fazer idéia do que estou falando.
No caso abaixo, a necessidade foi liberar o acesso do msn através de mac de alguns computadores no qual os mesmos devem ser cadastrados no arquivo indicado pela variável MACLIST seguindo o “layout” abaixo:
mac,identificacao-de-acordo-com-sua-necessidade
Certifique-se de criar o arquivo, e abaixo estou mostrando um conteúdo de exemplo:
geowany@gateway:~# cat /etc/firewall/msn_maclist
00:11:22:33:44:55,pc-chiquinho
BA:CC:DD:EE:11:00,pc-zezinho
E no script deve ficar da seguinte forma:
MACLIST="/caminho/para/sua/lista" for i in `cat $MACLIST`;do MAC=`echo $i|cut -d ',' -f1` USER=`echo $i|cut -d ',' -f2` echo "Liberando acesso msn para '$USER'..." iptables -A FORWARD -m mac --mac-source $MAC -p tcp --dport 1863 -j ACCEPT done iptables -A FORWARD -s $NET1 -p tcp --dport 1863 -j REJECT
Na primeira linha está definindo a variável que indica onde está o arquivo de lista se encontra.
Na segunda, está o início do laço (se quiser saber mais, pesquise pelo comando “for” em alguma documentação de “shell script” ) que seria algo assim para “i” em conteúdo do arquivo de lista; faça (aí começa a terceira linha).
Na terceira linha está o mac que ele vai “tirar de cada linha” (pesquise sobre o comando cut para saber os mínimos detalhes).
Na quarta linha está aquela identificação que não precisa seguir regra nenhuma, faça a gosto.
Na quinta linha está uma “saída para a tela”, ou seja, quando o script for executado vai aparecer algo tipo: “Liberando acesso a msn para chiquinho”.
Na sexta linha está o que mais interessa que é liberar a porta do msn pelo mac. Na sétima está o “done”, que nada mais é do que o fim do laço.
Resumindo, esse laço pega cada linha do arquivo e executa um comando por cada linha.Espero que gostem!