Archives pour la catégorie ‘Système’

How to install PSAD Intrusion Detection on Ubuntu 16.04 LTS server

10/12/2019 Comments off


This guide is based on various community forum posts.

This guide is intended as a relatively easy step by step guide to:

  • Install CipherDyne PSAD Intrusion Detection and Log Analysis with iptables on Ubuntu 12.04 LTS or later.
  • psad is a collection of three lightweight system daemons that run on Linux machines and analyze iptables log messages to detect port scans and other suspicious traffic.
  • From version 2.2 it also offers full IPv6 support. 


  • Tested on Ubuntu 12.04 LTS – 16.04 LTS server.
  • Should work on most Ubuntu/Debian based ditro’s.

1. Download and install the latest version of PSAD.

  • Download and install the latest version from the Cipherdyne website.
  • Visit the CipherDyne PSAD download page and select the latest source tar archive, as of writing this the latest version is PSAD 2.4.3
  • To download and install the latest version open a Terminal and enter the following :
sudo su
mkdir /tmp/.psad
cd /tmp/.psad
tar -zxvf psad-2.4.3.tar.gz
cd psad-2.4.3
cd /tmp
rm -R .psad


2. Edit the PSAD configuration file. 

  • Three main settings need to be set in the PSAD configuration file before we can complete the install, edit the others as required.
  • open a Terminal Window and enter :
vi /etc/psad/psad.conf
  • EMAIL_ADDRESSES – change this to your email address.
  • HOSTNAME – this is set during install – but double check and change to a FQDN if needed.
  • ENABLE_AUTO_IDS – set this to Y if you could like PSAD to take action – read configuration instructions before setting this to Y.
  • ENABLE_AUTO_IDS_EMAILS – set this to Y if you would like to receive email notifications of intrusions that are detected.

3. Add iptables LOG rules for both IPv4 and IPv6.

  • For an explanation of this step click here.
  • Add the following iptables policies :
iptables -A INPUT -j LOG
iptables -A FORWARD -j LOG
ip6tables -A INPUT -j LOG
ip6tables -A FORWARD -j LOG

4. Reload and update PSAD.

  • To restart, update the signature file and reload PSAD to complete the install open a Terminal Window and enter :
psad -R
psad --sig-update
psad -H
  • To check the status of PSAD, open a Terminal Window and enter :
psad --Status

Lire la suite…

How to force ssh login via public key authentication

10/12/2019 Comments off

Source: xmodulo

There is ongoing debate on the pros and cons of using passwords versus keys as ssh authentication methods. A main advantage of key authentication is that you can be protected against brute-force password guessing attacks. However, requiring a private key for ssh access means that you have to store the key somewhere on client system, which can be another avenue of attack.

Still, one can argue that the ramification of a cracked password is more significant than a compromised private key, because any single password tends to be used for multiple hosts and services, while the validity of a given private key is generally limited to a specific ssh server.

If you are using openssh, you can flexibly enable or disable password authentication and key authentication. Here is how to disable ssh password authentication so that you can force ssh login via public key only.

NOTE: This guide is about the SSH server side configuration for preventing password authentication and forcing key authentication. I assume that you already set up key authentication on the client side, so you can log in to SSH via key authentication (without using password). Before proceeding with the rest of this tutorial, make sure to verify this key authentication works. Otherwise, you may lose SSH access while testing this tutorial. So be careful!

Open sshd configuration file, and add the following line (or uncomment it if it’s commented out).

$ sudo vi /etc/ssh/sshd_config
PasswordAuthentication no

Make sure that you have the following in /etc/ssh/sshd_config, in order to allow private/public key authentication.

RSAAuthentication yes
PubkeyAuthentication yes

Finally, reload ssh server configuration to make the change effective.

$ sudo /etc/init.d/ssh reload

The above setting will disable ssh login via password, system-wide. If what you want is to disable ssh password login for individual users, you can do the following.

If you want to disable ssh password authentication for specific users only, add the following « Match User » block at the end of sshd config file.

Match User alice,bob,john
PasswordAuthentication no

If you want to disable ssh password login for specific Linux group(s), put « Match Group » block at the end of sshd config file. For example, to disable ssh password login for all users belonging to « sudoers » group:

Match Group sudoers
PasswordAuthentication no

If you want to force ssh key authentication for non-root normal users, place the following « Match User » block at the end of sshd config file.

Match User !root
PasswordAuthentication no
Categories: Sécurité, Système Tags:

Append TimeStamp to file name

10/12/2019 Comments off

I need to create a shell script that appends a timestamp to existing file. I mainly use Mac OS X for development. Wanted to create the same on Mac Terminal.

Here are some basics on date command.


date -- display or set date and time

date [-ju] [-r seconds] [-v [+|-]val[ymwdHMS]] ... [+output_fmt]date [-jnu] [[[mm]dd]HH]MM[[cc]yy][.ss]date [-jnu] -f input_fmt new_date [+output_fmt]date [-d dst] [-t minutes_west]


Script to append date stamp to file:

Categories: Système Tags: ,

Ubuntu Linux Change Hostname (computer name)

07/12/2019 Comments off

I am a new Ubuntu Linux laptop user. I setup my computer name to ‘tom’ during installation but now I would like to change the computer name to ‘jerry’. Can you tell me how do I I remove tom and set it to jerry on Ubuntu Linux? How do I change the Ubuntu computer name from ‘ubuntu’ to ‘AvlinStar’? Can you tell me more about Ubuntu Linux change hostname command?

You can use the hostname command to see or set the system’s host name. The host name or computer name is usually at system startup in /etc/hostname file. Open the terminal application and type the following commands to set or change hostname or computer name on Ubuntu.

Display the current Ubuntu hostname

Simply type the following command:
$ hostname
Sample outputs:

Fig.01: Ubuntu Linux Show the hostname/computer name command
Fig.01: Ubuntu Linux Show the hostname/computer name command

Ubuntu change hostname command

The procedure to change the computer name on Ubuntu Linux:

  1. Type the following command to edit /etc/hostname using nano or vi text editor:
    sudo nano /etc/hostname
    Delete the old name and setup new name.
  2. Next Edit the /etc/hosts file:
    sudo nano /etc/hosts
    Replace any occurrence of the existing computer name with your new one.
  3. Reboot the system to changes take effect:
    sudo reboot

Sample outputs:

Gif 01: Ubuntu Linux Change Hostname Command Demo
Gif 01: Ubuntu change the computer name demo

How to change the Ubuntu server hostname without a system restart?

Type the following commands:
$ sudo hostname new-server-name-here
Next edit the /etc/hostname file and update hostname:
$ sudo nano /etc/hostname
Finally, edit the /etc/hosts file and update the lines that reads your old-host-name:
$ sudo nano /etc/hosts
From: old-host-name
To: new-server-name-here
Save and close the file.

Ubuntu Linux Change Hostname Using hostnamectl

Systemd based Linux distro such as Ubuntu Linux 16.04 LTS and above can simply use the hostnamectl command to change hostname. To see current setting just type the following command:
$ hostnamectl
Sample outputs:

   Static hostname: nixcraft
         Icon name: computer-laptop
           Chassis: laptop
        Machine ID: 291893e6499e4d99891c3cf4b70a138b
           Boot ID: 9fda2365b77841649e40a141fde46537
  Operating System: Ubuntu 17.10
            Kernel: Linux 4.13.0-21-generic
      Architecture: x86-64

To change hostname from nixcraft to viveks-laptop, enter:
$ hostnamectl set-hostname viveks-laptop
$ hostnamectl

Categories: Réseau, Système Tags: , , ,

Pure-FTPd et MySQL

05/12/2019 Comments off

Le logiciel pure-ftpd est l’un des serveurs FTP les plus simple à installer et configurer c’est pourquoi si vous cherchez à installer un serveur FTP rapidement sur votre serveur Linux, je ne peux que vous le recommander.
Aujourd’hui, nous allons voir comment utiliser pure-ftpd et MySQL simultanément pour permettre la séparation des tâches avec l’enregistrement des comptes utilisateurs dans la base de données et le reste du fonctionnement gérer par pure-ftpd. Le but du tutoriel n’étant pas de vous apprendre à installer et manipuler MySQL, je pars du principe que ce dernier est installé sur la même machine (ou une machine distante) que votre serveur FTP et que vous avez soit MySQL Workbench sous la main ou le client MySQL en ligne de commande pour la partie traitant des manipulations sur la base de donnée.

Installation du serveur Pure-FTPd-mysql

Pour utiliser MySQL avec votre serveur de FTP, il faut que ce dernier ai été compilé avec la commande “–with-mysql“. Heureusement pour nous, plutôt que de ce compliquer la vie à compiler les sources du serveur, nous allons directement installer le paquet tout prêt à l’usage nommé : pure-ftpd-mysql.
Même si on vous conseil d’installer “pure-ftpd” ou même qu’on vous demande de le désinstaller si vous l’avez déjà installé, dite oui pour continuer l’installation.

sudo apt install pure-ftpd-mysql

Note : Si vous avez votre serveur FTP déjà en cours de production, l’installation de cette version ne perturbera en rien vos utilisateurs et vous pouvez continuer la suite de ce tutoriel puisque le redémarrage ne sera nécessaire qu’à la fin.

Création de la Base de données

A partir de votre interface PHPMyAdmin ou du client MySQL, vous allez créer un utilisateur ainsi qu’une base de données associés à ce compte.

Création d’un compte utilisateur en requête SQL.

CREATE USER 'pureftpd' identified by 'pwdftp';

Création de la base de donnée et une table qui servira à contenir les comptes utilisateurs.


Association du compte utilisateur “pureftpd” avec la table “users” en lui attribuant les droits de lecture, écriture, mise à jour et suppression.

GRANT SELECT, INSERT, UPDATE, DELETE ON '*.pureftpd' TO 'pureftpd';

Création de la table où les utilisateurs seront enregistrés.

Id int(11) NOT NULL auto_increment PRIMARY KEY,
User varchar(32) NOT NULL default '' UNIQUE KEY,
Password varchar(64) NOT NULL default '',
Uid int(3) NOT NULL default 33,
Gid int(3) NOT NULL default 33,
Dir varchar(255) NOT NULL default '',
QuotaSize int(4) NOT NULL default 250,
ULBandwidth int(2) NOT NULL default 10,
DLBandwidth int(2) NOT NULL default 10

Avant de poursuivre, voici quelques informations sur la table et plus particulièrement sur ces champs :

  • Id : est un identifiant unique qui s’incrémente automatiquement à chaque insertion d’une ligne.
  • User : est l’identifiant qui sera utilisé lors d’une connexion.
  • Password : est le mot de passe affiché en clair. Aucune méthode de cryptage n’est appliqué !
  • Uid : C’est un entier qui permet d’identifier un compte utilisateur créer sur votre serveur Linux. J’ai mit le 33 en nombre par défaut car il s’agit de l’utilisateur “www-data” qui est automatiquement créer lorsque vous installez votre serveur Apache. Pour connaître le numéro des groupes, affichez le fichier /etc/passwd et cherchez une ligne ressemblant à “www-data:x:33:33:www-data:/var/www:/bin/sh“.
  • Gid : C’est le même principe que précédemment à savoir le groupe utilisateur qui sera associé aux fichiers lorsqu’une connexion FTP sera ouverte. Pour connaître les groupes utilisateurs vous pouvez soit chercher dans le fichier /etc/group ou alors vous les trouverez également comme dans le fichier précédent à savoir 33:33 où le premier nombre est le Uid et le second le Gid.
  • Dir : Il s’agit du chemin absolut vers lequel le client sera en mesure d’écrire. Veillez à ce qu’il est les droits en écriture dans ce dossier au moins. De plus lorsque vous indiquez le chemin dans votre requête SQL Insert, veuillez à bien faire comme ceci : /chemin/dossier/puis/nom/dossier/ avec le / marquant bien la fin du chemin sinon des erreurs surviendront lors de la connexion au serveur.
  • QuotaSize : permet de fixer une limite pour le compte de l’utilisateur qu’il ne pourra dépasser. Cette limite est exprimé en Mo et pour informations, 1Go = 1024 Mo.
  • ULBandwidth : Ce paramètre exprimé en Ko/s permet de définir la bande passante maximale en Upload (transfert du client au serveur) pouvant être atteinte par le client. Si vous mettez 0, cela sera considéré comme n’ayant aucune limite.
  • DLBandwidth : Ce paramètre exprimé en Ko/s permet de définir la bande passante maximale en Download (transfert du serveur au client) pouvant être atteinte par le client. Si vous mettez 0, cela sera considéré comme n’ayant aucune limite.

Les Fichiers de configuration de Pure-FTPd

Tous les fichiers concernant le serveur FTP se trouvent dans /etc/pure-ftpd/, les fichiers de configuration sont dans le dossier “conf” et le fichier concernant la base de donnée est dans “db“.

Contrairement aux utilisateurs que vous pouvez ajouter ou retirer sans redémarrer le serveur, lorsque vous éditez un fichier de configuration, pensez bien à recharger la configuration avec la commande suivante.

service pure-ftpd-mysql force-reload

Configuration de la connexion avec MySQL

Nous allons indiquer le chemin du fichier de configuration dans lequel se trouve les informations de connexion à notre base de données. Éditez le fichier suivant :

nano /etc/pure-ftpd/conf/MySQLConfigFile

Pour mettre le chemin du fichier de configuration que nous allons créer :


Créer le fichier de configuration MySQL

Maintenant nous allons créer le fichier de configuration /etc/pure-ftpd/db/pure-ftpd-mysql.conf qui sera utilisé pour indiquer les informations de connexion entre le serveur FTP et MySQL.

nano /etc/pure-ftpd/db/pure-ftpd-mysql.conf

Voici le contenu du fichier :

#Parametres de connexion a la base de donnee
MYSQLUser pureftpd
MYSQLPassword pwdftp
MYSQLDatabase pureftpd

#Parametres supplementaires
MYSQLPort 3306
MYSQLSocket /var/lib/mysql/mysql.sock

# Methode de cryptage du mot de passe
# Parametres possible : 'crypt', 'md5' ou 'cleartext' pour afficher le mot de passe en clair.
MYSQLCrypt cleartext

# Requetes SQL permettant a Pure-FTPd de trouver les donnees dans la base
MYSQLGetPW SELECT Password FROM users WHERE User="\L"
MySQLGetRatioUL SELECT ULRatio FROM users WHERE User="\L"
MySQLGetRatioDL SELECT DLRatio FROM users WHERE User="\L"
MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User="\L"
MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User="\L"

Une fois la création de ce fichier terminé, pensez à mettre les bons droits pour éviter que le mot de passe ne soit accessible à n’importe qui.

chmod 640 /etc/pure-ftpd/db/pure-ftpd-mysql.conf

Sécuriser les échanges avec TLS

L’un des principaux problèmes de FTP est que tous les fichiers sont envoyés sans être chiffré. Si une personne écoute le réseau, elle peut donc récupérer le contenu de vos fichiers. Nous allons donc forcer la configuration pour n’être qu’en TLS avec un certificat auto-signé.

En pré-requis, nous devons avoir le paquet openssl installé.

apt install openssl

Création du certificat

Pour commencer rendons-nous dans le dossier où stocker le certificat auto signé. Si ce dossier n’existe pas, créez le.

cd /etc/ssl/private/

Puis lançons la commande pour créer notre certificat :

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Répondez aux questions de localisation sans trop vous inquiéter car ces informations ne seront vu que par les personnes se connectant à votre FTP. Vous pouvez donc mettre de fausses informations !

Protégeons notre certificat des indiscrets :

chmod 600 /etc/ssl/private/pure-ftpd.pem

Configuration de pure-ftpd

Maintenant nous allons indiquer à pure-ftpd le comportement à adopter en éditant le fichier suivant :

nano /etc/pure-ftpd/conf/TLS

Vous pouvez entrer une des valeurs suivantes :

  • 0 : ne jamais accepter les connexions TLS
  • 1 : connexions mixe TLS ou en clair
  • 2 : connexions en TLS uniquement

Interdire les connexions anonymes

Pour interdire les connexions en anonyme, éditez le fichier /etc/pure-ftpd/conf/NoAnonymous et vérifiez la présence de “yes” pour interdire les connexions en anonyme.

Bloquer l’utilisateur dans son dossier

Pour empêcher que l’utilisateur puisse se déplacer dans les dossiers parents en cliquant sur les “..”, il faut créer un fichier /etc/pure-ftpd/conf/ChrootEveryone et ajouter le mot “yes”.

Autoriser l’utilisation de l’utilisateur www-data

Lorsque vous avez créé votre utilisateur, vous avez surement mit en UID et en GID la valeur 33 qui symbolise l’utilisateur www-data. Toutefois lorsque vous vous connectez à votre serveur vous avez surement l’erreur ci-dessous:

530 Sorry, but I can't trust you

Ce problème vient du fait que pure-ftpd n’accepte pas les UID sous un certain seuil. Par défaut ce seuil est 1000 or notre UID est 33 donc allez éditer le fichier /etc/pure-ftpd/conf/MinUID pour mettre la valeur 33.

Définir la plage de port passif

Si vous utilisez iptables, vous avez peut être ouvert déjà le port 21 pour permettre la connexion. Toutefois, cela ne suffit pas car il faut également ouvrir une plage de port lorsque le serveur est en mode “passif”. Nous allons donc configurer la plage de port à utiliser sur pure-ftpd et vous devrez indiquer la même plage de port à iptables.

nano /etc/pure-ftpd/conf/PassivePortRange

Puis entrez une plage de ports assez importante pour le cas d’une grosse utilisation de votre serveur en FTP :

50110 50210

Il ne vous reste plus qu’à redémarrer et vous aurez enfin un accès avec une sécurité iptables en place également.

Démarrer votre serveur FTP

Pour démarrer votre serveur FTP, il vous suffira d’entrer les lignes suivante pour démarrer votre serveur en tâche de fond.

service pure-ftpd-mysql restart

En savoir plus

Pour plus d’informations sur les différentes lignes et celle que je n’ai pas mise car je les considérais inutiles pour le cas présent, rendez-vous dans la doc de Pure-FTPd !

Categories: Bases de données, Réseau, Système Tags: ,