Gillou
19/12/2004, 17h22
#!/bin/bash
##################################################
#
# Script : install_portsentry.sh
# Auteur : Gillou
# Site : www.Supertoinette.com
# Version : 1.0
#
# DESCRIPTION :
# Installe PortSentry sur un serveur release OVH
# PortSentry permet de détecter les scans de ports
# sur votre serveur et de bloquer l'IP directement
# et très rapidement avec Iptables.
#
# AVERTISSEMENT :
# Vous installez ce script à vos risques et périls,
# je ne pourrai être tenu en aucun cas responsable
# des dommages ou de tous autres faits liés à
# ce script.
#
# INSTALLATION :
# Avant de lancer ce script remplacer les [IPS]
# 213.186.xx.xxx par les IPs de vos serveurs
# afin de ne pas être bloqué par PortSentry.
#
##################################################
REP_SRC='/home/ovh/src';
REP_PSENTRY='/usr/local/psionic/portsentry';
SENTRYIGNORE=$REP_PSENTRY'/portsentry.ignore';
SERVEUR_DOWNLOAD='http://ovh.dl.sourceforge.net/sourceforge/sentrytools/';
VERSION='1.2';
cd $REP_SRC
if wget $SERVEUR_DOWNLOAD/portsentry-$VERSION.tar.gz -O portsentry-$VERSION.tar.gz; then
wget http://ovh.dl.sourceforge.net/sourceforge/sentrytools/portsentry-$VERSION.tar.gz
tar -zxvf portsentry-$VERSION.tar.gz
cd $REP_SRC/portsentry_beta
rm -rf $REP_PSENTRY
make linux && make install
cd $REP_PSENTRY
# configuration d'Iptables
perl -pi -e "s/#KILL_ROUTE=\"\/usr\/local\/bin\/iptables/KILL_ROUTE=\"\/sbin\/iptables/" $REP_PSENTRY/portsentry.conf;
# mise en commentaire de KILL_HOSTS_DENY
perl -pi -e "s/KILL_HOSTS_DENY=\"ALL\: \$TARGET/#KILL_HOSTS_DENY=\"ALL\: \$TARGET/" $REP_PSENTRY/portsentry.conf;
#Ajout des IPS qui seront ignorées par PortSentry
MIPS=$( cat $SENTRYIGNORE | grep '#MES IPS' | grep -iv 'grep' )
if [ -z "$MIPS" ]; then
echo " " >> $SENTRYIGNORE;
echo "#MES IPS" >> $SENTRYIGNORE;
# [IPS] ------------------------------------------
echo "#mon serveur 1" >> $SENTRYIGNORE;
# changer ici cette IP par l'IP de votre serveur qui sera ignorée par PortSentry
echo "213.186.xx.xx" >> $SENTRYIGNORE;
echo "#mon serveur 2" >> $SENTRYIGNORE;
# changer ici cette IP par l'IP de votre serveur qui sera ignorée par PortSentry
echo "213.186.xx.xxx" >> $SENTRYIGNORE;
echo "#mon serveur 3" >> $SENTRYIGNORE;
# changer ici cette IP par l'IP de votre serveur qui sera ignorée par PortSentry
echo "213.186.xx.xxx" >> $SENTRYIGNORE;
# -----------------------------------------------
# ICI c'est les IPS des serveurs d'OVH
echo "#IP ovh" >> $SENTRYIGNORE;
echo "ping.ovh.net" >> $SENTRYIGNORE;
echo "proxy.ovh.net" >> $SENTRYIGNORE;
echo "cache.ovh.net" >> $SENTRYIGNORE;
echo "213.244.20.43" >> $SENTRYIGNORE;
echo "213.186.50.100" >> $SENTRYIGNORE;
fi;
# Création du fichier de lancement automatique sous SSH de PortSentry (portsentry start)
rm -f /bin/portsentry;
echo '#!/bin/bash' > /bin/portsentry;
echo " " >> /bin/portsentry;
echo "REP_PSENTRY='/usr/local/psionic/portsentry';" >> /bin/portsentry;
echo " " >> /bin/portsentry;
echo "case \"\$1\" in" >> /bin/portsentry;
echo " start)" >> /bin/portsentry;
echo " echo \"Démarrage de Portsentry...\"" >> /bin/portsentry;
echo " ps ax | grep -iw \$REP_PSENTRY'/portsentry -atcp' | grep -iv 'grep' > /dev/null" >> /bin/portsentry;
echo " if [ \$? != 0 ]; then" >> /bin/portsentry;
echo " \$REP_PSENTRY/portsentry -atcp" >> /bin/portsentry;
echo " fi" >> /bin/portsentry;
echo " " >> /bin/portsentry;
echo " ps ax | grep -iw \$REP_PSENTRY'/portsentry -audp' | grep -iv 'grep' > /dev/null" >> /bin/portsentry;
echo " if [ \$? != 0 ]; then" >> /bin/portsentry;
echo " \$REP_PSENTRY/portsentry -audp" >> /bin/portsentry;
echo " fi" >> /bin/portsentry;
echo " echo \"Portsentry est maintenant actif !\"" >> /bin/portsentry;
echo " ;;" >> /bin/portsentry;
echo " stop)" >> /bin/portsentry;
echo " echo \"Fermeture de Portsentry...\"" >> /bin/portsentry;
echo " array=(\`ps ax | grep -iw \$REP_PSENTRY'/portsentry' | grep -iv 'grep' | awk '{print \$1}' | cut -f1 -d/ | tr '\n' ' '\`)" >> /bin/portsentry;
echo " element_count=\${#array[@]}" >> /bin/portsentry;
echo " index=0" >> /bin/portsentry;
echo " while [ \"\$index\" -lt \"\$element_count\" ]" >> /bin/portsentry;
echo " do" >> /bin/portsentry;
echo " kill -9 \${array[\$index]}" >> /bin/portsentry;
echo " let \"index = \$index + 1\"" >> /bin/portsentry;
echo " done" >> /bin/portsentry;
echo " echo \"Portsentry est maintenant stoppé !\"" >> /bin/portsentry;
echo " ;;" >> /bin/portsentry;
echo " restart)" >> /bin/portsentry;
echo " \$0 stop && sleep 3" >> /bin/portsentry;
echo " \$0 start" >> /bin/portsentry;
echo " ;;" >> /bin/portsentry;
echo " *)" >> /bin/portsentry;
echo " echo \"Usage: \$0 {start|stop|restart}\"" >> /bin/portsentry;
echo " exit 1" >> /bin/portsentry;
echo "esac" >> /bin/portsentry;
echo "exit 0" >> /bin/portsentry;
echo " " >> /bin/portsentry;
chmod +x /bin/portsentry;
# Ajout de Portsentry au démarrage du serveur lors d'un reboot
DEMARRAGE=$( cat /etc/rc.d/rc.local | grep '/bin/portsentry start' | grep -iv 'grep' )
if [ -z "$DEMARRAGE" ]; then
echo " " >> /etc/rc.d/rc.local
echo "#Démarrage automatique de Portsentry" >> /etc/rc.d/rc.local
echo "/bin/portsentry start" >> /etc/rc.d/rc.local
fi;
echo "--------------------------------------------------------"
echo "Portsentry a été ajouté au démarrage du serveur dans /etc/rc.d/rc.local"
echo " "
echo "--------------------------------------------------------"
echo "Vous pouvez voir les IP ajoutées par Portsentry dans Iptables"
echo "avec ceci: iptables -L -v -n "
echo "ou ceci: iptables -L"
echo "Vous pouvez supprimer toutes les IP ajoutées dans Iptables"
echo "avec ceci: iptables -F"
echo "Vous pouvez retirer juste une IP dans Iptables"
echo "avec ceci: iptables -D INPUT -s NUMERO_IP -j DROP"
echo " "
echo "--------------------------------------------------------"
echo "Dans $REP_PSENTRY/portsentry.conf vous pouvez lancer un script"
echo "qui à chaque attaque pourra vous envoyer un email par exemple."
echo "c'est la commande KILL_RUN_CMD=\"/some/path/here/script \$TARGET\$ \$PORT\$\""
echo " "
echo "--------------------------------------------------------"
echo "Pour lancer Portsentry taper sous SSH: portsentry start"
echo "Pour arrêter Portsentry taper sous SSH: portsentry stop"
echo "Pour redémarrer Portsentry taper sous SSH: portsentry restart"
echo "Pour voir si Portsentry est actif sous SSH: ps -ax | grep portsentry"
echo " "
echo "--------------------------------------------------------"
exit 0;
fi;
echo " "
echo "-----------------------------------------------------------";
echo "Impossible de télécharger le fichier de Portsentry suivant: ";
echo "$SERVEUR_DOWNLOAD/portsentry-$VERSION.tar.gz";
echo "Fin de ce script.";
echo " "
echo "-----------------------------------------------------------";
Bonsoir,
Pour ceux qui n'ont pas peur ;-)
Voici une installation presque automatique de PortSentry.
Si ça peut vous faire gagner du temps, c'est avec plaisir que je vous envoie
ce bout de code.
Merci à tous ceux qui participent, on apprend beaucoup de choses, c'est très sympa de votre part de faire partager vos connaisances et votre aide.
Merci à fred pour m'avoir fait connaitre PortSentry.
Bonne soirée.
Gillou.
##################################################
#
# Script : install_portsentry.sh
# Auteur : Gillou
# Site : www.Supertoinette.com
# Version : 1.0
#
# DESCRIPTION :
# Installe PortSentry sur un serveur release OVH
# PortSentry permet de détecter les scans de ports
# sur votre serveur et de bloquer l'IP directement
# et très rapidement avec Iptables.
#
# AVERTISSEMENT :
# Vous installez ce script à vos risques et périls,
# je ne pourrai être tenu en aucun cas responsable
# des dommages ou de tous autres faits liés à
# ce script.
#
# INSTALLATION :
# Avant de lancer ce script remplacer les [IPS]
# 213.186.xx.xxx par les IPs de vos serveurs
# afin de ne pas être bloqué par PortSentry.
#
##################################################
REP_SRC='/home/ovh/src';
REP_PSENTRY='/usr/local/psionic/portsentry';
SENTRYIGNORE=$REP_PSENTRY'/portsentry.ignore';
SERVEUR_DOWNLOAD='http://ovh.dl.sourceforge.net/sourceforge/sentrytools/';
VERSION='1.2';
cd $REP_SRC
if wget $SERVEUR_DOWNLOAD/portsentry-$VERSION.tar.gz -O portsentry-$VERSION.tar.gz; then
wget http://ovh.dl.sourceforge.net/sourceforge/sentrytools/portsentry-$VERSION.tar.gz
tar -zxvf portsentry-$VERSION.tar.gz
cd $REP_SRC/portsentry_beta
rm -rf $REP_PSENTRY
make linux && make install
cd $REP_PSENTRY
# configuration d'Iptables
perl -pi -e "s/#KILL_ROUTE=\"\/usr\/local\/bin\/iptables/KILL_ROUTE=\"\/sbin\/iptables/" $REP_PSENTRY/portsentry.conf;
# mise en commentaire de KILL_HOSTS_DENY
perl -pi -e "s/KILL_HOSTS_DENY=\"ALL\: \$TARGET/#KILL_HOSTS_DENY=\"ALL\: \$TARGET/" $REP_PSENTRY/portsentry.conf;
#Ajout des IPS qui seront ignorées par PortSentry
MIPS=$( cat $SENTRYIGNORE | grep '#MES IPS' | grep -iv 'grep' )
if [ -z "$MIPS" ]; then
echo " " >> $SENTRYIGNORE;
echo "#MES IPS" >> $SENTRYIGNORE;
# [IPS] ------------------------------------------
echo "#mon serveur 1" >> $SENTRYIGNORE;
# changer ici cette IP par l'IP de votre serveur qui sera ignorée par PortSentry
echo "213.186.xx.xx" >> $SENTRYIGNORE;
echo "#mon serveur 2" >> $SENTRYIGNORE;
# changer ici cette IP par l'IP de votre serveur qui sera ignorée par PortSentry
echo "213.186.xx.xxx" >> $SENTRYIGNORE;
echo "#mon serveur 3" >> $SENTRYIGNORE;
# changer ici cette IP par l'IP de votre serveur qui sera ignorée par PortSentry
echo "213.186.xx.xxx" >> $SENTRYIGNORE;
# -----------------------------------------------
# ICI c'est les IPS des serveurs d'OVH
echo "#IP ovh" >> $SENTRYIGNORE;
echo "ping.ovh.net" >> $SENTRYIGNORE;
echo "proxy.ovh.net" >> $SENTRYIGNORE;
echo "cache.ovh.net" >> $SENTRYIGNORE;
echo "213.244.20.43" >> $SENTRYIGNORE;
echo "213.186.50.100" >> $SENTRYIGNORE;
fi;
# Création du fichier de lancement automatique sous SSH de PortSentry (portsentry start)
rm -f /bin/portsentry;
echo '#!/bin/bash' > /bin/portsentry;
echo " " >> /bin/portsentry;
echo "REP_PSENTRY='/usr/local/psionic/portsentry';" >> /bin/portsentry;
echo " " >> /bin/portsentry;
echo "case \"\$1\" in" >> /bin/portsentry;
echo " start)" >> /bin/portsentry;
echo " echo \"Démarrage de Portsentry...\"" >> /bin/portsentry;
echo " ps ax | grep -iw \$REP_PSENTRY'/portsentry -atcp' | grep -iv 'grep' > /dev/null" >> /bin/portsentry;
echo " if [ \$? != 0 ]; then" >> /bin/portsentry;
echo " \$REP_PSENTRY/portsentry -atcp" >> /bin/portsentry;
echo " fi" >> /bin/portsentry;
echo " " >> /bin/portsentry;
echo " ps ax | grep -iw \$REP_PSENTRY'/portsentry -audp' | grep -iv 'grep' > /dev/null" >> /bin/portsentry;
echo " if [ \$? != 0 ]; then" >> /bin/portsentry;
echo " \$REP_PSENTRY/portsentry -audp" >> /bin/portsentry;
echo " fi" >> /bin/portsentry;
echo " echo \"Portsentry est maintenant actif !\"" >> /bin/portsentry;
echo " ;;" >> /bin/portsentry;
echo " stop)" >> /bin/portsentry;
echo " echo \"Fermeture de Portsentry...\"" >> /bin/portsentry;
echo " array=(\`ps ax | grep -iw \$REP_PSENTRY'/portsentry' | grep -iv 'grep' | awk '{print \$1}' | cut -f1 -d/ | tr '\n' ' '\`)" >> /bin/portsentry;
echo " element_count=\${#array[@]}" >> /bin/portsentry;
echo " index=0" >> /bin/portsentry;
echo " while [ \"\$index\" -lt \"\$element_count\" ]" >> /bin/portsentry;
echo " do" >> /bin/portsentry;
echo " kill -9 \${array[\$index]}" >> /bin/portsentry;
echo " let \"index = \$index + 1\"" >> /bin/portsentry;
echo " done" >> /bin/portsentry;
echo " echo \"Portsentry est maintenant stoppé !\"" >> /bin/portsentry;
echo " ;;" >> /bin/portsentry;
echo " restart)" >> /bin/portsentry;
echo " \$0 stop && sleep 3" >> /bin/portsentry;
echo " \$0 start" >> /bin/portsentry;
echo " ;;" >> /bin/portsentry;
echo " *)" >> /bin/portsentry;
echo " echo \"Usage: \$0 {start|stop|restart}\"" >> /bin/portsentry;
echo " exit 1" >> /bin/portsentry;
echo "esac" >> /bin/portsentry;
echo "exit 0" >> /bin/portsentry;
echo " " >> /bin/portsentry;
chmod +x /bin/portsentry;
# Ajout de Portsentry au démarrage du serveur lors d'un reboot
DEMARRAGE=$( cat /etc/rc.d/rc.local | grep '/bin/portsentry start' | grep -iv 'grep' )
if [ -z "$DEMARRAGE" ]; then
echo " " >> /etc/rc.d/rc.local
echo "#Démarrage automatique de Portsentry" >> /etc/rc.d/rc.local
echo "/bin/portsentry start" >> /etc/rc.d/rc.local
fi;
echo "--------------------------------------------------------"
echo "Portsentry a été ajouté au démarrage du serveur dans /etc/rc.d/rc.local"
echo " "
echo "--------------------------------------------------------"
echo "Vous pouvez voir les IP ajoutées par Portsentry dans Iptables"
echo "avec ceci: iptables -L -v -n "
echo "ou ceci: iptables -L"
echo "Vous pouvez supprimer toutes les IP ajoutées dans Iptables"
echo "avec ceci: iptables -F"
echo "Vous pouvez retirer juste une IP dans Iptables"
echo "avec ceci: iptables -D INPUT -s NUMERO_IP -j DROP"
echo " "
echo "--------------------------------------------------------"
echo "Dans $REP_PSENTRY/portsentry.conf vous pouvez lancer un script"
echo "qui à chaque attaque pourra vous envoyer un email par exemple."
echo "c'est la commande KILL_RUN_CMD=\"/some/path/here/script \$TARGET\$ \$PORT\$\""
echo " "
echo "--------------------------------------------------------"
echo "Pour lancer Portsentry taper sous SSH: portsentry start"
echo "Pour arrêter Portsentry taper sous SSH: portsentry stop"
echo "Pour redémarrer Portsentry taper sous SSH: portsentry restart"
echo "Pour voir si Portsentry est actif sous SSH: ps -ax | grep portsentry"
echo " "
echo "--------------------------------------------------------"
exit 0;
fi;
echo " "
echo "-----------------------------------------------------------";
echo "Impossible de télécharger le fichier de Portsentry suivant: ";
echo "$SERVEUR_DOWNLOAD/portsentry-$VERSION.tar.gz";
echo "Fin de ce script.";
echo " "
echo "-----------------------------------------------------------";
Bonsoir,
Pour ceux qui n'ont pas peur ;-)
Voici une installation presque automatique de PortSentry.
Si ça peut vous faire gagner du temps, c'est avec plaisir que je vous envoie
ce bout de code.
Merci à tous ceux qui participent, on apprend beaucoup de choses, c'est très sympa de votre part de faire partager vos connaisances et votre aide.
Merci à fred pour m'avoir fait connaitre PortSentry.
Bonne soirée.
Gillou.