Firewall Linux Iptables
Publicado por Jonathan Ribeiro (última atualização em 17/06/2016)
[ Hits: 5.977 ]
Homepage: www.locapack.com.br
Script firewall iptables Linux.
Liberações básicas de internet.
Já possui script para liberar rede local para internet.
Ajuste as variáveis de acordo com seu ambiente de rede.
Apenas descomentar as linhas:
# Mascaramento
$IPT -t nat -A POSTROUTING -s $NETWORK -o $IWAN -j MASQUERADE
$IPT -A FORWARD -s $NETWORK -i $ILAN -j ACCEPT
$IPT -A FORWARD -s $NETWORK -j ACCEPT
#!/bin/bash # # Shell Script - Firewall # ======================= # chkconfig: 2345 80 20 # description: Firewall Linux # ### BEGIN INIT INFO #========================================================================================= # Script para Firewall Linux # Desenvolvido por Jonathan Ribeiro # http://www.locapack.com.br jonathan@locapack.com.br # #========================================================================================= # Provides: Firewall # Required-Start: # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Description: Firewall Linux # ######################################################################################## # Nome do arquivo firewall.sh # Criar arquivo no /etc/firewall/ # ln -s /etc/firewall/firewall.sh /etc/init.d # cd /etc/init.d # chkconfig firewall.sh on # Colocando script na inicializacao # Tonar executavel chmod +x /etc/firewall/firewall.sh ########################################################################################## ### END INIT INFO #!/bin/bash # # Shell Script - Firewall # ======================= # #Firewall Linux LAN IP INET=192.198.10.1 # Rede Local NETWORK=192.168.10.0/24 # Interface da Rede Local - LAN ILAN=eth1 # Interface da Rede Externa - Internet IWAN=eth0 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 -s $NETWORK -o $IWAN -j MASQUERADE $IPT -A FORWARD -s $NETWORK -i $ILAN -j ACCEPT #$IPT -A FORWARD -s $NETWORK -j ACCEPT # Ativando o redirecionamento de pacotes #$IPT -A POSTROUTING -t nat -s 192.168.10.2 -o $IWAN -j MASQUERADE #$IPT -A FORWARD -s 192.168.10.2 -j ACCEPT 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 # PolÃtica Padrão $IPT -P INPUT ACCEPT $IPT -P OUTPUT ACCEPT $IPT -P FORWARD ACCEPT # Compartilhando a Internet INTERNET } INICIAR () { echo "#=========================================================================#" echo "# Script para Firewall Linux #" echo "# Desenvolvido por Jonathan Ribeiro #" echo "# http://www.locapack.com.br jonathan@locapack.com.br #" echo "# #" echo "#=========================================================================#" # Limpando regras LIMPAR # PolÃtica Padrão $IPT -P INPUT DROP $IPT -P OUTPUT ACCEPT $IPT -P FORWARD DROP # Compartilhando a Internet INTERNET ########################## ATRIBUINDO SEGURANÇA ########################## # Proteção para SYN Flood echo 1 > /proc/sys/net/ipv4/tcp_syncookies # Rejeitar requisição 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 # Não Redirecionar Mensagens ICMP echo 0 > $i/accept_redirects # Proteção a Ataques IP Spoofing echo 0 > $i/accept_source_route # Permitir que Pacotes Forjados sejam logados pelo próprio kernel echo 1 > $i/log_martians # Verificar Endereço de Origem do Pacote (Proteção 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 Impressão 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 - Serviços de Diretório 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 # SSH EXTERNO $IPT -A INPUT -i $IWAN -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 10 -j DROP $IPT -A INPUT -i $IWAN -p tcp --dport 22 -m state --state NEW -m recent --set $IPT -A INPUT -i $IWAN -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/ SERVIÇOS ##################### # DNS - Serviço de Nomes de Dominios #$IPT -A FORWARD -o $INET -p udp -m multiport --dports 53,5353 -j ACCEPT # FTP - Protocolo de Transferência de Arquivo #$IPT -A FORWARD -o $INET -p tcp --dport 21 -j ACCEPT # HTTP - Protocolo de Transferência de Hypertext #$IPT -A FORWARD -o $INET -p tcp -m multiport --dports 80,8080 -j ACCEPT # HTTPS - Protocolo de Transferência de Hypertext Seguro #$IPT -A FORWARD -o $INET -p tcp --dport 443 -j ACCEPT # MSNMS - Serviço 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 sincronização dos relógios #$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 Serviços 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 Transferência de Correio #$IPT -A FORWARD -o $INET -p tcp --dport 25 -j ACCEPT # SSMTP - Protocolo Simples para Transferência 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 - Computação em Rede Virtual #$IPT -A FORWARD -o $ILAN -p tcp --dport 5900 -j ACCEPT # XMPP - Protocolo de Presença e Mensagens Extensiva #$IPT -A FORWARD -o $INET -p tcp --dport 5222 -j ACCEPT # Manter Conexões Estabelecidas $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # Liberando o Tráfego na Interface loopback $IPT -A INPUT -i lo -j ACCEPT $IPT -A FORWARD -o eth0 -j ACCEPT #Rede Local $IPT -I INPUT -s $NETWORK -d 192.168.10.1 -j ACCEPT $IPT -I OUTPUT -s $NETWORK -d 192.168.10.1 -j ACCEPT # Liberar Ping $IPT -A OUTPUT -p icmp -j ACCEPT $IPT -A INPUT -p icmp -j ACCEPT ################################## LOG ################################### $IPT -A INPUT -p tcp -m multiport ! --dports 0:1056 -j DROP $IPT -A INPUT -p udp -j DROP $IPT -A INPUT -p icmp -j DROP $IPT -A INPUT -m limit --limit 3/m --limit-burst 3 -j LOG --log-prefix "LOG-FW: " } case "$1" in start) echo " * Starting Firewall iptables" INICIAR ;; stop) echo " * Stopping Firewall iptables" PARAR ;; restart|reload) echo " * Reloading Firewall iptables" PARAR INICIAR ;; *) echo " * Usage: $0 {start|stop|restart|reload}" exit 1 esac exit 0
Backup, restore e leitura de log com Dialog
olhaMeuDesktop 0.1 - Aplicativo para gravar Área de Trabalho
Instalador .tar.bz2 com menu gráfico Zenity
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Estou com sede em aprender sobre o nosso querido Linux. (1)
big linux sem audio como resolver (2)
Como faz para dar um update-grub por shell script [RESOLVIDO] (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta