Tu peux faire comme moi, c’est à dire bloquer tout le trafique sur les ports non standard avec iptables. ci- dessous le scrip iptables que je me suis fait :
[code]
#!/bin/sh
Script de démarrage qui lance l’interface réseau internet,
met en place un firewall et un partage de connexion
#Déclaration des interfaces :
interface_WAN=eth0
interface_LAN=eth1
start() {
init du la périphérique internet (ici derriere une freebox)
/sbin/ifup $interface_WAN
echo “activation de l’interface WAN”
Dans cette partie, on met en place le firewall
#vidage des chaines
iptables -F
echo “vidage des chaines”
#destruction des chaines personnelles
iptables -X
echo “destruction des chaines personnelles”
#stratégies par défaut
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
echo “mise en place de la stratégie par défault (INPUT et FORWARD = DROP et OUTPUT = DROP)”
#init des tables NAT et MANGLE (pas forcément nécessaire)
iptables -t nat -F
iptables -t nat -X
iptables -t nat -P PREROUTING ACCEPT
#redirection requète ver dansguardian
iptables -t nat -D PREROUTING 1
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080
#permet de rediriger les requètes vers 3128 (proxy squid)
#iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
echo “initialisation des tables NAT et MANGLE”
Acceptation de toutes les connexions en local (un process avec l’autre)
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
echo “Acceptation de toutes les connexions en local”
###################
INPUT
###################
=== anti scan ===
iptables -N SCANS
iptables -A SCANS -p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP
iptables -A SCANS -p tcp --tcp-flags ALL ALL -j DROP
iptables -A SCANS -p tcp --tcp-flags ALL NONE -j DROP
iptables -A SCANS -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
####################
echo “mise en route de l’anti-scan”
#pas de spoofing
if [ -e /proc/sys/net/ipv4/conf/all/ip_filter ] ;
then
for filtre in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo > 1 $filtre
done
fi
echo “[mise en route de l’anti-spoofing]”
#pas de synflood
if [ -e /proc/sys/net/ipv4/tcp_syncookies ] ;
then
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
fi
echo “[mise en route de l’anti-synflood]”
=== limite TCP, UDP, ICMP Flood ! ===
TCP Syn Flood
iptables -A INPUT -i $interface_WAN -p tcp --syn -m limit --limit 3/s -j ACCEPT
UDP Syn Flood
iptables -A INPUT -i $interface_WAN -p udp -m limit --limit 10/s -j ACCEPT
Ping Flood
iptables -A INPUT -i $interface_WAN -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -i $interface_WAN -p icmp --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT
echo “limite TCP, UDP, ICMP Flood !”
####################
=== Netoyage des Paquets particuliers ===
Make sure NEW incoming tcp connections are SYN packets
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
Packets with incoming fragments
iptables -A INPUT -f -j DROP
incoming malformed XMAS packets
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
Incoming malformed NULL packets
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
#limitation du nombre de connexion sur port SSH
iptables -A INPUT -p tcp --dport 5055 -m state --state NEW -m recent --name BLACKLIST --set
iptables -A INPUT -p tcp --dport 5055 -m state --state NEW -m recent --name BLACKLIST --update --seconds 10 --hitcount 10 --rttl -j DROP
echo “Netoyage des Paquets particuliers”
#Blocage de l’icmp sur le WAN du serveur
iptables -A INPUT -i $interface_WAN -p icmp -j DROP
echo “blocage du ping (ICMP) sur l’interface WAN”
#drop des broadcast
iptables -A INPUT -i $interface_WAN -m pkttype --pkt-type broadcast -j DROP
#####################
FORWARD
#####################
PORT FORWARDING:
attention : on ne peut malheureusement pas mettre un nom de machine en destination, il faut mettre l’adresse IP.
exemple : on veut qu’un serveur HTTP installé sur une machine du réseau local soit visible depuis l’extérieur.
#iptables -t nat -A PREROUTING -i $interface_WAN -p tcp --dport 554 -j DNAT --to-destination 192.168.168.103 ACCEPT
#iptables -A FORWARD -p tcp -i $interface_WAN --dport 554 -j ACCEPT
#iptables -t nat -A PREROUTING -p udp --dport 32768:32784 -J DNAT --to-destination 192.168.168.103 ACCEPT
#iptables -A FORWARD -s 192.168.168.103 -p udp --dport 32768:32784 -J ACCEPT
#Bloquage de plages IP indésirables
en gros elle sont sur le site du RIPE (organisme distribuent les IP ou plage IP au profesionnel)
###inetnum: 90.80.100.192 - 90.80.100.207 netname=FR-HADOPI
iptables -I INPUT -p all -s 90.80.100.192/28 -j DROP
iptables -I OUTPUT -p all -d 90.80.100.192/28 -j DROP
iptables -I FORWARD -p all -s 90.80.100.192/28 -j DROP
###inetnum: 195.6.180.141 - 195.6.180.141 netname=FR-LB_INTERNET-HADOPI
iptables -I INPUT -p all -s 195.6.180.141 -j DROP
iptables -I OUTPUT -p all -d 195.6.180.141 -j DROP
iptables -I FORWARD -p all -s 195.6.180.141 -j DROP
###inetnum: 90.80.155.208 - 90.80.155.223 netname=FR-HADOPI
iptables -I INPUT -p all -s 90.80.155.240/28 -j DROP
iptables -I OUTPUT -p all -d 90.80.155.240/28 -j DROP
iptables -I FORWARD -p all -s 90.80.155.208/28 -j DROP
###inetnum: 90.80.155.240 - 90.80.155.255 netname=FR-HADOPI
iptables -I INPUT -p all -s 90.80.155.240/28 -j DROP
iptables -I OUTPUT -p all -d 90.80.155.240/28 -j DROP
iptables -I FORWARD -p all -s 90.80.155.240/28 -j DROP
#inetnum: 80.12.48.0 - 80.12.48.255 netname=FT-HADOPI, descr=LNS Hadopi
iptables -I INPUT -p all -s 80.12.48.0/24 -j DROP
iptables -I OUTPUT -p all -d 80.12.48.0/24 -j DROP
iptables -I FORWARD -p all -s 80.12.48.0/24 -j DROP
###inetnum: 81.80.36.231 - 81.80.36.231 netname=FR-LB_INTERNET-HADOPI
iptables -I INPUT -p all -s 81.80.36.231 -j DROP
iptables -I OUTPUT -p all -d 81.80.36.231 -j DROP
iptables -I FORWARD -p all -s 81.80.36.231 -j DROP
###inetnum: 81.80.36.232 - 81.80.36.232 netname=FR-LB_INTERNET-HADOPI
iptables -I INPUT -p all -s 81.80.36.232 -j DROP
iptables -I OUTPUT -p all -d 81.80.36.232 -j DROP
iptables -I FORWARD -p all -s 81.80.36.232 -j DROP
###inetnum: 81.80.36.233 - 81.80.36.233 netname=FR-LB_INTERNET-HADOPI
iptables -I INPUT -p all -s 81.80.36.233 -j DROP
iptables -I OUTPUT -p all -d 81.80.36.233 -j DROP
iptables -I FORWARD -p all -s 81.80.36.233 -j DROP
###inetnum: 81.80.36.234 - 81.80.36.234 netname=FR-LB_INTERNET-HADOPI
iptables -I INPUT -p all -s 81.80.36.234 -j DROP
iptables -I OUTPUT -p all -d 81.80.36.234 -j DROP
iptables -I FORWARD -p all -s 81.80.36.234 -j DROP
###inetnum: 193.107.240.0 - 193.107.243.255 descr=TRIDENT MEDIA GUARD TMG
iptables -I INPUT -p all -s 193.107.240.0/22 -j DROP
iptables -I OUTPUT -p all -d 193.107.240.0/22 -j DROP
iptables -I FORWARD -p all -s 193.107.240.0/22 -j DROP
###inetnum: 195.191.244.0 - 195.191.245.255 descr=TRIDENT MEDIA GUARD TMG
iptables -I INPUT -p all -s 195.191.244.0/23 -j DROP
iptables -I OUTPUT -p all -d 195.191.244.0/23 -j DROP
iptables -I FORWARD -p all -s 195.191.244.0/23 -j DROP
###inetnum: 193.105.197.0 - 193.105.197.255 descr=TRIDENT MEDIA GUARD TMG
iptables -I INPUT -p all -s 193.105.197.0/24 -j DROP
iptables -I OUTPUT -p all -d 193.105.197.0/24 -j DROP
iptables -I FORWARD -p all -s 193.105.197.0/24 -j DROP
###route: 193.107.240.0/22 AS174 descr=Trident Media Guard (TMG)
iptables -I INPUT -p all -s 193.107.240.0/22 -j DROP
iptables -I OUTPUT -p all -d 193.107.240.0/22 -j DROP
iptables -I FORWARD -p all -s 193.107.240.0/22 -j DROP
###route: 195.191.244.0/23 AS174 descr=Trident Media Guard (TMG)
iptables -I INPUT -p all -s 195.191.244.0/23 -j DROP
iptables -I OUTPUT -p all -d 195.191.244.0/23 -j DROP
iptables -I FORWARD -p all -s 195.191.244.0/23 -j DROP
iptables -I INPUT -p all -s 85.159.236.252/30 -j DROP
iptables -I OUTPUT -p all -d 85.159.236.252/30 -j DROP
iptables -I FORWARD -p all -s 85.159.236.252/30 -j DROP
iptables -I INPUT -p all -s 85.159.232.80/30 -j DROP
iptables -I OUTPUT -p all -d 85.159.232.80/30 -j DROP
iptables -I FORWARD -p all -s 85.159.232.80/30 -j DROP
iptables -I INPUT -p all -s 82.138.81.211/32 -j DROP
iptables -I OUTPUT -p all -d 82.138.81.211/32 -j DROP
iptables -I FORWARD -p all -s 82.138.81.211/32 -j DROP
iptables -I INPUT -p all -s 193.105.197.0/24 -j DROP
iptables -I OUTPUT -p all -d 193.105.197.0/24 -j DROP
iptables -I FORWARD -p all -s 193.105.197.0/24 -j DROP
iptables -I INPUT -p all -s 90.80.155.240/28 -j DROP
iptables -I OUTPUT -p all -d 90.80.155.240/28 -j DROP
iptables -I FORWARD -p all -s 90.80.155.240/28 -j DROP
iptables -I INPUT -p all -s 195.6.180.141/32 -j DROP
iptables -I OUTPUT -p all -d 195.6.180.141/32 -j DROP
iptables -I FORWARD -p all -s 195.6.180.141/32 -j DROP
iptables -I INPUT -p all -s 85.116.217.200/29 -j DROP # ADOPI
iptables -I OUTPUT -p all -d 85.116.217.200/29 -j DROP # ADOPI
iptables -I FORWARD -p all -s 185.116.217.200/29 -j DROP # ADOPI
echo “Bloquage plages IP indésirables”
####################
OUTPUT
####################
=====================================================
=== TENTATIVE pour SORTIE (OUTPUT)Pour le SERVEUR ===
=====================================================
== On accepte la sortie de certains protocoles ==
iptables -A OUTPUT -o $interface_WAN -p UDP --dport 123 -j ACCEPT # Port 123 (Time ntp udp)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 123 -j ACCEPT # Port 123 (Time ntp tcp)
iptables -A OUTPUT -o $interface_WAN -p UDP --dport domain -j ACCEPT # Port 53 (DNS)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport domain -j ACCEPT # Port 53 (DNS)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport http -j ACCEPT # Port 80 (Http)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport https -j ACCEPT # Port 443 (Https)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 143 -j ACCEPT # Port 143 (imap)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport pop3 -j ACCEPT # Port 110 (Pop3)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 993 -j ACCEPT # Port 993 (auth.SSL)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 995 -j ACCEPT # Port 995 (auth.SSL)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport smtp -j ACCEPT # Port 25 (Smtp)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 587 -j ACCEPT # Port 587 (Smtp)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport ftp-data -j ACCEPT # Port 20 (Ftp Data)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport ftp -j ACCEPT # Port 21 (Ftp)
#iptables -A OUTPUT -o $interface_WAN -p TCP --dport 10000 -j ACCEPT # Port 10000 (webmin)
#iptables -A OUTPUT -o $interface_WAN -p TCP --dport 445 -j ACCEPT # Port 445 (Samba)
#iptables -A OUTPUT -o $interface_WAN -p TCP --dport 139 -j ACCEPT # Port 139 (Samba)
#iptables -A OUTPUT -o $interface_WAN -p UDP --dport 137:138 -j ACCEPT # Port 137 a 138 (Samba)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport nntp -j ACCEPT # Port 119 (News groups)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 1863 -j ACCEPT # Port 1863 (Msn messenger)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 5222 -j ACCEPT # Port 1863 (Msn Pidgin)
iptables -A OUTPUT -o $interface_WAN -p TCP --dport 554 -j ACCEPT #port vlc
iptables -t filter -A OUTPUT -o $interface_WAN -m state --state NEW -s $serveur -d $UPNP_Broadcast -p udp --sport 1024: --dport $SSDP_port -j ACCEPT # broadcast UPNP pour ushare
=== OUTPUT générique ? ===
On autorise les connexions deja etablies ou relatives à une autre connexion a sortir
iptables -A OUTPUT -o $interface_WAN --match state --state ESTABLISHED,RELATED -j ACCEPT
echo “Aceptation de certain protocole en sortie pour le serveur”
#Autoriser le ping sur des IP externes
iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
==================================================
=== TENTATIVE pour SORTIE (OUTPUT) Pour le LAN ===
==================================================
== On accepte la sortie de certains protocoles ==
iptables -A OUTPUT -o $interface_LAN -p UDP --dport 123 -j ACCEPT # Port 123 (Time ntp udp)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport 123 -j ACCEPT # Port 123 (Time ntp tcp)
iptables -A OUTPUT -o $interface_LAN -p UDP --dport domain -j ACCEPT # Port 53 (DNS)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport domain -j ACCEPT # Port 53 (DNS)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport http -j ACCEPT # Port 80 (Http)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport https -j ACCEPT # Port 443 (Https)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport 143 -j ACCEPT # Port 143 (imap)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport pop3 -j ACCEPT # Port 110 (Pop3)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport 993 -j ACCEPT # Port 993 (auth.SSL)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport 995 -j ACCEPT # Port 995 (auth.SSL)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport smtp -j ACCEPT # Port 25 (Smtp)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport ftp-data -j ACCEPT # Port 20 (Ftp Data)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport ftp -j ACCEPT # Port 21 (Ftp)
#iptables -A OUTPUT -o $interface_LAN -p TCP --dport 10000 -j ACCEPT # Port 10000 (webmin)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport 445 -j ACCEPT # Port 445 (Samba)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport 139 -j ACCEPT # Port 139 (Samba)
iptables -A OUTPUT -o $interface_LAN -p UDP --dport 137:138 -j ACCEPT # Port 137 a 138 (Samba)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport nntp -j ACCEPT # Port 119 (News groups)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport 1863 -j ACCEPT # Port 1863 (Msn messenger)
iptables -A OUTPUT -o $interface_LAN -p TCP --dport 5222 -j ACCEPT # Port 1863 (Msn Pidgin)
=== OUTPUT générique ? ===
On autorise les connexions deja etablies ou relatives à une autre connexion a sortir
iptables -A OUTPUT -o $interface_LAN --match state --state ESTABLISHED,RELATED -j ACCEPT
echo “Aceptation de certain protocole en sortie pour le LAN”
##############################################
Partage de la connexion internet
##############################################
#création d’une nouvelle règle
iptables -N MAregle
#définition de la règle : accepter les nouvelles connexions ne venant pas de l’interface internet
et accepter toutes les connexions établies et reliées (ex: une demande de page HTML provoque l’ouverture
d’une connexion reliée pour acheminer cette page vers l’ordinateur)
iptables -A MAregle -m state --state NEW -i $interface_LAN -j ACCEPT
iptables -A MAregle -m state --state NEW,ESTABLISHED,RELATED,UNTRACKED -j ACCEPT
#application de la règle au partage de connexion
iptables -A INPUT -j MAregle
iptables -A FORWARD -j MAregle
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o $interface_WAN -j MASQUERADE
echo “Mise en place du partage de connextion internet”
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
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
#echo “Mise en place des log dans /var/log/messages avec préfixe [IPTABLES DROP]:”
LOG ### Log tous ce qui qui n’est pas accepter par une règles précédente
# prés requit : sudo apt-get install sysklogd
# echo 'kern.warning /var/log/iptables.log' > /etc/syslog.conf
iptables -A OUTPUT -j LOG --log-level 4 --log-prefix '[OUTPUT DROP]:'
iptables -A INPUT -j LOG --log-level 4 --log-prefix '[INPUT DROP]:'
iptables -A FORWARD -j LOG --log-level 4 --log-prefix '[FORWARD DROP]:'
echo "############ ##############"
iptables -L -n # commanter pour desactiver l’afichage des règles en cours
echo “############ ##############”
}
stop() {
echo 0 >/proc/sys/net/ipv4/ip_forward
ifdown $interface_WAN
}
case “$1” in
start)
start
echo “firewall IPv4 démarré”
;;
stop)
stop
echo “firewall IPv4 stopé”
;;
restart)
stop && start
echo “firewall IPv4 redémarré”
;;
status)
status
/sbin/iptables -L -n
/sbin/iptables -t nat -L -n
RETVAL=?
;;
*)
echo "Usage $0 {start|stop|restart|status}"
exit 1
esac
exit 0[/code]
J’ai mis en place un proxy squid transparent avec dansguardian et clamav.
Le script iptables bloquera le p2p et tout autre connections à destination des port non standard.
En espérant que cela pourra l’aider.