Feedback arquivo firewall.sh

1. Feedback arquivo firewall.sh

Danilo Silva Mattos
danilo.mattos

(usa Debian)

Enviado em 14/02/2018 - 13:34h

Senhores boa tarde,
Estou iniciando meus estudos sobre iptables pois desejo implementa - ló na empresa onde trabalho. Nada contra quem usa Endian, Pfsense mas infelizmente por ter um professor ruim na faculdade não aprendi o iptables. Agora estou sozinho lendo artigos fazendo os meus testes, criando as minhas vm's. Estou compartilhando esse iptables simples para que vocês possam me dar alguma dica ou sugestão.
Gostaria de fazer duas perguntas:
1ª Porque a maioria dos scripts de iptables a output do servidor é ACCEPT ? Não corre risco de um Ataque por conta disso ?
2ª Se o firewall está com a policy DROP há necessidade de colocar essas regras de segurança como ataque netbus, ping da morte, port scanners ?

Obrigado a todos e paz do senhor.

Obs: Porta ssh vou alterar, porta smtp, imap etc... isso tudo vou colocar ainda só fiz o básico para teste mesmo.

#!/bin/bash

### BEGIN INIT INFO
# Provides: firewall
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Firewall
# Description: Enable service provided by daemon.
### END INIT INFO


#--------------------
# FIREWALL IPTABLES #
#--------------------


# CARREGANDO MODULOS NO KERNEL
modprobe ip_conntrack_ftp
modprobe ip_conntrack
modprobe ip_nat_ftp
modprobe ip_tables
modprobe ipt_MARK
modprobe ipt_MASQUERADE
modprobe ipt_REJECT
modprobe ipt_TCPMSS
modprobe ipt_TOS
modprobe ipt_limit
modprobe ipt_mac
modprobe ipt_multiport
modprobe ipt_owner
modprobe ipt_LOG
modprobe ipt_REDIRECT
modprobe ipt_state
modprobe iptable_nat
modprobe iptable_mangle
modprobe iptable_filter


# VARIAVEIS DE REDE
IF_WAN="enp0s3"
IF_LAN="enp0s8"
REDE_LOCAL="172.16.200.0/24"


# CASE PARA INICIAR FIREWALL
IniciarFirewall () {


# LIMPANDO REGRAS
iptables -F
iptables -F -t filter
iptables -F -t mangle
iptables -F -t nat
iptables -Z


# POLITICA PADRAO DROP
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP


# HABILITANDO ROTEAMENTO
echo "1" > /proc/sys/net/ipv4/ip_forward


# LIBERANDO CONEXOES PARA CHAINS
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT


#----------------
# REGRAS DE NAT #
#----------------

# MASCARAMENTO DE REDE
iptables -t nat -A POSTROUTING -s $REDE_LOCAL -o $IF_WAN -j MASQUERADE


#------------------
# REGRAS DE INPUT #
#------------------

# LOOPBACK
iptables -A INPUT -i lo -j ACCEPT

# SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# APACHE
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# SQUID
iptables -A INPUT -p tcp --dport 1082 -j ACCEPT

# PING
iptables -A INPUT -s $REDE_LOCAL -p icmp --icmp-type 8 -j ACCEPT


#--------------------
# REGRAS DE FORWARD #
#--------------------

# PING
iptables -A FORWARD -p icmp --icmp-type 8 -j ACCEPT

# DNS
iptables -A FORWARD -p udp --dport 53 -j ACCEPT

# IP TI
iptables -A FORWARD -s 172.16.200.2 -o $IF_WAN -j ACCEPT


}


# CASE PARA PARAR O FIREWALL
PararFirewall () {


# LIMPANDO REGRAS
iptables -F
iptables -F -t filter
iptables -F -t mangle
iptables -F -t nat
iptables -Z


# POLITICA PADRAO COMO ACCEPT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT


# HABILITANDO ROTEAMENTO
echo "1" > /proc/sys/net/ipv4/ip_forward


#----------------
# REGRAS DE NAT #
#----------------

# MASCARAMENTO DE REDE
iptables -t nat -A POSTROUTING -s $REDE_LOCAL -o $IF_WAN -j MASQUERADE


}


case $1 in

start) echo "FIREWALL INICIADO.......[OK]"
IniciarFirewall
;;

stop) echo "FIREWALL PARADO..........[OK]"
PararFirewall
;;

restart) echo "FIREWALL REINICIADO...[OK]"
PararFirewall
IniciarFirewall
;;

esac

#---------------
# FIM FIREWALL #
#---------------




  


2. Re: Feedback arquivo firewall.sh

Silas Matos
silasmg

(usa Debian)

Enviado em 19/02/2018 - 12:08h

Olá, não sou nenhum expert, mas vou te passar o que eu sei.

Na lista OUTPUT passam apenas os processos originados na máquina local, então a menos que o hack seja de dentro pra fora, não há riscos para a politica ACCEPT.

Recomendo a leitura:
https://www.vivaolinux.com.br/artigo/Estrutura-do-Iptables/

Quanto ao bloqueio de ping, não sei ao certo, minha política aqui é DROP para a filter INPUT, mas consigo pigar o servidor tranquilamente tanto na rede externa quanto na interna, então acho que é necessário criar esse tipo de regra para bloqueio de ping, etc..


3. Re: Feedback arquivo firewall.sh

Perfil removido
removido

(usa Nenhuma)

Enviado em 19/02/2018 - 13:00h

danilo.mattos escreveu:

Senhores boa tarde,
Estou iniciando meus estudos sobre iptables pois desejo implementa - ló na empresa onde trabalho. Nada contra quem usa Endian, Pfsense mas infelizmente por ter um professor ruim na faculdade não aprendi o iptables. Agora estou sozinho lendo artigos fazendo os meus testes, criando as minhas vm's. Estou compartilhando esse iptables simples para que vocês possam me dar alguma dica ou sugestão.
Gostaria de fazer duas perguntas:
1ª Porque a maioria dos scripts de iptables a output do servidor é ACCEPT ? Não corre risco de um Ataque por conta disso ?
2ª Se o firewall está com a policy DROP há necessidade de colocar essas regras de segurança como ataque netbus, ping da morte, port scanners ?

Obrigado a todos e paz do senhor.

Obs: Porta ssh vou alterar, porta smtp, imap etc... isso tudo vou colocar ainda só fiz o básico para teste mesmo.

#!/bin/bash

### BEGIN INIT INFO
# Provides: firewall
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Firewall
# Description: Enable service provided by daemon.
### END INIT INFO


#--------------------
# FIREWALL IPTABLES #
#--------------------


# CARREGANDO MODULOS NO KERNEL
modprobe ip_conntrack_ftp
modprobe ip_conntrack
modprobe ip_nat_ftp
modprobe ip_tables
modprobe ipt_MARK
modprobe ipt_MASQUERADE
modprobe ipt_REJECT
modprobe ipt_TCPMSS
modprobe ipt_TOS
modprobe ipt_limit
modprobe ipt_mac
modprobe ipt_multiport
modprobe ipt_owner
modprobe ipt_LOG
modprobe ipt_REDIRECT
modprobe ipt_state
modprobe iptable_nat
modprobe iptable_mangle
modprobe iptable_filter


# VARIAVEIS DE REDE
IF_WAN="enp0s3"
IF_LAN="enp0s8"
REDE_LOCAL="172.16.200.0/24"


# CASE PARA INICIAR FIREWALL
IniciarFirewall () {


# LIMPANDO REGRAS
iptables -F
iptables -F -t filter
iptables -F -t mangle
iptables -F -t nat
iptables -Z


# POLITICA PADRAO DROP
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP


# HABILITANDO ROTEAMENTO
echo "1" > /proc/sys/net/ipv4/ip_forward


# LIBERANDO CONEXOES PARA CHAINS
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT


#----------------
# REGRAS DE NAT #
#----------------

# MASCARAMENTO DE REDE
iptables -t nat -A POSTROUTING -s $REDE_LOCAL -o $IF_WAN -j MASQUERADE


#------------------
# REGRAS DE INPUT #
#------------------

# LOOPBACK
iptables -A INPUT -i lo -j ACCEPT

# SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# APACHE
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# SQUID
iptables -A INPUT -p tcp --dport 1082 -j ACCEPT

# PING
iptables -A INPUT -s $REDE_LOCAL -p icmp --icmp-type 8 -j ACCEPT


#--------------------
# REGRAS DE FORWARD #
#--------------------

# PING
iptables -A FORWARD -p icmp --icmp-type 8 -j ACCEPT

# DNS
iptables -A FORWARD -p udp --dport 53 -j ACCEPT

# IP TI
iptables -A FORWARD -s 172.16.200.2 -o $IF_WAN -j ACCEPT


}


# CASE PARA PARAR O FIREWALL
PararFirewall () {


# LIMPANDO REGRAS
iptables -F
iptables -F -t filter
iptables -F -t mangle
iptables -F -t nat
iptables -Z


# POLITICA PADRAO COMO ACCEPT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT


# HABILITANDO ROTEAMENTO
echo "1" > /proc/sys/net/ipv4/ip_forward


#----------------
# REGRAS DE NAT #
#----------------

# MASCARAMENTO DE REDE
iptables -t nat -A POSTROUTING -s $REDE_LOCAL -o $IF_WAN -j MASQUERADE


}


case $1 in

start) echo "FIREWALL INICIADO.......[OK]"
IniciarFirewall
;;

stop) echo "FIREWALL PARADO..........[OK]"
PararFirewall
;;

restart) echo "FIREWALL REINICIADO...[OK]"
PararFirewall
IniciarFirewall
;;

esac

#---------------
# FIM FIREWALL #
#---------------




Hoje em dia é necessário CARREGAR 1000000000000000000000000000000000000000000000... MODULOS NO KERNEL

modprobe ip_conntrack_ftp
modprobe ip_conntrack
modprobe ip_nat_ftp
modprobe ip_tables
modprobe ipt_MARK
modprobe ipt_MASQUERADE
modprobe ipt_REJECT
modprobe ipt_TCPMSS
modprobe ipt_TOS
modprobe ipt_limit
modprobe ipt_mac
modprobe ipt_multiport
modprobe ipt_owner
modprobe ipt_LOG
modprobe ipt_REDIRECT
modprobe ipt_state
modprobe iptable_nat
modprobe iptable_mangle
modprobe iptable_filter



-------------------------------------------------------------------------
E aí pessoal? Tudo mais ou menos?

TV de Plasma de 42 polegadas? Eu Sempre quis ter uma TV assim.

HD hein! tá novinho, perfeitos, Eu Sempre quis ter um HD assim.


4. Re: Feedback arquivo firewall.sh

Carlos Alberto de Souza Barbosa
souzacarlos

(usa Outra)

Enviado em 19/02/2018 - 13:48h

Boa tarde.
Responderei as duas perguntas

1ª Porque a maioria dos scripts de iptables a output do servidor é ACCEPT ? Não corre risco de um Ataque por conta disso ?
R: Isso acontece pq o POLICE default do IPTABLES é ACCEPT, caso vc não configure nada ele vai aceitar tudo onde a origem for a própria máquina onde o IPTABLES está rodando.

2ª Se o firewall está com a policy DROP há necessidade de colocar essas regras de segurança como ataque netbus, ping da morte, port scanners ?
R: Não há necessidade, como o POLICE foi configurado para DENY nada com destino a máquina onde o IPTABLES esta rodando será aceito se vc não definir que pode através de regras para isso.
Obs: Nada impede que pacotes com destino a redes remotas (ou sua rede local) sejam aceitos, já que a chain que define isso é a FORWARD, então atenção nessa configuração.

Network Analyst - Consultor para empresas
contact skype: carlossouzainfo
21 99180-8165 (WhattsApp)