Você está na página 1de 6

DOMINGO, 27 DE JUNHO DE 2010

Instalando o Firewall no Linux


Postado por Cesar Augustus Silva s 14:25 Linux Seguranca Shell Script Tutorial

Hoje irei mostrar como instalar o Firewall para poder proteger as mquinas de pacotes indesejveis no GNU/Linux.

Instalando o Firewall
Debian/Ubuntu
root@cesar.augustus.nom.br's # apt-get install iptables

Fedora/CentOS
root@cesar.augustus.nom.br's # yum install iptables

Slackware Baixe o pacote do Iptables e instale: ftp://ftp.slackware-brasil.com.br/slackware(...)/n/iptables-1.4.2-i486-1.tgz


root@cesar.augustus.nom.br's # installpkg iptables-1.4.2-i486-1.tgz

Criando o Script do Firewall


Debian/Ubuntu e Fedora/CentOS Crie um arquivo com o nome "firewall" em "/etc/init.d/", adicione o script do firewall e atribui as permisses:
root@cesar.augustus.nom.br's # chmod 0755 /etc/init.d/firewall

Para iniciar o firewall sempre que ligar a mquina, execute os seguintes comandos: Debian/Ubuntu
root@cesar.augustus.nom.br's # update-rc.d firewall defaults

Fedora/CentOS
root@cesar.augustus.nom.br's # chkconfig --add firewall # chkconfig firewall on

Slackware Crie um arquivo com o nome "rc.firewall" em "/etc/rc.d/", adicione o script do firewall e coloque para iniciar o firewall sempre que ligar a mquina atribuindo a permisso:
root@cesar.augustus.nom.br's # chmod 0755 /etc/rc.d/rc.firewall

Script Firewall
Esse Script Firewall que eu criei e utilizo, tem vrias regras com protees e tudo mais. Algumas regras esto comentadas, bastando descomentar que a regra ser adicionada ao recarregar o firewall e permitindo o trfego. Baixe o script completo: Debian/Ubuntu, Fedora/CentOS e Slackware.

#!/bin/bash # # Shell Script - Firewall # ======================= # Autor:- CESAR AUGUSTUS SILVA # Email:- cesaraugustussilva@linuxmail.org # # IP da Rede NETWORK=192.168.0.0/24 # Interface da Rede Local - LAN ILAN=eth0 # Interface da Rede Externa - Internet INET=ppp0 IPT=/sbin/iptables /sbin/modprobe iptable_filter /sbin/modprobe iptable_nat /sbin/modprobe iptable_mangle

/sbin/modprobe ipt_LOG /sbin/modprobe ipt_REDIRECT /sbin/modprobe ipt_MASQUERADE INTERNET () { # Mascaramento $IPT -t nat -A POSTROUTING -o $INET -s $NETWORK -j MASQUERADE # Ativando o redirecionamento de pacotes echo 1 > /proc/sys/net/ipv4/ip_forward } LIMPAR () { # Removendo regras $IPT -F $IPT -t nat -F $IPT -t mangle -F # Apagando chains $IPT -X $IPT -t nat -X $IPT -t mangle -X # Zerando contadores $IPT -Z $IPT -t nat -Z $IPT -t mangle -Z } PARAR () { # Limpando regras LIMPAR # Poltica Padro $IPT -P INPUT ACCEPT $IPT -P OUTPUT ACCEPT $IPT -P FORWARD ACCEPT # Compartilhando a Internet INTERNET } INICIAR () { # Limpando regras LIMPAR # Poltica Padro $IPT -P INPUT DROP $IPT -P OUTPUT ACCEPT $IPT -P FORWARD DROP # Compartilhando a Internet INTERNET ########################## ATRIBUINDO SEGURANA ########################## # Proteo para SYN Flood echo 1 > /proc/sys/net/ipv4/tcp_syncookies # Rejeitar requisio de ICMP Echo destinado a Broadcasts e Multicasts echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # Ignorar Mensagens Falsas de icmp_error_responses

echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses for i in /proc/sys/net/ipv4/conf/*; do # No Redirecionar Mensagens ICMP echo 0 > $i/accept_redirects # Proteo a Ataques IP Spoofing echo 0 > $i/accept_source_route # Permitir que Pacotes Forjados sejam logados pelo prprio kernel echo 1 > $i/log_martians # Verificar Endereo de Origem do Pacote (Proteo a Ataques IP Spoofing) echo 1 > $i/rp_filter done #################### ADICIONANDO REGRAS P/ SERVIDORES #################### # Apache - Servidor Web #$IPT -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT # Apache TomCat - Servidor Web #$IPT -A INPUT -p tcp --dport 8080 -j ACCEPT # Bind9 - Servidor DNS #$IPT -A INPUT -p udp --dport 53 -j ACCEPT # DanGuardian - Servidor Proxy #$IPT -A INPUT -i $ILAN -p tcp --dport 8080 -j ACCEPT # DHCP - Servidor DHCP #$IPT -A INPUT -i $ILAN -p udp --sport 68 --dport 67 -j ACCEPT # IPP - Protocolo de Impresso na Internet #$IPT -A INPUT -i $ILAN -p tcp --dport 631 -j ACCEPT #$IPT -A INPUT -i $ILAN -p udp -m multiport --dports 138,631 -j ACCEPT # NFS - Servidor NFS #$IPT -A INPUT -p tcp -m multiport --dports 111,2049,51049 -j ACCEPT #$IPT -A INPUT -p udp -m multiport --dports 111,49176 -j ACCEPT # ProFTP - Servidor FTP #$IPT -A INPUT -i $ILAN -p tcp --dport 21 -j ACCEPT #$IPT -A INPUT -i $ILAN -p tcp -m multiport --dports 49152:49162 -j ACCEPT # Postfix - Servidor de E-mail #$IPT -A INPUT -i $ILAN -p tcp -m multiport --dports 25,110 -j ACCEPT #$IPT -A INPUT -i $ILAN -p tcp -m multiport --dports 465,995 -j ACCEPT # PostgreSQL - Servidor Postgresql #$IPT -A INPUT -i $ILAN -p tcp --dport 5432 -j ACCEPT # Samba - Servios de Diretrio da Microsoft #$IPT -A INPUT -i $ILAN -p tcp -m multiport --dports 445,139 -j ACCEPT #$IPT -A INPUT -i $ILAN -p udp -m multiport --dports 137,138 -j ACCEPT # Squid - Servidor Proxy #$IPT -A INPUT -i $ILAN -p tcp --dport 3128 -j ACCEPT # SSH - Servidor SSH #$IPT -A INPUT -i $ILAN -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 10 -j DROP

#$IPT -A INPUT -i $ILAN -p tcp --dport 22 -m state --state NEW -m recent --set #$IPT -A INPUT -i $ILAN -p tcp --dport 22 -j ACCEPT # VNC - Servidor de Acesso Remoto #$IPT -A INPUT -p tcp --dport 5900 -j ACCEPT # Webmin - Gerenciador Web de Servidor #$IPT -A INPUT -i $ILAN -p tcp --dport 10000 -j ACCEPT ##################### ADICIONANDO REGRAS P/ SERVIOS ##################### # DNS - Servio de Nomes de Dominios #$IPT -A FORWARD -o $INET -p udp -m multiport --dports 53,5353 -j ACCEPT # FTP - Protocolo de Transferncia de Arquivo #$IPT -A FORWARD -o $INET -p tcp --dport 21 -j ACCEPT # HTTP - Protocolo de Transferncia de Hypertext #$IPT -A FORWARD -o $INET -p tcp -m multiport --dports 80,8080 -j ACCEPT # HTTPS - Protocolo de Transferncia de Hypertext Seguro #$IPT -A FORWARD -o $INET -p tcp --dport 443 -j ACCEPT # MSNMS - Servio de Mensageiro de Rede da Microsoft #$IPT -A FORWARD -o $INET -p tcp -m multiport --dports 1863,7001 -j ACCEPT #$IPT -A FORWARD -o $INET -p udp --dport 7001 -j ACCEPT # NTP - Protocolo para sincronizao dos relgios #$IPT -A FORWARD -o $INET -p udp --dport 123 -j ACCEPT # Ping #$IPT -A INPUT -i $ILAN -p icmp --icmp-type 8 -j ACCEPT #$IPT -A FORWARD -o $INET -p icmp --icmp-type 8 -j ACCEPT # POP3 - Protocolo de Correio #$IPT -A FORWARD -o $INET -p tcp --dport 110 -j ACCEPT # POP3S - Protocolo de Correio Seguro #$IPT -A FORWARD -o $INET -p tcp --dport 995 -j ACCEPT # PPTP - Protocolo de Encapsulamento Ponto a Ponto #$IPT -A FORWARD -o $INET -p tcp --dport 1723 -j ACCEPT # RDP - Protocolo de rea de Trabalho Remota #$IPT -A FORWARD -o $INET -p tcp --dport 3389 -j ACCEPT # SSDP - Protocolo para Descoberta de Servios Simples #$IPT -A INPUT -i $ILAN -p udp --dport 1900 -j ACCEPT # SSH - Shell Seguro #$IPT -A FORWARD -o $INET -p tcp --dport 22 -j ACCEPT # SMTP - Protocolo Simples para Transferncia de Correio #$IPT -A FORWARD -o $INET -p tcp --dport 25 -j ACCEPT # SSMTP - Protocolo Simples para Transferncia de Correio Seguro #$IPT -A FORWARD -o $INET -p tcp --dport 465 -j ACCEPT # TELNET #$IPT -A FORWARD -o $ILAN -p tcp --dport 23 -j ACCEPT # VNC - Computao em Rede Virtual

#$IPT -A FORWARD -o $ILAN -p tcp --dport 5900 -j ACCEPT # XMPP - Protocolo de Presena e Mensagens Extensiva #$IPT -A FORWARD -o $INET -p tcp --dport 5222 -j ACCEPT # Manter Conexes Estabelecidas $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # Liberando o Trfego na Interface loopback $IPT -A INPUT -i lo -j ACCEPT ################################## LOG ################################### $IPT $IPT $IPT $IPT "LOG-FW: } -A -A -A -A " INPUT INPUT INPUT INPUT -p -p -p -m tcp -m multiport ! --dports 0:1056 -j DROP udp -j DROP icmp -j DROP limit --limit 3/m --limit-burst 3 -j LOG --log-prefix

case "$1" in start) echo " * Starting Firewall iptables" INICIAR ;; stop) echo " * Stopping Firewall iptables" PARAR ;; restart|reload) echo " * Reloading Firewall iptables" INICIAR ;; *) echo " * Usage: $0 {start|stop|restart|reload}" exit 1 esac exit 0

Testando a Segurana
Vamos agora fazer um pequeno teste para sabermos se estamos "invisveis" na internet. Lembre-se: "No se pode atacar o que no se pode ver". 1) 2) 3) 4) V para o endereo: http://www.grc.com/default.htm Clique em "ShieldsUP" Clique em "Proceed" Clique em "All Service Ports"

As portas at 1024 sero testadas e se o resultado final for um "PASSED" em verde, sua mquina no responde a pacotes ICMP e, portanto, tem uma segurana a mais na internet.

A obra Instalando o Firewall no Linux de Cesar Augustus Silva foi licenciada com uma Licena Creative Commons - Atribuio - Partilha nos Mesmos Termos 3.0 No Adaptada. Permisses adicionais ao mbito desta licena podem estar disponveis em http://creativecommons.org/.

http://blog.cesar.augustus.nom.br/instalando-o-firewall-no-linux.html