iptables : une trace de ces scripts
authorWilly MANGA <willy.manga@auf.org>
Thu, 9 May 2013 10:23:49 +0000 (11:23 +0100)
committerWilly MANGA <willy.manga@auf.org>
Thu, 9 May 2013 10:23:49 +0000 (11:23 +0100)
scripts/parefeu/firewall.bacgl [new file with mode: 0755]
scripts/parefeu/firewall.bangui [new file with mode: 0644]

diff --git a/scripts/parefeu/firewall.bacgl b/scripts/parefeu/firewall.bacgl
new file mode 100755 (executable)
index 0000000..6066bdf
--- /dev/null
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+#filtrage, consultation de paquets..
+
+IPT="/sbin/iptables"
+IPF="$IPT"
+IPN="$IPT -t nat"
+IPM="$IPT -t mangle"
+
+
+#Des constantes
+IF_INTERNET="camtel"
+IF_DMZ="eth0.10"
+IF_RPV="eth0.20"
+IF_DMZ_NAT="eth0.112"
+IF_DMZ_VISIO="eth0.120"
+
+
+# les chaînes personnalisées
+## arrivée depuis l'internet
+
+$IPT -N internet-dmz
+$IPF -A internet-dmz -p tcp --dports 25,143,993,
+
+$IPT -N internet-public
+$IPF -A internet-public -j DROP
+
+$IPT -N internet-rpv
+$IPF -A internet-rpv -j DROP
+
+$IPT -N internet-visio
+
+## sortie visio
+$IPT -N visio-internet
+$IPT -N visio-dmz
+$IPT -N visio-rpv
+$IPT -N visio-public
+
+## sortie des serveurs
+$IPT -N dmz-internet
+$IPT -N dmz-public
+$IPT -N dmz-rpv
+
+## sortie depuis rpv
+$IPT -N rpv-internet
+$IPT -N rpv-public
+$IPT -N rpv-dmz
+
+## sortie depuis public
+$IPT -N public-internet
+$IPT -N public-dmz
+$IPT -N public-rpv
+
+
+# Répartition des flux dans les chaines personnalisées
+$IPF -A FORWARD -i $IF_INTERNET -o $IF_DMZ -j internet-dmz
+$IPF -A FORWARD -i $IF_INTERNET -o $IF_RPV -j internet-rpv
+$IPF -A FORWARD -i $IF_INTERNET -o $IF_DMZ_VISIO -j internet-visio
+$IPF -A FORWARD -i $IF_INTERNET -o $IF_DMZ_NAT -j internet-public
diff --git a/scripts/parefeu/firewall.bangui b/scripts/parefeu/firewall.bangui
new file mode 100644 (file)
index 0000000..1126fc0
--- /dev/null
@@ -0,0 +1,212 @@
+#!/bin/sh
+
+modprobe ip_tables
+modprobe ip_nat_ftp
+modprobe ip_nat_irc
+modprobe iptable_filter
+modprobe iptable_nat
+modprobe ip_conntrack_ftp
+
+IPT="/sbin/iptables"
+IPF="$IPT -t filter"
+IPN="$IPT -t nat"
+IPM="$IPT -t mangle"
+
+# Des constantes
+NET_FAI=77.70.183.120/29
+NET_DMZ=192.168.10.0/24
+NET_RPV_BANGUI=10.39.0/20
+NET_RPV_AUF=10.0.0/8
+NET_MONTREAL=199.84.140.0/24
+NET_USAGER=192.168.10.0/24
+
+IP_WEB=192.168.10.4
+IP_DNS=192.168.10.2
+IP_MAIL=192.168.10.2
+IP_VOIP=192.168.10.5 #XXX
+
+NAT_USAGER=77.70.183.124
+NAT_RPV=77.70.183.124
+NAT_DMZ_DNS=77.70.183.125
+NAT_DMZ_MAIL=77.70.183.125
+NAT_DMZ_WEB=77.70.183.125
+
+IF_INTERNET="eth0"
+IF_DMZ="eth2"
+IF_RPV="eth1"
+IF_USAGER="eth3"
+IF_IPSEC="ipsec0"
+
+
+# on efface tout
+$IPF -F INPUT
+$IPF -F FORWARD
+$IPF -F OUTPUT
+$IPN -F PREROUTING
+$IPN -F POSTROUTING
+$IPM -F FORWARD
+
+
+# par defaut on ferme tout (sauf en sortie)
+$IPF -P INPUT DROP
+$IPF -P FORWARD DROP
+$IPF -P OUTPUT ACCEPT
+
+#commmuniction en localhost
+$IPF  -A INPUT -i lo -j ACCEPT
+$IPF  -A OUTPUT -o lo -j ACCEPT
+
+#full accès vers montréal
+$IPF -A FORWARD -d $NET_MONTREAL -j ACCEPT
+
+#Pas de sortie en port 25 excepté sur la messagerie interne
+$IPF -A OUTPUT -p tcp -d $IP_MAIL --dport 25 -j ACCEPT
+$IPF -A OUTPUT -p tcp --dport 25 -j DROP
+
+# on accepte les flux en cours
+$IPF -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
+$IPF -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
+
+# on accepte toujours les pings
+$IPF -A INPUT -p icmp  --icmp-type echo-request \
+       -m limit --limit 5/second -j ACCEPT
+$IPF -A FORWARD -p icmp   --icmp-type echo-request \
+       -m limit --limit 5/second -j ACCEPT
+
+##ssh sur le firewall
+$IPF -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
+
+## le reste avec des chaines perso
+# En provenance de l'extérieur pour le parefeu
+$IPF -N from-outside
+$IPF -A INPUT -i $IF_INTERNET -j from-outside
+
+$IPF -N ScanD
+$IPF -A ScanD -m limit --limit 1/s -j LOG \
+               --log-prefix "[Port Scan?]DROP "
+$IPF -A ScanD -j DROP
+
+$IPF -A from-outside -p tcp --tcp-flags ALL NONE -j ScanD
+$IPF -A from-outside -p tcp --tcp-flags SYN,FIN SYN,FIN -j ScanD
+$IPF -A from-outside -p tcp --tcp-flags SYN,RST SYN,RST -j ScanD
+$IPF -A from-outside -p tcp --tcp-flags FIN,RST FIN,RST -j ScanD
+$IPF -A from-outside -p tcp --tcp-flags ACK,FIN FIN -j ScanD
+$IPF -A from-outside -p tcp --tcp-flags ACK,PSH PSH -j ScanD
+$IPF -A from-outside -p tcp --tcp-flags ACK,URG URG -j ScanD
+
+$IPF -N DDoS 
+$IPF -A DDoS -m limit --limit 5/s --limit-burst 10 -j RETURN
+$IPF -A DDoS -j LOG --log-prefix "[DOS Attack/SYN Scan?]DROP "
+$IPF -A DDoS -j DROP
+
+$IPF -A from-outside -p tcp --tcp-flags SYN,RST,ACK SYN -j DDoS
+
+$IPF -A from-outside -d 255.255.255.255 -m limit --limit 1/s -j LOG --log-prefix "[INPUT Broadcast]DROP "
+$IPF -A from-outside -d 255.255.255.255 -j DROP
+
+
+# FORWARD en provenance de la DMZ
+$IPF -N from-dmz
+$IPF -A FORWARD -i $IF_DMZ -j from-dmz
+$IPF -A from-dmz ! -o $IF_INTERNET -j ACCEPT
+
+$IPF -A from-dmz -s $IP_VOIP -p udp --dport 4569 -j ACCEPT
+$IPF -A from-dmz -s $IP_VOIP -p tcp --dport 4569 -j ACCEPT
+
+$IPF -N dmz-internet
+$IPF -A from-dmz -o $IF_INTERNET -j dmz-internet
+
+$IPF -A dmz-internet -s $IP_DNS -p udp --dport 53 -j ACCEPT
+$IPF -A dmz-internet -s $IP_DNS -p tcp -m state --STATE NEW \
+       --dport 53 -j ACCEPT
+
+$IPF -A dmz-internet -s $IP_MAIL -p tcp -m multiport \
+               --dport  25,587 -j ACCEPT
+
+$IPF -A dmz-internet -s $IP_WEB -p tcp -m state --state NEW \
+               --dport 80 -j ACCEPT
+
+# FORWARD en direction de la DMZ
+$IPF -N to-dmz
+$IPF -A FORWARD -o $IF_DMZ -j to-dmz
+
+$IPF -A to-dmz -d $IP_DNS -p udp --dport 53 -j ACCEPT
+$IPF -A to-dmz -d $IP_DNS -p tcp -m state --state NEW \
+               --dport 53 -j ACCEPT
+
+$IPF -A to-dmz -d $IP_MAIL -p tcp -m state --state NEW \
+               -m multiport --dport 25,143,587,993 -j ACCEPT
+
+$IPF -A to-dmz -d $IP_WEB -p tcp -m state --state NEW \
+               -m multiport --dport 80,443 -j ACCEPT
+
+$IPF -A to-dmz -d $IP_VOIP -p tcp -m state --state NEW \
+               --dport 4569 -j ACCEPT
+$IPF -A to-dmz -d $IP_VOIP -p udp --dport 4569 -j ACCEPT
+
+# FORWARD vers montréal
+$IPF -N to-montreal
+$IPF -A FORWARD -o $IF_IPSEC -j to-montreal
+
+$IPF -A to-montreal -i $IF_RPV -j ACCEPT
+
+$IPF -A to-montreal -i $IF_DMZ -p tcp -m state --state NEW \
+       --dport 53 -s $IP_DNS -j ACCEPT
+$IPF -A to-montreal -i $IF_DMZ -p udp --dport 53 -j ACCEPT
+
+$IPF -A to-montreal -j LOG --log-prefix " TROU RPV: "
+$IPF -A to-montreal -j REJECT
+
+
+#En provenance du RPV interne, en FORWARD
+$IPF -N from-inside-rpv
+$IPF -A FORWARD -i $IF_RPV -j from-inside-rpv
+
+for TCP in 20 21 22 80 110 123 220 443 587 993 995 3690 5222 \
+               5223 5050 6667 11371 8443 9418
+do
+       $IPF -A from-inside-rpv -o $IF_INTERNET -p tcp --dport $TCP \
+               -m state --state NEW -j ACCEPT
+done
+
+#En provenance du LAN, en FORWARD
+$IPF -N from-inside
+$IPF -A FORWARD -i $IF_USAGER -j from-inside
+
+for TCP in 20 21 22 80 110 123 220 443 587 993 995 3690 5222 \
+               5223 5050 6667 11371 8443 9418
+do
+       $IPF -A from-inside -o $IF_INTERNET -p tcp --dport $TCP \
+               -m state --state NEW -j ACCEPT
+done
+
+
+
+# Table NAT , chain : PREROUTING
+$IPN -A PREROUTING -i $IF_INTERNET -p udp -d $NAT_DMZ_DNS \
+               --dport 53  -j DNAT --to-destination $IP_DNS
+
+$IPN -A PREROUTING -i $IF_INTERNET -p tcp -m state --state NEW \
+               -d $NAT_DMZ_MAIL -m multiport --dport 25,143,587,993 \
+       -j DNAT --to-destination $IP_MAIL
+
+$IPN -A PREROUTING -i $IF_INTERNET -p tcp -m state --state NEW \
+               -d $NAT_DMZ_WEB -m multiport --dport 80,443 \
+       -j DNAT --to-destination $IP_WEB
+
+
+
+# Table NAT , chain : POSTROUTING
+$IPN -A POSTROUTING -s $IP_DNS -o $IF_INTERNET -j SNAT \
+       --to-source $NAT_DMZ_DNS
+
+$IPN -A POSTROUTING -s $IP_MAIL -o $IF_INTERNET -j SNAT \
+       --to-source $NAT_DMZ_MAIL
+
+$IPN -A POSTROUTING -s $IP_WEB -o $IF_INTERNET -j SNAT \
+       --to-source $NAT_DMZ_WEB
+
+$IPN -A POSTROUTING -s $NET_USAGER -o $IF_INTERNET -j SNAT \
+               --to-source $NAT_USAGER
+$IPN -A POSTROUTING -s $NET_RPV_BANGUI -o $IF_INTERNET -j SNAT \
+               --to-source $NAT_RPV