#!/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 6070 --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 5061 --log-prefix '[IPTABLES DROP SIP] : '
$IPT -A LOG_DROP -j LOG -p tcp --log-prefix '[DROP] : '
$IPT -A LOG_DROP -j REJECT
# host a bannir
$IPT -A INPUT -i eth3 -p tcp --source IP_EXTERIEUR -j DROP
# on autorise tout ce qui vient du subnet, a adapter pour vous.
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
# on autorise tout ce qui vient du subnet pour simplifier
iptables -A INPUT -s 192.168.12.0/24 -j ACCEPT
# on ouvre le port 1723
$IPT -A INPUT -p tcp --dport 1723 -j ACCEPT
# on autorise gre
$IPT -A INPUT -p gre -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.1.0/24 -i eth3 -p udp --dport 5060 -j ACCEPT
$IPT -A INPUT -s 192.168.12.0/24 -i eth3 -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 eth3 -p udp --dport 5060 -j ACCEPT
$IPT -A INPUT -s freephonie.net -i eth3 -p udp --dport 5060 -j ACCEPT
$IPT -A INPUT -i eth3 -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 eth3 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i eth3 -p tcp --dport 6070 -j ACCEPT
#ping
$IPT -A INPUT -i eth3 -p icmp -j ACCEPT
# on rejette tout les autres
$IPT -A INPUT -i eth3 -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