Salut
Je sais que ça arrive tout le temps, mais j’aimerai votre avis.
J’ai un serveur fraichement installé qui semble très attaqué en ssh.
J’ai installé fail2ban :
voici une partie du jails.local:
[code][DEFAULT]
ignoreip = 127.0.0.1/8 192.168.1.0/24
findtime = 7200
bantime = 86400
maxretry = 3
backend = auto
destemail = xxxxxxxxxxxxx
banaction = iptables-multiport
mta = sendmail
protocol = tcp
…
[ssh]
enabled = true
port = ssh,sftp
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
[dropbear]
enabled = false
port = ssh
filter = sshd
logpath = /var/log/dropbear
maxretry = 3
[pam-generic]
enabled = false
filter = pam-generic
port = all
banaction = iptables-allports
port = anyport
logpath = /var/log/auth.log
maxretry = 3
[lighttpd]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/lighttpd/*error.log
maxretry = 3
[lighttpd-noscript]
enabled = true
port = http,https
filter = apache-noscript
logpath = /var/log/lighttpd/*error.log
maxretry = 3
[lighttpd-overflows]
enabled = true
port = http,https
filter = apache-overflows
logpath = /var/log/lighttpd/*error.log
maxretry = 2
[/code]
J’ai activé l’envoie des mails pour avoir les infos en direct
Je me suis aussi fait un script que je relance dans le rc.local pour éliminer d’emblée les plages IP de certaines adresses qui reviennent très souvent dans les logs. Je remplis ce fichier ip.txt à la main.
[quote]#! /bin/bash
#voir site pour avoir les ip/masques
#https://www.countryipblocks.net/search_ip.php
for lineIP in $(sed -e ‘/^[ ]*#/d’ -e ‘/^$/d’ ip.txt)
do
echo Bannisement de : $lineIP
iptables -I INPUT -s $lineIP -j DROP
done
[/quote]
J’ai installé google_authenticator et l’ai activé sur 3 comptes qui sont membre du groupes sshusers
voilà le fichiere pam de sshd:
@include common-auth
account required pam_nologin.so
@include common-account
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
session required pam_loginuid.so
session optional pam_keyinit.so force revoke
@include common-session
session optional pam_motd.so motd=/run/motd.dynamic noupdate
session optional pam_motd.so # [1]
session optional pam_mail.so standard noenv # [1]
session required pam_limits.so
session required pam_env.so # [1]
session required pam_env.so user_readenv=1 envfile=/etc/default/locale
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
@include common-password
auth required pam_google_authenticator.so
Et voici mon fichier sshd_config
Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 1024
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication yes
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes
AllowGroups sshusers
Et maintenant le truc qui gâche tout !!! vous allez me frapper…
J’ai un autre serveur chez un hébergeur (nommons le S2), sur lequel j’ai un serveur mercurial… Je n’ai qu’un acces ssh sur mon compte sur ce serveur.
Afin de synchroniser mes codes sources de S2 avec avec le S1… j’ai fait un script rsync sur S2 qui pour syncroniser les dépots de s1 à chaque commit… seulement pour ça, j’ai dû laissé une clef ssh sur S2… Donc, si quelqu’un pirate ce S2, et bien il a un accès à un compte de mon serveur 1… je ne vois pas trop comment faire autrement
Voilà, vous pensez que c’est assez fiable et robuste ou pas ? Merci d’avance pour vos conseils
EDIT :
Je ne vais pas modifier mes fichiers de départ sur le post, j’ajoute ci-dessous les modifs faites d’après vos conseils
J’ai changé :
- le port ssh
- le jails.local : ajout du port ssh, réduit à 1 le nombre de tentatives