L'idée ici est de bloquer tout le monde sauf bien sur, les ip externes d'ou on s'enregistre et les fournisseurs de trunk sip ou iax.
Etape 1:
Mettre en place un petit script iptables. Ici l'exemple est pour debian.
On va creer un petit script firewall qui sera executé au demarrage de la machine.
Code:
cd /etc/init.d/ touch firewall chmod +x firewall update-rc.d firewall defaults
A adapter !!!
Code:
#!/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 10000 --log-prefix '[IPTABLES DROP WEBMIN] : ' $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 # facultatif # on autorise tout ce qui vient du subnet, a adapter pour vous. # iptables -A INPUT -s 192.168.10.0/24 -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.10.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 #keyyo $IPT -A INPUT -s 83.136.161.0/24 -i eth0 -p udp --dport 5060 -j ACCEPT $IPT -A INPUT -s 83.136.162.0/24 -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 -i eth0 -p udp -m udp --dport 10000:20000 -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 ACCEPT $IPT -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT $IPT -A INPUT -i eth0 -p tcp --dport 143 -j ACCEPT $IPT -A INPUT -i eth0 -p tcp --dport 4025 -j ACCEPT $IPT -A INPUT -i eth0 -p tcp --dport 21 -j ACCEPT $IPT -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT $IPT -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT $IPT -A INPUT -i eth0 -p tcp --dport 5038 -j ACCEPT #ping $IPT -A INPUT -i eth0 -p icmp -j ACCEPT # 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
Avec ce script vous bloquez tous les scans sauf les ips de confiance ce qui est assez efficace. Les fails2ban et controle acl sont tout de meme utiles. On est jamais assez prudent.
Remarques bienvenues.