Implémentation de la sécurité - Sskiizens/DevSecOps GitHub Wiki
Maintenant que nous avons définit les différents types d'outils de sécurité, nous allons montrer comment installer quelques outils spécialisés qui vous permettront de tester la sécurité de votre application, mais également d'avoir une première approche de chaque type d'outil et de son fonctionnement. Nous ne rentrerons pas dans les détails des configurations des outils.
//
Attention, en aucun cas l'implémentation de ces outils signifie que vous avez un niveau de sécurité suffisant. Ils nécessitent d'être adaptés à votre infrastructure et configurés par des professionnels de la sécurité. L'utilisation de ces outils n'engage que vous
//
Tests de sécurité
Mise en place test SCA
Pour le code python
Nous avons mit en place un SCA de code python du nom de Bandit. L'installation se déroule de la façon suivante, on va créer un répertoire qui contient un environnement virtuel sur lequel on va installer bandit. Il faudra donc démarrer l'environnement virtuel pour lancer bandit:
mkdir bandit
cd bandit
sudo apt-get install python3-venv
python3 -m venv bandit-env
source bandit-env/bin/activate
pip3 install bandit
On peut ensuite lancer des scans sur nos fichiers/répertoires qui contiennent du python pour qu'une analyse static ai lieu:
bandit -r votre/path/appli_web/
On obtiendra alors un rapport contenant les différentes erreurs, failles... ainsi que leur criticité. Un exemple d'output sera:
Pour le Javascript
Il est plus difficile de trouver des SCA pour le JS, certains outils open-source peuvent se révéler intéressants, mais la complexité du java script fait qu'il est nécessaire de faire des configurations manuelles complexes. Un outil qui nous semble adapter est ESLint. Nous allons expliquer comment l'installer mais laisserons à chacun le soin de le configurer lui-même si il le souhaite:
cd path/appli/.../react-crud
npm install eslint --save-dev
npx eslint --init
Ces commandes permettent d'installer le module ESLint. L'installation vous demandera de répondre à plusieurs questions sur l'application que l'on souhaite analyser. Une fois l'installation réalisée, un fichier de configuration .eslintrc avec l'extension correspondant à votre choix de configuration sera créé, c’est ici qu'il faudra inscrire les configurations du SAST, il est ensuite le l’exécuter avec la commande:
npx eslint filename.js
Mise en place tests SAST
On va utiliser sonarqube pour mettre en place des tests SAST. Il existe deux façon d'installer et lancer sonarqube, on va donc montrer d'abord comment créer un serveur avec sonarqube, puis comment lancer un conteneur, ce qui est une solution beaucoup plus simple mais moins personnalisable.
Installation de Sonarqube sur serveur Ubuntu
On commence par lancer des installations et mises à jour système:
sudo apt-get update
sudo apt-get install unzip software-properties-common wget default-jdk
sudo apt-get install postgresql postgresql-contrib
On se connecte au user postgres:
su - postgres
psql
Et on va créer un user pour sonarqube:
CREATE USER sonarqube WITH PASSWORD 'root';
CREATE DATABASE sonarqube OWNER sonarqube;
GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonarqube;
\q
Puis on télécharge le paquet sonarqube que l'on place dans un path personnalisé:
mkdir /downloads/sonarqube -p
cd /downloads/sonarqube
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.9.1.zip
unzip sonarqube-7.9.1.zip
mv sonarqube-7.9.1 /opt/sonarqube
On crée le user sonarqube associé à notre appli:
adduser --system --no-create-home --group --disabled-login sonarqube
chown -R sonarqube:sonarqube /opt/sonarqube
On modifie le fichier sonar.sh:
nano /opt/sonarqube/bin/linux-x86-64/sonar.sh
On le modifie pour que:
RUN_AS_USER=sonarqube
Puis on modifie le fichier conar.properties:
nano /opt/sonarqube/conf/sonar.properties
On le modifie pour que:
sonar.jdbc.username=sonarqube
sonar.jdbc.password=kamisama123
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube
sonar.web.javaAdditionalOpts=-server
sonar.web.host=0.0.0.0
On crée le fichier sysctl.conf:
nano /etc/sysctl.conf
Dans lequel on inscrit:
sonarqube - nofile 65536
sonarqube - nproc 4096
On redémarre sa machine:
reboot
Puis on peut lancer sonarqube:
/opt/sonarqube/bin/linux-x86-64/sonar.sh start
Si vous voulez pouvoir lancer sonarqube directement depuis une commande, n'hésitez pas à ajouter a votre fichier .bashrc le path du bin du dossier sonarqube.
En se rendant dans n'importe quel navigateur, on trouve sonarqube en utilisant http://ipServer:9000
.
L'interface doit ressembler à cela:
Utilisez le login: admin``admin
pour pouvoir vous connecter et commencer à travailler avec sonarqube.
La prochaine partie consistera en l'installation d'un agent de scan sur la machine contenant le projet.
Installation Scanner sonarqube
Il faut à partir de là se place sur le client (la machine qui contient le projet/code à analyser). N'hésitez pas à suivre le lien d'installation officiel du site que vous trouverez ici, sinon vous pouvez continuer à lire.
Commencez à vous connecter à votre sonarqube via le navigateur. Je met maintenant des screens pour vous montrer comment j'ai configuré, ça sera plus compréhensible que du texte:
Vous avez sur cette page tout ce qui est nécessaire à l'installation de sonar-scanner sur votre machine. Commencez par cliquer sur le fichier download et choisissez la version Linux64-bit. Cela va vous télécharger sonar-scanner. Il faut ensuite:
sudo apt-get update
sudo apt-get install unzip
unzip sonar-*.zip
cd sonar-scanner-4.6.2.2472-linux/conf (le nom de votre fichier sera peut être différent)
nano sonar-scanner.properties
Modifié le fichier de la façon suivante:
sonar.host.url=http://ipServerSonarqube:9000
Ajoutez le dossier bin a votre Path:
cd /home/nameYourUser/
nano .bashrc
Et ajoutez la ligne suivante:
PATH="$PATH:/home/nameYourUser/Downloads/sonar-scanner-4.6.2.2472-linux/bin/"
Rendez-vous maintenant dans le dossier racine de votre projet et créez un fichier sonar-project.properties, dans mon cas:
cd /home/nameYourUser/desktop/appli_web/
nano sonar-project.properties
Et remplissez le de la manière suivante, en remplaçant par vos informations:
Et voila, maintenant lancez simplement la commande sonar-scanner
depuis votre dossier racine de projet pour lancer un scan.
Si vous vous rendez sur l'interface sonarqube sur internet, vous verrez le résultat de votre scan sur votre projet:
Et voila, un SAST fonctionnel.
Mise en place test DAST
Nous allons utiliser un DAST qui est pré-installé sur kali. C'est Nikto. Dans tous les cas, l'installation ne prend qu'une ligne. Il suffit ensuite que l'on lance des scans sur les URLs que l'on souhaite tester:
sudo apt-get install nikto
nikto -h [votreURL]
Vous aurez alors un output avec différents tests. Nikto n'est pas le meilleur DAST, mais il est open source et simple d'utilisation, il permettra donc de vous familiariser avec ce type d'outil. L'output de nikto ressemble à cela: