134 liens privés
Pour ajouter une exception pour Fail2ban, on édite le fichier jail.local et on rajoute la ou les adresses qu'on veut ignorer, séparées par un espace :
# vim /etc/fail2ban/jail.local
[DEFAULT]
ignoreip = 127.0.0.1/8 MON_IP UNE_AUTRE_IP
On peut maintenant ajouter un disque dur additionnel sur un VPS chez OVH. Ça manquait !
Prix :
50 Go
5,00€ HT/mois (SOIT 6,00€ TTC, soit 0,12€/Go)
100 Go
10,00€ HT/mois (SOIT 12,00€ TTC, soit 0,12€/Go)
200 Go
15,00€ HT/mois (SOIT 18,00€ TTC, soit 0,09€/Go)
500 Go
30,00€ HT/mois (SOIT 36,00€ TTC, soit 0,072€/Go)
Un fournisseur de serveurs virtuels (VPS).
Des explications pour modifier le Reverse DNS de son serveur.
Teleport est un outil qui permet de gérer plus efficacement la gestion de serveurs via SSH. Il agit comme proxy et permet d'enregistrer les différentes sessions pour les rejouer ensuite. (Pratique pour voir ce qu'un collègue a fait ou pour se souvenir, si on était bourré...)
Un hébergeur qui propose des VPS "customizables".
Un autre : https://www.leaseweb.com/
(via https://www.debian-fr.org/t/conseil-dedie-vps-hors-de-france/66129/20 )
Un tutoriel d'installation de Debian avec beaucoup de très bonnes astuces.
Une astuce pour sécuriser son serveur en utilisant Tiny Honeypot et Fail2Ban.
(via http://book.knah-tsaeb.org/?SVAp2w )
Prérequis :
Avoir changé le port ssh par défaut (22) .
Installation :
Installation des programmes nécessaires :
# apt-get install tinyhoneypot fail2ban xinetd
Copie d'un exemple de configuration :
# cp -v /usr/share/doc/tinyhoneypot/examples/xinetd.d/thp-pasv /etc/xinetd.d/
‘/usr/share/doc/tinyhoneypot/examples/xinetd.d/thp-pasv’ -> ‘/etc/xinetd.d/thp-pasv’
Modification de la configuration copiée juste avant :
# vim /etc/xinetd.d/thp-pasv
# cat /etc/xinetd.d/thp-pasv
# default: on
# description: thp-ftpd calls the generic thpsvcs with param "ftp",
# resulting in an ftpd emulation.
service thp-pasv
{
type = UNLISTED
socket_type = stream
protocol = tcp
port = 22
wait = no
user = thpot
server = /usr/sbin/thpot
server_args = nullresp
nice = 10
disable = no
instances = 1
per_source = 1
}
On redémarre le service xinetd et on vérifie qu'il écoute bien sur le port SSH par défaut :
# service xinetd restart
# netstat -lptn | grep xinetd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 4426/xinetd
On peut maintenant essayer de se connecter sans spécifier de port (donc tenter une connexion sur le port 22 ou Xinetd écoute) :
(en local) :
$ ssh xxx.xxx.xxx.xxx
^C
(sur le serveur) :
# cat /var/log/thpot/captures
Mar 02 13:28:06 SID=56D6DC56E6F47.nullresp PID=4437 SRC=yyy.yyy.yyy.yyy SPT=45797 ET=00:00:09 BYTES=39
Ok, la première partie marche! On regarde maintenant pour utiliser Fail2ban avec ça. (ATTENTION : On ne doit pas modifier le fichier "jail.conf" mais uniquement le fichier "jail.local" !) On fait donc une copie de jail.conf => jail.local :
# cp -v /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
‘/etc/fail2ban/jail.conf’ -> ‘/etc/fail2ban/jail.local’
# vim /etc/fail2ban/jail.local
# cat /etc/fail2ban/jail.local
(...)
[ssh]
enabled = true
port = xxxx
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
#SLF: (voir https://www.howtoforge.com/tutorial/increase-ipv4-security-with-fail2ban-and-tinyhoneypot-on-debian-jessie/ )
[thp-ssh]
enabled = true
port = all
filte r = thpot
logpath = /var/log/thpot/captures
banaction = iptables-allports
maxretry = 1
findtime = 1800
bantime = 10800
(...)
note: J'ai mis un bantime relativement court au départ (3600 secondes) le temps de tester que tout fonctionne bien. Au pire je suis banni juste une heure si je fais une bêtise...
[Edit: j'ai mis 10800s pour le bantime à présent, je vais probablement augmenter encore dans les prochains jours.
On rajoute le filtre fail2ban pour Tiny Honeypot :
# vim /etc/fail2ban/filter.d/thpot.local
# cat /etc/fail2ban/filter.d/thpot.local
# Fail2Ban configuration file for Tiny Honeypot
[Definition]
# patern :
# Mar 02 13:28:06 SID=56D6DC56E6F47.nullresp PID=4437 SRC=xxx.xxx.xxx.xxx SPT=45797 ET=00:00:09 BYTES=39
# Mar 02 13:44:25 SID=56D6E02951E5.nullresp PID=4566 SRC=yyy.yyy.yyy.yyy SPT=44993 ET=00:00:04
failregex = .* SRC=<HOST> .*
ignoreregex =
On peut tester si les regex de fail2ban fonctionnent bien :
# fail2ban-regex /var/log/thpot/captures /etc/fail2ban/filter.d/thpot.local
Running tests
=============
Use failregex file : /etc/fail2ban/filter.d/thpot.local
Use log file : /var/log/thpot/captures
Results
=======
Failregex: 86 total
|- #) [# of hits] regular expression
| 1) [86] .* SRC=<HOST> .*
`-
Ignoreregex: 0 total
Date template hits:
|- [# of hits] date format
| [86] MONTH Day Hour:Minute:Second
`-
Lines: 86 lines, 0 ignored, 86 matched, 0 missed
On redémarre ensuite le service fail2ban et on regarde ses logs et son statut :
# service fail2ban restart
# cat /var/log/fail2ban.log
2016-03-02 14:49:40,128 fail2ban.server [4862]: INFO Stopping all jails
2016-03-02 14:49:40,240 fail2ban.jail [4862]: INFO Jail 'ssh' stopped
2016-03-02 14:49:41,244 fail2ban.jail [4862]: INFO Jail 'thp-ssh' stopped
2016-03-02 14:49:41,245 fail2ban.server [4862]: INFO Exiting Fail2ban
2016-03-02 14:49:41,796 fail2ban.server [4934]: INFO Changed logging target to /var/log/fail2ban.log for Fail2ban v0.8.13
2016-03-02 14:49:41,797 fail2ban.jail [4934]: INFO Creating new jail 'ssh'
2016-03-02 14:49:41,817 fail2ban.jail [4934]: INFO Jail 'ssh' uses pyinotify
2016-03-02 14:49:41,833 fail2ban.jail [4934]: INFO Initiated 'pyinotify' backend
2016-03-02 14:49:41,834 fail2ban.filter [4934]: INFO Added logfile = /var/log/auth.log
2016-03-02 14:49:41,835 fail2ban.filter [4934]: INFO Set maxRetry = 6
2016-03-02 14:49:41,836 fail2ban.filter [4934]: INFO Set findtime = 600
2016-03-02 14:49:41,837 fail2ban.actions[4934]: INFO Set banTime = 600
2016-03-02 14:49:41,865 fail2ban.jail [4934]: INFO Creating new jail 'thp-ssh'
2016-03-02 14:49:41,865 fail2ban.jail [4934]: INFO Jail 'thp-ssh' uses pyinotify
2016-03-02 14:49:41,868 fail2ban.jail [4934]: INFO Initiated 'pyinotify' backend
2016-03-02 14:49:41,869 fail2ban.filter [4934]: INFO Added logfile = /var/log/thpot/captures
2016-03-02 14:49:41,870 fail2ban.filter [4934]: INFO Set maxRetry = 1
2016-03-02 14:49:41,871 fail2ban.filter [4934]: INFO Set findtime = 1800
2016-03-02 14:49:41,871 fail2ban.actions[4934]: INFO Set banTime = 3600
2016-03-02 14:49:41,876 fail2ban.jail [4934]: INFO Jail 'ssh' started
2016-03-02 14:49:41,880 fail2ban.jail [4934]: INFO Jail 'thp-ssh' started
# service fail2ban status
● fail2ban.service - LSB: Start/stop fail2ban
Loaded: loaded (/etc/init.d/fail2ban)
Active: active (running) since Wed 2016-03-02 14:49:41 CET; 8min ago
Process: 4905 ExecStop=/etc/init.d/fail2ban stop (code=exited, status=0/SUCCESS)
Process: 4922 ExecStart=/etc/init.d/fail2ban start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/fail2ban.service
└─4934 /usr/bin/python /usr/bin/fail2ban-server -b -s /var/run/fail2ban/fail2ban.sock -p /var/run/fail2ban/fail2ban.pid
Mar 02 14:49:41 xxxxxx fail2ban[4922]: Starting authentication failure monitor: fail2ban.
Malgré un "failure monitor: fail2ban ..." ça fonctionne. Ma session active (dans un autre terminal) a même été dégagée.
Test :
(en local vers 15h10 :)
$ ssh xxx.xxx.xxx.xxx
^C
$ ssh xxx.xxx.xxx.xxx
ssh: connect to host xxx.xxx.xxx.xxx port 22: Connection refused
$ ssh -p xxxx LOGIN@xxx.xxx.xxx.xxx
ssh: connect to host xxx.xxx.xxx.xxx port xxxx: Connection refused
(dernière tentative à 15h16)
Par contre, le ping marche toujours. Surprenant!
Si on regarde les logs de fail2ban une fois qu'on est "débanni" du serveur, je remarque que j'ai déjà une "prise" :
# cat /var/log/fail2ban.log
2016-03-02 15:23:22,329 fail2ban.actions[4934]: WARNING [thp-ssh] Ban 84.37.137.216
Tiens, c'est pas moi ça ! La suite : http://links.simonlefort.be/?Cif-aA
Bonus : Pour voir les ports utilisés :
# netstat -lptn
Moins de 4€/mois pour :
--- 4 cœurs dédiés ARMv7
--- 2Go de mémoire
--- 50Go de stockage SSD
--- 1 adresse IPv4 publique
--- 200Mbit/s de bande passante
C'est pas mal du tout! Surtout avec une extension de l'espace de stockage de 50Go à ~1,2€ !
Quelques informations intéressantes et retour d'expériences avant de se lancer dans une installation des certificats avec Let's Encrypt.
Voir aussi : https://memo-linux.com/comment-voir-loccupation-des-dossiers-en-ligne-de-commande/
Super pratique! Merci pour les partages!
(via http://eric.bugnet.fr/shaarli/ et d'autres)
Sympa !! :-)
Plein d'astuces et d'explications intéressantes à lire.
Merci pour la réponse. :-)
Mon nom de domaine est chez OVH, comme mes VPS. Donc ça ne marchera pas pour moi. Et la solution d'Oros me parait plus efficace.
(voir https://www.ecirtam.net/links/?gf5ozg )
Merci pour ta réponse et ton idée. On m'avait parlé du VPN au boulot mais je n'avais pas compris que le tunnel avait sa propre IP et je n'avais du coup pas bien compris comment rediriger vers la machine cliente à partir du serveur.
Je suis en train d'installer et configurer le serveur VPN en partant du tutoriel de Nico Largo ( http://blog.nicolargo.com/2010/10/installation-dun-serveur-openvpn-sous-debianubuntu.html ). Quand j'aurai fini, je ferai un article sur mon blog pour résumer la manœuvre. :-)
J'ai installé Syncthing sur un serveur pour faire des backups automatisés. Ça ne fonctionnait pas -encore- parce qu'il faut ouvrir deux ports :
la doc :
Local Firewall
If your PC has a local firewall, you will need to open the following ports for incoming traffic:
Port 22000/TCP (or the actual listening port if you have changed the Sync Protocol Listen Address setting.)
Port 21025/UDP (for discovery broadcasts)
J'ai rajouté ces lignes dans mon fichier "/etc/init.d/firewall" :
# Syncthing ( source: http://docs.syncthing.net/users/firewall.html )
iptables -t filter -A OUTPUT -p tcp --dport 22000 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 22000 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 21025 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 21025 -j ACCEPT
Intéressant. Et je découvre la commande "nc" que je ne connaissais pas.
J'ai passé une bonne partie de ma journée hier pour installer un VPS avec iRedMail. Je me rends compte que les pages pour configurer cluebringer ( mondomaine.com/cluebringer ) et awstats ( mondomaine.com/awstats ) renvoient une erreur 404.
J'ai cherché pendant longtemps avant de trouver pourquoi sur le forum d'iRedMail :
| ========
If you're running Nginx instead of Apache, both Awstats (url: /awstats) and Cluebringer (url: /cluebringer) are not accessible, because Nginx doesn't have (official) SQL/LDAP authentication module. You have to switch to Apache instead.
| ======== (source : http://www.iredmail.org/forum/topic8191-iredmail-support-iredmail090rc1-nginx-and-cluebringer.html )
Si ça ne marche pas, pourquoi le proposer ? Ça n'empêche pas le serveur mail de fonctionner mais je perds un peu en simplificité... Ça pourrait être dit clairement à l'installation, non ?!! :-@
J'aime bien le "You have to switch to Apache instead." ... Et je fais ça comment, sachant que le script d'iRedMail écrit des configurations un peu partout ? Il y a moyen de changer ça proprement ? Ou vaut-il mieux recommencer à zéro ? :-(
Une procédure de backup. Faudra que je m'attaque à ça un de ces quatre...