Vous avez souscrit à un serveur dédié (VPS) sur Camoo Hosting, alors ceci pourait vous être très utile. Il est important d'avoir le control absolut sur le traffic des données de ou vers votre serveur.
Avec un pare-feu (firewall) vous avez les options suivantes
- 1) Bloquer une adresse IP spéciale ou un groupe d'IP (Blacklisting)
- 2) Fermer tous les ports par défaut
- 3) Ouvrir un port spécial
Dans cet article, nous supposons que vous avez déjà installé Fail2ban dans votre système.
Créons avant tout notre fichier blacklist.ip:
touch /usr/local/etc/blacklist.ip
Dans ce fichier, vous pourrez ainsi y ajouter ligne par ligne une ip-adresse avec ou sans masque que vous désirez bloquer de votre serveur
Dans certains cas, vous serez obligés de faire une exception pour une ip-adresse vers un port précis.
Créons aussi un fichier whitlist.ip
touch /usr/local/etc/whitelist.ip
touch /etc/init.d/firewall
chmod +x /etc/init.d/firewall
vi /etc/init.d/firewall
#!/bin/sh
# custom firewall
# https://www.camoo.hosting
#needed modules
modprobe ip_conntrack_ftp
BLACKLIST=/usr/local/etc/blacklist.ip
WHITELIST=/usr/local/etc/whitelist.ip
#trigger for your ports
#PORTDESCRIPTION
#22:SSH 25:SMTP 53:DNS 80:HTTP 443:HTTPS
IN_ALLOWED_TCP="22 25 53 80 443"
OUT_ALLOWED_TCP="22 25 53 80 443"
IN_ALLOWED_UDP="53"
OUT_ALLOWED_UDP="53"
IN_ALLOWED_ICMP=" "
OUT_ALLOWED_IMCP=" "
case "$1" in
start)
# Clear iptables
service fail2ban stop
iptables -F
#Defaults
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# loopback communication
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# persist on connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# block ISC.SANS
iptables -I INPUT -p tcp --dport 80 -m string --to 70 --algo bm --string 'GET /w00tw00t.at.ISC.SANS.' -j DROP
iptables -I INPUT -p tcp --dport 443 -m string --to 70 --algo bm --string 'GET /w00tw00t.at.ISC.SANS.' -j DROP
iptables -I INPUT -p tcp --dport 443 -m string --to 60 --algo bm --string 'GET /tmUnblock.' -j DROP
iptables -I INPUT -p tcp --dport 80 -m string --to 60 --algo bm --string 'GET /tmUnblock.' -j DROP
# Ban blacklisted IPs
for x in `grep -v ^# $BLACKLIST | awk '{print $1}'`; do
echo "Blocking $x..."
iptables -A INPUT -t filter -s $x -j DROP
done
# Allow whitelisted IPs
for x in `grep -v ^# $WHITELIST | awk '{print $1}'`; do
echo "Allowing $x..."
iptables -A INPUT -t filter -s $x -j ACCEPT
done
# TCP rules in
for port in $IN_ALLOWED_TCP; do
echo "Accepting TCP port $port"
iptables -A INPUT -t filter -p tcp --dport $port -j ACCEPT
done
# TCP rules out
for port in $OUT_ALLOWED_TCP; do
echo "Allowing sending over TCP port $port"
iptables -A OUTPUT -t filter -p tcp --dport $port -j ACCEPT
done
# UDP rules in
for port in $IN_ALLOWED_UDP; do
echo "Accepting UDP port $port"
iptables -A INPUT -t filter -p udp --dport $port -j ACCEPT
done
# UDP rules out
for port in $OUT_ALLOWED_UDP; do
echo "Allowing sending over UDP port $port"
iptables -A OUTPUT -t filter -p udp --dport $port -j ACCEPT
done
# ICMP rules in
for port in $IN_ALLOWED_ICMP; do
echo "Accepting ICMP port $port"
iptables -A INPUT -t filter -p icmp --dport $port -j ACCEPT
done
# ICMP rules out
for port in $OUT_ALLOWED_ICMP; do
echo "Allowing sending over ICMP port $port"
iptables -A OUTPUT -t filter -p icmp --dport $port -j ACCEPT
done
# Dropping startup requests
iptables -A INPUT -t filter -p tcp --syn -j DROP
service fail2ban start
;;
stop)
service fail2ban stop
iptables -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
echo "Warning! Firewall is stopped, server is unprotected now!"
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "Usage $0 {start|stop|restart}"
;;
esac
cd /etc/init.d
update-rc.d firewall defaults
Attention
Avant de démarrer le script rassurez vous, que le port de votre connexion par ssh se trouve bien dans IN_ALLOWED_TCP. Surtout si vous avez remplacé le port de défaut 22 par un autre
/etc/init.d/firewall restart
Impotant
Si vous installez un module sur le serveur, vérifiez si ce ce dernier neccessite un port spécial et ouvrez le!
- IN_ALLOWED_TCP Liste des ports ouverts de l'exterieur vers notre serveur par TCP
- OUT_ALLOWED_TCP Liste des ports ouverts de l'interieur vers l'esterieur par TCP
- IN_ALLOWED_UDP Liste des ports ouverts de l'exterieur vers notre serveur par UDP
- OUT_ALLOWED_UDPListe des ports ouverts de l'interieur vers l'esterieur par UDP
Laisser un commentaire
Votre adresse de messagerie et numéro de téléphone ne seront pas publiés