Crea el teu propi tallafocs amb iptables mitjançant aquest senzill scrip part 2

Firewall_(networking)

Hola a tots avui us porto una segona part d'aquesta sèrie de tutorials sobre firewall amb iptables, ben senzills perquè puguin copiar i enganxar, crec que al final i al cap és el que tots els principiants busquen o fins i tot els més experimentats, per que hem de reinventar la roda 100 vegades, no?.

Aquesta vegada els dic que intentem enfocar-nos en el cas molt específic de si volem que el nostre firewall sigui molt més agressiu amb una política OUTPUT DROP. Aquest post també va a petició dun lector daquesta pàgina i els meus post. (Dins de la meva ment Wiiiiiiiiiiiiii)

Parlem una mica dels «pro i contres» d'establir polítiques Output Drop, el contra que et puc comentar principalment és que fa la feina molt més tediosa i treballosa, no obstant el pro és que a nivell de xarxa tindràs seguretat que si t'asseies a pensar, dissenyar i planificar bé les polítiques tindràs un servidor molt més segur.

Per no divagar ni tampoc sortir-me del tema, t'explicaré ràpidament amb un exemple com més o menys haurien de ser les teves regles

iptables -A OUTPUT -o eth0 -p tcp -sport 80 -m state -state ESTABLISHED -j ACCEPT
-A perquè afegim la regla
-o fa referència a trànsit de sortida, després es col·loca la interfície sinó és especificat doncs fa matx amb totes.
–sport port d'origen, juga un paper important pel fet que en la majoria dels casos no sabem des que port ens faran la petició, si fos així podríem fer servir dport
–dport port de destinació, ja que especificament coneixem per endavant que la connexió sortint ha d'anar només a un port en especific. Ha de ser per a alguna cosa molt puntual com un servidor remot de mysql per exemple.
-m state –state ESTABLISHED això és ja adorn de mantenir les connexions ja establertes, podríem aprofundir-hi en un futur post
-d per parlar de destinació, si es pogués especificar, per exemple ssh a una màquina en especific pel seu ip

#!/bin/bash

#Netegem taules iptables -F iptables -X # Netegem NAT iptables -t nat -F iptables -t nat -X # taula mangle per a coses com PPPoE, PPP, i ATM iptables -t mangle -F iptables -t mangle -X # Politiques Penso que aquest és la millor forma per a principiants i # tot i així no està malament, t'explico output(sortida) tot perquè són connexions # sortints, input descartem tot, i cap servidor hauria de fer forward. iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP #Intranet LAN intranet=eth0 #Extranet wan extranet=eth1 # Keep state. Tot el que ja està connectat (establert) ho deixem així iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Loop device. iptables -A INPUT -i ho -j ACCEPT
# Sortida loopback iptables -A OUTPUT-o ho -j ACCEPT

# http, https, no especifiquem la interfície perquè # volem que sigui per totes iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# sortida
# http, https, no especifiquem la interfície perquè
# volem que sigui per totes però si especifiquem el port de sortida
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT iptables -A OUTPUT -p tcp --sport 443 -j ACCEPT

# ssh només internament i des d'aquest rang d'ip's iptables -A INPUT -p tcp -s 192.168.xx/24 -i $intranet --dport 7659 -j ACCEPT
# sortida # ssh només internament i des d'aquest rang d'ip's
iptables -A OUTPUT -p tcp -d 192.168.xx/24 -o $intranet --sport 7659 -j ACCEPT
# monitoratge per exemple si tenen zabbix o algun altre servei snmp iptables -A INPUT -p tcp -s 192.168.1.1 -i $intranet --dport 10050 -j ACCEPT
# sortida
# monitoratge per exemple si tenen zabbix o algun altre servei snmp
iptables -A OUTPUT -p tcp -d 192.168.1.1 -o $intranet --dport 10050 -j ACCEPT

# icmp, ping bo és decisió teva iptables -A INPUT -p icmp -s 192.168.xx/24 -i $intranet -j ACCEPT
# sortida
# icmp, ping bo és decisió teva
iptables -A OUTPUT -p icmp -d 192.168.xx/24 -o $intranet -j ACCEPT

#mysql amb postgres és el port 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $intranet -j ACCEPT
# sortida - pregunta també feta per un usuari per fer una regla # molt especifica servidor:192.168.1.2 mysql: 192.168.1.3
#mysql amb postgres és el port 5432
iptables -A OUTPUT -p tcp -s 192.168.1.2 -d 192.168.1.3 --dport 3306 -o $intranet -j ACCEPT

#sendmail bueeeh si vols enviar algun correu #iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT #Anti-SPOOFING 09/07/2014 # SERVER_IP="190.xxx" # server IP - la ip wan real del teu servidor LAN_RANGE="192.168.xx/21" # Rang LAN de la teva xarxa o del teu vlan # Ip's que no haurien d'entrar per l'extranet mai, és utilitzar una mica de # lògica si tenim una interfície netament WAN no hauria mai entrar # trafic tipus LAN per aquesta interfície SPOOF_IPS="0.0.0.0/8 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16" # Acció per defecte - que es realitzarà quan faci matx alguna regla DROP" # Paquets amb la mateixa ip del meu servidor per la wan iptables -A INPUT -i $extranet -s $SERVER_IP -j $ACTION
iptables -A OUTPUT -o $extranet -s $SERVER_IP -j $ACTION

# Paquets amb el Rang LAN per la wan, ho col·loco així per si tens # alguna xarxa particular, però això és redundant amb la següent # regla dins del bucle "for" iptables -A INPUT -i $extranet -s $LAN_RANGE -j $ACTION
iptables -A OUTPUT -o $extranet -s $LAN_RANGE -j $ACTION

## Totes les Xarxes SPOOF no permeses per la wan for ip in $SPOOF_IPS do iptables -A INPUT -i $extranet -s $ip -j $ACTION
iptables -A OUTPUT -o $extranet -s $ip -j $ACTION
fet

A la propera revisió farem port range i a més establir polítiques organitzades per noms, entre altres coses… espero els seus comentaris i peticions.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.