https pour autres ports ou services ex Geneweb – stunnel4

geneweb https stunnel4

Si vous avez une application avec un protocole ne supportant pas SSL, la solution est de l’encapsuler dans un tunnel SSL.
Bien entendu, il s’agit là d’un exemple, qui fonctionne chez-moi, n’hésitez pas à améliorer.

Geneweb en https

Depuis que mon serveur est en https, geneweb restait en http. Geneweb se lance sur mon serveur en service (il est son propre serveur) sur un port dédié. Une des solutions aurait été de l’installer sur /var/www/ avec un script CGI… Ce que je ne souhaitais pas.
Donc mon exemple s’applique à Geneweb, mais en cherchant sur le web, vous trouverez comment encapsuler d’autres protocoles tels que smtp, pop, vpn, imap…
Habituellement, on se connecte sur Geneweb en mode service sur le port 2317 (http://leserveur.net:2317) donc pas en https…

Voyons comment procéder…

sur Ubuntu 16.04 server

Geneweb et Stunnel

Installer Stunnel4

sudo apt-get install stunnel4

On se place dans le répertoire et on se positionne en Root, sinon tapez « sudo » devant chaque ligne.

cd /etc/stunnel
sudo -s

On génère les clés. On peut faire simple avec:

openssl req -new -x509 -nodes -days 365 -out stunnel.pem -keyout stunnel.pem #dans ce cas il faudra en tenir compte lors de la création du fichier « stunnel.conf »

Personnellement, j’ai procédé comme suit:

openssl genrsa -out cle-serveur.key 2048

Signature de la demande de certificat CSR.

openssl req -new -key cle-serveur.key -out demande-certif.csr

Le certificat auto-signé pour un an.

openssl x509 -req -days 365 -in demande-certif.csr -signkey cle-serveur.key -out cert-server.crt

On combine le certificat et la clé dans un même fichier.

cat cleserveur.key > server.pem && cat certserver.crt >> server.pem

On modifie les permissions.

chmod 0600 cert-server.crt cle-serveur.key server.pem

Ensuite je crée le fichier de configuration « stunnel.conf » dans /etc/stunnel/

« ; » signifie que c’est en commentaire, vous pouvez donc « fignoler » la configuration. Je n’ai pas tout traduit par paresse, mais c’est assez transparent.
Utilisez VI, ou nano, ou autre, selon vos habitudes, ici je vais utiliser nano

nano stunnel.conf

Ci-dessous mon fichier stunnel.conf

; **************************************************************************
; * Options générales                                                         *
; **************************************************************************
; Il est recommandé de changer les privilèges utilisateur et groupe
;setuid = stunnel4
;setgid = stunnel4
; un chroot pour un peu plus de sécurité
;chroot = /var/lib/stunnel4/
; Le fichier PID sera créé dans le chroot
;pid = /var/run/stunnel.pid
; Utile de mettre dans les logs pour suivre en cas de bug
foreground = yes
debug = info
output = /var/log/stunnel4/stunnel.log
; Enable FIPS 140-2 mode if needed for compliance
;fips = yes
; **************************************************************************
; * Service defaults may also be specified in individual service sections  *
; **************************************************************************
; Enable support for the insecure SSLv3 protocol
options = -NO_SSLv3
; These options provide additional security at some performance degradation
options = SINGLE_ECDH_USE
options = SINGLE_DH_USE
; **************************************************************************
; * Include all configuration file fragments from the specified folder     *
; **************************************************************************
;include = /etc/stunnel/conf.d
; **************************************************************************
; * Service definitions (remove all services for inetd mode)               *
; **************************************************************************
[geneweb]
accept = 22317
connect = 2317
cert=/etc/stunnel/server.pem
key=/etc/stunnel/cle-serveur.key

On modifie l’utilisateur et le groupe.

cd ..
chown -Rf stunnel4:stunnel4 stunnel/

Maintenant nous allons activer stunnel

nano /etc/default/stunnel4

Modifiez l’option suivante comme ci-dessous :

ENABLED=1

On redémarre Stunnel

/etc/init.d/stunnel4 stop
/etc/init.d/stunnel4 start

ou plus simplement

/etc/init.d/stunnel4 restart

Connexion à Geneweb en https

Sur cette exemple vous pourrez vous connecter sur Geneweb en https avec l’adresse suivante sur votre navigateur:
https://www.votre-verveur.fr:22317

Si vous utilisez iptables ou autre pare-feux, n’oubliez pas de le modifier et/ou si vous êtes auto-hébergé modifiez aussi la redirection de ports sur votre box….

Si vous avez déjà des certificats Let’s Encrypt, je pense que vous pouvez les utiliser en modifiant le fichier stunnel.conf, j’avoue ne pas avoir creusé la question puisque j’informe ceux que j’autorise à se connecter qu’ils doivent accepter le certificat lors du message d’alerte de leur navigateur.

https sous Apache – Même à l’école je n’ai jamais eu un A

https sur serveur unbuntu facile

Depuis fin décembre le blog est enfin en accès https… Je devais le faire aux vacances de Pâques 2016, j’avais repoussé à juillet, puis aux vacances de la Toussaint.

Oui, je suis un fervent adepte de la procrastination, je suis de ceux qui remettent au sur-lendemain dans l’espoir qu’un autre le fera demain. Mais là, je dois me rendre à l’évidence, jamais personne ne le fera à ma place. Je l’ai donc fait entre Noël et le Jour de l’An.

Une fois fini, je fais un petit test sur SSL Server Test… Et là, j’ai un A!
Certains diront, et à raison, Let’s Encrypt c’est pas non plus le top du top… Ok, mais m@rd@ alors! P#tain j’ai un A! Même à l’école j’ai jamais eu un A, alors laissez-moi savourer ce A.
Je vous mets la capture d’écran pour me la péter vous montrer et ensuite on passe à la configuration.

https Lets Encrypt apache.png
Ubuntu server 16.04 sous apache

 

https sous apaches avec Let’s Encrypt

Je commence par installer « git » sur /opt/

 

 

sudo -s
apt-get install git
git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt --depth=1

→ « sudo -s » Je ne sais pas combien de sudo je vais devoir taper, sans doute plus de trois, alors « sudo -s »
→ « –depth=1 » Je ne souhaite pas récupérer tout l’historique du site.

 

 

Générer les certificats

 

/opt/letsencrypt/letsencrypt-auto --apache -d domaine.fr -d www.domaine.fr

Si vous avez plusieurs domaines, sinon vous pouvez faire simplement:

/opt/letsencrypt/letsencrypt-auto

Configurer le VirtualHost pour l’accès https

Allez dans /etc/apache2/sites-available et modifier les VirtualHost

cd /etc/apache2/sites-available
nano votredomaineSSL.fr 

La configuration que j’ai mise

 

<VirtualHost *:443>
   ...
      SSLProtocol -ALL -SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2
      SSLHonorCipherOrder On
      SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS

      SSLEngine on
      SSLCertificateFile /etc/letsencrypt/live/domaine.fr /fullchain.pem
      SSLCertificateKeyFile /etc/letsencrypt/live/domaine.fr /privkey.pem
   ...
</VirtualHost>

 

Configurer le VirtualHost http pour une redirection https

cd /etc/apache2/sites-available
nano votredomaine.fr

La configuration que j’ai mise

 

<VirtualHost *:80>
...
      RewriteEngine on
      RewriteRule ^ https://www.chispa.fr%{REQUEST_URI} [L,QSA,R=permanent]
...
</VirtualHost>

 

Renouvellement du certificat

ATTENTION, le certificat n’est valable que 90 jours. On peut le renouveler avec la commande:

 

/opt/letsencrypt/letsencrypt-auto --apache --renew-by-default -d domaine.fr -d www.domaine.fr

Le mieux est de rendre automatique le renouvellement, heureusement Erika Heidi a créer un script pour nous, il s’agit de le-renew.sh
Je l’ai récupéré, rendu exécutable et mis dans la crontab

 

 

curl -L -o /usr/local/sbin/le-renew http://do.co/le-renew
chmod +x /usr/local/sbin/le-renew
crontab -e
0 6 * * 1 /usr/local/sbin/le-renew domaine.fr >> /var/log/le-renew.log

Chaque lundi à 6:00, la validité du certificat en question sera vérifié, s’il est toujours valable, au cas contraire il demandera le renouvellement.

Bon, normalement en bon « copiteur » vous aurez un A, et si en plus vous améliorez, je ne vous en parle même pas! Un A+ ou A++.

 

Effacer définitivement la mémoire ram et swap – secure-delete

effacer ram et swapsVous perdez votre ordinateur portable, vous êtes cambriolé et on vous vole votre PC… Vous avez chiffré vos disques ou partitions, c’est déjà une bonne protection pour vos données personnelles, contre l’usurpation d’identité et autres malveillances.

Poussez la protection un peu plus loin… Vous êtes paranoïaque, vous avez sans doute raison, quelqu’un d’aussi pointu que votre niveau de parano peut aller fouiller dans la RAM (mémoire vive), le swap, les clusters du/des disque(s)…

Quelques pistes.

« secure-delete » comporte quatre outils (SRM, SMEM, SFIL et SSWAP), ces outils font par défaut 38 passes sur un cluster…

smem (Secure Memory Wiper) supprime les données dans la RAM.

smem

sswap (Secure Free Space Wiper) permet de faire la même chose que smem mais pour le swap, voir plus bas sswap.

srm (Secure remove) permet de supprimer de manière sécurisée des fichiers ou des répertoires de vos disques durs de façon définitive… En effet avec la commande rm les données supprimées sont récupérables.

srm nom_du_fichier
ou
srm -r nom_du_répertoire

sfill (Secure Free Space Wiper) pour effacer toutes les traces conservées dans l’espace libre des disques durs sans formater les disques durs.

sfill /répertoire

Retour sur la commande sswap. Avant de l’utiliser, il faut démonter la partition swap.
Vous ne savez pas où elle se trouve :

sudo fdisk -l
(…)
Périphérique Amorçage     Start       Fin  Secteurs   Size Id Type
/dev/sda1                  2048 207077375 207075328  98,8G  7 HPFS/NTFS/exFAT
/dev/sda2             812548094 976771071 164222978  78,3G  5 Étendue
/dev/sda3    *        226609152 812546651 585937500 279,4G 83 Linux
/dev/sda5             812548096 970024959 157476864  75,1G 83 Linux
/dev/sda6             970027008 976771071   6744064   3,2G 82 partition d'échange Linux / Solaris
(...)

Dans notre exemple il s’agit de (/dev/sda6), à vous d’ajuster le « /dev/sdxx »
Ensuite, il faut la désactiver :

sudo swapoff /dev/sda6

Puis on peut nettoyer avec la commande sswap :

sudo sswap /dev/sda6

Pour finir, il faut réactiver le swap :

sudo swapon /dev/sda6

A vous de créer un script qui s’exécute à la fermeture de votre session… Bien sûr ; lisez les man(s) de chaque commande.
Pour la suppression de fichiers, vous pouvez aussi « creuser » du côté de la commande « shred« … Bref, à vous de vous approprier et de partager ! 😉

Arnaque sur smartphones et à qui profite les pétitions en ligne

News et paranoDeux alertes, elles ne viennent pas de moi, mais j’en fais le relais ! Deux alertes, suivez les liens pour en être informé !

Arnaque sur smartphones
Vous, vos enfants, vos amis avez un smartphone, soudain, vous avez un message d’alerte plus ou moins similaire à l’image ci-dessous… Si vous êtes parano comme moi, vous allez réinitialiser votre téléphone et repartir de « zéro ». Si vous cliquez, vous vous retrouverez avec une facture téléphonique qui risque de dépasser l’entendement.

Pour bien comprendre, lire l’article que je souhaite relayer pour son importance (j’ai aussi pompé son image, mais il me pardonnera, j’espère).

Il s’agit d’androïde, mais on peut imaginer sur d’autres systèmes :
Sécurité des mobiles : anatomie d’une arnaque sur Android
Article très bien décrit par Philippe Macia.

arnaque_sous_android_12.jpg

À qui profitent les pétitions en ligne ?
J’ai toujours été dubitatif vis-à-vis les pétitions en ligne… Que valent les valeurs apportées à de telles signatures, certains signent parce qu’ils ont vu leurs amis des réseaux sociaux la signer, ils ont lu en diagonale, le titre plaît… Mais où est le véritable acte militant ? La pétition papier nécessite un engagement, enclenche le débat, le contact… À mon avis, 10 signatures papiers valent plus que 100 en ligne… Mais au-delà, que deviennent nos données ? Lors des pétitions en ligne, il faut mettre notre mail, nos noms et prénoms, voire notre adresse. Nos données ont une valeur… Lisez l’article :
Ce que valent nos adresses quand nous signons une pétition

Crypsetup – Chiffrer la partition var

chiffrer partition varDéplacer la partition var dans une partition chiffrée

ATTENTION! La partition « var/ » est solicitée très tôt au boot, la déplacer sans précaution sur une partition chiffrée, c’est vous assurer d’un plantage au démarrage… Sauvegardez et suivez les instructions sans sauter d’étape.

Ce billet est dans la catégorie « Serveur », mais on peut appliquer cette méthode à tout pc sous linux.

Partons d’un principe que vous ayez déjà une partition chiffrée nommée « d5 » sur laquelle vous souhaitez déplacer le dossier « var » et tout ce qui s’y trouve… Étape par étape…

Pour en savoir plus sur le chiffrement de données allez faire un tour du côté de chez Hoper que je remercie!
Chiffrement-Theorie
Chiffrement-Pratique

Donc c’est fait! Vous avez une partition chiffrée prête à accueillir votre dossier « /var/ »

Déplacer /var dans une partition chiffrée en 6 étapes

1 Créer un fichier « crypttab » dans /etc/
Mettre le nom de la partition chiffrée, le « /dev/XXX » Correspondant « none » et la méthode de chiffrement. Ici, nous prenons l’exemple qu’il s’agit du /dev/sda5… Recherchez votre « dev/ » avec la commande « sudo fdisk -l »:

# vi /etc/crypttab

Et mettre

d5   /dev/sda5    none     cipher=aes-xts-plain64,size=512

2 Rechercher UUID de la partition avec la commande « blkid »

# blkid
/dev/sda1: UUID="53ca7412-1ff7-105d-13fd-b15ab0d5" TYPE="ext4"
/dev/sda5: UUID="24fda933-44f3-30da-1947-3c4508af77ae" TYPE="swap"
/dev/mapper/d5: UUID="f254212d-9492-fab0-9220-4f5dad3c940a" TYPE="ext4"

Il s’agit de la 3ème ligne

3 Ouvrir le fichier « fstab » et rajouter à la fin:

UUID="f254212d-9492-fab0-9220-4f5dad3c940a" /var    ext4    defaults    0    0

Vérifier avec la commande df -h, vous devriez voir la ligne suivante dans la liste

# df -h
(…)
/dev/mapper/d5   650G    1,4G  382G   1% /var

Moi j’ai:
/dev/mapper/d5_unformatted   650G    1,4G  382G   1% /var
Mais ça marche très bien !

4 Vérifier les processus en cours

# ps -eaf | less

D’autres préférerons « more »

# ps -eaf | more

    Arrêter les bases de données et apaches… dans mon cas:

# /etc/init.d/mysql stop
# /etc/init.d/apache2 stop
# /etc/init.d/postgresql stop

Puis revérifier:

# ps -eaf | less

5 Copier le contenu de /var dans /d5

# cp -a /var/* /d5/

    renommer le dossier /var pour pouvoir « faire marche arrière » en cas de problème.

# mv /var /var.old

6 C’est fini, on redémarre.
Seule contrainte, il faudra mettre un clavier et un écran sur le serveur qui demandera un mot de passe au moment de monter /var, donc à chaque reboot.

# reboot

LVM et cryptsetup partitioner et chiffrer un disque dur

lvm crypsetupJ’ai mis ce billet dans la catégorie serveur, mais en réalité cela s’applique à n’importe quel PC

Vous venez d’installer un disque supplémentaire sur votre pc.

Vous souhaitez le partitionner avec LVM (logical volume management ou gestion par volumes logiques) puis chiffrer les partitions avec Cryptsetup.

Prenons ici un disque dur de 1To et que l’on souhaite faire deux partitions qu’on nommera « donnees » et « save »

Vérifier les disques montés, et éviter de se tromper de disque. 🙂
Deux commandes utiles
sudo fdisk -l
sudo df -h

Avant tout, connaître sur quel « dev » se trouve le nouveau disque.

sudo fdisk -l
(...)
Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 têtes, 63 secteurs/piste, 121601 cylindres, total 1953525168 secteurs
(...)
Le disque /dev/sdb ne contient pas une table de partitions valable
(...)

On commence par créer notre volume physique

sudo pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created

Puis on crée le groupe de volume

sudo vgcreate mvg /dev/sdb
  Volume group "mvg" successfully created

Maintenant on crée les volumes logiques (nos nouvelles partitions) :

sudo lvcreate -n donnees -L 700g mvg
  Logical volume "donnees" created
sudo lvcreate -n save -L 300g mvg
  Volume group "mvg" has insufficient free space (59267 extents): 76800 required.

Houps ! lors de la création du 2ème volume, il n’y a pas assez de place…
Solution et explication:
Il se trouve qu’il ne reste pas 300 Go de disponible mais, comme il l’indique seulement 59267 « extends ».
La taille d’un extend dépend des paramétrages utilisés lors de la création de la configuration LVM.
Par défaut, il fait des extends de 4 Mo.
Il indique donc très justement que pour créer un volume de 300 Go, il te faudrait 59267 « bouts » de 4 Mo.
  Volume group « mvg » has insufficient free space (59267 extents): 76800
Pour utiliser tout l’espace restant, le plus simple est de lui indiquer une taille en extend, dans ce cas :

sudo lvcreate -n save -l 59267 mvg 

Notez bien que ce n’est plus -L (taille) mais -l (extend), le petit l permet d’indiquer une taille directement en nombre d’extend, et pas en Mo/Go/To etc. »

Là le disque dur sous LVM est opérationnel…. Le chiffrage est un plus…

Maintenant je souhaite chiffrer les 2 partions créées, puis les monter respectivement dans « /mnt/donnees » et « /mnt/save »
Dans l’ordre: on se rend sur le répertoire /mnt, puis on crée les 2 répertoires (donnees et save).

cd /mnt
sudo mkdir donnees
sudo mkdir save

On chiffre les partitions avec cryptsetup, on y mets un type de fichier (là ext4) puis on les montes.

sudo cryptsetup -y --cipher=aes-xts-plain64 -s 512 create don /dev/mvg/donnees
sudo mkfs -t ext4 /dev/mapper/don
sudo mount /dev/mapper/don /mnt/donnees
sudo cryptsetup -y --cipher=aes-xts-plain64 -s 512 create sav /dev/mvg/save
sudo mkfs -t ext4 /dev/mapper/sav
sudo mount /dev/mapper/sav /mnt/save

Et voilà, c’est fini !

Pour « démonter » les volumes.

sudo umount /mnt/donnees
sudo cryptsetup remove don
sudo umount /mnt/save
sudo cryptsetup remove sav

Pour y accéder par la suite, à chaque démarrage il faudra taper les commandes suivantes:

sudo cryptsetup --cipher=aes-xts-plain64 -s 512 create don /dev/mvg/donnees
sudo mount /dev/mapper/don /mnt/donnees
sudo cryptsetup --cipher=aes-xts-plain64 -s 512 create sav /dev/mvg/save
sudo mount /dev/mapper/sav /mnt/save

Pour aller plus loin:
4 billets sur LVM et 2 sur le chiffrage sur le site Hoper sur l’onglet « Partage de connaissances »

GnuPG – Signature électronique – chiffrer ses mails et pièces jointes

Chiffrer et déchiffrer des mails avec GnuPGLe but de ce billet n’est pas d’être un tutoriel GnuPG (pour cela, je donnerai, plus bas, plusieurs liens) mais plutôt d’essayer d’expliquer le principe de la signature électronique et de chiffrage avec GnuPG.

Bref ! Une initiation pour débutant en m’appuyant sur une présentation que j’avais fait, vous trouverez plus bas la présentation à télécharger.

À savoir!
Lorsque vous envoyez un courriel (mail), c’est comme si vous envoyez une carte postale. Il peut être lu par tout le monde et rien ne certifie l’expéditeur (pas même l’adresse mail de l’expéditeur sur l’en-tête du message, hé oui… Mais ce sera peut-être le sujet d’un autre billet). Imaginez s’il s’agit d’un courriel confidentiel… Il ne vous viendrait pas à l’idée d’envoyer une chaude déclaration d’amour par carte postale…

En utilisant régulièrement GnuPG (GPG) ou PGP, vous pourrez signer vos messages, vérifier les signatures des courriers que vous recevrez, envoyer des messages chiffrés… D’accord, mais comment ça fonctionne?

Les principes du chiffrage de mails, ce qu’est une signature électronique, chiffrer ses mails, pièces jointes… Chiffrer des fichiers pour soi… Alors lisez la suite…

Les bases du fonctionnement des échanges de mails chiffrés avec GnuPG.

Billets de présentation sur le site de Root66.net « Chiffrer n’est pas jouer !!!« 
Fichier téléchargeable au format pdf : Initiation à GnuPG en pdf

Tout ce fait par messagerie, sauf le chiffrage et déchiffrage de fichier, alors, juste deux commandes de base

Pour chiffrer un fichier

$ gpg --output mon-fichier.odt.gpg --encrypt --recipient monmail@fai.fr mon-fichier.odt 

–output est la sortie du fichier chiffré qui se nommera mon-fichier.odt.gpg dans cet exemple
–encrypt pour le chiffrage
–recipient monmail@fai.fr pour le choix de la clé publique pour chiffrer un fichier, si c’est pour soi, c’est notre clé publique:-), nom du fichier chiffré dans cet exemeple mon-fichier.odt

Pour déchiffrer un fichier

$ gpg --output mon-fichier.odt –decrypt mon-fichier.odt.gpg

Le mot de passe de votre clé privée sera demandé !
–output est la sortie du fichier déchiffré qui se nommera mon-fichier.odt dans cet exemple
–decrypt pour déchiffrer le fichier mon-fichier.odt.gpg

Les liens pour aller plus loin :
Mini Howto en Français, mini mais il fait déjà le maximum.
GnuPG, Download, documentation etc. sur le site officiel
Ma première clé PGP, expérience de GuiGui’s show sous forme d’un tutoriel assez complet et allant à l’essentiel.
Ce qu’est Gnupg sur Wikipédia.

Changer son adresse MAC sous linux

changer son adresse MAC sous linux avec MacChangerTesté sur ubuntu 14.04

C’est quoi une adresse MAC ?

L’adresse MAC (Media Access Control address) est un identifiant, codé sur 6 octets en hexadécimales (base16). Cette adresse est censée être unique et propre à chaque carte ou périphérique réseau. Exemple d’adresse MAC : 00:1a:92:a8:55:ff

Pour en savoir plus sur ce qu’est une adresse MAC.

Pourquoi changer son adresse MAC ?

Si par exemple un serveur ou hotspots fait du filtrage MAC et vous vous êtes fait blacklister de façon incompréhensible et vous souhaitez vous reconnecter… Changer l’adresse MAC peut être une solution… C’est aussi une solution à d’autres obstacles.

Plusieurs façons de changer votre adresse MAC.

Une façon simple est de le faire à la main :

# ifconfig eth1 hw ether 00:0c:bc:b5:68:6e

Mais avec macchanger on peut faire plus…
Pour modifier l’adresse MAC nous allons faire appel au programme macchanger.
S’il n’est pas installé : apt-get install macchanger

Une fois installé, voyons les options

$ macchanger -h
GNU MAC Changer
Usage: macchanger [options] device
  -h,  --help                   Print this help
  -V,  --version                Print version and exit
  -s,  --show                   Print the MAC address and exit
  -e,  --ending                 Don't change the vendor bytes
  -a,  --another                Set random vendor MAC of the same kind
  -A                            Set random vendor MAC of any kind
  -p,  --permanent              Reset to original, permanent hardware MAC
  -r,  --random                 Set fully random MAC
  -l,  --list[=keyword]         Print known vendors
  -m,  --mac=XX:XX:XX:XX:XX:XX
       --mac XX:XX:XX:XX:XX:XX  Set the MAC XX:XX:XX:XX:XX:XX

Avant de détailler les options… de quelle interface réseau souhaitez-vous modifier l’adresses MAC ?

– Listez avec « ifconfig » vous verrez (ethX pour les filaires, wlanX pour les wifi) et leur adresse MAC se trouve après Hwaddr.
Pour l’exemple nous allons utiliser eth1.

– Connaître l’adresse MAC permanente et courante de eth1 ainsi que le fabriquant.

$ macchanger -s eth1
Current MAC:   00:0c:bc:b5:68:6e (Iscutum)
Permanent MAC: 00:1a:92:a8:55:ff (Asustek Computer Inc.)

La première ligne est l’adresse que j’ai mis plus haut, la deuxième est celle d’origine.

Les commandes suivantes doivent être lancées avec les droits « root » (sauf l’option -l). Soit vous optez pour « sudo » ou « sudo -s« 

Changer l’adresse MAC sans changer le fabricant. En effet les trois premiers octets de l’adresse MAC identifient le fabricant (pas tout à fait, je vous laisse lire wikipédia, si le sujet vous intéresse)
Avant il faut désactiver la carte par « ifconfig down » eth1 et la réactiver ensuite avec l’option « up »

# ifconfig eth1 down
# macchanger -e eth1
Permanent MAC: 00:1a:92:a8:55:ff (Asustek Computer Inc.)
Current   MAC: 00:1a:92:a8:55:ff (Asustek Computer Inc.)
New       MAC: 00:1a:92:ad:83:0c (Asustek Computer Inc.)
# ifconfig eth1 up

– Revenir à l’adresse MAC d’origine, l’option -p

# ifconfig eth1 down
# macchanger -p eth1
Permanent MAC: 00:1a:92:a8:55:ff (Asustek Computer Inc.)
Current   MAC: 00:1a:92:ad:83:0c (Asustek Computer Inc.)
New       MAC: 00:1a:92:a8:55:ff (Asustek Computer Inc.)
# ifconfig eth1 up

– Obtenir une adresse MAC aléatoire d’un fabricant et du même genre, l’option -a

# ifconfig eth1 down
# macchanger -a eth1
Permanent MAC: 00:1a:92:a8:55:ff (Asustek Computer Inc.)
Current   MAC: 00:1a:92:a8:55:ff (Asustek Computer Inc.)
New       MAC: 00:13:1c:c9:cc:1a (Litetouch, Inc.)
# ifconfig eth1 up

– Obtenir une adresse MAC aléatoire d’un fabricant et de n’importe quel genre, l’option -A

# ifconfig eth1 down
# macchanger -A eth1
Permanent MAC: 00:1a:92:a8:55:ff (Asustek Computer Inc.)
Current   MAC: 00:1a:92:a8:55:ff (Asustek Computer Inc.)
New       MAC: 00:0c:bc:b5:68:6e (Iscutum)
# ifconfig eth1 up

– Obtenir une adresse totalement aléatoire, option -r

# ifconfig eth1 down
# macchanger -r eth1
Permanent MAC: 00:1a:92:a8:55:ff (Asustek Computer Inc.)
Current   MAC: 00:1a:92:a8:55:ff (Asustek Computer Inc.)
New       MAC: 5c:96:67:da:37:81 (unknown)
# ifconfig eth1 up

– Attribuer une adresse MAC manuellement, option –mac
on va attribuer l’adresse : 00:0c:bc:b5:68:6e
Cette méthode correspond à la façon de faire à la main dit en début de billet.

# ifconfig eth1 down
# macchanger --mac=00:0c:bc:b5:68:6e eth1
Permanent MAC: 00:1a:92:a8:55:ff (Asustek Computer Inc.)
Current   MAC: 00:1a:92:a8:55:ff (Asustek Computer Inc.)
New       MAC: 00:0c:bc:b5:68:6e (Iscutum)
# ifconfig eth1 up

– Pour lister les vendeurs, option –list
ex. : listons les adresse mac de  Asustek

# macchanger --list=Asustek
Misc MACs:
Num    MAC        Vendor
---    ---        ------
3148 - 00:0c:6e - Asustek Computer Inc.
3716 - 00:0e:a6 - Asustek Computer Inc.
4364 - 00:11:2f - Asustek Computer Inc.
4533 - 00:11:d8 - Asustek Computer Inc.
5041 - 00:13:d4 - Asustek Computer Inc.
5583 - 00:15:f2 - Asustek Computer Inc.
5902 - 00:17:31 - Asustek Computer Inc.
(...)

Script pour changer d’adresse à chaque démarrage

– Changer son adresse MAC à chaque démarrage.
Choisissez votre carte dont vous souhaitez modifier l’adresse MAC ainsi que l’option.
Dans cet exemple on continue avec la carte eth1 et on va choisir l’option -r pour avoir une nouvelle adresse MAC aléatoire à chaque démarrage.
Bien-sûr, vous pouvez modifier plusieurs cartes dans ce même script, je le montre en commentaire #
Facile, on va créer un script avec les commandes qu’on a vu ci-dessus.
Dans votre éditeur de texte favori écrivez :

#!/bin/bash
# Désactiver la/les interface(s) réseaux
# ifconfig eth0 down
ifconfig eth1 down
# ifconfig wlan0 down
# ifconfig wlan1 down
# Générer une adresse MAC aléatoire pour le/les interface(s) réseaux
# /usr/bin/macchanger -r eth0
/usr/bin/macchanger -r eth1
# /usr/bin/macchanger -r wlan0
# /usr/bin/macchanger -r wlan1
# Réactiver la/les interface(s) réseaux
# ifconfig eth0 up
ifconfig eth1 up
# ifconfig wlan0 up
# ifconfig wlan1 up

– Enregistrez sous… par exemple monmacchanger.sh
– placez-le dans /etc/init.d/
– Placez-vous sur /etc/init.d/
– Rendez-le exécutable

# chmod +x monmacchanger.sh

Autoriser le script à chaque démarrage

# update-rc.d monmacchanger.sh defaults 15

C’est fini, maintenant à chaque démarrage la/les interface(s) réseau(x) aura/auront une nouvelle adresse MAC.

Sécuriser un accès ssh sur un serveur

Sécurisé un accès ssh sur un serveurCréer un double accès ssh

L’idée de départ était de modifier le port d’écoute du ssh (Secure SHell) « port 22 » pour mettre, par exemple, 6721 et interdire la connexion en « root », soit:

vi /etc/ssh/sshd_config

Et modifier les 2 linges suivantes « Port 22 » et « PermitRootLogin yes » comme suit:

Port 6721
PermitRootLogin no

Vous pouvez vérifier avec la commande suivante:

grep Port /etc/ssh/sshd_config
#Port 22
Port 6721

Un ami, Emile C., pour ne pas le nommé m’a dit:

puisque tu te connectes toujours du même pc local et du même pc distant, pourquoi ne ferais-tu pas un double ssh avec restriction sur ip?

C’est donc parti pour un double ssh.

– On va créer un lien symbolique appelé « sshd_exterieur »
– Créer un fichier de configuration appelé « sshd_config_exterieur »
– Modifier ce fichier de configuration.

ln -s /usr/sbin/sshd /usr/sbin/sshd_exterieur
cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_exterieur
vi /etc/ssh/sshd_config_exterieur

Mettre le port à 6722 et « UsePAM no »
Voyons les différences entre les deux fichiers:

sdiff -s sshd_config sshd_config_exterieur
Port 6721 | Port 6722
UsePAM yes | UsePAM no

pour un démarrage lors du boot! Dans /etc/rc.local ajouter ceci :

/usr/sbin/sshd_exterieur -f /etc/ssh/sshd_config_exterieur 2>&1

Modifiez votre iptables pour accepter les deux connexions.

 

-A INPUT -p tcp -m state --state NEW -m tcp --dport 6721 --source 192.168.1.21 -j ACCEPT #adaptez avec votre ip locale
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6722 --source 88.224.XXX.XX -j ACCEPT #adaptez avec votre ip distante

– Ajouter un service sshd_exterieur surveillé par logwatch tous les jours :

 

 

/usr/share/logwatch/default.conf/services/sshd_exterieur.conf
/usr/share/logwatch/scripts/services/sshd_exterieur

– Rebootez votre serveur et vérifier avec la commande suivante:

 

 

ps -ef | grep sshd | grep -v grep

Pensez aussi à modifier votre routeur! 🙂
Merci Emile C.!

 

Fail2ban – Bloquer les requetes phpmyAdmin w00tw00t et dos avec mod_evasive

Fail2Ban bloquer les requêtesFail2ban ou comment bloquer les requêtes phpmyAdmin w00tw00t et dos avec mod_evasive

Élément essentiel pour sécuriser son serveur, Fail2ban permet d’éviter des intrusions via force-brute. Il se charge d’analyser les logs des services installés et bannit automatiquement et pour une durée déterminée un hôte via iptables en cas d’échecs de connexion après X tentatives.

Installer Fail2ban:

sudo apt-get install fail2ban

Par défaut, Fail2ban propose déjà plusieurs filtres pré-configurés. On retrouve les filtres dans « /etc/fail2ban/filter.d/ ».
Le fichier de configuration où l’on peut spécifier pour chaque filtre le nombre d’essai avant le bannissement et le temps de bannissement, est: /etc/fail2ban/jail.conf

En plus des filtres existants, on peut ajouter des filtres pour se protéger des requêtes excessives sur phpmyadmin ainsi que bloquer les attaques w00tw00t (fruit d’un logiciel de scanning « DFind » utilisé par des kiddies) et DOS et autres, ici, nous verrons les 3 que je viens de citer.

1 – Fail2ban contre les attaques sur phpmyadmin
Créez un nouveau filtre dans « /etc/fail2ban/filter.d »

sudo nano /etc/fail2ban/filter.d/apache-phpmyadmin.conf

et copiez:

[Definition]
docroot = /var/www
badadmin = PMA|phpmyadmin|myadmin|mysql|mysqladmin|sqladmin|mypma|admin|xampp|mysqldb|mydb|db|pmadb|phpmyadmin1|phpmyadmin2|administrator|d$
failregex = [[]client <HOST>[]] File does not exist: %(docroot)s/(?:%(badadmin)s)
ignoreregex =

Et enregistrez.
Dans le fichier /etc/fail2ban/jail.conf ajoutez à la fin:

[apache-phpmyadmin]
enabled = true
port = http,https
filter = apache-phpmyadmin
logpath = /var/log/apache*/*error.log
maxretry = 3

2 – Fail2ban et protection contre les requêtes w00tw00t

 

sudo nano /etc/fail2ban/filter.d/apache-w00tw00t.conf

Copiez:

 

 

[Definition]
failregex = ^<HOST> -.*"GET \/w00tw00t\.at\.ISC\.SANS\.DFind\:\).*".*
ignoreregex =

Dans /etc/fail2ban/jail.conf copiez:

 

 

[apache-w00tw00t]
enabled = true
port = 80,443
action = %(action_mwl)s
filter = apache-w00tw00t
logpath = /var/log/apache*/*error.log
maxretry = 1

3 – Fail2ban contre les DOS avec mod_evasive (source Linux magazine, hors-série N°66)
Installation mod_evasive

 

 

sudo apt-get install libapache2-mod-evasive

Créer un répertoire pour stocker les informations liées aux attaques et préciser les propriétés du répertoire.

 

 

sudo mkdir /var/log/apache2/mod_evasive
sudo chown www-data.www-data /var/log/apache2/mod_evasive

Configurer apache

 

 

sudo nano /etc/apache2/conf.d/evasive

et collez:

 

 

DOSHashTableSize 3097
# pas plus de 5 pages toutes les 2 secondes
DOSPageCount 5
DOSPageInterval 2
# Pas plus de 100 requête par seconde (image, CSS…)
DOSSiteCount 100
DOSSiteInterval 1
# Bloquer le client pendant 10 secondes
DOSBlockingPeriod 10
# Dossier contenantles IP blacklistées
DOSLogDir "/var/log/apache2/mod_evasive"

Puis recharger la configuration

 

 

sudo service apache2 reload

Créez le filtre

 

 

sudo nano /etc/fail2ban/filter.d/apache-modevasive.conf

copiez:

 

 

[Definition]
failregex = ^\[[^\]]*\]\s+\[error\]\s+\[client <HOST>\] client denied by server configuration:\s
ignoreregex =

Dans /etc/fail2ban/jail.conf copiez:

 

 

[apache-modevasive]
enabled = true
filter&nbsp; = apache-modevasive
action = iptables-allports[name=apache-modevasive]
logpath = /var/log/apache*/*error.log
bantime = 60
bantime = 3600
maxretry = 10

FIN.
Si vous avez d’autres suggestions ou améliorations, je suis preneur…