Tutos geek

Tutoriaux linux, debian, android et autres

Catchall avec Postfix

13 août 2017 - Aucun commentaire

Pour recevoir tous les emails qu'on enverrai sur votre nom de domaine il faut définir une adresse "catchall".
Je vais montrer ici un exemple avec un utilisateur "legit" qui aura sa propre boite email et un autre qui recevra tout le reste.

Créer 2 nouveaux utilisateurs.
adduser catchall
adduser autre_utilisateur

Créez ou modifiez le fichier postfix virtual.
vi /etc/postfix/virtual
@domain.ch catchall
autre_utilisateur@domain.ch autre_utilisateur

Poussez les données dans postfix.
postmap /etc/postfix/virtual

Vérifiez que vous avez la ligne suivante dans /etc/postfix/main.cf
vi /etc/postfix/main.cf
virtual_alias_maps = hash:/etc/postfix/virtual

Si vous avez du l'ajouter, redémarrez le service
service postfix reload


Sources
https://www.cyberciti.biz/faq/howto-setup-postfix-catch-all-email-accounts/
https://tecadmin.net/setup-catch-all-email-account-in-postfix/


Versions
Debian : 6.0.10 (squeeze)

Connexion VPN entre un client Windows et un serveur Linux

10 août 2016 - Aucun commentaire

Il va falloir installer OpenVPN sur votre serveur Linux et générer les certificats puis installer le client OpenVPN sur votre machine Windows.

Sur Linux (serveur)

Mon debian se fait vieux et les nouvelles versions des programmes ne sont plus forcément supportées.
J'ai trouvé un version d'OpenVPN sur le repository suivant

Repository

vi /etc/apt/sources.list
deb http://archive.debian.org/debian squeeze main
deb http://archive.debian.org/debian squeeze-lts main

vi /etc/apt/apt.conf
Acquire::Check-Valid-Until false;

apt-get upgrade
apt-get update

Installation d'OpenVPN

apt-get install openvpn
apt-get install network-manager-openvpn-gnome

Génération des certificats d'OpenVPN

mkdir /etc/openvpn/easy-rsa/
cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa
#passer en root
su -
cd /etc/openvpn/easy-rsa
. ./vars
./clean-all
./build-ca
./build-key-server server
./build-key client1
./build-dh
exit

cp /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn
cp /etc/openvpn/easy-rsa/keys/dh1024.pem /etc/openvpn
cp /etc/openvpn/easy-rsa/keys/server.crt /etc/openvpn
cp /etc/openvpn/easy-rsa/keys/server.key /etc/openvpn

Configuration

vi /etc/openvpn/tun0.conf
Fichier complet

Paramètres importants :
dev tap
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
push "redirect-gateway def1 bypass-dhcp" # pour rerouter tout le trafic internet
push "dhcp-option DNS 10.8.0.1"

Lancer le VPN

openvpn --config /etc/openvpn/tun0.conf --verb 6

Rerouter tout le trafic internet

Pour l'instant il ne sera possible que de communiquer entre le client et le serveur.
Pour rerouter tout le trafic internet il faut le spécifier via une règle IPTable.
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
10.8.0.0 est le sous-réseau créé précédemment et eth0 le nom de la carte réseau de votre serveur par lequel passe le trafic internet.

Si vous voulez voir les règles nat existantes :
iptables -t nat -L -n -v

Sur Windows (client)

Copier les fichiers ca.crt, client1.crt et client1.key sur la machine locale dans le répertoire [OpenVPN]\config\
Modifier le nom de l'interface réseau "Local Area Connection X" en "tap0" dans "Control Panel\Network and Internet\Network Connections"
Modifier l'interface réseau en désactivant l'IPv6 (sinon ça va saturer de warning, notre version d'OpenVPN ne gérant pas encore l'IPv6)

Configuration

Créer un fichier .ovpn dans [OpenVPN]\config\
Fichier complet

Paramètres importants :
client
dev tap
dev-node "tap0"
ca ca.crt
cert client1.crt
key client1.key
Lancer le client OpenVPN et se connecter


Source : OpenVPN


Version
Windows 7 x64 - SP1
Debian : 6.0.10 (squeeze)

Faire une sauvegarde de toute la base de donnée MySQL

01 mars 2015 - Aucun commentaire

mysqldump -u root -p --all-databases --add-drop-table --add-drop-database > mysql_full_dump_`date +%F`.sql
Il est possible de n'exporter qu'une seule table ou de spécifier tout un tas d'options utile.


Source : http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html


Debian version : 6.0.10
MySQL version : 14.14 Distrib 5.1.73, for debian-linux-gnu (x86_64) using readline 6.1

Créer un fichier avec la date du jour

27 février 2015 - 3 commentaires

Si vous souhaitez créer un fichier dont le nom contient la date du jour :
touch mon_fichier_`date +%F`.txt
Notez l'utilisation des deux "apostrophes inversée" que vous pouvez écrire avec ALT+96.
Résultat : mon_fichier_2015-02-27.txt

Pour avoir l'heure en plus :
touch mon_fichier_`date +%F_%T`.txt
Résultat : mon_fichier_2015-02-27_16:00:00.txt


Source : http://www.linuxquestions.org/questions/linux-newbie-8/howto-create-a-file-based-on-date-in-bash-179045/


Debian version : 6.0.10

TeamSpeak 3

25 février 2015 - 11 commentaires

Installation

Préparer la base de donnée MySQL
mysql -u root -p
CREATE USER ts3_user IDENTIFIED BY 'UN_BON_PASSWORD';
CREATE DATABASE teamspeak3;
GRANT ALL on teamspeak3.* to ts3_user;
FLUSH PRIVILEGES;

Créer un utilisateur dédié
su -
adduser teamspeak
su teamspeak
cd /home/teamspeak

Télécharger et deployer
cd /home/teamspeak
wget http://dl.4players.de/ts/releases/3.0.10.3/teamspeak3-server_linux-amd64-3.0.10.3.tar.gz
tar -xvzf teamspeak3-server_linux-amd64-3.0.10.3.tar.gz
mv teamspeak3-server_linux-amd64 teamspeak3
cd teamspeak3

Configurer
vi ts3db_mysql.ini
[config]
host=localhost
port=3308
username=ts3_user
password=UN_BON_PASSWORD
database=teamspeak3
socket=

vi ts3server.ini
machine_id=176.31.190.70
default_voice_port=9987
voice_ip=0.0.0.0
liscensepath=
filetransfer_port=30033
filetransfer_ip=0.0.0.0
query_port=10021
query_ip=0.0.0.0
dbplugin=ts3db_mysql
dbpluginparameter=ts3db_mysql.ini
dbsqlpath=sql/
dbsqlcreatepath=create_mysql/
logpath=logs
logquerycommands=1

Rendre debian squeeze (6.x) compatible avec libmysqlclient15off (source)
wget http://archive.debian.org/debian/pool/main/m/mysql-dfsg-5.0/libmysqlclient15off_5.0.51a-24+lenny5_amd64.deb
mv libmysqlclient15off_5.0.51a-24+lenny5_amd64.deb libmysqlclient15off.deb
dpkg --install libmysqlclient15off.deb

1er démarrage
./ts3server_minimal_runscript.sh inifile=ts3server.ini

Notez bien le token et le password qui vous est donné dans la console.
Ce code vous sera demandé la 1ère fois que vous vous connecterez à votre serveur via un client TeamSpeak.

Si jamais vous le perdez vous pourrez le retrouver dans la base de donnée.
mysql -u ts3_user -p
select value from server_properties where ident='virtualserver_autogenerated_privilegekey';

Script de démarrage
vi /etc/init.d/teamspeak3
#!/bin/bash

TS_DIR="/home/teamspeak/teamspeak3"
TS_USER="teamspeak"
RUN_SCRIPT="ts3server_startscript.sh"
INI_FILE="ts3server.ini"

start_ts() {
		echo "Lancement du server TeamSpeak"
		sudo -u $TS_USER $TS_DIR/$RUN_SCRIPT start inifile=$TS_DIR/$INI_FILE > /dev/null &
}

stop_ts() {
		echo "Arrêt du serveur TeamSpeak"
		sudo -u $TS_USER $TS_DIR/$RUN_SCRIPT stop
}

case "$1" in
	start)
		start_ts
	;;
	stop)
		stop_ts
	;;
	restart)
		stop_ts
		sleep 2
		start_ts
	;;
	*)
		echo "Usage du script : $0 {start|stop|restart}"
	;;
esac

Lancement automatique au démarrage de la machine
update-rc.d teamspeak3 start 99 2 .

Administration

Vous pouvez administrer votre teamspeak depuis la console Debian (voir la section Login telnet) mais pour plus de confort il existe une interface web qui répondra à la majorité de vos attentes.

cd /var/www
wget http://www.team-bielefeld.de/teamspeak_3/downloads/webinterface/ts3_webinterface_psychokiller_3.3.rar
unrar x ts3_webinterface_psychokiller_3.3.rar
mv ts3wi ts3webadmin
chown -R www-data:www-data ts3webadmin/

Licence

La version sans licence, gratuite, vous permet de créer 1 serveur et d'héberger 32 personnes au maximum.
Vous pouvez acheter différentes licences pour repousser ces limitations ou alors demander une licence NON-PROFIT.
Elle est accordée aux gens ne faisant pas d'argent avec leur site web et accueillant une communauté importante (plus de 32 personnes) régulièrement.
Pour être éligible il faut
  • Un nom de domaine
  • Un site web sur ce domaine montrant de l'activité communautaire (pour info mon simple forum phpbb hébergeant une soixantaine de personne m'a permi d'obtenir la licence)
  • Une adresse email associée à ce nom de domaine
  • Ne faire aucun profit d'aucune sorte. Même les boutons de donations vous excluent de l'offre.

Si votre demande est acceptée vous recevez la licence par email dans un fichier licensekey.dat.

Uploader ce fichier sur votre serveur puis :
sudo mv ./licensekey.dat /home/teamspeak/teamspeak3/
vi ts3server.ini
liscensepath=./licensekey.dat

/etc/init.d/teamspeak3 restart

Login telnet

Si vous voulez envoyer des commandes à teamspeak sans passer par l'interface web loggez vous avec telnet sur l'adresse ip de la machine et sur le port "query_port" défini dans ts3server.ini
telnet 176.31.190.70 10021
login serveradmin [PSW]


Sources :
Installation : http://blog.cp2i.com/post/2010/05/08/Installer-un-serveur-TeamSpeak-3-sous-Debian-Linux
Configuration : https://craym.eu/tutoriels/voip/installer_serveur_teamspeak3.html


Debian version : 6.0.10
Teamspeak version : 3.0.10.3 on Linux

rkhunter : Anti-rootkit

15 février 2015 - Aucun commentaire

Pour renforcer la sécurité certains préconisent d'utiliser l'anti-rootkit rkhunter.

Je ne l'ai pas encore installé mais voici la procédure au cas où :

apt-get install rkhunter
vi /etc/default/rkhunter
REPORT_EMAIL="votre.mail@mail.com"
CRON_DAILY_RUN="yes"

En cas de faux-positif :
vi /etc/rkhunter.conf
ALLOWHIDDENDIR=CHEMIN_DU_SCRIPT_LEGITIME


Source : http://www.alsacreations.com/tuto/lire/622-Securite-firewall-iptables.html


Debian version : 6.0.10

Debugger Sendmail

14 février 2015 - 5 commentaires

Sendmail, mon gestionnaire d'email est mal configuré.

Mon fichier /var/log/xconsole.log est pourri de
Feb 12 09:20:05 vps22441 sm-msp-queue[29620]: t1C601rZ029306: to=root, delay=02:20:04, xdelay=00:00:00, mailer=relay, pri=661781, relay=[127.0.0.1] [127.0.0.1], dsn=4.0.0, stat=Deferred: Connection refused by [127.0.0.1]

toutes les 20 minutes le cron essaye d'envoyer une série d'email sans succès.

Voici comment je l'ai installé.
apt-get remove exim4
apt-get remove postfix
apt-get install sendmail
vi /etc/mail/sendmail.cf

Cherchez "# SMTP daemon options" et changez le port pour 587
O DaemonPortOptions=Family=inet,  Name=MTA-v4, Port=587, Addr=127.0.0.1

/etc/init.d/sendmail restart

Le cron responsable : /etc/cron.d/sendmail
La configuration de sendmail qui doit merder : /etc/mail/sendmail.conf

Supprimer les mails en attente :
su -
rm /var/spool/mqueue/*
rm /var/spool/mqueue-client/*

Je ne vais pas investiguer plus car je pense passer à postfix de toute façon.


Versions
Debian : 6.0.10 (squeeze)

Sécurisation de votre VPS : fail2ban et named.conf

13 février 2015 - Aucun commentaire

Préambule

Ce billet fait suite à celui sur la sécurisation de votre VPS que je vous conseille de lire avant d'attaquer celui-ci.

Tout d'abord je tiens à faire remarquer que depuis que j'ai reconfiguré SSH sur mon serveur je n'ai plus vu aucune tentative d'intrusion dans mes logs. Je suppose que c'est dû au changement du port par défaut car les bots n'essayaient pas de se logger en root et j'avais déjà le Protocol 2.

Mais ce n'est pas une raison pour ne pas s'en protéger quand même puisqu'il est assez facile de trouver sur quel port tourne SSH.

Quel problème va-t-on régler ?

Nous allons en régler 2 en fait.

Tentative de connection en SSH

Vérifiez si on tente de pénétrer chez vous
grep "Failed password for" /var/log/xconsole.log

Si vous obtenez de nombreuses entrées de ce type c'est qu'on essaye de vous brute-forcer
Jan 14 11:21:31 vps12345 sshd[4050]: Failed password for mike from 212.123.45.67 port 22 ssh2

Utilisation de votre VPS comme arme de DDoS

grep "query \(cache\)" /var/log/xconsole.log

Si vous lisez
13-Feb-2015 09:33:44.744 client 195.238.25.109#4239: query (cache) 'pumbaa.ch/A/IN' denied
13-Feb-2015 09:34:43.325 client 88.174.87.40#30898: query (cache) 'WWW.PUMBAa.CH/A/IN' denied
13-Feb-2015 09:34:43.328 client 88.174.87.40#20394: query (cache) 'wWW.PuMbaA.cH/AAAA/IN' denied
13-Feb-2015 09:34:43.479 client 88.174.87.40#60023: query (cache) 'Www.pUmbaA.CH/A/IN' denied
13-Feb-2015 09:40:26.027 client 195.36.152.180#27437: query (cache) 'www.pumbaa.ch/A/IN' denied

vous allez peut-être vous dire "denied ? Chouette ! Il a essayé de rentrer mais il n'a pas réussi, c'est tout bon."
Vraiment ?
FAUX !

En fait vous participez probablement à une attaque DDoS à votre insu.
Un attaquant va envoyer un petit paquet à votre serveur en usurpant l'adresse IP de sa cible. Sa requête étant illégitime (c'est fait exprès) votre serveur la refuse et lui renvoie un gros paquet de donnée expliquant qu'il ne l'accepte pas.
Mais en fait vous renvoyez la réponse à la victime qui se voit assailli de toute part par des paquets identiques, mettant son infrastructure à genoux.

Si vous ne voulez pas faire partie d'un réseau de crime organisé (ouais, carrément ^^) il faut totalement ignorer ces paquets.

Pour notre exemple on va déporter ces logs dans un autre fichier.
Ce n'est pas obligatoire, mais c'est pour la beauté du geste.
mkdir /var/log/named
chmod a+w /var/log/named
vi /etc/bind/named.conf.local
logging {
	channel security_file {
		file "/var/log/named/security.log" versions 3 size 30m;
		severity dynamic;
		print-time yes;
	};
	category security {
		security_file;
	};
};
Notez que mettre un fichier de log en a+w n'est pas recommandé, je reviendrai sur ce point un autre jour.

/etc/init.d/bind9 restart

Fail2Ban

Commençons par bannir les IP des attaquants avant de passer à la résolution propre du problème.
Le rôle de Fail2Ban est de scanner des fichiers de logs, de repérer des anomalies et d'ajouter des règles iptables pour bannir les malotrus.
Si vous suivez bien, vous remarquerez qu'on les bannit après qu'ils aient commis leur méfaits. Dans le cas d'une tentative d'intrusion SSH ce n'est pas trop grave (tant que vous avez des mots de passe très forts), mais dans celui de l'attaque DDoS c'est un peu inutile, vu que la requête de refus aura déjà été émise.
On va quand même le faire, pour le sport.

Installation simple

apt-get install fail2ban

et c'est tout.

Installation compliquée

Vous pouvez télécharger la toute dernière version, la compiler et l'installer vous-même.

cd /tmp
wget https://github.com/fail2ban/fail2ban/archive/master.zip
unzip master.zip
cd fail2ban-master
./setup.py install
cd files
cp debian-initd /etc/init.d/fail2ban
chmod 755 /etc/init.d/fail2ban
update-rc.d fail2ban defaults

Nous allons maintenant intégrer fail2ban dans le logrotate
vi /etc/logrotate.d/fail2ban
/var/log/fail2ban.log {
	weekly
	rotate 7
	missingok
	compress
	postrotate
	  /usr/local/bin/fail2ban-client set logtarget /var/log/fail2ban.log >/dev/null
	endscript
}

Utilisation

Fail2Ban installe en fait un client ( /usr/local/bin/fail2ban-client ) et un serveur ( /usr/local/bin/fail2ban-server ).
En temps normal vous n'aurez jamais besoin de démarrer le serveur, le client s'en occupera pour vous.
Pour démarrer :
fail2ban-client start

Vous pouvez demander à fail2ban d'executer des commandes de la manière suivante
fail2ban-client COMMAND

Par exemple
fail2ban-client status named-tcp

ou alors vous pouvez ouvrir l'interface interactive et taper les commandes plus directement
fail2ban-client -i

Jails

Fail2Ban est installé et démarré, mais en l'état il ne fait rien ! Il faut définir des jails (ça veut dire prisons dans la langue de Wentworth Miller).
Ces prisons sont constituées de plusieurs éléments dont les principaux sont :
  • Le fichier de log a analyser en temps réel
  • La règle (ou filtre), une expression régulière qui va lever une alerte. Fail2Ban s'installe avec un tas de règles toutes faite dispo dans /etc/fail2ban/filter.d/
  • Le nombre de tentatives autorisées avant d'effectuer une action
  • L'action a effectuer (bannir l'ip, s'envoyer un email, ...). Fail2Ban s'installe avec un tas d'action dispo dans /etc/fail2ban/action.d/

Nous allons créer 3 prisons : 1 pour ceux qui tentent de se connecter en SSH et 2 pour les robots DDoSeur.

Vous pouvez éditer le fichier /etc/fail2ban/jail.conf mais la pratique recommandée est de ne toucher à aucun fichier .conf et de créer des .local à la place.
vi /etc/fail2ban/jail.local
##########
# CONFIG #
##########
[DEFAULT]
destemail = votre.mail@mail.com
sender = root@pumbaa.ch
bantime  = 30
ignoreip = 123.123.123.123
Dans la partie default vous allez spécifier les règles globales, que vous pouvez raffiner au cas par cas dans chaque prison si besoin.
Vous voyez ici :
  • L'adresse à laquelle envoyer un email lors d'un ban
  • L'adresse d’expédition, mettez ce que vous voulez...
  • La durée d'un bannissement en secondes. Pour vos test mettez une valeur très courte pour éviter les déconvenues lorsque vous vous auto-bannirez.
  • Les adresses IP (séparées par des espaces si vous voulez en mettre plusieurs) qui ne doivent jamais être bannies. Si vous avez une connexion internet avec IP fixe d'où vous vous loggez, entrez la ici.

###########
#  JAILS  #
###########

# SSH IPTABLES
[ssh]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=1234, protocol=tcp]
           mail-whois[name=SSH, dest=votre.mail@mail.com]
logpath  = /var/log/auth.log
maxretry = 2
  • enabled : Vous pouvez désactiver un filtre sans tout mettre en commentaire simplement en passant la valeur à false.
  • filter : correspond aux filtres présents dans /etc/fail2ban/filter.d/sshd.conf
  • action (iptables) : va bannir l'ip. Vous pouvez voir la commande précise dans /etc/fail2ban/action.d/iptables.conf
  • action (mail-whois) : va vous envoyer un email. Vous pouvez voir la commande précise dans /etc/fail2ban/action.d/mail-whois.conf

Et maintenant les 2 prisons contre les DDoSeur (une pour TCP, une pour UDP)
# NAMED UDP
[named-udp]
enabled  = true
filter   = named-refused
port     = domain,953
protocol = udp
action   = iptables[name=NAMED, port=domain, protocol=udp]
logpath  = /var/log/named/security.log
maxretry = 1

# NAMED TCP
[named-tcp]
enabled  = true
filter   = named-refused
port     = domain,953
protocol = tcp
action   = iptables[name=NAMED, port=domain, protocol=tcp]
logpath  = /var/log/named/security.log
maxretry = 1

Vous n'avez plus qu'à redémarrer le service et vérifier qu'il fonctionne.
fail2ban-client reload
fail2ban-client status
fail2ban-client status ssh
fail2ban-client status named-tcp
fail2ban-client status named-udp

Pour dé-bannir une IP manuellement :
fail2ban-client set <JAIL> unbanip <IP>

Vous pouvez maintenant essayer de vous bannir vous-même en entrant des login/password bidons. Notez que si vous testez toujours avec le même login fail2ban ne va pas prendre de mesure car le log généré dans ce cas ressemble à
Feb 13 14:15:28 vpsXXXXX sshd[3022]: Failed password for invalid user pumm from 212.123.45.67 port 1234 ssh2
Feb 13 14:15:39 vpsXXXXX sshd[3022]: PAM 4 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=212.123.45.67.fix.access.vtx.ch

Il faut aussi supprimer la ligne "ignoreip" du fichier /etc/fail2ban/jail.local pour ces tests.

Quand vous serez satisfait remettez l'ignoreip et fixez un bantime plus haut, de l'ordre de la journée : 86400 voire plus.

Ignorer les paquets frauduleux

Maintenant que les prisons sont en place on va faire en sorte de ne pas les utiliser.
C'est dur la vie d'un bidouilleur :)

vi /etc/bind/named.conf.options
	allow-query { any; };
	allow-query-cache { 127.0.0.1/8; };
	recursion no;
	allow-recursion { 127.0.0.1/8; };
	additional-from-cache no;

La ligne qui nous intéresse particulièrement est "additional-from-cache no;".

/etc/init.d/bind9 restart

Normalement maintenant votre fichier de log /var/log/named/security.log devrait rester muet.


Sources :
http://www.fail2ban.org/wiki/index.php/MANUAL_0_8
https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-fail2ban-on-centos-6
https://www.debian-administration.org/article/623/Blocking_a_DNS_DDOS_using_the_fail2ban_package


Debian version : 6.0.10
fail2ban version : 0.9.1.dev

grep lisible

27 janvier 2015 - Aucun commentaire

grep -Rins --color -A 5 -B 5 "pumbaa" .

Un résultat tout de suite plus lisible

-R : Recursif
-i : insensible à la casse
-n : numéro de ligne (ici en vert)
-s : n'affiche pas les messages d'erreur (du style "Permission denied")
--color : explicite, non ?
-A 5 : Affiche le contenu des 5 lignes d'avant
-B 5 : Affiche le contenu des 5 lignes d'après

EDIT : un alias

vi ~/.bashrc
 mygrep(){
         grep -Rins --color -A 5 -B 5 $1 .
}

Attention, ajouter une fonction dans le .bashrc n'est pas recommandé !


Source : http://doc.ubuntu-fr.org/alias


Debian version : 6.0.10

Sécurisation de votre VPS

14 janvier 2015 - 2 commentaires

Il y a quelque temps j'ai constaté des tentatives d'intrusion sur mon serveur, venant de chine, russie, thaïlande, ...
Mon VPS ne contenant rien de bien folichon je n'ai eu affaire qu'à des robots assez basiques, cherchant probablement à enrichir une armée de zombies spammeur ou DDoSeur.
Ils se sont donc cassé les dents sur mes défenses rudimentaires.

Comment les détecter ?

Chaque tentative de connexion SSH est consignée dans le fichier /var/log/xconsole.log

less /var/log/xconsole.log

Jan 14 11:21:31 vps12345 sshd[4050]: Failed password for mike from 212.123.45.67 port 22 ssh2
Un utilisateur dont l'adresse IP publique est 212.123.45.67 a essayé de se connecter en SSH à mon VPS sur le port 22 avec le nom d'utilisateur 'mike' mais a échoué.

Jan 14 11:22:02 vps12345 sshd[4050]: Accepted password for pumbaa from 212.123.45.67 port 1234 ssh2
Jan 14 11:22:02 vps12345 sshd[4050]: pam_unix(sshd:session): session opened for user pumbaa by (uid=0)
Nom d'utilisateur, port et mot de passe correct.

Donc quand vous avez votre fichier de log pourri par des milliers de "Failed password for XXX" c'est qu'on tente de pénétrer chez vous.

Comment les empêcher d'entrer ?

Mot de passe

Avoir des mots de passe très fort, surtout celui de 'root'.
Et quand je dis très fort je pense à minimum 20 caractères.
Comme ça devient dur à retenir (surtout si vous mettez des caractères spéciaux dedans, comme c'est recommandé) je vous conseil le très bon logiciel KeePass qui se souviendra pour vous de tous vos mots de passe. Je ferai probablement un billet là-dessus un jour.

su - #Pour passer en root
passwd

Configuration du SSH

vi /etc/ssh/sshd_config

Changer le port
Port 1234

Interdire la connexion en SSH à l'utilisateur 'root'
PermitRootLogin no

Maintenant le seul moyen de se connecter en 'root' est de se connecter avec un autre compte puis de lancer la commande
su -

Vérifier la version du protocole utilisée
Protocol 2

Redémarrer SSH
/etc/init.d/ssh restart

/!\ ATTENTION /!\
Ne fermez pas le terminal à ce moment. Ouvrez-en un nouveau et vérifiez que vous arrivez bien à vous connecter avec votre utilisateur habituel.
Souvenez-vous que le port à changé et que 'root' ne peut plus se connecter.

La suite

Les robots ne pourront - probablement - pas rentrer sur votre serveur mais ça ne va pas les empêcher d'essayer en boucle.
Pour les bannir définitivement l'utilisation de Fail2ban semble être intéressante.
Ça sera l'objet d'un prochain billet, quand je l'aurai installé chez moi.


Source : http://forum.ovh.com/showthread.php?102599-Attaque-SSH-sur-mon-VPS


Debian version : 6.0.10