PDA

Voir la version complète : firewall trop zélé



infobarquee
23/12/2010, 11h10
bonjour,
suite aux nombreuses attaques sur mon dédié avec elastix, j'ai mis en place un firewall en suivant un exemple d'un des membres.
le problème est que n'ayant pas d'ip fixe, si mon ip change, je ne peux plus me connecter via mon softphone ni en ssh.
la seule parade est d'aller via une console vnc désactiver le firewall, connecter mon softphone, puis remettre le firewall en route.
ayant un ndd pointant sur un de mes servers perso, j'ai donc mis le ndd pour récupérer mon ip et le passer dans iptables.
Si vous avez une idée, car je dois me déplacer souvent, et je ne peux plus connecter mon softphone sur mon portable.
Voici mon firewall


#!/bin/sh
# description: Firewall
IPT=/sbin/iptables
stop() {
$IPT -F INPUT
$IPT -F LOG_DROP
$IPT -X LOG_DROP
}
start() {
# logs - drop
# tout n'est pas necessaire, c'est juste le principe
$IPT -N LOG_DROP
$IPT -A LOG_DROP -j LOG -p tcp --dport 3306 --log-prefix '[IPTABLES DROP MYSQL] : '
$IPT -A LOG_DROP -j LOG -p tcp --dport 22 --log-prefix '[IPTABLES DROP SSH] : '
$IPT -A LOG_DROP -j LOG -p tcp --dport 5060 --log-prefix '[IPTABLES DROP SIP] : '
$IPT -A LOG_DROP -j LOG -p tcp --dport 5038 --log-prefix '[IPTABLES DROP ASTMAN] : '
$IPT -A LOG_DROP -j LOG -p tcp --log-prefix '[DROP] : '
$IPT -A LOG_DROP -j REJECT

# host a bannir
# $IPT -A INPUT -i eth0 -p tcp --source x.x.x.x -j DROP
$IPT -A INPUT -i eth0 -p all --source 194.51.85.76 -j DROP
$IPT -A INPUT -i eth0 -p all --source ccc-hanau.de -j DROP
$IPT -A INPUT -i eth0 -p all --source sinister.wzw.tum.de -j DROP
$IPT -A INPUT -i eth0 -p all --source formularfetischisten.de -j DROP

# facultatif
# on autorise tout ce qui vient du subnet, a adapter pour vous.
# iptables -A INPUT -s 192.168.10.0/24 -j ACCEPT
iptables -A INPUT -s MON NOM DE DOMAINE -j ACCEPT

#asterisk
# supprime erreur dans log asterisk
$IPT -A INPUT -p udp -m udp --dport 5060 -m string --string "Cirpack KeepAlive Packet" --algo bm -j DROP


# pour le port 5060 on autorise uniquement certaines ips
# Tout le subnet, a dapter pour VOTRE config
$IPT -A INPUT -s 192.168.2.0/24 -i eth0 -p udp --dport 5060 -j ACCEPT
#on autorise certains fournisseurs sip
#on ajoutera aussi ses propres ip externes
$IPT -A INPUT -s sip.ovh.net -i eth0 -p udp --dport 5060 -j ACCEPT
$IPT -A INPUT -s sip3.voip-centrex.net -i eth0 -p udp --dport 5060 -j ACCEPT
$IPT -A INPUT -s sip.intervoip.com -i eth0 -p udp --dport 5060 -j ACCEPT
$IPT -A INPUT -s sip.a.lomacom.com -i eth0 -p udp --dport 5060 -j ACCEPT
$IPT -A INPUT -s freephonie.net -i eth0 -p udp --dport 5060 -j ACCEPT
$IPT -A INPUT -s ippi.fr -i eth0 -p udp --dport 5060 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 5060 -j LOG_DROP
$IPT -A INPUT -i eth0 -p udp --dport 5060 -j LOG_DROP
$IPT -A INPUT -s MON NOM DE DOMAINE -i eth0 -p udp --dport 22 -j ACCEPT
$IPT -A INPUT -s MON NOM DE DOMAINE -i eth0 -p tcp --dport 22 -j ACCEPT

$IPT -A INPUT -i eth0 -p udp -m udp --dport 10000:11000 -j ACCEPT


# Le reste est fonction de votre config, juste pour info
# si vous autorisez le subnetlocal, juste ssh est necessaire normalement.
# On le mettra sur un autre port de preference.
# on pourra limiter l'acces ssh a certaines ips avec la meme methode que ci dessus
$IPT -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 25 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 53 -j ACCEPT
$IPT -A INPUT -i eth0 -p udp --dport 53 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 110 -j DROP
$IPT -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 143 -j DROP
$IPT -A INPUT -i eth0 -p tcp --dport 21 -j DROP
$IPT -A INPUT -i eth0 -p udp --dport 21 -j DROP
$IPT -A INPUT -i eth0 -p tcp --dport 22 -j DROP
$IPT -A INPUT -i eth0 -p udp --dport 22 -j DROP
$IPT -A INPUT -i eth0 -p tcp --dport 1194 -j DROP
$IPT -A INPUT -i eth0 -p udp --dport 1194 -j DROP
$IPT -A INPUT -i eth0 -p tcp --dport 5038 -j DROP
$IPT -A INPUT -i eth0 -p udp --dport 5038 -j DROP

#ping
$IPT -A INPUT -i eth0 -p icmp -j DROP

# on rejette tout les autres
$IPT -A INPUT -i eth0 -j LOG_DROP
}

case "$1" in

start)
start
echo "FireWall Telisk -- Start OK";

exit 0
;;


stop)
stop
echo "FireWall Telisk -- Stop OK";
exit 0
;;
restart)
stop
start
echo "FireWall Telisk -- Restart OK";

exit 0
;;

*)
echo "Usage: /etc/init.d/firewall {start|stop|restart}"
exit 1
;;
esac

hb22
23/12/2010, 12h34
Une idée, changer le port d'écoute d'Asterisk et le port destination de ton softphone.
J'ai des serveurs Asterisk hébergés de cette manière et pas une seule tentative de connexion autre que celle des clients en 3 ans.
Tous les ports des services en écoute sont modifiés.

infobarquee
23/12/2010, 16h02
Merci hd22,
je vais voir ca en revenant de perros la semaine prochaine.
peut être une occasion de se voir d'ailleurs :D

infobarquee
23/12/2010, 20h12
re bonjour,
je viens de trouver un truc pas mal en plus.
n'autoriser que certaines adresses MAC dans iptables


$IPT -A INPUT -p tcp --destination-port 22 -m mac --mac-source ADRESSEMACDUPC -j ACCEPT


idem pour les autres ports