From 8b907a0c44108b52fefbe67f8743857d7189c2a9 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 7 Jan 2019 15:23:46 +0100 Subject: [PATCH 1/6] Recommend MobaXterm --- ssh.md | 2 +- ssh_fr.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ssh.md b/ssh.md index b83e5a2a..c748f9e3 100644 --- a/ssh.md +++ b/ssh.md @@ -2,7 +2,7 @@ ## What's SSH? -**SSH** stands for Secure Shell, and refers to a protocol that allows to remotly control a machine using the command line interface (CLI). It is available by default on Linux and Mac OS / OSX. On Windows, unfortunately you might need to use the [PuTTy](http://www.fastcomet.com/tutorials/getting-started/putty) software. +**SSH** stands for Secure Shell, and refers to a protocol that allows to remotly control a machine using the command line interface (CLI). It is available by default in any terminal on Linux and Mac OS / OSX. On Windows, you may want to use [MobaXterm](https://mobaxterm.mobatek.net/download-home-edition.html) (after launching it, click on Session then SSH). ## During YunoHost installation diff --git a/ssh_fr.md b/ssh_fr.md index 5c511207..4ae5c852 100644 --- a/ssh_fr.md +++ b/ssh_fr.md @@ -2,7 +2,7 @@ ## Qu’est-ce que SSH ? -**SSH** est un accronyme pour Secure Shell, et désigne un protocole qui permet de contrôler à distance une machine via la ligne de commande (CLI). C'est aussi une commande disponible de base sur Linux et Mac OS / OSX. Sous Windows, malheureusement il vous faudra utiliser le logiciel [PuTTy](http://www.fastcomet.com/tutorials/getting-started/putty). +**SSH** est un accronyme pour Secure Shell, et désigne un protocole qui permet de contrôler à distance une machine via la ligne de commande (CLI). C'est aussi une commande disponible de base dans les terminaux de Linux et Mac OS / OSX. Sous Windows, il vous faudra utiliser le logiciel [MobaXterm](https://mobaxterm.mobatek.net/download-home-edition.html) (après l'avoir lancer, cliquer sur Session puis SSH). ## Pendant l’installation de YunoHost From 6612510a4751be7be6b999f53c221742d0838f1b Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 7 Jan 2019 15:24:43 +0100 Subject: [PATCH 2/6] Using hostname --all-ip-address gives a much simpler output --- ssh.md | 2 +- ssh_fr.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ssh.md b/ssh.md index c748f9e3..36963fc5 100644 --- a/ssh.md +++ b/ssh.md @@ -14,7 +14,7 @@ If you are installing at home (e.g. on a Raspberry Pi or OLinuXino), then you ne - open a terminal and use `sudo arp-scan --local` to list the IP on your local network ; - use your internet box / router interface to list the machines connected, or check the logs ; -- plug a screen on your server, log in and type `ifconfig`. +- plug a screen on your server, log in and type `hostname --all-ip-address`. #### Connect diff --git a/ssh_fr.md b/ssh_fr.md index 4ae5c852..c84e364c 100644 --- a/ssh_fr.md +++ b/ssh_fr.md @@ -14,7 +14,7 @@ Si vous installez un serveur à la maison (par ex. sur Raspberry Pi ou OLinuXino - ouvrez un terminal et tapez `sudo arp-scan --local` pour lister les IP des machines sur le réseau local ; - utilisez l'interface de votre box internet pour lister les machines connectées, ou regarder les logs ; -- branchez un écran sur votre serveur, loggez-vous et tapez `ifconfig`. +- branchez un écran sur votre serveur, loggez-vous et tapez `hostname --all-ip-address`. #### Se connecter From d1943765465e64883268d4b157bfb7de00b19fe6 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 7 Jan 2019 15:42:38 +0100 Subject: [PATCH 3/6] Add note about using admin to connect through SSH after Yunohost 3.4 --- ssh.md | 12 ++++++++---- ssh_fr.md | 12 +++++++----- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/ssh.md b/ssh.md index 36963fc5..a3eb594d 100644 --- a/ssh.md +++ b/ssh.md @@ -26,15 +26,19 @@ ssh root@111.222.333.444 A password will be asked. If this is a VPS, your VPS provided should have communicated you the password. If you used a pre-installed image (for x86 computer or ARM board), the password should be `yunohost`. +
+Since YunoHost 3.4, after running the postinstallation, you won't be able to login as `root` anymore. Instead, **you should login using the `admin` user !** In the event that the LDAP server is broken and the `admin` user is unusable, you may still however still be able to login using `root` from the local network. +
+ #### Change the password! -After logging in for the first time, you should change the root password. The server might automatically ask you to do so. If not, use the command `passwd`. It is important to choose a reasonably strong password. +After logging in for the first time, you should change the root password. The server might automatically ask you to do so. If not, use the command `passwd`. It is important to choose a reasonably strong password. Note that the root password will be overriden by the admin password when you perform the postinstallation. ## After installing YunoHost -If you installed your server at home and are attempting to connect from outside your local network, make sure port 22 is correctly forwarded to your server. +If you installed your server at home and are attempting to connect from outside your local network, make sure port 22 is correctly forwarded to your server. (Reminder : since YunoHost 3.4 you should connect using the `admin` user !) -If you only know the IP of your server : +If you only know the IP address of your server : ```bash ssh admin@111.222.333.444 @@ -56,7 +60,7 @@ ssh -p 2244 admin@your.domain.tld ## Which users? -By default, only the admin and root users can log in to YunoHost ssh server. +By default, only the `admin` user can log in to YunoHost ssh server. YunoHost's users created via the administration interface are managed by the LDAP directory. By default, they can't connect via SSH for security reasons. If you want some users to have SSH access enabled, use the command: diff --git a/ssh_fr.md b/ssh_fr.md index c84e364c..146a8d8f 100644 --- a/ssh_fr.md +++ b/ssh_fr.md @@ -26,13 +26,17 @@ ssh root@111.222.333.444 Un mot de passe sera demandé. Si c'est un VPS, votre fournisseur devrait également vous avoir communiqué un mot de passe. Si vous avez utilisé une image pré-installée (pour x86 ou cartes ARM), le password devrait être `yunohost`. +
+Depuis YunoHost 3.4, après avoir effectué la postinstallation, il ne sera plus possible de se logguer avec l'utilisateur `root`. À la place, il vous faut **vous logguer avec l'utilisateur `admin` !**. Dans l'éventualité où le serveur LDAP serait cassé, rendant l'utilisateur `admin` inutilisable, vous devriez cependant pouvoir vous logguer avec l'utilisateur `root` depuis le réseau local. +
+ #### Changer le mot de passe root ! -Après vous être loggé pour la première fois, il vous faut changer le mot de passe root. Le serveur vous demandera peut-être automatiquement de le faire. Si ce n'est pas le cas, il faut utiliser la commande `passwd`. Il est important de choisir un mot de passe raisonnablement compliqué. +Après vous être loggé pour la première fois, il vous faut changer le mot de passe root. Le serveur vous demandera peut-être automatiquement de le faire. Si ce n'est pas le cas, il faut utiliser la commande `passwd`. Il est important de choisir un mot de passe raisonnablement compliqué. Notez que ce mot de passe sera écrasé ensuite par le mot de passe admin choisi lors de la postinstallation. ## Sur une instance déjà installée -Si vous avez installé votre serveur à la maison et que vous cherchez à vous connecter depuis l'extérieur du réseau local, assurez-vous d'avoir bien redirigé le port 22 vers votre serveur. +Si vous avez installé votre serveur à la maison et que vous cherchez à vous connecter depuis l'extérieur du réseau local, assurez-vous d'avoir bien redirigé le port 22 vers votre serveur. (Rappel : depuis la version 3.4, il vous faut vous logguer avec l'utilisateur `admin` !) Si vous connaissez seulement l'IP de votre serveur : @@ -56,7 +60,7 @@ ssh -p 2244 admin@votre.domaine.tld ## Quels utilisateurs ? -Par défaut, seulement les utilisateurs admin et root peuvent se logger en SSH sur une instance Yunohost. +Par défaut, seulement l'utilisateur `admin` peut se logger en SSH sur une instance Yunohost. Les utilisateurs YunoHost créés via l'interface d'administration sont géré par la base de donnée LDAP. Par défaut, ils ne peuvent pas se connecter en SSH pour des raisons de sécurité. Si vous avez absolument besoin qu'un utilisateur dispose d'un accès SSH, vous pouvez utiliser la commande : ```bash @@ -75,8 +79,6 @@ yunohost user ssh remove-key yunohost user ssh list-keys ``` - - ## SSH et sécurité Voir la page dédiée à la [sécurité](security_fr). From b192d42837b42f3d7d0029c2ea2bfc930fa8a1fd Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 7 Jan 2019 15:46:58 +0100 Subject: [PATCH 4/6] Add note about 'sudo su' --- ssh.md | 4 ++++ ssh_fr.md | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/ssh.md b/ssh.md index a3eb594d..aaf2bf12 100644 --- a/ssh.md +++ b/ssh.md @@ -58,6 +58,10 @@ If you changed the SSH port, you need to add `-p ` to the command, e ssh -p 2244 admin@your.domain.tld ``` +
+If you are connected as `admin` and would like to become `root` for more comfort (e.g. to avoid typing `sudo` in front of every command), you can become `root` using the command `sudo su`. +
+ ## Which users? By default, only the `admin` user can log in to YunoHost ssh server. diff --git a/ssh_fr.md b/ssh_fr.md index 146a8d8f..ee12deb4 100644 --- a/ssh_fr.md +++ b/ssh_fr.md @@ -58,6 +58,10 @@ Si vous avez changé le port SSH, il faut rajouter `-p ` à la com ssh -p 2244 admin@votre.domaine.tld ``` +
+Si vous êtes connecté en tant qu'`admin` et souhaité devenir `root` pour plus de confort (par exemple, ne pas avoir à taper `sudo` à chaque commande), vous pouvez devenir `root` en tapant `sudo su`. +
+ ## Quels utilisateurs ? Par défaut, seulement l'utilisateur `admin` peut se logger en SSH sur une instance Yunohost. From ec8e01ea76dc22e89040461bfc30f87b1b7bcae0 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 7 Jan 2019 16:55:18 +0100 Subject: [PATCH 5/6] Rework ssh page --- fail2ban.md | 65 ++++++++++++++++---------------------------------- fail2ban_fr.md | 65 ++++++++++++++++---------------------------------- 2 files changed, 40 insertions(+), 90 deletions(-) diff --git a/fail2ban.md b/fail2ban.md index 06efe987..aa6acf5b 100644 --- a/fail2ban.md +++ b/fail2ban.md @@ -1,57 +1,32 @@ # Fail2ban -For a number of reasons, an IP adresse may be wrongly blacklisted. If you wish to access your server through this specify IP you will need to unblock it. +Fail2Ban is an intrusion prevention software that protects computer servers from brute-force attacks. It monitors some log files and will ban IP addresses that shows brute-force-like behavior. -## IP unblock +In particular, Fail2ban monitors SSH connection attempts. After 5 failed login attempts on SSH, Fail2ban will ban the corresponding IP address from connecting through SSH for 10 minutes. If this IP is found to recidive several times, it might get ban for a week. -First, list all iptables rules with: `iptables -L --line-numbers` : +## Unban an IP + +To unban an IP from fail2ban, you first need to access your server by some mean (e.g. from another IP by the one being banned). + +Then look at fail2ban's log to identify in which jail the IP was put : ```bash -root@beudi:~# iptables -L --line-numbers -Chain INPUT (policy ACCEPT) -num target prot opt source destination -1 fail2ban-yunohost tcp -- anywhere anywhere multiport dports http,https -2 fail2ban-nginx tcp -- anywhere anywhere multiport dports http,https -3 fail2ban-dovecot tcp -- anywhere anywhere multiport dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -4 fail2ban-sasl tcp -- anywhere anywhere multiport dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -5 fail2ban-ssh tcp -- anywhere anywhere multiport dports ssh - -Chain FORWARD (policy ACCEPT) -num target prot opt source destination - -Chain OUTPUT (policy ACCEPT) -num target prot opt source destination - -Chain fail2ban-dovecot (1 references) -num target prot opt source destination -1 RETURN all -- anywhere anywhere - -Chain fail2ban-nginx (1 references) -num target prot opt source destination -1 RETURN all -- anywhere anywhere - -Chain fail2ban-sasl (1 references) -num target prot opt source destination -1 RETURN all -- anywhere anywhere - -Chain fail2ban-ssh (1 references) -num target prot opt source destination -1 RETURN all -- anywhere anywhere - -Chain fail2ban-yunohost (1 references) -num target prot opt source destination -1 DROP all -- 80.215.197.201 anywhere -2 RETURN all -- anywhere anywhere +$ tail /var/log/fail2ban.log +2019-01-07 16:24:47 fail2ban.filter [1837]: INFO [sshd] Found 11.22.33.44 +2019-01-07 16:24:49 fail2ban.filter [1837]: INFO [sshd] Found 11.22.33.44 +2019-01-07 16:24:51 fail2ban.filter [1837]: INFO [sshd] Found 11.22.33.44 +2019-01-07 16:24:54 fail2ban.filter [1837]: INFO [sshd] Found 11.22.33.44 +2019-01-07 16:24:57 fail2ban.filter [1837]: INFO [sshd] Found 11.22.33.44 +2019-01-07 16:24:57 fail2ban.actions [1837]: NOTICE [sshd] Ban 11.22.33.44 +2019-01-07 16:24:57 fail2ban.filter [1837]: NOTICE [recidive] Ban 11.22.33.44 ``` -Here, Ip adress `80.215.197.201` is banned in the `fail2ban-yunohost` rule. -To unblock: +Here, the IP `11.22.33.44` was banned in the `sshd` and `recidive` jails. + +Then unban the IP with the following commands : ```bash -iptables -D rule_name entry_number +$ fail2ban-client set sshd unbanip 11.22.33.44 +$ fail2ban-client set recidive unbanip 11.22.33.44 ``` -For intance: -```bash -iptables -D fail2ban-yunohost 1 -``` \ No newline at end of file diff --git a/fail2ban_fr.md b/fail2ban_fr.md index 8cad148e..cac68680 100644 --- a/fail2ban_fr.md +++ b/fail2ban_fr.md @@ -1,57 +1,32 @@ # Fail2ban -Pour diverses raisons, il peut arriver qu’une adresse IP ait été blacklistée. Si vous souhaitez accéder à votre serveur depuis cette IP, il faudra la débloquer. +Fail2Ban est un logiciel de prévention des intrusions qui protège les serveurs informatiques contre les attaques de brute-force. Il surveille certains journaux et bannira les adresses IP qui montrent un comportement de brute-forcing. -## Débloquer une IP +En particulier, Fail2ban surveille les tentatives de connexion SSH. Après 5 tentatives de connexion échouées sur SSH, Fail2ban banniera l'IP de se connecter via SSH pendant 10 minutes. Si cette adresse récidive plusieurs fois, elle peut être bannie pendant une semaine. -Tout d’abord on affiche le listing de toutes les règles iptables avec la commande `iptables -L --line-numbers` : +## Débannir une IP + +Pour débloquer une IP de fail2ban, vous devez d'abord accéder à votre serveur par un moyen quelconque (par exemple à partir d'une autre IP que celle bannie). + +Ensuite, regardez le journal de fail2ban pour identifier dans quelle 'prison' (jail) l'IP a été bannie : ```bash -root@beudi:~# iptables -L --line-numbers -Chain INPUT (policy ACCEPT) -num target prot opt source destination -1 fail2ban-yunohost tcp -- anywhere anywhere multiport dports http,https -2 fail2ban-nginx tcp -- anywhere anywhere multiport dports http,https -3 fail2ban-dovecot tcp -- anywhere anywhere multiport dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -4 fail2ban-sasl tcp -- anywhere anywhere multiport dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s -5 fail2ban-ssh tcp -- anywhere anywhere multiport dports ssh - -Chain FORWARD (policy ACCEPT) -num target prot opt source destination - -Chain OUTPUT (policy ACCEPT) -num target prot opt source destination - -Chain fail2ban-dovecot (1 references) -num target prot opt source destination -1 RETURN all -- anywhere anywhere - -Chain fail2ban-nginx (1 references) -num target prot opt source destination -1 RETURN all -- anywhere anywhere - -Chain fail2ban-sasl (1 references) -num target prot opt source destination -1 RETURN all -- anywhere anywhere - -Chain fail2ban-ssh (1 references) -num target prot opt source destination -1 RETURN all -- anywhere anywhere - -Chain fail2ban-yunohost (1 references) -num target prot opt source destination -1 DROP all -- 80.215.197.201 anywhere -2 RETURN all -- anywhere anywhere +$ tail /var/log/fail2ban.log +2019-01-07 16:24:47 fail2ban.filter [1837]: INFO [sshd] Found 11.22.33.44 +2019-01-07 16:24:49 fail2ban.filter [1837]: INFO [sshd] Found 11.22.33.44 +2019-01-07 16:24:51 fail2ban.filter [1837]: INFO [sshd] Found 11.22.33.44 +2019-01-07 16:24:54 fail2ban.filter [1837]: INFO [sshd] Found 11.22.33.44 +2019-01-07 16:24:57 fail2ban.filter [1837]: INFO [sshd] Found 11.22.33.44 +2019-01-07 16:24:57 fail2ban.actions [1837]: NOTICE [sshd] Ban 11.22.33.44 +2019-01-07 16:24:57 fail2ban.filter [1837]: NOTICE [recidive] Ban 11.22.33.44 ``` -Il nous indique que l’IP `80.215.197.201` est bannie dans la règle `fail2ban-yunohost`. -Pour la débloquer : +Ici, l'IP `11.22.33.44` a été bannie dans les jails `sshd` et `recidive`. + +Puis débanissez l'IP avec les commandes suivantes : ```bash -iptables -D nom_de_la_regle numéro_de_l_entrée +$ fail2ban-client set sshd unbanip 11.22.33.44 +$ fail2ban-client set recidive unbanip 11.22.33.44 ``` -Par exemple : -```bash -iptables -D fail2ban-yunohost 1 -``` From b49e1f5a980ff66b2fa9879ee2e364db2ff56924 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 7 Jan 2019 16:59:07 +0100 Subject: [PATCH 6/6] Add note about fail2ban at bottom of SSH page --- ssh.md | 4 +++- ssh_fr.md | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ssh.md b/ssh.md index aaf2bf12..a2425bcd 100644 --- a/ssh.md +++ b/ssh.md @@ -88,4 +88,6 @@ yunohost user ssh list-keys ## Security and SSH -See the dedicated page [Security & SSH](security_en). +N.B. : `fail2ban` will ban your IP for 10 mimutes if you perform 5 failed login attempts. If you need to unban the IP, have a look at the page about [fail2ban](/fail2ban) + +A more extensive discussion about security & SSH can be found on the [dedicated page](security_en). diff --git a/ssh_fr.md b/ssh_fr.md index ee12deb4..669a2b02 100644 --- a/ssh_fr.md +++ b/ssh_fr.md @@ -85,4 +85,6 @@ yunohost user ssh list-keys ## SSH et sécurité -Voir la page dédiée à la [sécurité](security_fr). +N.B. : `fail2ban` banniera votre IP pour 10 minutes si vous échouez plus de 5 fois à vous identifier. Pour débannir une IP, vous pouvez regarder la page sur [fail2ban](/fail2ban_fr) + +Une discussion plus complète de la sécurité et de SSH peut être trouvée sur [la page dédiée](security_fr).