Iptables -> suite prob samba et openvpn

Bonsoir,
j’ouvre un nouveau post, suite à ce problème, car le sujet n’est plus du tout le même. Pour rappel, j’essaye de me servir de samba à travers openvpn. J’y suis arrivé à faire fonctionner samba en localhost et via internet, mais je n’ai pas eu le temps d’essayer via tun0, car j’ai coupé ma session ssh, après avoir mis en place un script iptables, et depuis je ne peux plus me connecter. Donc je vais tout re installer, mais en attendant, quelqu’un peut regarder mon script et voir les améliorations/rectifications possibles ?

merci !

[code]#!/bin/bash

####################################################################

VARIABLES

Adresse IP du serveur :

IP=ip publique

Adresse IP failover :

IPF=ip failover (spécificité OVH)

Adresse IP du disque réseau :

netstat -tanpu | grep iscsi

IPR=ip iscsi

Interface internet :

IN=eth0
#Interface VPN :
IV=tun0

####################################################################

REGLES DE BASES

Activer le forwarding (pour le VPN) :

echo “1” > /proc/sys/net/ipv4/ip_forward
echo “AUTORISATION FORWARDING [OK]”

Vidage des chaines :

Supprime les chaînes de la table filter (INPUT, FORWARD et OUTPUT)

iptables -F

Supprime les chaînes personnelles de la table filter

iptables -X

Supprime les chaînes de la table nat (PREROUTING, OUTPUT et POSTROUTING)

iptables -t nat -F

Supprime les chaînes personnelles de la table nat

iptables -t nat -X

Supprime les chaînes de la table mangle

-> PREROUTING, OUTPUT, INPUT, FORWARD et POSTROUTING

iptables -t mangle -F

Supprime les chaînes personnelles de la table mangle

iptables -t mangle -X
echo “SUPRESSIONS DES CHAINES PAR DEFAUT [OK]”

Garde l’accès disque réseau actif

iptables -A INPUT -i $IN -p tcp --source $IPR -j ACCEPT
echo “AUTORISATION STOCKAGE iSCSI [OK]”

Autorisations des paquets des connexions deja etablies :

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
echo “AUTORISATION CONNEXIONS DEJA ACTIVES [OK]”

faire sortir le traffic sortant via ip failover et non ip fixe

iptables -t nat -A POSTROUTING -o eth0 -s $IP -d ! $IPR -j SNAT --to $IPF
echo “ROUTAGE TRAFFIC SORTANT IP FIXE -> IP FAILOVER [OK]”

Regles par défauts, on rejete tout :

#iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
echo “POLITIQUE PAR DEFAUT [OK]”

Pas de firewall sur le loopback :

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
echo “AUTORISATION TRAFFIC LOCALHOST [OK]”

####################################################################

SECURITE

Rejet des paquets non valides :

iptables -A INPUT -m state --state INVALID -j DROP

iptables -A OUTPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
echo “REJET DES PAQUETS NON VALIDES [OK]”

Empécher le spoofing :

if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then

for i in /proc/sys/net/ipv4/conf/*/rp_filter; do

	echo "1" > $i

done

fi
echo “EMPECHER SPOOFING [OK]”

Empécher le brute force sur le SSH :

Verifier que ssh est bien renseigné dans /etc/services

#iptables -A INPUT -p tcp --dport ssh -m recent --update --seconds 60 --hitcount 4 --name SSH -j DROP

#iptables -A INPUT -p tcp --dport ssh -m recent --set --name SSH

#iptables -A INPUT -p tcp --dport ssh -j ACCEPT

Rejeter les requetes ICMP (ping) sauf OVH et IP perso:

iptables -A INPUT -i $IN -p icmp --source 82.66.11.30 -j ACCEPT
iptables -A INPUT -i $IN -p icmp --source proxy.ovh.net -j ACCEPT
iptables -A INPUT -i $IN -p icmp --source proxy.p19.ovh.net -j ACCEPT
iptables -A INPUT -i $IN -p icmp --source proxy.rbx.ovh.net -j ACCEPT
iptables -A INPUT -i $IN -p icmp --source proxy.rbx2.ovh.net -j ACCEPT
iptables -A INPUT -i $IN -p icmp --source ping.ovh.net -j ACCEPT
iptables -A INPUT -i $IN -p tcp --dport 22 --source cache.ovh.net -j ACCEPT
iptables -A INPUT -i $IN -p icmp --source $IP -j ACCEPT # IP pour system de monitoring RTM
iptables -A INPUT -i $IN -p icmp --source $IP -j ACCEPT # IP pour system de monitoring SLA
echo “BLOCAGE DU PING [OK]”

Empécher les scans de ports :

iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
echo “BLOCAGE SCAN PORTS [OK]”

Empécher l’attaque ping of death :

iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
echo “BLOCAGE PING OF DEATH [OK]”

####################################################################

PROGRAMMES

Ouverture du port UDP et TCP 53 pour APT et les DNS :

iptables -A OUTPUT --protocol udp --destination-port 53 -j ACCEPT
echo “AUTORISATION DNS [OK]”

oUVERTURE HTTPS HTTP

iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -j ACCEPT

iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
echo “AUTORISATION HTTP/HTTPS [OK]”

FTP In

modprobe ip_conntrack_ftp

iptables -t filter -A OUTPUT -p tcp --dport 20:21 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 20:21 -j ACCEPT
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
echo “AUTORISATION FTP [OK]”

Règles pour openVPN (port 1194) :

iptables -I INPUT -i $IN -p tcp --dport 1194 -j ACCEPT
iptables -I FORWARD -i $IV -j ACCEPT
iptables -I FORWARD -o $IV -j ACCEPT
iptables -I OUTPUT -o $IN -p tcp --sport 1194 -j ACCEPT
iptables -A FORWARD -i $IV -j ACCEPT
iptables -t nat -A POSTROUTING -o $IN -j MASQUERADE
echo “AUTORISATION OPENVPN [OK]”

Ouverture du port SSH TCP :

Verifier que ssh est bien renseigné dans /etc/services

iptables -A INPUT -m state --state ESTABLISHED,RELATED,NEW -p tcp --dport ssh -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED,NEW -p tcp --sport ssh -j ACCEPT
echo “AUTORISATION SSH [OK]”

Samba :

iptables -A INPUT -p tcp -m multiport --dports 135,137,139,445 -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dports 135,137,139,445 -j ACCEPT
iptables -A INPUT -p udp -m multiport --dports 135,137,138 -j ACCEPT
iptables -A OUTPUT -p udp -m multiport --dports 135,137,138 -j ACCEPT
echo “AUTORISATION Samba [OK]”

LOG

Ecriture de la politique de log

Ici on affiche [IPTABLES DROP] dans /var/log/message a chaque paquet rejette par iptables

iptables -N LOG_DROP
iptables -A LOG_DROP -j LOG --log-level 1 --log-prefix '[IPTABLES DROP]:'
iptables -A LOG_DROP -j DROP
echo “ECRITURE DES LOGS [OK]”

On met en place les logs en entree, sortie et routage selon la politique LOG_DROP ecrit avant

iptables -A FORWARD -j LOG_DROP
iptables -A INPUT -j LOG_DROP
iptables -A OUTPUT -j LOG_DROP

A placer en FIN DU FICHIER

iptables -A INPUT -j DROP

echo “DEMARRAGE DU FIREWALL [SUCCES]”[/code]