FIXME FIXME FIXME FIXME ====== Firewall Haute-Disponibilité ====== Liens: *http://qref.sourceforge.net/quick/ch-gateway.en.html *http://igm.univ-mlv.fr/~dr/XPOSE2006/JEREMIE_LEGRAND_HAUTE_DOSPO/pratique2.htm ===== Introduction ===== But: mettre en place un firewall Haute-Disponibilité en utilisant: heartbeat et des scripts a ma façon. ==== Iproute2 ==== Comment on va surement utiliser "iproute" au lieu de "ifconfig", on va étudier les bases: Soit **''eth1''** une interface sans aucune configuration, et même pas "up". Voir les adresses: # ip addr show Associer une IP: # ip addr add dev eth1 local /24 Monter l'interface: # ip link set eth1 up Et voila. Par exemple: # route -n ... Destination Passerelle Genmask Indic Metric Ref Use Iface 0.0.0.0 255.255.255.0 U 0 0 0 eth1 ... Mais pas encore de gateway. Donc, on peut faire simplement: # ip route add default via Aprés la création de l'interface initiale, ce sont des alias. Donc: # ip addr add dev eth1 local /24 # ip addr add dev eth1 local /24 ... Pour supprimer: ... # ip addr del dev eth1 local /24 # ip addr del dev eth1 local /24 Voila. ==== HeartBeat ==== # aptitude install heartbeat # cd /etc/heartbeat # cp /usr/share/doc/heartbeat/authkeys . # chmod 0600 authkeys Faire en sorte d'avoir, par exemple: auth 1 1 sha1 # zcat /usr/share/doc/heartbeat/ha.cf.gz > ha.cf logfacility local0 keepalive 2 deadtime 15 ucast eth0 ucast eth0 auto_failback on node node respawn hacluster /usr/lib/heartbeat/ipfail apiauth ipfail gid=haclient uid=hacluster Où: | | IP du "master" et puis du "slave" | | | Nom des machines **''uname -n''** : le "master" en premier | "NODE_1" est le **master** "NODE_2" est le **slave** Eventuellement, ajouter: ping # zcat /usr/share/doc/heartbeat/haresources.gz > haresources Il est voulu que les fichiers de configuration soient identique sur chaque "node". Lorsque ça marche, forcer le "standby" de la machine courante: # /usr/share/heartbeat/hb_standby ===== Installation ===== ==== Interfaces ==== eth0 : LAN : IP fixe locale eth1 : WAN : IP fixe publique ==== sysctl.d ==== *Désactiver l'ipv6 *(ne pas) activer le forward entre interface *kernel panic pour le fun *les interfaces ne repondent pas aux requetes ARP qui ne leur sont pas destiné. Dans **''/etc/sysctl.d/local.conf''** : # TJ --------------------- # Desactiver Ipv6 (sous Squeeze) net.ipv6.conf.all.disable_ipv6=1 net.ipv6.conf.all.autoconf=0 net.ipv6.conf.default.disable_ipv6=1 net.ipv6.conf.default.autoconf=0 # Activer forward #net.ipv4.ip_forward=1 # En cas de crash noyau kernel.panic=300 # Les requetes ARP ne traversent pas net.ipv4.conf.all.arp_ignore=1 # ------------------------ # pour les *gros* firewall # Par defaut: 65536 # => 65536*2 net.ipv4.netfilter.ip_conntrack_max=131072 net.netfilter.nf_conntrack_max=131072 # ---------- # default ---- ## cat /proc/sys/net/ipv4/neigh/default/gc_thresh{1,2,3} #128 #512 #1024 net.ipv4.neigh.default.gc_thresh1=512 net.ipv4.neigh.default.gc_thresh2=1024 net.ipv4.neigh.default.gc_thresh3=2048 # ------------------------ | :!: ne pas activer le "forward" : Donc, laisser le commentaire devant: **''net.ipv4.ip_forward=1''** | Appliquer: # sysctl -p /etc/sysctl.d/local.conf ==== ferm ==== Liens: *https://wiki.archlinux.org/index.php/High_Performance_Firewall Dans **''/etc/modules''** : # TJ ------------------ ip_tables ip_conntrack_ftp ip_nat_ftp #ip_conntrack_irc ip_nat_pptp ip_conntrack_pptp # --------------------- Installer ferm. # aptitude install ferm ==== QoS ==== FIXME: Scripte **''qoshtb''** # update-rc.d qoshtb defaults update-rc.d: using dependency based boot sequencing ===== Tunning ===== Liens: *http://www.faqs.org/docs/securing/chap6sec75.html *http://www.frozentux.net/ipsysctl-tutorial/chunkyhtml/tcpvariables.html Pour un firewall trés solicité, il faut modifier deux ou trois bricoles : Par exemple, par defaut on a: /proc/sys/net/ipv4/tcp_fin_timeout = 60 /proc/sys/net/ipv4/tcp_keepalive_time = 7200 /proc/sys/net/ipv4/tcp_window_scaling = 1 /proc/sys/net/ipv4/tcp_sack = 1 /proc/sys/net/ipv4/tcp_timestamps = 1 On peut changé ça en: /proc/sys/net/ipv4/tcp_fin_timeout = 30 /proc/sys/net/ipv4/tcp_keepalive_time = 1800 Le reste... booooof....