https://wiki.jackbot.fr/api.php?action=feedcontributions&user=Jackbot&feedformat=atomwiki jackbot - Contributions [fr]2024-03-29T07:37:50ZContributionsMediaWiki 1.39.3https://wiki.jackbot.fr/index.php?title=OpenWRT_ssh&diff=864OpenWRT ssh2023-10-21T04:32:52Z<p>Jackbot : </p>
<hr />
<div>[[Category:OpenWRT]]<br />
[[Category:Informatique]]<br />
<br />
Il faut savoir que dropbear, qui est utilisé comme client ssh sur les distribution OpenWRT, ne dispose pas des mêmes mécanismes que openssh vis à vis de l'authentification. Ainsi une commande telle que :<br />
<pre style="color: silver; background: black;"><br />
ssh -i clef utilisateur@serveur<br />
</pre><br />
<br />
Échouera si dans la configuration coté serveur le paramètre "PasswordAuthentication" a la valeur "no". Or pour bien des raisons il est intéressant de forcer la connexion en utilisant des clefs. Pour réussir tout de même à se connecter, il sera nécessaire d'installer le paquet openssh-client-utils sur la machine OpenWRT :<br />
<pre style="color: silver; background: black;"><br />
# opkg install openssh-client-utils<br />
</pre></div>Jackbothttps://wiki.jackbot.fr/index.php?title=OpenWRT_ssh&diff=863OpenWRT ssh2023-10-21T04:32:41Z<p>Jackbot : </p>
<hr />
<div>[[Category:OpenWRT]]<br />
[[Category:Informatique]]<br />
<br />
Il faut savoir que dropbear, qui est utilisé comme client ssh sur les distribution OpenWRT, ne dispose pas des mêmes mécanismes que openssh vis à vis de l'authentification. Ainsi une commande telle que :<br />
<pre style="color: silver; background: black; width: 160px;"><br />
ssh -i clef utilisateur@serveur<br />
</pre><br />
<br />
Échouera si dans la configuration coté serveur le paramètre "PasswordAuthentication" a la valeur "no". Or pour bien des raisons il est intéressant de forcer la connexion en utilisant des clefs. Pour réussir tout de même à se connecter, il sera nécessaire d'installer le paquet openssh-client-utils sur la machine OpenWRT :<br />
<pre style="color: silver; background: black;"><br />
# opkg install openssh-client-utils<br />
</pre></div>Jackbothttps://wiki.jackbot.fr/index.php?title=OpenWRT_ssh&diff=862OpenWRT ssh2023-10-21T04:30:26Z<p>Jackbot : Page créée avec « Category:OpenWRT Category:Informatique Il faut savoir que dropbear, qui est utilisé comme client ssh sur les distribution OpenWRT, ne dispose pas des mêmes mécanismes que openssh vis à vis de l'authentification. Ainsi une commande telle que : <pre style="color: silver; background: black; width: 160px;"> ssh -i clef utilisateur@serveur </pre> Échouera si dans la configuration coté serveur le paramètre "PasswordAuthentication" a la valeur "no". Or... »</p>
<hr />
<div>[[Category:OpenWRT]]<br />
[[Category:Informatique]]<br />
<br />
Il faut savoir que dropbear, qui est utilisé comme client ssh sur les distribution OpenWRT, ne dispose pas des mêmes mécanismes que openssh vis à vis de l'authentification. Ainsi une commande telle que :<br />
<pre style="color: silver; background: black; width: 160px;"><br />
ssh -i clef utilisateur@serveur<br />
</pre><br />
<br />
Échouera si dans la configuration coté serveur le paramètre "PasswordAuthentication" a la valeur "no". Or pour bien des raisons il est intéressant de forcer la connexion en utilisant des clefs. Pour réussir tout de même à se connecter, il sera nécessaire d'installer le paquet openssh-client-utils sur la machine OpenWRT</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Vid%C3%A9o_s%C3%A9curit%C3%A9&diff=861Vidéo sécurité2023-10-18T04:42:38Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]][[Category:Cryptologie]]<br />
<br />
https://invidious.fdn.fr/playlist?list=PL0dXWsCmzi96JJaz3rCZs1Iz_vYZdFywI<br />
<br />
documentation :<br />
<br />
http://colloque-cybersecu.cnrs.fr/<br />
<br />
https://gdr-securite.irisa.fr/ressources/colloque-2016/</div>Jackbothttps://wiki.jackbot.fr/index.php?title=MSI_CX61&diff=860MSI CX612023-09-03T13:45:15Z<p>Jackbot : Page créée avec « Category:InformatiqueCategory:AdministrationCategory:Matériel 200px L'ordinateur portable MSI CX61 est un de ces ordinateurs disposant de deux cartes graphiques. Une intel et une Nvidia GeForce 820M. Les pilotes adaptés à cette carte nvidia peuvent être installé avec la commande : <pre style="color: silver; background: black;"> sudo apt-get install nvidia-driver-390 </pre> Problème ce pilote n'est plus supporté p... »</p>
<hr />
<div>[[Category:Informatique]][[Category:Administration]][[Category:Matériel]]<br />
[[Fichier:MSI CX61.jpeg | 200px]]<br />
<br />
L'ordinateur portable MSI CX61 est un de ces ordinateurs disposant de deux cartes graphiques. Une intel et une Nvidia GeForce 820M. Les pilotes adaptés à cette carte nvidia peuvent être installé avec la commande :<br />
<pre style="color: silver; background: black;"><br />
sudo apt-get install nvidia-driver-390<br />
</pre><br />
<br />
Problème ce pilote n'est plus supporté par le nouveau noyau ... Pour ma part j'ai testé avec le noyau 5.4 et cela fonctionne.</div>Jackbothttps://wiki.jackbot.fr/index.php?title=TUF_Gaming_FX505DD&diff=859TUF Gaming FX505DD2023-09-03T13:38:38Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]][[Category:Administration]][[Category:Matériel]]<br />
<br />
[[Fichier:TUF Gaming FX505DD.jpeg|200px]]<br />
<br />
L'ordinateur portable Asus TUF GAming FX505DD est un de ces ordinateurs disposant de deux cartes graphiques. Une AMD Picasso/Raven 2 et une Nvidia GeForce GTX 1050.<br />
<br />
Pour faire fonctionner la carte nvidia il est nécessaire d'installer les pilotes (évidemment) mais également quelques paquets supplémentaires notamment :<br />
<br />
<pre style="color: silver; background: black;"><br />
$ sudo apt-get install linux-headers-5.19.0-1028-lowlatency<br />
$ sudo apt-get install linux-modules-nvidia-535-5.19.0-1028-lowlatency<br />
</pre><br />
<br />
Et pour finir, une fois que ces paquets sont installé et avant de redémarrer :<br />
<pre style="color: silver; background: black;"><br />
$ sudo modprobe nvidia<br />
</pre><br />
<br />
On sélectionne la carte nvidia<br />
<pre style="color: silver; background: black;"><br />
$ sudo prime-select nvidia<br />
</pre><br />
<br />
Puis on peut enfin redémarrer</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Fichier:MSI_CX61.jpeg&diff=858Fichier:MSI CX61.jpeg2023-09-03T13:37:03Z<p>Jackbot : Ordinateur portable MSI CX61</p>
<hr />
<div>== Description ==<br />
Ordinateur portable MSI CX61</div>Jackbothttps://wiki.jackbot.fr/index.php?title=TUF_Gaming_FX505DD&diff=857TUF Gaming FX505DD2023-09-03T13:36:23Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]][[Category:Administration]][[Category:Matériel]]<br />
<br />
[[Fichier:TUF Gaming FX505DD.jpeg|200px]]<br />
<br />
L'ordinateur portable Asus TUF GAming FX505DD est un de ces ordinateur disposant de deux cartes graphiques. Une AMD Picasso/Raven 2 et une Nvidia GeForce GTX 1050.<br />
<br />
Pour faire fonctionner la carte nvidia il est nécessaire d'installer les pilotes (évidemment) mais également quelques paquets supplémentaires notamment :<br />
<br />
<pre style="color: silver; background: black;"><br />
$ sudo apt-get install linux-headers-5.19.0-1028-lowlatency<br />
$ sudo apt-get install linux-modules-nvidia-535-5.19.0-1028-lowlatency<br />
</pre><br />
<br />
Et pour finir, une fois que ces paquets sont installé et avant de redémarrer :<br />
<pre style="color: silver; background: black;"><br />
$ sudo modprobe nvidia<br />
</pre><br />
<br />
On sélectionne la carte nvidia<br />
<pre style="color: silver; background: black;"><br />
$ sudo prime-select nvidia<br />
</pre><br />
<br />
Puis on peut enfin redémarrer</div>Jackbothttps://wiki.jackbot.fr/index.php?title=TUF_Gaming_FX505DD&diff=856TUF Gaming FX505DD2023-09-02T11:39:09Z<p>Jackbot : Page créée avec « Category:InformatiqueCategory:Administration 200px L'ordinateur portable Asus TUF GAming FX505DD est un de ces ordinateur disposant de deux cartes graphiques. Une AMD Picasso/Raven 2 et une Nvidia GeForce GTX 1050. Pour faire fonctionner la carte nvidia il est nécessaire d'installer les pilotes (évidemment) mais également quelques paquets supplémentaires notamment : <pre style="color: silver; background: black;"... »</p>
<hr />
<div>[[Category:Informatique]][[Category:Administration]]<br />
<br />
[[Fichier:TUF Gaming FX505DD.jpeg|200px]]<br />
<br />
L'ordinateur portable Asus TUF GAming FX505DD est un de ces ordinateur disposant de deux cartes graphiques. Une AMD Picasso/Raven 2 et une Nvidia GeForce GTX 1050.<br />
<br />
Pour faire fonctionner la carte nvidia il est nécessaire d'installer les pilotes (évidemment) mais également quelques paquets supplémentaires notamment :<br />
<br />
<pre style="color: silver; background: black;"><br />
$ sudo apt-get install linux-headers-5.19.0-1028-lowlatency<br />
$ sudo apt-get install linux-modules-nvidia-535-5.19.0-1028-lowlatency<br />
</pre><br />
<br />
Et pour finir, une fois que ces paquets sont installé et avant de redémarrer :<br />
<pre style="color: silver; background: black;"><br />
$ sudo modprobe nvidia<br />
</pre><br />
<br />
On sélectionne la carte nvidia<br />
<pre style="color: silver; background: black;"><br />
$ sudo prime-select nvidia<br />
</pre><br />
<br />
Puis on peut enfin redémarrer</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Fichier:TUF_Gaming_FX505DD.jpeg&diff=855Fichier:TUF Gaming FX505DD.jpeg2023-09-02T11:31:04Z<p>Jackbot : Ordinateur portable Asus TUF Gaming FX505D</p>
<hr />
<div>== Description ==<br />
Ordinateur portable Asus TUF Gaming FX505D</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Rsyslog&diff=854Rsyslog2023-08-06T14:37:17Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]][[Category:Administration]]<br />
<br />
Rsyslog permet de gérer les journaux d’événements, capable d'agir comme un serveur afin de récupérer les journaux des machines sur le réseau.<br />
<br />
<h1>Configuration du mode serveur</h1><br />
<br />
<h2>Configuration des protocoles et écoute des ports</h2><br />
Afin de pouvoir recevoir les messages provenant du réseau, il faut configurer le protocole utilisé ainsi que le port. Pour ce faire il faut éditer le fichier : <span style="background:#90ff77">/etc/rsyslog.conf</span> et repérer ce passage :<br />
<br />
<pre style="color: silver; background: black;"><br />
# provides UDP syslog reception<br />
module(load="imudp")<br />
input(type="imudp" port="514")<br />
<br />
# provides TCP syslog reception<br />
module(load="imtcp")<br />
input(type="imtcp" port="514")<br />
</pre><br />
<br />
Assez explicite, mais je vais tout de même détailler<br />
<pre style="color: silver; background: black;"><br />
module(load="imudp")<br />
</pre><br />
<br />
Active le module permettant d'écouter avec le protocole UDP<br />
<br />
<pre style="color: silver; background: black;"><br />
input(type="imudp" port="514")<br />
</pre><br />
<br />
Configure l'entrée pour utiliser le protocole UDP sur le port 514. Les autres lignes font la même chose pour le protocole TCP. Une fois ces lignes décommentées/ajoutées et rsyslog rechargé/redémarré, il écoutera sur le port 514 en UDP et TCP.<br />
<br />
<h2>Configuration et traitement des logs entrants</h2><br />
<br />
<h3>Les templates</h3><br />
Les [https://www.rsyslog.com/doc/v8-stable/configuration/templates.html templates] sont des points clefs de la configuration de rsyslog. La syntaxe générale est la suivante :<br />
<pre style="color: silver; background: black;"><br />
template(parameters)<br />
</pre><br />
<br />
<h3>Formatage du message</h3><br />
On peut à l'aide d'un template formater les messages entrants voici un petit exemple :<br />
<pre style="color: silver; background: black;"><br />
template(<br />
name="format"<br />
type="string"<br />
string="%TIMESTAMP:::date-rfc3339% %hostname% %syslogtag% msg : %msg%\n"<br />
)<br />
</pre><br />
La liste des différents paramètres tels que : %hostname%, %syslogtag% est consultable [https://www.rsyslog.com/doc/v8-stable/configuration/properties.html ici]<br />
<br />
<h3>Variables</h3><br />
On peut également créer des [https://www.rsyslog.com/doc/v8-stable/rainerscript/variable_property_types.html variables]<br />
<pre style="color: silver; background: black;"><br />
set $.test = replace($syslogtag, ":", "");<br />
</pre><br />
<br />
Dans cet exemple on retire le caractère ':' dans la chaîne de caractère syslogtag<br />
<br />
<h3>Emplacement des logs</h3><br />
Pour définir un emplacement spécifique pour les logs on peut créer un template du type :<br />
<pre style="color: silver; background: black;"><br />
template (<br />
name="RemoteLogs"<br />
type="string"<br />
string="/var/log/chemin/test.log"<br />
)<br />
</pre><br />
<br />
</h3>Application</h3><br />
Les templates étant définie il ne reste plus qu'a les appliquer. Pour cela il faut spécifier à quel [https://datatracker.ietf.org/doc/html/rfc5424#section-6.2.1 facility.severity] on souhaite les appliquer.<br />
<pre style="color: silver; background: black;"><br />
facility.severity_level nom_template<br />
</pre><br />
<br />
On peut également choisir d'appliquer des templates à tous les logs entrants<br />
<pre style="color: silver; background: black;">*.* ?RemoteLogs</pre><br />
<br />
Ne pas oublier d'arrêter le traitement une fois que les informations ont été écrites dans un fichier et éviter ainsi qu'ils soit également écrit dans les fichiers locaux.<br />
<pre style="color: silver; background: black;">stop</pre><br />
<br />
<h3>Récapitulatif</h3><br />
<pre style="color: silver; background: black;"><br />
template(<br />
name="format"<br />
type="string"<br />
string="%TIMESTAMP:::date-rfc3339% %hostname% %syslogtag% msg : %msg%\n"<br />
)<br />
<br />
template (<br />
name="RemoteLogs"<br />
type="string"<br />
string="/var/log/chemin/test.log"<br />
)<br />
<br />
#pour appliquer les deux templates à tous les logs<br />
*.* -?RemoteLogs;format<br />
<br />
stop<br />
</pre><br />
<br />
<br />
<h1>Configuration coté client</h1><br />
<br />
Ici ça va être facile et rapide, il suffira d'ajouter au fichier : <span style="background:#90ff77">/etc/rsyslog.conf</span><br />
<pre style="color: silver; background: black;"><br />
*.* @@192.168.100.10:514<br />
</pre><br />
<br />
Lui indiquant ainsi que tous ses logs doivent être envoyés vers l'adresse et le port indiqué. Il est cependant tout à fait possible de restreindre les logs envoyés en utilisant une syntaxe du type : <br />
<pre style="color: silver; background: black;"><br />
auth.* @@192.168.100.10:514<br />
</pre><br />
<br />
<h1>Utilisation avec Docker</h1><br />
On peut voir sur la page [[Docker logs]] comment rediriger les logs des différents conteneurs vers un serveur rsyslog. On peut utiliser une astuce pour classer proprement les logs en utilisant le paramètre syslogtag.<br />
<br />
<pre style="color: silver; background: black;"><br />
set $.chemin = replace($syslogtag, ":", "");<br />
<br />
template (<br />
name="RemoteLogs"<br />
type="string"<br />
string="/var/log/remotelogs/%$.chemin%.log"<br />
)<br />
<br />
*.* -?RemoteLogs<br />
</pre><br />
<br />
Avec cette configuration on peut alors utiliser l'option logging de docker de cette façon :<br />
<pre style="color: silver; background: black;"><br />
version: "3.7"<br />
test:<br />
image: nginx:1.22<br />
container_name: nginx<br />
ports:<br />
- "80:80"<br />
logging:<br />
driver: syslog<br />
options:<br />
syslog-address: "udp://192.168.100.10:514"<br />
tag: "conteneur_test/{{.Name}}:"<br />
</pre><br />
<br />
Ce qui aura les conséquences suivante : <br />
*créer le paramètre syslogtag ayant pour valeur : "conteneur_test/nginx:" (Notez la présence du caratère ':' qui est là pour cloturer la chaîne)<br />
*le serveur rsyslog recevra ce paramètre<br />
*il va enlever le caractère ':' et enregistrer le résultat dans la variable $.chemin<br />
*créer un fichier log en suivant le template : /var/log/remotelogs/%$.chemin%.log<br />
<br />
Résultat les logs de ce conteneurs arriveront dans :<br />
<span style="background:#90ff77">/var/log/remotelogs/conteneur_test/nginx.log</span><br />
On peut donc maintenant regrouper dans un même dossier les logs des conteneurs opérant pour le même services<br />
<br />
<h1>Utilisation générale</h1><br />
On peut toujours ajouter des logs provenant d'une autre source que Docker en ajoutant à la configuration de rsyslog les lignes suivantes :<br />
<pre style="color: silver; background: black;"><br />
template(<br />
name="format"<br />
type="string"<br />
string="netgear/%programname%: %msg%\n"<br />
)<br />
<br />
*.* @192.168.100.10:514;format<br />
</pre><br />
<br />
Ce qui peut être intéressant pour récupérer les logs de ses routeurs au même endroit.<br />
<br />
<h1>Source</h1><br />
*https://www.tecmint.com/install-rsyslog-centralized-logging-in-centos-ubuntu/<br />
*https://adamtheautomator.com/rsyslog-configuration/</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Rsyslog&diff=853Rsyslog2023-08-05T08:18:17Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]][[Category:Administration]]<br />
<br />
Rsyslog permet de gérer les journaux d’événements, capable d'agir comme un serveur afin de récupérer les journaux des machines sur le réseau.<br />
<br />
<h1>Configuration du mode serveur</h1><br />
<br />
<h2>Configuration des protocoles et écoute des ports</h2><br />
Afin de pouvoir recevoir les messages provenant du réseau, il faut configurer le protocole utilisé ainsi que le port. Pour ce faire il faut éditer le fichier : <span style="background:#90ff77">/etc/rsyslog.conf</span> et repérer ce passage :<br />
<br />
<pre style="color: silver; background: black;"><br />
# provides UDP syslog reception<br />
module(load="imudp")<br />
input(type="imudp" port="514")<br />
<br />
# provides TCP syslog reception<br />
module(load="imtcp")<br />
input(type="imtcp" port="514")<br />
</pre><br />
<br />
Assez explicite, mais je vais tout de même détailler<br />
<pre style="color: silver; background: black;"><br />
module(load="imudp")<br />
</pre><br />
<br />
Active le module permettant d'écouter avec le protocole UDP<br />
<br />
<pre style="color: silver; background: black;"><br />
input(type="imudp" port="514")<br />
</pre><br />
<br />
Configure l'entrée pour utiliser le protocole UDP sur le port 514. Les autres lignes font la même chose pour le protocole TCP. Une fois ces lignes décommentées/ajoutées et rsyslog rechargé/redémarré, il écoutera sur le port 514 en UDP et TCP.<br />
<br />
<h2>Configuration et traitement des logs entrants</h2><br />
<br />
<h3>Les templates</h3><br />
Les [https://www.rsyslog.com/doc/v8-stable/configuration/templates.html templates] sont des points clefs de la configuration de rsyslog. La syntaxe générale est la suivante :<br />
<pre style="color: silver; background: black;"><br />
template(parameters)<br />
</pre><br />
<br />
<h3>Formatage du message</h3><br />
On peut à l'aide d'un template formater les messages entrants voici un petit exemple :<br />
<pre style="color: silver; background: black;"><br />
template(<br />
name="format"<br />
type="string"<br />
string="%TIMESTAMP:::date-rfc3339% %hostname% %syslogtag% msg : %msg%\n"<br />
)<br />
</pre><br />
La liste des différents paramètres tels que : %hostname%, %syslogtag% est consultable [https://www.rsyslog.com/doc/v8-stable/configuration/properties.html ici]<br />
<br />
<h3>Variables</h3><br />
On peut également créer des [https://www.rsyslog.com/doc/v8-stable/rainerscript/variable_property_types.html variables]<br />
<pre style="color: silver; background: black;"><br />
set $.test = replace($syslogtag, ":", "");<br />
</pre><br />
<br />
Dans cet exemple on retire le caractère ':' dans la chaîne de caractère syslogtag<br />
<br />
<h3>Emplacement des logs</h3><br />
Pour définir un emplacement spécifique pour les logs on peut créer un template du type :<br />
<pre style="color: silver; background: black;"><br />
template (<br />
name="RemoteLogs"<br />
type="string"<br />
string="/var/log/chemin/test.log"<br />
)<br />
</pre><br />
<br />
</h3>Application</h3><br />
Les templates étant définie il ne reste plus qu'a les appliquer. Pour cela il faut spécifier à quel [https://datatracker.ietf.org/doc/html/rfc5424#section-6.2.1 facility.severity] on souhaite les appliquer.<br />
<pre style="color: silver; background: black;"><br />
facility.severity_level nom_template<br />
</pre><br />
<br />
On peut également choisir d'appliquer des templates à tous les logs entrants<br />
<pre style="color: silver; background: black;">*.* ?RemoteLogs</pre><br />
<br />
Ne pas oublier d'arrêter le traitement une fois que les informations ont été écrites dans un fichier et éviter ainsi qu'ils soit également écrit dans les fichiers locaux.<br />
<pre style="color: silver; background: black;">stop</pre><br />
<br />
<h3>Récapitulatif</h3><br />
<pre style="color: silver; background: black;"><br />
template(<br />
name="format"<br />
type="string"<br />
string="%TIMESTAMP:::date-rfc3339% %hostname% %syslogtag% msg : %msg%\n"<br />
)<br />
<br />
template (<br />
name="RemoteLogs"<br />
type="string"<br />
string="/var/log/chemin/test.log"<br />
)<br />
<br />
#pour appliquer les deux templates à tous les logs<br />
*.* -?RemoteLogs;format<br />
<br />
stop<br />
</pre><br />
<br />
<br />
<h1>Configuration coté client</h1><br />
<br />
Ici ça va être facile et rapide, il suffira d'ajouter au fichier : <span style="background:#90ff77">/etc/rsyslog.conf</span><br />
<pre style="color: silver; background: black;"><br />
*.* @@192.168.100.10:514<br />
</pre><br />
<br />
Lui indiquant ainsi que tous ses logs doivent être envoyés vers l'adresse et le port indiqué. Il est cependant tout à fait possible de restreindre les logs envoyés en utilisant une syntaxe du type : <br />
<pre style="color: silver; background: black;"><br />
auth.* @@192.168.100.10:514<br />
</pre><br />
<br />
<h1>Utilisation avec Docker</h1><br />
On peut voir sur la page [[Docker logs]] comment rediriger les logs des différents conteneurs vers un serveur rsyslog. On peut utiliser une astuce pour classer proprement les logs en utilisant le paramètre syslogtag.<br />
<br />
<pre style="color: silver; background: black;"><br />
set $.chemin = replace($syslogtag, ":", "");<br />
<br />
template (<br />
name="RemoteLogs"<br />
type="string"<br />
string="/var/log/remotelogs/%$.chemin%.log"<br />
)<br />
<br />
*.* -?RemoteLogs<br />
</pre><br />
<br />
Avec cette configuration on peut alors utiliser l'option logging de docker de cette façon :<br />
<pre style="color: silver; background: black;"><br />
version: "3.7"<br />
test:<br />
image: nginx:1.22<br />
container_name: nginx<br />
ports:<br />
- "80:80"<br />
logging:<br />
driver: syslog<br />
options:<br />
syslog-address: "udp://192.168.100.10:514"<br />
tag: "conteneur_test/{{.Name}}:"<br />
</pre><br />
<br />
Ce qui aura les conséquences suivante : <br />
*créer le paramètre syslogtag ayant pour valeur : "conteneur_test/nginx:" (Notez la présence du caratère ':' qui est là pour cloturer la chaîne)<br />
*le serveur rsyslog recevra ce paramètre<br />
*il va enlever le caractère ':' et enregistrer le résultat dans la variable $.chemin<br />
*créer un fichier log en suivant le template : /var/log/remotelogs/%$.chemin%.log<br />
<br />
Résultat les logs de ce conteneurs arriveront dans :<br />
<span style="background:#90ff77">/var/log/remotelogs/conteneur_test/nginx.log</span><br />
On peut donc maintenant regrouper dans un même dossier les logs des conteneurs opérant pour le même services<br />
<br />
<h1>Source</h1><br />
*https://www.tecmint.com/install-rsyslog-centralized-logging-in-centos-ubuntu/<br />
*https://adamtheautomator.com/rsyslog-configuration/</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Rsyslog&diff=852Rsyslog2023-08-05T07:43:52Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]][[Category:Administration]]<br />
<br />
Rsyslog permet de gérer les journaux d’événements, capable d'agir comme un serveur afin de récupérer les journaux des machines sur le réseau.<br />
<br />
<h1>Configuration du mode serveur</h1><br />
<br />
<h2>Configuration des protocoles et écoute des ports</h2><br />
Afin de pouvoir recevoir les messages provenant du réseau, il faut configurer le protocole utilisé ainsi que le port. Pour ce faire il faut éditer le fichier : <span style="background:#90ff77">/etc/rsyslog.conf</span> et repérer ce passage :<br />
<br />
<pre style="color: silver; background: black;"><br />
# provides UDP syslog reception<br />
module(load="imudp")<br />
input(type="imudp" port="514")<br />
<br />
# provides TCP syslog reception<br />
module(load="imtcp")<br />
input(type="imtcp" port="514")<br />
</pre><br />
<br />
Assez explicite, mais je vais tout de même détailler<br />
<pre style="color: silver; background: black;"><br />
module(load="imudp")<br />
</pre><br />
<br />
Active le module permettant d'écouter avec le protocole UDP<br />
<br />
<pre style="color: silver; background: black;"><br />
input(type="imudp" port="514")<br />
</pre><br />
<br />
Configure l'entrée pour utiliser le protocole UDP sur le port 514. Les autres lignes font la même chose pour le protocole TCP. Une fois ces lignes décommentées/ajoutées et rsyslog rechargé/redémarré, il écoutera sur le port 514 en UDP et TCP.<br />
<br />
<h2>Configuration et traitement des logs entrants</h2><br />
<br />
<h3>Les templates</h3><br />
Les [https://www.rsyslog.com/doc/v8-stable/configuration/templates.html templates] sont des points clefs de la configuration de rsyslog. La syntaxe générale est la suivante :<br />
<pre style="color: silver; background: black;"><br />
template(parameters)<br />
</pre><br />
<br />
<h3>Formatage du message</h3><br />
On peut à l'aide d'un template formater les messages entrants voici un petit exemple :<br />
<pre style="color: silver; background: black;"><br />
template(<br />
name="format"<br />
type="string"<br />
string="%TIMESTAMP:::date-rfc3339% %hostname% %syslogtag% msg : %msg%\n"<br />
)<br />
</pre><br />
La liste des différents paramètres tels que : %hostname%, %syslogtag% est consultable [https://www.rsyslog.com/doc/v8-stable/configuration/properties.html ici]<br />
<br />
<h3>Variables</h3><br />
On peut également créer des [https://www.rsyslog.com/doc/v8-stable/rainerscript/variable_property_types.html variables]<br />
<pre style="color: silver; background: black;"><br />
set $.test = replace($syslogtag, ":", "");<br />
</pre><br />
<br />
Dans cet exemple on retire le caractère ':' dans la chaîne de caractère syslogtag<br />
<br />
<h3>Emplacement des logs</h3><br />
Pour définir un emplacement spécifique pour les logs on peut créer un template du type :<br />
<pre style="color: silver; background: black;"><br />
template (<br />
name="RemoteLogs"<br />
type="string"<br />
string="/var/log/chemin/test.log"<br />
)<br />
</pre><br />
<br />
</h3>Application</h3><br />
Les templates étant définie il ne reste plus qu'a les appliquer. Pour cela il faut spécifier à quel [https://datatracker.ietf.org/doc/html/rfc5424#section-6.2.1 facility.severity] on souhaite les appliquer.<br />
<pre style="color: silver; background: black;"><br />
facility.severity_level nom_template<br />
</pre><br />
<br />
On peut également choisir d'appliquer des templates à tous les logs entrants<br />
<pre style="color: silver; background: black;">*.* ?RemoteLogs</pre><br />
<br />
Ne pas oublier d'arrêter le traitement une fois que les informations ont été écrites dans un fichier et éviter ainsi qu'ils soit également écrit dans les fichiers locaux.<br />
<pre style="color: silver; background: black;">stop</pre><br />
<br />
<h3>Récapitulatif</h3><br />
<pre style="color: silver; background: black;"><br />
template(<br />
name="format"<br />
type="string"<br />
string="%TIMESTAMP:::date-rfc3339% %hostname% %syslogtag% msg : %msg%\n"<br />
)<br />
<br />
template (<br />
name="RemoteLogs"<br />
type="string"<br />
string="/var/log/chemin/test.log"<br />
)<br />
<br />
#pour appliquer les deux templates à tous les logs<br />
*.* -?RemoteLogs;format<br />
<br />
stop<br />
</pre><br />
<br />
<br />
<h1>Configuration coté client</h1><br />
<br />
Ici ça va être facile et rapide, il suffira d'ajouter au fichier : <span style="background:#90ff77">/etc/rsyslog.conf</span><br />
<pre style="color: silver; background: black;"><br />
*.* @@192.168.100.10:514<br />
</pre><br />
<br />
Lui indiquant ainsi que tous ses logs doivent être envoyés vers l'adresse et le port indiqué. Il est cependant tout à fait possible de restreindre les logs envoyés en utilisant une syntaxe du type : <br />
<pre style="color: silver; background: black;"><br />
auth.* @@192.168.100.10:514<br />
</pre><br />
<br />
<h1>Utilisation avec Docker</h1><br />
On peut voir sur la page [[Docker logs]] comment rediriger les logs des différents conteneurs vers un serveur rsyslog. On peut utiliser une astuce pour classer proprement les logs en utilisant le paramètre syslogtag.<br />
<br />
<br />
<br />
<br />
<br />
<h1>Source</h1><br />
*https://www.tecmint.com/install-rsyslog-centralized-logging-in-centos-ubuntu/<br />
*https://adamtheautomator.com/rsyslog-configuration/</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Docker_installation&diff=851Docker installation2023-07-29T05:27:04Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]]<br />
[[Category:Docker]]<br />
[[Category:Raspberry_pi]]<br />
<br />
Sur un ordinateur classique installer Docker, ainsi que Docker-compose est une chose aisé, mais pas forcément à jour, autant tenter l'aventure sur une Raspberry pi est assez prise de tête ... Voici comment faire une installation à jour de Docker et Docker-compose.<br />
<br />
<h1>Installation de Docker</h1><br />
<h2>La méthode très facile, mais pas à jour</h2><br />
Sur raspian, on peut se contenter d'utiliser la commande : <br />
<pre style="color: silver; background: black;">sudo apt-get install docker.io</pre><br />
<br />
Cependant la version que vous obtiendrez suite à cette commande, 1.8.3~ds1-2 (sur raspbian stretch), ne permettra pas l'utilisation de docker-compose (en tout cas pas avec des fichiers "docker-compose.yml" de version 2), il vous faudra pour ça une version supérieure à la 1.10.<br />
<br />
<h2>La méthode facile et à jour</h2><br />
Un script existe maintenant pour cela et le mieux c'est qu'il est possible d'installer Docker sur un Raspberry pi en une seule ligne :<br />
<pre style="color: silver; background: black;"><br />
curl -sSL https://get.docker.com | sh<br />
</pre><br />
<br />
<h1>Installation de Docker-compose</h1><br />
Pareil ici, la version disponible sur stretch n'est de loin pas la dernière<br />
<pre style="color: silver; background: black;">sudo apt-get install docker-compose</pre><br />
Ne vous permettra que d'accéder à la version 1.9.0-29 (avril 2018). Pour arriver à obtenir la dernière version il va falloir le compiler. La méthode que j'ai trouvé est assez particulière car plutôt que d'installer tous les paquets nécessaire à sa compilation, cette méthode utilise docker afin de créer un conteneur satisfaisant les conditions.<br />
<br />
<h2>Installation via pip3</h2><br />
On commence par installer le nécessaire au bon fonctionnement de pip3 :<br />
<pre style="color: silver; background: black;"><br />
sudo apt-get install libffi-dev libssl-dev python3-dev python3 python3-pip<br />
</pre><br />
<br />
Puis il suffira alors d'exécuter la commande : <br />
<pre style="color: silver; background: black;"><br />
sudo pip3 install docker-compose<br />
</pre><br />
<br />
Et voilà vous disposez maintenant de docker et docker-compose à jour.<br />
<br />
<h1>Configuration</h1><br />
Une fois l'installation faite, il est possible de paramétrer certaines choses via le fichier /etc/docker/daemon.json<br />
<br />
<h2>le dossier des données</h2><br />
On peut par exemple vouloir utiliser un autre dossier pour stocker toutes les informations nécessaires au bon fonctionnement de Docker. Pour cela il faut éditer, ou créer, le fichier /etc/docker/daemon.json et y ajouter :<br />
<br />
<pre style="color: silver; background: black;"><br />
{<br />
"data-root": "/mnt/docker-data"<br />
}<br />
</pre><br />
<br />
<br />
[https://dev.to/elalemanyo/how-to-install-docker-and-docker-compose-on-raspberry-pi-1mo Source installation]<br />
[https://docs.docker.com/config/daemon/ Source configuration]</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Docker_(raspberry_pi)&diff=850Docker (raspberry pi)2023-07-29T05:20:48Z<p>Jackbot : Jackbot a déplacé la page Docker (raspberry pi) vers Docker installation</p>
<hr />
<div>#REDIRECTION [[Docker installation]]</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Docker_installation&diff=849Docker installation2023-07-29T05:20:48Z<p>Jackbot : Jackbot a déplacé la page Docker (raspberry pi) vers Docker installation</p>
<hr />
<div>[[Category:Informatique]]<br />
[[Category:Docker]]<br />
[[Category:Raspberry_pi]]<br />
<br />
Autant sur un ordinateur classique installer Docker, ainsi que Docker-compose est une chose aisé, autant tenter l'aventure sur une Raspberry pi est assez prise de tête ...<br />
<br />
<h1>Installation de Docker</h1><br />
<h2>La méthode très facile, mais pas à jour</h2><br />
Sur raspian, on peut se contenter d'utiliser la commande : <br />
<pre style="color: silver; background: black;">sudo apt-get install docker.io</pre><br />
<br />
Cependant la version que vous obtiendrez suite à cette commande, 1.8.3~ds1-2 (sur raspbian stretch), ne permettra pas l'utilisation de docker-compose (en tout cas pas avec des fichiers "docker-compose.yml" de version 2), il vous faudra pour ça une version supérieure à la 1.10.<br />
<br />
<h2>La méthode facile et à jour</h2><br />
Un script existe maintenant pour cela et le mieux c'est qu'il est possible d'installer Docker sur un Raspberry pi en une seule ligne :<br />
<pre style="color: silver; background: black;"><br />
curl -sSL https://get.docker.com | sh<br />
</pre><br />
<br />
<h1>Installation de Docker-compose</h1><br />
Pareil ici, la version disponible sur stretch n'est de loin pas la dernière<br />
<pre style="color: silver; background: black;">sudo apt-get install docker-compose</pre><br />
Ne vous permettra que d'accéder à la version 1.9.0-29 (avril 2018). Pour arriver à obtenir la dernière version il va falloir le compiler. La méthode que j'ai trouvé est assez particulière car plutôt que d'installer tous les paquets nécessaire à sa compilation, cette méthode utilise docker afin de créer un conteneur satisfaisant les conditions.<br />
<br />
<h2>Installation via pip3</h2><br />
On commence par installer le nécessaire au bon fonctionnement de pip3 :<br />
<pre style="color: silver; background: black;"><br />
sudo apt-get install libffi-dev libssl-dev python3-dev python3 python3-pip<br />
</pre><br />
<br />
Puis il suffira alors d'exécuter la commande : <br />
<pre style="color: silver; background: black;"><br />
sudo pip3 install docker-compose<br />
</pre><br />
<br />
Et voilà vous disposez maintenant de docker et docker-compose à jour.<br />
<br />
[https://dev.to/elalemanyo/how-to-install-docker-and-docker-compose-on-raspberry-pi-1mo Source]</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Syst%C3%A8me_vrac&diff=848Système vrac2023-07-21T12:15:24Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]]<br />
Ici je vais placer différentes petites astuces et/ou commandes qui ne pourrait pas remplir une page<br />
<br />
<h2>purger les logs du système</h2><br />
<pre style="color: silver; background: black;"><br />
journalctl --vacuum-size=500M<br />
journalctl --vacuum-time=2d<br />
</pre></div>Jackbothttps://wiki.jackbot.fr/index.php?title=Syst%C3%A8me_vrac&diff=847Système vrac2023-07-21T12:15:09Z<p>Jackbot : Page créée avec « Category:Informatique Ici je vais placer différentes petites astuces et/ou commandes qui ne pourrait pas remplir une page <h2>purges les logs du système</h2> <pre style="color: silver; background: black;"> journalctl --vacuum-size=500M journalctl --vacuum-time=2d </pre> »</p>
<hr />
<div>[[Category:Informatique]]<br />
Ici je vais placer différentes petites astuces et/ou commandes qui ne pourrait pas remplir une page<br />
<br />
<h2>purges les logs du système</h2><br />
<pre style="color: silver; background: black;"><br />
journalctl --vacuum-size=500M<br />
journalctl --vacuum-time=2d<br />
</pre></div>Jackbothttps://wiki.jackbot.fr/index.php?title=MariaDB&diff=846MariaDB2023-07-21T07:32:18Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]][[Category:MariaDB]]<br />
MariaDB est un système de gestion de base de données édité sous licence GPL. Il s'agit d'un embranchement communautaire de MySQL : la gouvernance du projet est assurée par la fondation MariaDB<br />
<br />
<h1>Avec Docker</h1><br />
Il existe une [https://hub.docker.com/_/mariadb image officielle] pour Docker<br />
<br />
<h1>Décharger une base de données</h1><br />
<h2>Cas général</h2><br />
Pour décharger une base de donnée il faut utiliser la commande :<br />
<pre style="color: silver; background: black;"><br />
mysqldump -u utilisateur --password=mot_de_passe base_de_donnees > sauvegarde.sql<br />
</pre><br />
<br />
<h2>Cas de Docker</h2><br />
Avec Docker il faut transmettre la commande précédente au conteneur en question, par exemple :<br />
<pre style="color: silver; background: black;"><br />
docker exec conteneur /usr/bin/mysqldump -u utilisateur --password=mot_de_passe base_de_donnees > sauvegarde.sql<br />
</pre><br />
<br />
Cependant on peut éviter de fournir les différents paramètres en clair en utilisant les variables d'environnement du conteneur :<br />
<pre style="color: silver; background: black;"><br />
docker exec conteneur bash -c '/usr/bin/mysqldump -u $MYSQL_USER --password=$MYSQL_PASSWORD $MYSQL_DATABASE' > sauvegarde.sql<br />
</pre><br />
<br />
<h1>Restauration de la base de données</h2><br />
<h2>Cas général</h2><br />
<pre style="color: silver; background: black;"><br />
mysql -u utilisateur --password=mot_de_passe base_de_donnees < sauvegarde.sql<br />
</pre><br />
<br />
<h2>Cas de Docker</h2><br />
<pre style="color: silver; background: black;"><br />
cat sauvegarde.sql | docker exec -i conteneur bash -c '/usr/bin/mysql -u $MYSQL_USER --password=$MYSQL_PASSWORD $MYSQL_DATABASE'<br />
</pre></div>Jackbothttps://wiki.jackbot.fr/index.php?title=Mariadb&diff=845Mariadb2023-07-21T07:25:42Z<p>Jackbot : Jackbot a déplacé la page Mariadb vers MariaDB</p>
<hr />
<div>#REDIRECTION [[MariaDB]]</div>Jackbothttps://wiki.jackbot.fr/index.php?title=MariaDB&diff=844MariaDB2023-07-21T07:25:42Z<p>Jackbot : Jackbot a déplacé la page Mariadb vers MariaDB</p>
<hr />
<div>[[Category:Informatique]][[Category:MariaDB]]<br />
MariaDB est un système de gestion de base de données édité sous licence GPL. Il s'agit d'un embranchement communautaire de MySQL : la gouvernance du projet est assurée par la fondation MariaDB<br />
<br />
<h1>Avec Docker</h1><br />
Il existe une [https://hub.docker.com/_/mariadb image officielle] pour Docker<br />
<br />
<h1>Décharger une base de données</h1><br />
<h2>Cas général</h2><br />
Pour décharger une base de donnée il faut utiliser la commande :<br />
<pre style="color: silver; background: black;"><br />
mysqldump -u utilisateur --password=mot_de_passe base_de_donnees > sauvegarde.sql<br />
</pre><br />
<br />
<h2>Cas de Docker</h2><br />
Avec Docker il faut transmettre la commande précédente au conteneur en question, par exemple :<br />
<pre style="color: silver; background: black;"><br />
docker exec conteneur /usr/bin/mysqldump -u utilisateur --password=mot_de_passe base_de_donnees > sauvegarde.sql<br />
</pre><br />
<br />
Cependant on peut éviter de fournir les différents paramètres en clair en utilisant les variables d'environnement du conteneur :<br />
<pre style="color: silver; background: black;"><br />
docker exec conteneur bash -c '/usr/bin/mysqldump -u $MYSQL_USER --password=$MYSQL_PASSWORD $MYSQL_DATABASE' > sauvegarde.sql<br />
</pre></div>Jackbothttps://wiki.jackbot.fr/index.php?title=MariaDB&diff=843MariaDB2023-07-21T07:25:20Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]][[Category:MariaDB]]<br />
MariaDB est un système de gestion de base de données édité sous licence GPL. Il s'agit d'un embranchement communautaire de MySQL : la gouvernance du projet est assurée par la fondation MariaDB<br />
<br />
<h1>Avec Docker</h1><br />
Il existe une [https://hub.docker.com/_/mariadb image officielle] pour Docker<br />
<br />
<h1>Décharger une base de données</h1><br />
<h2>Cas général</h2><br />
Pour décharger une base de donnée il faut utiliser la commande :<br />
<pre style="color: silver; background: black;"><br />
mysqldump -u utilisateur --password=mot_de_passe base_de_donnees > sauvegarde.sql<br />
</pre><br />
<br />
<h2>Cas de Docker</h2><br />
Avec Docker il faut transmettre la commande précédente au conteneur en question, par exemple :<br />
<pre style="color: silver; background: black;"><br />
docker exec conteneur /usr/bin/mysqldump -u utilisateur --password=mot_de_passe base_de_donnees > sauvegarde.sql<br />
</pre><br />
<br />
Cependant on peut éviter de fournir les différents paramètres en clair en utilisant les variables d'environnement du conteneur :<br />
<pre style="color: silver; background: black;"><br />
docker exec conteneur bash -c '/usr/bin/mysqldump -u $MYSQL_USER --password=$MYSQL_PASSWORD $MYSQL_DATABASE' > sauvegarde.sql<br />
</pre></div>Jackbothttps://wiki.jackbot.fr/index.php?title=MariaDB&diff=842MariaDB2023-07-21T07:24:59Z<p>Jackbot : Page créée avec « Category:Informatique MariaDB est un système de gestion de base de données édité sous licence GPL. Il s'agit d'un embranchement communautaire de MySQL : la gouvernance du projet est assurée par la fondation MariaDB <h1>Avec Docker</h1> Il existe une [https://hub.docker.com/_/mariadb image officielle] pour Docker <h1>Décharger une base de données</h1> <h2>Cas général</h2> Pour décharger une base de donnée il faut utiliser la commande : <pre style=... »</p>
<hr />
<div>[[Category:Informatique]]<br />
MariaDB est un système de gestion de base de données édité sous licence GPL. Il s'agit d'un embranchement communautaire de MySQL : la gouvernance du projet est assurée par la fondation MariaDB<br />
<br />
<h1>Avec Docker</h1><br />
Il existe une [https://hub.docker.com/_/mariadb image officielle] pour Docker<br />
<br />
<h1>Décharger une base de données</h1><br />
<h2>Cas général</h2><br />
Pour décharger une base de donnée il faut utiliser la commande :<br />
<pre style="color: silver; background: black;"><br />
mysqldump -u utilisateur --password=mot_de_passe base_de_donnees > sauvegarde.sql<br />
</pre><br />
<br />
<h2>Cas de Docker</h2><br />
Avec Docker il faut transmettre la commande précédente au conteneur en question, par exemple :<br />
<pre style="color: silver; background: black;"><br />
docker exec conteneur /usr/bin/mysqldump -u utilisateur --password=mot_de_passe base_de_donnees > sauvegarde.sql<br />
</pre><br />
<br />
Cependant on peut éviter de fournir les différents paramètres en clair en utilisant les variables d'environnement du conteneur :<br />
<pre style="color: silver; background: black;"><br />
docker exec conteneur bash -c '/usr/bin/mysqldump -u $MYSQL_USER --password=$MYSQL_PASSWORD $MYSQL_DATABASE' > sauvegarde.sql<br />
</pre></div>Jackbothttps://wiki.jackbot.fr/index.php?title=Docker_nvidia&diff=841Docker nvidia2023-07-20T16:35:08Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]]<br />
[[Category:Docker]]<br />
Pour faire fonctionner une carte nvidia dans un conteneur docker plusieurs points sont nécessaires :<br />
<br />
*installer les pilotes à jour<br />
*installer cuda<br />
*installer le paquet : nvidia-container-runtime<br />
<br />
<br />
<h1>Mise à jour des pilotes</h1><br />
Afin d'utiliser les pilotes propriétaires nvidia il est possible d'utiliser le dépôt de nvidia :<br />
<pre style="color: silver; background: black;"><br />
sudo add-apt-repository ppa:graphics-drivers/ppa <br />
sudo apt update <br />
ubuntu-drivers devices <br />
sudo apt install nvidia-(numéro du pilote)<br />
</pre><br />
<br />
[https://doc.ubuntu-fr.org/nvidia#via_un_ppa Source]<br />
<br />
<h1>Installer Cuda</h1><br />
La procédure est plus ou moins la même que pour la mise à jour des pilotes<br />
<pre style="color: silver; background: black;"><br />
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb<br />
sudo dpkg -i cuda-keyring_1.1-1_all.deb<br />
sudo apt-get update<br />
sudo apt-get -y install cuda<br />
</pre><br />
<br />
[https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_network Source]<br />
<br />
Dans le cas où un message d'erreur : "Key is stored in legacy trusted.gpg keyring", suivre la procédure [https://itsfoss.com/key-is-stored-in-legacy-trusted-gpg/ ici]<br />
<br />
<h1>Installer nvidia-container-runtime</h1><br />
<br />
Il faut pour cela ajouter le ppa de nvidia :<br />
<pre style="color: silver; background: black;"><br />
curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | sudo apt-key add -<br />
<br />
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)<br />
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list<br />
<br />
sudo apt-get update && sudo apt-get install nvidia-container-runtime<br />
</pre><br />
<br />
[https://nvidia.github.io/nvidia-container-runtime/ Source]<br />
<br />
Il se peut cependant qu'un warning du type : "Key is stored in legacy trusted.gpg keyring", fasse son apparition<br />
<br />
Pour y remédier il faut exporter la clef dans un fichier du dossier /etc/apt/trusted.gpg.d<br />
Plus de détail [https://itsfoss.com/key-is-stored-in-legacy-trusted-gpg/ ici]<br />
<br />
<h1>Tester</h1><br />
Une fois ceci fait on peut suivre les instructions de [https://docs.docker.com/config/containers/resource_constraints/#gpu cette page] pour tester si cela à bien fonctionné.<br />
<br />
<h1>Docker-compose</h1><br />
Avec docker-compose il faut suivre les instructions de [https://docs.docker.com/compose/gpu-support/ cette page]<br />
<br />
<br />
<br />
*https://wiki.archlinux.org/index.php/Docker#Run_GPU_accelerated_Docker_containers_with_NVIDIA_GPUs<br />
*https://www.jbnet.fr/systeme/docker/docker-configurer-lutilisation-du-gpu-nvidia.html<br />
*https://marmelab.com/blog/2018/03/21/using-nvidia-gpu-within-docker-container.html<br />
*https://github.com/docker/compose/issues/6691</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Docker_nvidia&diff=840Docker nvidia2023-07-20T16:33:49Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]]<br />
[[Category:Docker]]<br />
Pour faire fonctionner une carte nvidia dans un conteneur docker plusieurs points sont nécessaires :<br />
<br />
*installer les pilotes à jour<br />
*installer cuda<br />
*installer le paquet : nvidia-container-runtime<br />
<br />
<br />
<h1>Mise à jour des pilotes</h1><br />
Afin d'utiliser les pilotes propriétaires nvidia il est possible d'utiliser le dépôt de nvidia :<br />
<pre style="color: silver; background: black;"><br />
sudo add-apt-repository ppa:graphics-drivers/ppa <br />
sudo apt update <br />
ubuntu-drivers devices <br />
sudo apt install nvidia-(numéro du pilote)<br />
</pre><br />
<br />
[https://doc.ubuntu-fr.org/nvidia#via_un_ppa Source]<br />
<br />
<h1>Installer Cuda</h1><br />
La procédure est plus ou moins la même que pour la mise à jour des pilotes<br />
<pre style="color: silver; background: black;"><br />
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb<br />
sudo dpkg -i cuda-keyring_1.1-1_all.deb<br />
sudo apt-get update<br />
sudo apt-get -y install cuda<br />
</pre><br />
<br />
[https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_network Source]<br />
<br />
Dans le cas où un message d'erreur : "Key is stored in legacy trusted.gpg keyring", suivre la procédure [https://itsfoss.com/key-is-stored-in-legacy-trusted-gpg/ ici]<br />
<br />
<h1>Installer nvidia-container-runtime</h1><br />
<br />
Il faut pour cela ajouter le ppa de nvidia :<br />
<pre style="color: silver; background: black;"><br />
curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | sudo apt-key add -<br />
<br />
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)<br />
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list<br />
<br />
sudo apt-get update && sudo apt-get install nvidia-container-runtime<br />
</pre><br />
<br />
[https://nvidia.github.io/nvidia-container-runtime/ Source]<br />
<br />
Il se peut cependant qu'un warning du type : "Key is stored in legacy trusted.gpg keyring", fasse son apparition<br />
<br />
Pour y remédier il faut exporter la clef dans un fichier du dossier /etc/apt/trusted.gpg.d<br />
Plus de détail [https://itsfoss.com/key-is-stored-in-legacy-trusted-gpg/ ici]<br />
<br />
<h1>Tester</h1><br />
Une fois ceci fait on peut suivre les instructions de [https://docs.docker.com/config/containers/resource_constraints/#gpu cette page] pour tester si cela à bien fonctionné.<br />
<br />
<br />
<br />
<br />
<br />
*https://wiki.archlinux.org/index.php/Docker#Run_GPU_accelerated_Docker_containers_with_NVIDIA_GPUs<br />
*https://www.jbnet.fr/systeme/docker/docker-configurer-lutilisation-du-gpu-nvidia.html<br />
*https://marmelab.com/blog/2018/03/21/using-nvidia-gpu-within-docker-container.html<br />
*https://github.com/docker/compose/issues/6691</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Docker_nvidia&diff=839Docker nvidia2023-07-20T16:31:57Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]]<br />
[[Category:Docker]]<br />
Pour faire fonctionner une carte nvidia dans un conteneur docker plusieurs points sont nécessaires :<br />
<br />
*installer les pilotes à jour<br />
*installer cuda<br />
*installer le paquet : nvidia-container-runtime<br />
<br />
<br />
<h1>Mise à jour des pilotes</h1><br />
Afin d'utiliser les pilotes propriétaires nvidia il est possible d'utiliser le dépôt de nvidia :<br />
<pre style="color: silver; background: black;"><br />
sudo add-apt-repository ppa:graphics-drivers/ppa <br />
sudo apt update <br />
ubuntu-drivers devices <br />
sudo apt install nvidia-(numéro du pilote)<br />
</pre><br />
<br />
[https://doc.ubuntu-fr.org/nvidia#via_un_ppa Source]<br />
<br />
<h1>Installer Cuda</h1><br />
La procédure est plus ou moins la même que pour la mise à jour des pilotes<br />
<pre style="color: silver; background: black;"><br />
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb<br />
sudo dpkg -i cuda-keyring_1.1-1_all.deb<br />
sudo apt-get update<br />
sudo apt-get -y install cuda<br />
</pre><br />
<br />
[https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_network Source]<br />
<br />
Dans le cas où un message d'erreur : "Key is stored in legacy trusted.gpg keyring", suivre la procédure [https://itsfoss.com/key-is-stored-in-legacy-trusted-gpg/ ici]<br />
<br />
<h1>Installer nvidia-container-runtime</h1><br />
<br />
Il faut pour cela ajouter le ppa de nvidia :<br />
<pre style="color: silver; background: black;"><br />
curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | sudo apt-key add -<br />
<br />
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)<br />
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list<br />
<br />
sudo apt-get update && sudo apt-get install nvidia-container-runtime<br />
</pre><br />
<br />
[https://nvidia.github.io/nvidia-container-runtime/ Source]<br />
<br />
Il se peut cependant qu'un warning du type : "Key is stored in legacy trusted.gpg keyring", fasse son apparition<br />
<br />
Pour y remédier il faut exporter la clef dans un fichier du dossier /etc/apt/trusted.gpg.d<br />
Plus de détail [https://itsfoss.com/key-is-stored-in-legacy-trusted-gpg/ ici]<br />
<br />
Une fois ceci fait on peut suivre les instructions de [https://docs.docker.com/config/containers/resource_constraints/#gpu cette page] pour tester si cela à bien fonctionné.<br />
<br />
<br />
<br />
<br />
<br />
*https://wiki.archlinux.org/index.php/Docker#Run_GPU_accelerated_Docker_containers_with_NVIDIA_GPUs<br />
*https://www.jbnet.fr/systeme/docker/docker-configurer-lutilisation-du-gpu-nvidia.html<br />
*https://marmelab.com/blog/2018/03/21/using-nvidia-gpu-within-docker-container.html<br />
*https://github.com/docker/compose/issues/6691</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Docker_nvidia&diff=838Docker nvidia2023-07-20T16:31:08Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]]<br />
[[Category:Docker]]<br />
Pour faire fonctionner une carte nvidia dans un conteneur docker plusieurs points sont nécessaires :<br />
<br />
*installer les pilotes à jour<br />
*installer cuda<br />
*installer le paquet : nvidia-container-runtime<br />
<br />
<br />
<h1>Mise à jour des pilotes</h1><br />
Afin d'utiliser les pilotes propriétaires nvidia il est possible d'utiliser le dépôt de nvidia :<br />
<pre style="color: silver; background: black;"><br />
sudo add-apt-repository ppa:graphics-drivers/ppa <br />
sudo apt update <br />
ubuntu-drivers devices <br />
sudo apt install nvidia-(numéro du pilote)<br />
</pre><br />
<br />
[https://doc.ubuntu-fr.org/nvidia#via_un_ppa Source]<br />
<br />
<h1>Installer Cuda</h1><br />
La procédure est plus ou moins la même que pour la mise à jour des pilotes<br />
<pre style="color: silver; background: black;"><br />
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb<br />
sudo dpkg -i cuda-keyring_1.1-1_all.deb<br />
sudo apt-get update<br />
sudo apt-get -y install cuda<br />
</pre><br />
<br />
Dans le cas où un message d'erreur : "Key is stored in legacy trusted.gpg keyring", suivre la procédure [https://itsfoss.com/key-is-stored-in-legacy-trusted-gpg/ ici]<br />
<br />
<h1>Installer nvidia-container-runtime</h1><br />
<br />
Il faut pour cela ajouter le ppa de nvidia :<br />
<pre style="color: silver; background: black;"><br />
curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | sudo apt-key add -<br />
<br />
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)<br />
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list<br />
<br />
sudo apt-get update && sudo apt-get install nvidia-container-runtime<br />
</pre><br />
<br />
[https://nvidia.github.io/nvidia-container-runtime/ Source]<br />
<br />
Il se peut cependant qu'un warning du type : "Key is stored in legacy trusted.gpg keyring", fasse son apparition<br />
<br />
Pour y remédier il faut exporter la clef dans un fichier du dossier /etc/apt/trusted.gpg.d<br />
Plus de détail [https://itsfoss.com/key-is-stored-in-legacy-trusted-gpg/ ici]<br />
<br />
Une fois ceci fait on peut suivre les instructions de [https://docs.docker.com/config/containers/resource_constraints/#gpu cette page] pour tester si cela à bien fonctionné.<br />
<br />
<br />
<br />
<br />
<br />
*https://wiki.archlinux.org/index.php/Docker#Run_GPU_accelerated_Docker_containers_with_NVIDIA_GPUs<br />
*https://www.jbnet.fr/systeme/docker/docker-configurer-lutilisation-du-gpu-nvidia.html<br />
*https://marmelab.com/blog/2018/03/21/using-nvidia-gpu-within-docker-container.html<br />
*https://github.com/docker/compose/issues/6691</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Mots_de_passe&diff=837Mots de passe2023-07-03T15:47:47Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]][[Category:Securite]]<br />
Les mots de passe sont un point clef de la sécurité en informatique. Ce tableau représente le temps qu'il faut pour casser un mot de passe (avec [[Hashcat]]) hashé avec l'algorithme MD5 en 2022 en fonction de sa taille et du type de caractères qu'il contient :<br />
<br />
[[Fichier:Cassage mot de passe 2022.png | 400px | center]]<br />
<br />
<br />
[[Fichier:Mot de passe 2023.jpeg | 400px | center]]<br />
<br />
[https://www.hivesystems.io/blog/are-your-passwords-in-the-green Source]<br />
<br />
Un bon moyen de palier à ce problème est l'utilisation d'un gestionnaire de mots de passe tel que [https://keepassxc.org/ KeePassXC]. Qui permet la génération de mot de passe très long et très complexes. L'utilisation d'un tel outil permet de facilement avoir un mot de passe différent par site/compte. Car il ne faut pas oublier qu'utiliser un même mot de passe sur plusieurs site est une très mauvaise idée, car lorsqu'il sera trouvé le pirate pourra accéder à tous les comptes protégé par ce mot de passe ...<br />
<br />
Cet outil est à utiliser conjointement avec le plugin firefox [https://addons.mozilla.org/fr/firefox/addon/keepassxc-browser/ KeePassXC-Browser], qui permettra de questionner KeePassXC et de remplir automatiquement les champs login et mot de passe pour les site que vous visitez.<br />
<br />
Afin de savoir si un de vos mot de passe a été compromis, vous pouvez visiter :<br />
https://haveibeenpwned.com/Passwords</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Mots_de_passe&diff=836Mots de passe2023-07-03T15:47:39Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]][[Category:Securite]]<br />
Les mots de passe sont un point clef de la sécurité en informatique. Ce tableau représente le temps qu'il faut pour casser un mot de passe (avec [[Hashcat]]) hashé avec l'algorithme MD5 en 2022 en fonction de sa taille et du type de caractères qu'il contient :<br />
<br />
[[Fichier:Cassage mot de passe 2022.png | 400px | center]]<br />
[[Fichier:Mot de passe 2023.jpeg | 400px | center]]<br />
<br />
[https://www.hivesystems.io/blog/are-your-passwords-in-the-green Source]<br />
<br />
Un bon moyen de palier à ce problème est l'utilisation d'un gestionnaire de mots de passe tel que [https://keepassxc.org/ KeePassXC]. Qui permet la génération de mot de passe très long et très complexes. L'utilisation d'un tel outil permet de facilement avoir un mot de passe différent par site/compte. Car il ne faut pas oublier qu'utiliser un même mot de passe sur plusieurs site est une très mauvaise idée, car lorsqu'il sera trouvé le pirate pourra accéder à tous les comptes protégé par ce mot de passe ...<br />
<br />
Cet outil est à utiliser conjointement avec le plugin firefox [https://addons.mozilla.org/fr/firefox/addon/keepassxc-browser/ KeePassXC-Browser], qui permettra de questionner KeePassXC et de remplir automatiquement les champs login et mot de passe pour les site que vous visitez.<br />
<br />
Afin de savoir si un de vos mot de passe a été compromis, vous pouvez visiter :<br />
https://haveibeenpwned.com/Passwords</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Fichier:Mot_de_passe_2023.jpeg&diff=835Fichier:Mot de passe 2023.jpeg2023-07-03T15:47:03Z<p>Jackbot : Temps nécessaire pour craquer un mot de passe en fonction de sa complexité</p>
<hr />
<div>== Description ==<br />
Temps nécessaire pour craquer un mot de passe en fonction de sa complexité</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Docker_nvidia&diff=834Docker nvidia2023-06-29T19:10:55Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]]<br />
[[Category:Docker]]<br />
Pour faire fonctionner une carte nvidia dans un conteneur docker il est nécessaire d'installer le paquet : <br />
nvidia-container-runtime<br />
<br />
Il faut pour cela ajouter le ppa de nvidia :<br />
<pre style="color: silver; background: black;"><br />
curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | sudo apt-key add -<br />
<br />
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)<br />
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list<br />
<br />
sudo apt-get update && sudo apt-get install nvidia-container-runtime<br />
</pre><br />
<br />
[https://nvidia.github.io/nvidia-container-runtime/ Source]<br />
<br />
Il se peut cependant qu'un warning du type : "Key is stored in legacy trusted.gpg keyring", fasse son apparition<br />
<br />
Pour y remédier il faut exporter la clef dans un fichier du dossier /etc/apt/trusted.gpg.d<br />
Plus de détail [https://itsfoss.com/key-is-stored-in-legacy-trusted-gpg/ ici]<br />
<br />
Une fois ceci fait on peut suivre les instructions de [https://docs.docker.com/config/containers/resource_constraints/#gpu cette page] pour tester si cela à bien fonctionné.<br />
<br />
<br />
<br />
<br />
<br />
*https://wiki.archlinux.org/index.php/Docker#Run_GPU_accelerated_Docker_containers_with_NVIDIA_GPUs<br />
*https://www.jbnet.fr/systeme/docker/docker-configurer-lutilisation-du-gpu-nvidia.html<br />
*https://marmelab.com/blog/2018/03/21/using-nvidia-gpu-within-docker-container.html<br />
*https://github.com/docker/compose/issues/6691</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Drupal&diff=833Drupal2023-06-22T19:09:46Z<p>Jackbot : Page créée avec « Category:Informatique <h1>Problème d'affichage</h1> Il peut arriver que l'interface de Drupal ne s'affiche pas correctement, il est alors nécessaire d'aller dans Configuration > Performance afin de décocher l'aggrégation des CSS et javascript * [https://www.drupal.fr/forum/support/support-general/60076-resolu-probleme-daffichage-theme Source] »</p>
<hr />
<div>[[Category:Informatique]]<br />
<h1>Problème d'affichage</h1><br />
Il peut arriver que l'interface de Drupal ne s'affiche pas correctement, il est alors nécessaire d'aller dans Configuration > Performance afin de décocher l'aggrégation des CSS et javascript<br />
<br />
* [https://www.drupal.fr/forum/support/support-general/60076-resolu-probleme-daffichage-theme Source]</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Cat%C3%A9gorie:Iframe&diff=832Catégorie:Iframe2023-06-11T17:43:04Z<p>Jackbot : Page créée avec « __HIDDENCAT__ »</p>
<hr />
<div>__HIDDENCAT__</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Peertube&diff=831Peertube2023-06-11T17:39:42Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]]<br />
Peertube est une alternative décentralisée à youtube. Tout le monde peut créer sa propre instance et l'abonner à celles des autres. Pour rechercher à travers toutes les instances il existe un moteur de recherche :<br />
<br />
https://peertube-index.net/<br />
<br />
<br />
Tuto pour pouvoir téléverser de gros fichier :<br />
<br />
https://burogu.makotoworkshop.org/index.php?post/2018/12/08/bigfilepeertube<br />
<br />
<h1>Intégrer une vidéo dans mediawiki</h1><br />
Il est possible d'intégrer une vidéo provenant de peertube dans mediawiki en utilisant cette [https://www.mediawiki.org/wiki/Extension:Iframe extension] et en suivant ce [https://cogito.no-ip.info/cogito/OSWiki/index.php/Afficher_une_vid%C3%A9o_Peertube_dans_une_page_mediaWiki tuto].</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Simulation_de_l%27%C3%A9coulement_d%27un_fluide&diff=830Simulation de l'écoulement d'un fluide2023-06-11T17:36:35Z<p>Jackbot : </p>
<hr />
<div>[[Category:Blender]]<br />
<br />
Avec le logiciel Blender il est possible de simuler l'écoulement d'un fluide<br />
<br />
<br />
<iframe key="peertube" path="videos/embed/b3457cd4-b054-4dad-9ddb-b177c1b2fd88" width="640" height="360"/></div>Jackbothttps://wiki.jackbot.fr/index.php?title=Simulation_de_l%27%C3%A9coulement_d%27un_fluide&diff=829Simulation de l'écoulement d'un fluide2023-06-11T17:35:12Z<p>Jackbot : </p>
<hr />
<div>[[Category:Blender]]<br />
<br />
Avec le logiciel Blender il est possible de simuler l'écoulement d'un fluide<br />
<br />
<br />
<iframe key="peertube" path="videos/embed/b3457cd4-b054-4dad-9ddb-b177c1b2fd88" /></div>Jackbothttps://wiki.jackbot.fr/index.php?title=Simulation_de_l%27%C3%A9coulement_d%27un_fluide&diff=828Simulation de l'écoulement d'un fluide2023-06-11T17:34:57Z<p>Jackbot : </p>
<hr />
<div>[[Category:Blender]]<br />
<br />
Avec le logiciel Blender il est possible de simuler l'écoulement d'un fluide<br />
<br />
<br />
< iframe key="peertube" path="videos/embed/b3457cd4-b054-4dad-9ddb-b177c1b2fd88"/></div>Jackbothttps://wiki.jackbot.fr/index.php?title=Simulation_de_l%27%C3%A9coulement_d%27un_fluide&diff=826Simulation de l'écoulement d'un fluide2023-06-11T17:32:27Z<p>Jackbot : </p>
<hr />
<div>[[Category:Blender]]<br />
<br />
Avec le logiciel Blender il est possible de simuler l'écoulement d'un fluide<br />
<br />
<br />
<iframe key="peertube" path="videos/embed/b3457cd4-b054-4dad-9ddb-b177c1b2fd88"/></div>Jackbothttps://wiki.jackbot.fr/index.php?title=Simulation_de_l%27%C3%A9coulement_d%27un_fluide&diff=825Simulation de l'écoulement d'un fluide2023-06-11T17:31:55Z<p>Jackbot : </p>
<hr />
<div>[[Category:Blender]]<br />
<br />
Avec le logiciel Blender il est possible de simuler l'écoulement d'un fluide<br />
<br />
<br />
<iframe key="peertube" path="videos/embed/b3457cd4-b054-4dad-9ddb-b177c1b2fd88" /></div>Jackbothttps://wiki.jackbot.fr/index.php?title=Cat%C3%A9gorie:Blender&diff=824Catégorie:Blender2023-06-11T17:04:01Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]]<br />
[https://fr.wikipedia.org/wiki/Blender Wikipedia] définit Blender de la manière suivante :<br />
<br />
Blender est un logiciel libre de modélisation, d’animation par ordinateur et de rendu en 3D, créé en 1998. Il est actuellement développé par la Fondation Blender.<br />
<br />
Depuis 2019 le logiciel Blender est de plus en plus reconnu par les entreprises du secteur de l'animation 3D, comme Epic Games, Ubisoft et NVIDIA2,3,4.<br />
<br />
Il propose des fonctions avancées de modélisation (dont la sculpture 3D, le texturage et dépliage UV, etc), d’animation 3D (rigging, blend shapes), et de rendu (sur GPU comme sur CPU). Il gère aussi le montage vidéo non linéaire, la composition, la création nodale de matériaux, ainsi que diverses simulations physiques telles que les particules, les corps rigides, les corps souples et les fluides. Ses capacités sont par ailleurs très extensibles, grâce à un système de greffons (addons).<br />
<br />
Il existe une instance peertube dédiée à Blender : https://video.blender.org/videos/local</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Simulation_de_l%27%C3%A9coulement_d%27un_fluide&diff=823Simulation de l'écoulement d'un fluide2023-06-11T16:57:17Z<p>Jackbot : Page créée avec « Category:Blender Avec le logiciel Blender il est possible de simuler l'écoulement d'un fluide »</p>
<hr />
<div>[[Category:Blender]]<br />
<br />
Avec le logiciel Blender il est possible de simuler l'écoulement d'un fluide</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Cat%C3%A9gorie:Blender&diff=822Catégorie:Blender2023-06-11T16:35:19Z<p>Jackbot : Page créée avec « [https://fr.wikipedia.org/wiki/Blender Wikipedia] définit Blender de la manière suivante : Blender est un logiciel libre de modélisation, d’animation par ordinateur et de rendu en 3D, créé en 1998. Il est actuellement développé par la Fondation Blender. Depuis 2019 le logiciel Blender est de plus en plus reconnu par les entreprises du secteur de l'animation 3D, comme Epic Games, Ubisoft et NVIDIA2,3,4. Il propose des fonctions avancées de modél... »</p>
<hr />
<div>[https://fr.wikipedia.org/wiki/Blender Wikipedia] définit Blender de la manière suivante :<br />
<br />
Blender est un logiciel libre de modélisation, d’animation par ordinateur et de rendu en 3D, créé en 1998. Il est actuellement développé par la Fondation Blender.<br />
<br />
Depuis 2019 le logiciel Blender est de plus en plus reconnu par les entreprises du secteur de l'animation 3D, comme Epic Games, Ubisoft et NVIDIA2,3,4.<br />
<br />
Il propose des fonctions avancées de modélisation (dont la sculpture 3D, le texturage et dépliage UV, etc), d’animation 3D (rigging, blend shapes), et de rendu (sur GPU comme sur CPU). Il gère aussi le montage vidéo non linéaire, la composition, la création nodale de matériaux, ainsi que diverses simulations physiques telles que les particules, les corps rigides, les corps souples et les fluides. Ses capacités sont par ailleurs très extensibles, grâce à un système de greffons (addons).<br />
<br />
Il existe une instance peertube dédiée à Blender : https://video.blender.org/videos/local</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Blender&diff=821Blender2023-06-11T16:30:22Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]]<br />
[[Category:Modelisation_3D]]<br />
[[Category:Blender]]<br />
Blender est un logiciel de modélisation 3D très puissant. En plus de l'utilisation de la souris on peut utiliser des scripts python pour modéliser.<br />
<br />
Exemples de [http://www.otvinta.com/ scripts] et un tuto [https://invidious.fdn.fr/watch?v=X0qN_SaFmfE vidéo] de l'utilisation de ces scripts.</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Blender&diff=820Blender2023-06-11T16:29:37Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]][[Category:Modelisation_3D]]<br />
<br />
Blender est un logiciel de modélisation 3D très puissant. En plus de l'utilisation de la souris on peut utiliser des scripts python pour modéliser.<br />
<br />
Exemples de [http://www.otvinta.com/ scripts] et un tuto [https://invidious.fdn.fr/watch?v=X0qN_SaFmfE vidéo] de l'utilisation de ces scripts.</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Courriel&diff=819Courriel2023-04-07T11:16:42Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]][[Category:Administration]]<br />
Pour envoyer un courriel en ligne de commande on peut ajouter dans l'en-tête du fichier les paramètres suivants :<br />
<br />
To: destinataire@domaine.tld<br />
From: expediteur@domaine.tld<br />
Subject: ça c'est facile à comprendre c'est le sujet du courriel<br />
MIME-Version: 1.0<br />
Content-Type: text/html<br />
<br />
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><br />
<html><br />
<head><br />
<br />
<meta http-equiv="content-type" content="text/html; charset=UTF-8"><br />
</head><br />
<body><br />
...<br />
<br />
De cette manière on peut écrire un courriel en utilisant du HTML<br />
<br />
*Source :<br />
https://stackoverflow.com/questions/3317174/sending-html-mail-using-a-shell-script</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Courriel&diff=818Courriel2023-04-07T11:16:30Z<p>Jackbot : Page créée avec « Category:InformatiqueCategory:Administration Pour envoyer un courriel en ligne de commande on peut ajouter dans l'en-tête du fichier les paramètres suivants : To: destinataire@domaine.tld From: expediteur@domaine.tld Subject: ça c'est facile à comprendre c'est le sujet du courriel MIME-Version: 1.0 Content-Type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html>... »</p>
<hr />
<div>[[Category:Informatique]][[Category:Administration]]<br />
Pour envoyer un courriel en ligne de commande on peut ajouter dans l'en-tête du fichier les paramètres suivants :<br />
<br />
To: destinataire@domaine.tld<br />
From: expediteur@domaine.tld<br />
Subject: ça c'est facile à comprendre c'est le sujet du courriel<br />
MIME-Version: 1.0<br />
Content-Type: text/html<br />
<br />
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><br />
<html><br />
<head><br />
<br />
<meta http-equiv="content-type" content="text/html; charset=UTF-8"><br />
</head><br />
<body><br />
...<br />
<br />
De cette manière on peut écrire un courriel en utilisant du HTML<br />
<br />
*Source :<br />
https://stackoverflow.com/questions/3317174/sending-html-mail-using-a-shell-script</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Iptables&diff=817Iptables2023-03-15T05:39:46Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]][[Category:Securite]][[Category:Administration]]<br />
<h1>Présentation</h1><br />
Iptables est un moyen de configurer netfilter (pare-feu au niveau du noyau linux) en utilisant différentes tables : INPUT, FORWARD et OUTPUT. Il est cependant aussi possible de créer ses propres tables. Voici un visuel très bien fait, permettant de comprendre les différentes étapes<br />
<br />
[[Fichier:Iptables-Flowchart.jpg | link=https://karchnu.fr/pages/securite-systemes-et-reseaux/iptables.html]]<br />
<br />
<br />
<br />
<h1>Configuration de base</h1><br />
La seule bonne manière de faire est de tout bloquer puis de configurer ce que l'on souhaite accepter en entrée/sortie. Bien lire ce paragraphe jusqu'au bout pour éviter les blocages. Pour ce faire il faut commencer par vider les tables avec la commande :<br />
iptables -t filter -F<br />
Puis supprimer toutes les chaînes que l'utilisateur a pu rentrer :<br />
iptables -t filter -X<br />
Et enfin bloquer toutes les entrées/sorties :<br />
iptables -t filter -P INPUT DROP<br />
iptables -t filter -P FORWARD DROP<br />
iptables -t filter -P OUTPUT DROP<br />
À partir de ce moment là votre ordinateur n'acceptera plus aucune données venant de l'extérieur et interdira également toute sortie. S'il s'agit d'un ordinateur distant auquel vous accédez via ssh, '''votre connexion sera coupé !!''' Pour éviter que cela n'arrive il faut ajouter les lignes :<br />
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT<br />
iptables -A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT<br />
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT<br />
qui permettent de ne pas casser les connexions déjà établies. Un peu plus loin on verra comment préciser ces règles.<br />
<br />
<h1>Ouvrir un port</h1><br />
Maintenant que la base est là, on peut autoriser certaines connexions.<br />
<br />
<h2>Pour tout le monde</h2><br />
Prenons l'exemple de ssh. Si vous souhaitez autoriser l'accès à une machine, il faut ajouter les lignes :<br />
<br />
#autorisation d'entrer<br />
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT<br />
#autorisation de sortir<br />
iptables -t filter -A OUTPUT -p tcp --sport 22 -j ACCEPT<br />
<br />
<h2>Pour une seule ip</h2><br />
Si vous voulez qu'un seul ordi de votre réseau puisse se connecter en ssh, on peut restreindre l'accès qu'a une seule addresse :<br />
#autorisation d'entrer<br />
iptables -t filter -A INPUT -s 192.168.1.42 -p tcp --dport 22 -j ACCEPT<br />
#autorisation de sortir<br />
iptables -t filter -A OUTPUT -d 192.168.1.42 -p tcp --sport 22 -j ACCEPT<br />
<br />
<h2>Pour un sous-réseau</h2><br />
Ou alors autoriser à un sous réseau :<br />
#autorisation d'entrer<br />
iptables -t filter -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT<br />
#autorisation de sortir<br />
iptables -t filter -A OUTPUT -d 192.168.1.0/24 -p tcp --sport 22 -j ACCEPT<br />
<br />
<h1>Redirection de ports</h1><br />
En plus de gérer les autorisation d'entrées et sorties iptables permet de faire du routage en redirigeant certains ports en entrée vers une autre adresse ip et/ou un autre port. La première étape sera de changer la destination du paquet, ce qui se fait en modifiant la chaîne PREROUTING :<br />
#redirection du port 25 vers le serveur courriel<br />
iptables -t nat -A PREROUTING -p tcp --dport 25 -j DNAT --to-destination 192.168.1.42:25<br />
<br />
Cependant cela ne suffit pas, car suite à cette modification, le paquet ne sera plus destiné à la machine qui vient de le recevoir. Si vous regardez le schéma vous comprendrez que le paquet va alors devoir traverser la chaîne FORWARD<br />
iptables -A FORWARD -p tcp --dport 25 -j ACCEPT<br />
<br />
Il reste tout à fait possible de combiner les options de source et de destination afin de limiter les adresse ip autorisées à passer cette redirection.<br />
<br />
<h1>Passerelle</h1><br />
Jusqu'à présent les règles décrites ne s'occupe que des paquets voyageant dans un seul sens. Suite à la redirection la source des paquets n'a pas changé et il est possible que la machine recevant ce paquet soit dans l'incapacité de contacter directement la source. Ce qui empêchera l'envoie d'une réponse. Regardons comment créer une vraie passerelle qui aura pour rôle de faire communiquer deux réseaux distincts.<br />
<br />
<h2>Contexte</h2><br />
[[Fichier:Diagramme reseau.png]]<br />
<br />
Ordi 1 et Ordi 2 sont sur des réseaux différents et ne peuvent donc pas communiquer directement. Passerelle étant sur les deux réseaux elle pourra jouer le rôle d'intermédiaire.<br />
<br />
<h3>Ordi 1 contacte Ordi 2</h3><br />
Dans ce cas il faut que Ordi 1 envoie ses paquets à Passerelle et Passerelle doit effectuer une redirection en changeant les chaînes PREROUTING et FORWARD comme vu précédemment<br />
<br />
iptables -t nat -A PREROUTING -p tcp --dport 25 -j DNAT --to-destination 192.168.1.2:25<br />
iptables -A FORWARD -p tcp --dport 25 -j ACCEPT<br />
<br />
Ordi 2 recevra effectivement les paquets, mais ils auront pour source : 192.168.0.2, qui est un réseau inaccessible pour Ordi 2. La réponse sera donc perdu ... Il faut donc faire croire à Ordi 2 que le paquet provient de Passerelle. Pour cela deux solutions SNAT et MASQUERADE<br />
<br />
<h4>SNAT</h4><br />
SNAT est l'acronyme pour Source Network Address Translation. Qui est très simple à comprendre, on va simplement modifier l'adresse source du paquet.<br />
iptables -t nat -A POSTROUTING -p tcp --dport 25 -j SNAT --to-source 192.168.1.1<br />
Grâce à ça les paquets qui se présenteront à Passerelle et qui sont à destination du port 25 seront redirigé vers Ordi 2 sur le port 25 et la source sera changé pour 192.168.1.1, l'adresse de Passerelle que Ordi 2 peut contacter. Mais les plus malins d'entre vous auront sans doute une question : "Si pour une raison ou une autre je change l'adresse de ma passerelle, faut-il que je change la configuration ?", la réponse est oui. C'est pour cela qu'on va aborder également la deuxième façon de faire : MASQUERADE<br />
<br />
<h4>MASQUERADE</h4><br />
Le masquerading fait exactement la même chose que SNAT, à la différence qu'il faut lui fournir l'interface par laquelle le paquet va sortir.<br />
iptables -t nat -A POSTROUTING -p tcp --dport 25 -o eth0 -j MASQUERADE<br />
Avec cette ligne de commande, les paquets sortant auront pour source la même ip que l'interface eth0. Dans ce cas, si l'adresse de Passerelle change, pas besoin de refaire la configuration.<br />
<br />
<h3>Ordi 2 répond à Ordi 1</h3><br />
Arrivé ici Ordi 2 a bien reçu le paquet de Ordi 1 et croit qu'il provient de Passerelle. Il va donc répondre à Passerelle. On pourrait essayer d'écrire des règles pour débloquer le chemin inverse, mais il y a plus simple :<br />
iptables -A FORWARD -p tcp --sport 25 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT<br />
<br />
Pour bien comprendre ce qu'il se passe il faut savoir qu'Iptables ne fait qu'agir sur NetFilter qui est un composant du noyau linux. Au moment où un paquet passera par la chaîne PREROUTING il sera tracé. La réponse se verra donc attribuer la bonne adresse de destination et si vous regardez le schéma tout en haut de cette page, vous comprendrez alors que le paquet passera par la chaîne FORWARD. Donc nul besoin d'interagir avec les chaînes INPUT et OUTPUT, FORWARD suffit.<br />
<br />
<h2>Récapitulatif</h2><br />
iptables -t nat -A PREROUTING -p tcp --dport 25 -j DNAT --to-destination 192.168.1.2:25<br />
iptables -A FORWARD -p tcp --dport 25 -j ACCEPT<br />
iptables -t nat -A POSTROUTING -p tcp --dport 25 -o eth0 -j MASQUERADE<br />
iptables -A FORWARD -p tcp --sport 25 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT<br />
<br />
Voici donc les quatre règles qui vous permettront de rediriger correctement un port ouvert sur Ordi 2. On peut encore affiner ces règles en limitant à certaines adresses sources si nécessaire.<br />
<br />
<h1>Chaînes personnalisées</h1><br />
Il peut être très intéressant d'utiliser des chaînes personnalisées.<br />
<h2>Création d'une chaîne</h2><br />
Pour créer une nouvelle chaîne il suffit de taper :<br />
iptables -N nom_de_la_chaine<br />
Par défaut cette chaîne sera vide et n'aura donc aucune utilité.<br />
<br />
<h2>Remplissage</h2><br />
On peut ajouter des règles à cette chaîne avec :<br />
iptables -A nom_de_la_chaine -p tcp --dport 22 -j ACCEPT<br />
Qui aura donc pour but d'accepter les paquets entrant à destination du port 22<br />
Cependant aucun paquet n'atteindra cette règle ...<br />
<br />
<h2>Où se trouve une chaîne personnalisée dans le diagramme ?</h2><br />
Bonne question. Pour l'instant, nul part ! Pour associer notre nouvelle chaîne au diagramme il faut utiliser ce genre de commande :<br />
iptables -A INPUT -j nom_de_la_chaine<br />
Ce qui aura pour effet qu'un paquet rentrant passera en premier lieu aux travers des règles INPUT. Mais si aucune correspondance n'est trouvé, à la sortie de INPUT, le paquet sera dirigé vers la chaîne : nom_de_la_chaine.<br />
Une chaîne personnalisée peut donc se retrouver n'importe où dans le diagramme suivant les associations qui seront faite.<br />
<br />
<h2>Suppression d'une chaîne</h2><br />
Dans un premier temps il faut vider la chaîne avec :<br />
iptables -F nom_de_la_chaine<br />
Puis la supprimer avec :<br />
iptables -X nom_de_la_chaine<br />
<br />
<h2>Exemple de redirection de port</h2><br />
Si on reprend notre exemple de redirection de port vu plus haut, on peut avec des chaînes personnalisées, classer tout ça de manière plus propre<br />
<br />
iptables -t nat -N SMTP_PREROUTING<br />
iptables -t nat -A SMTP_PREROUTING -p tcp --dport 25 -j DNAT --to-destination 192.168.1.2:25<br />
iptables -t nat -A PREROUTING -j SMTP_PREROUTING<br />
<br />
iptables -N SMTP_FORWARD<br />
iptables -A SMTP_FORWARD -p tcp --dport 25 -j ACCEPT<br />
iptables -A SMTP_FORWARD -p tcp --sport 25 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT<br />
iptables -A FORWARD -j SMTP_FORWARD<br />
<br />
iptables -t nat -N SMTP_POSTROUTING<br />
iptables -t nat -A SMTP_POSTROUTING -p tcp --dport 25 -o eth0 -j MASQUERADE<br />
iptables -t nat -A POSTROUTING -j SMTP_POSTROUTING<br />
<br />
Ce qui rend les choses plus lisible quand on affiche les règles Iptables :<br />
<pre style="color: silver; background: black;"><br />
Chain SMTP_PREROUTING (1 references)<br />
target prot opt source destination <br />
DNAT tcp -- anywhere anywhere tcp dpt:smtp to:192.168.1.2:25<br />
</pre><br />
<br />
Pour supprimer ces règles, il suffira simplement de connaître leurs noms :<br />
#vider les chaines<br />
iptables -t nat -F SMTP_PREROUTING<br />
iptables -F SMTP_FORWARD<br />
iptables -t nat -F SMTP_POSTROUTING<br />
<br />
#suppression des réferences<br />
iptables -t nat -D PREROUTING -j SMTP_PREROUTING<br />
iptables -D FORWARD -j SMTP_FORWARD<br />
iptables -t nat -D POSTROUTING -j SMTP_POSTROUTING<br />
<br />
#suppression des chaines<br />
iptables -t nat -X SMTP_PREROUTING<br />
iptables -X SMTP_FORWARD<br />
iptables -t nat -X SMTP_POSTROUTING<br />
<br />
<h1>Blocage d'adresse ip</h1><br />
<h2>Cas général</h2><br />
Lorsqu'on a un serveur il arrive que l'on voit des adresses essayant de se connecter, souvent à des fin malveillantes. Pour les bloquer il suffit d'ajouter cette ligne :<br />
iptables -I INPUT -s 155.133.82.146 -j DROP<br />
L'option -I spécifie que cette règle doit passer avant toutes les autres dans la table INPUT, de cette manière on s'assure que même s'il existe une règle permettant l'accès elle ne sera pas appliqué pour cette adresse ip.<br />
<br />
<h2>Cas de Docker</h2><br />
Avec Docker la règle modifiant la table INPUT n'aura aucun effet, car Docker crée sa propre table pour gérer les entrées/sorties des conteneurs. Par défaut il ouvre les ports spécifiés des conteneurs vers le monde extérieurs sans aucune restriction. Pour en limiter l'accès il faut alors utiliser :<br />
iptables -I DOCKER -s 155.133.82.146 -j DROP<br />
Qui va modifier la table créée par Docker et bloquer l'adresse ip qui tente de se connecter sans cesse.<br />
<br />
<h2>Automatisation des blocages</h2><br />
[https://wiki.jackbot.fr/index.php?title=Fail2ban fail2ban] est un logiciel permettant d'ajouter automatiquement des adresses ip à la liste noire lorsque trop de tentative infructueuse de connexion ont eu lieu.<br />
<br />
<h1>Limitation de la fréquence des paquets</h1><br />
Prenons un cas concret, lorsqu'on possède un serveur on s'y connecte en SSH. Cependant le port 22 est l'un des premier à être scanné par des attaquants et parfois de très nombreuses fois par seconde. Il est donc intéressant de limiter la fréquence à laquelle un port peut être questionné chaque seconde.<br />
<br />
<h2>Chaînes personnalisées</h2><br />
Pour faire ça propre, commençons par créer des chaînes personnalisées :<br />
iptables -N SSH<br />
iptables -N SSH_FAIL<br />
iptables -N SSH_ACCEPT<br />
<br />
Il faut ensuite créer un "point d'entrée" vers la chaîne SSH<br />
iptables -t filter -A INPUT -p tcp --dport 22 -j SSH<br />
De cette façon, tous les paquets à destination du port 22 seront redirigés vers la chaîne SSH.<br />
<br />
<h2>Ne pas se tirer une balle dans le pied</h2><br />
Un des points important est de se laisser une porte ouverte. C'est à dire qu'il faut créer en premier une exception pour que notre accès vers notre serveur ne soit pas limité. On peut écrire une règle de ce type :<br />
iptables -A SSH -s 192.168.1.122 -i eth0 -j ACCEPT<br />
En adaptant évidemment l'adresse IP et/ou l'interface à laquelle on se connecte.<br />
<br />
<h2>Suivre une adresse IP</h2><br />
Maintenant il faut suivre le comportement d'une adresse IP. Pour cela il faut l'ajouter à la liste<br />
iptables -A SSH -m state --state NEW -m recent --name SSH --set<br />
#si un nouveau paquet arrive qu il est dans la liste SSH qu il a moins de 60s et qu'il a été reçu au moins 3 fois alors il est jeté<br />
iptables -A SSH -m state --state NEW -m recent --name SSH --update --seconds 60 --hitcount 3 -j SSH_FAIL<br />
#dans les autres cas on accepte<br />
iptables -A SSH -m state --state NEW -m recent --name SSH --rcheck -j SSH_ACCEPT<br />
<br />
*La première règle fait que quand un nouveau paquet (-m state --state NEW) arrive on l'ajoute à la liste (--set).<br />
*La deuxième règle va permettre de mettre à jour l'horodatage (--update) et de vérifier combien de fois cette adresse a été vu au cours d'une période (--seconds 60 --hitcount 3). Dans ce cas là si l'adresse a été vu 3 fois ou plus en 60 seconde, alors le paquet est redirigé vers la chaîne SSH_FAIL.<br />
*La troisième règle est simplement là dans le cas contraire. Si l'adresse source n'a pas été vu plus de 3 fois en moins de 60 secondes, alors il sera redirigé vers la chaîne SSH_ACCEPT<br />
<br />
<h2>Décision finale sur les paquets</h2><br />
Pour finir il faut décider de ce qu'on va faire des paquets qui sont dirigés vers les chaînes SSH_FAIL et SSH_ACCEPT. On en profite pour ajouter des log au passage :<br />
<br />
#SSH_FAIL<br />
#Si un paquet arrive dans cette chaine c est qu il doit être jeté<br />
iptables -A SSH_FAIL -j LOG --log-prefix "SSH FAIL :"<br />
iptables -A SSH_FAIL -j DROP<br />
<br />
#SSH_ACCEPT<br />
#Si un paquet arrive dans cette chaine c est qu il doit être accepté<br />
iptables -A SSH_ACCEPT -j LOG --log-prefix "SSH ACCEPT :"<br />
iptables -A SSH_ACCEPT -j ACCEPT<br />
<br />
<br />
<br />
<br />
<h1>Sources :</h1><br />
*https://karchnu.fr/pages/securite-systemes-et-reseaux/iptables.html<br />
*https://linuxfr.org/forums/linux-debutant/posts/iptables-debutant<br />
*https://www.microlinux.fr/iptables/<br />
*http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-sg-fr-4/s1-firewall-ipt-fwd.html<br />
*https://linux.die.net/man/8/iptables</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Iptables&diff=816Iptables2023-03-15T05:20:34Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]][[Category:Securite]][[Category:Administration]]<br />
<h1>Présentation</h1><br />
Iptables est un moyen de configurer netfilter (pare-feu au niveau du noyau linux) en utilisant différentes tables : INPUT, FORWARD et OUTPUT. Il est cependant aussi possible de créer ses propres tables. Voici un visuel très bien fait, permettant de comprendre les différentes étapes<br />
<br />
[[Fichier:Iptables-Flowchart.jpg | link=https://karchnu.fr/pages/securite-systemes-et-reseaux/iptables.html]]<br />
<br />
<br />
<br />
<h1>Configuration de base</h1><br />
La seule bonne manière de faire est de tout bloquer puis de configurer ce que l'on souhaite accepter en entrée/sortie. Bien lire ce paragraphe jusqu'au bout pour éviter les blocages. Pour ce faire il faut commencer par vider les tables avec la commande :<br />
iptables -t filter -F<br />
Puis supprimer toutes les chaînes que l'utilisateur a pu rentrer :<br />
iptables -t filter -X<br />
Et enfin bloquer toutes les entrées/sorties :<br />
iptables -t filter -P INPUT DROP<br />
iptables -t filter -P FORWARD DROP<br />
iptables -t filter -P OUTPUT DROP<br />
À partir de ce moment là votre ordinateur n'acceptera plus aucune données venant de l'extérieur et interdira également toute sortie. S'il s'agit d'un ordinateur distant auquel vous accédez via ssh, '''votre connexion sera coupé !!''' Pour éviter que cela n'arrive il faut ajouter les lignes :<br />
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT<br />
iptables -A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT<br />
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT<br />
qui permettent de ne pas casser les connexions déjà établies. Un peu plus loin on verra comment préciser ces règles.<br />
<br />
<h1>Ouvrir un port</h1><br />
Maintenant que la base est là, on peut autoriser certaines connexions.<br />
<br />
<h2>Pour tout le monde</h2><br />
Prenons l'exemple de ssh. Si vous souhaitez autoriser l'accès à une machine, il faut ajouter les lignes :<br />
<br />
#autorisation d'entrer<br />
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT<br />
#autorisation de sortir<br />
iptables -t filter -A OUTPUT -p tcp --sport 22 -j ACCEPT<br />
<br />
<h2>Pour une seule ip</h2><br />
Si vous voulez qu'un seul ordi de votre réseau puisse se connecter en ssh, on peut restreindre l'accès qu'a une seule addresse :<br />
#autorisation d'entrer<br />
iptables -t filter -A INPUT -s 192.168.1.42 -p tcp --dport 22 -j ACCEPT<br />
#autorisation de sortir<br />
iptables -t filter -A OUTPUT -d 192.168.1.42 -p tcp --sport 22 -j ACCEPT<br />
<br />
<h2>Pour un sous-réseau</h2><br />
Ou alors autoriser à un sous réseau :<br />
#autorisation d'entrer<br />
iptables -t filter -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT<br />
#autorisation de sortir<br />
iptables -t filter -A OUTPUT -d 192.168.1.0/24 -p tcp --sport 22 -j ACCEPT<br />
<br />
<h1>Redirection de ports</h1><br />
En plus de gérer les autorisation d'entrées et sorties iptables permet de faire du routage en redirigeant certains ports en entrée vers une autre adresse ip et/ou un autre port. La première étape sera de changer la destination du paquet, ce qui se fait en modifiant la chaîne PREROUTING :<br />
#redirection du port 25 vers le serveur courriel<br />
iptables -t nat -A PREROUTING -p tcp --dport 25 -j DNAT --to-destination 192.168.1.42:25<br />
<br />
Cependant cela ne suffit pas, car suite à cette modification, le paquet ne sera plus destiné à la machine qui vient de le recevoir. Si vous regardez le schéma vous comprendrez que le paquet va alors devoir traverser la chaîne FORWARD<br />
iptables -A FORWARD -p tcp --dport 25 -j ACCEPT<br />
<br />
Il reste tout à fait possible de combiner les options de source et de destination afin de limiter les adresse ip autorisées à passer cette redirection.<br />
<br />
<h1>Passerelle</h1><br />
Jusqu'à présent les règles décrites ne s'occupe que des paquets voyageant dans un seul sens. Suite à la redirection la source des paquets n'a pas changé et il est possible que la machine recevant ce paquet soit dans l'incapacité de contacter directement la source. Ce qui empêchera l'envoie d'une réponse. Regardons comment créer une vraie passerelle qui aura pour rôle de faire communiquer deux réseaux distincts.<br />
<br />
<h2>Contexte</h2><br />
[[Fichier:Diagramme reseau.png]]<br />
<br />
Ordi 1 et Ordi 2 sont sur des réseaux différents et ne peuvent donc pas communiquer directement. Passerelle étant sur les deux réseaux elle pourra jouer le rôle d'intermédiaire.<br />
<br />
<h3>Ordi 1 contacte Ordi 2</h3><br />
Dans ce cas il faut que Ordi 1 envoie ses paquets à Passerelle et Passerelle doit effectuer une redirection en changeant les chaînes PREROUTING et FORWARD comme vu précédemment<br />
<br />
iptables -t nat -A PREROUTING -p tcp --dport 25 -j DNAT --to-destination 192.168.1.2:25<br />
iptables -A FORWARD -p tcp --dport 25 -j ACCEPT<br />
<br />
Ordi 2 recevra effectivement les paquets, mais ils auront pour source : 192.168.0.2, qui est un réseau inaccessible pour Ordi 2. La réponse sera donc perdu ... Il faut donc faire croire à Ordi 2 que le paquet provient de Passerelle. Pour cela deux solutions SNAT et MASQUERADE<br />
<br />
<h4>SNAT</h4><br />
SNAT est l'acronyme pour Source Network Address Translation. Qui est très simple à comprendre, on va simplement modifier l'adresse source du paquet.<br />
iptables -t nat -A POSTROUTING -p tcp --dport 25 -j SNAT --to-source 192.168.1.1<br />
Grâce à ça les paquets qui se présenteront à Passerelle et qui sont à destination du port 25 seront redirigé vers Ordi 2 sur le port 25 et la source sera changé pour 192.168.1.1, l'adresse de Passerelle que Ordi 2 peut contacter. Mais les plus malins d'entre vous auront sans doute une question : "Si pour une raison ou une autre je change l'adresse de ma passerelle, faut-il que je change la configuration ?", la réponse est oui. C'est pour cela qu'on va aborder également la deuxième façon de faire : MASQUERADE<br />
<br />
<h4>MASQUERADE</h4><br />
Le masquerading fait exactement la même chose que SNAT, à la différence qu'il faut lui fournir l'interface par laquelle le paquet va sortir.<br />
iptables -t nat -A POSTROUTING -p tcp --dport 25 -o eth0 -j MASQUERADE<br />
Avec cette ligne de commande, les paquets sortant auront pour source la même ip que l'interface eth0. Dans ce cas, si l'adresse de Passerelle change, pas besoin de refaire la configuration.<br />
<br />
<h3>Ordi 2 répond à Ordi 1</h3><br />
Arrivé ici Ordi 2 a bien reçu le paquet de Ordi 1 et croit qu'il provient de Passerelle. Il va donc répondre à Passerelle. On pourrait essayer d'écrire des règles pour débloquer le chemin inverse, mais il y a plus simple :<br />
iptables -A FORWARD -p tcp --sport 25 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT<br />
<br />
Pour bien comprendre ce qu'il se passe il faut savoir qu'Iptables ne fait qu'agir sur NetFilter qui est un composant du noyau linux. Au moment où un paquet passera par la chaîne PREROUTING il sera tracé. La réponse se verra donc attribuer la bonne adresse de destination et si vous regardez le schéma tout en haut de cette page, vous comprendrez alors que le paquet passera par la chaîne FORWARD. Donc nul besoin d'interagir avec les chaînes INPUT et OUTPUT, FORWARD suffit.<br />
<br />
<h2>Récapitulatif</h2><br />
iptables -t nat -A PREROUTING -p tcp --dport 25 -j DNAT --to-destination 192.168.1.2:25<br />
iptables -A FORWARD -p tcp --dport 25 -j ACCEPT<br />
iptables -t nat -A POSTROUTING -p tcp --dport 25 -o eth0 -j MASQUERADE<br />
iptables -A FORWARD -p tcp --sport 25 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT<br />
<br />
Voici donc les quatre règles qui vous permettront de rediriger correctement un port ouvert sur Ordi 2. On peut encore affiner ces règles en limitant à certaines adresses sources si nécessaire.<br />
<br />
<h1>Chaînes personnalisées</h1><br />
Il peut être très intéressant d'utiliser des chaînes personnalisées.<br />
<h2>Création d'une chaîne</h2><br />
Pour créer une nouvelle chaîne il suffit de taper :<br />
iptables -N nom_de_la_chaine<br />
Par défaut cette chaîne sera vide et n'aura donc aucune utilité.<br />
<br />
<h2>Remplissage</h2><br />
On peut ajouter des règles à cette chaîne avec :<br />
iptables -A nom_de_la_chaine -p tcp --dport 22 -j ACCEPT<br />
Qui aura donc pour but d'accepter les paquets entrant à destination du port 22<br />
Cependant aucun paquet n'atteindra cette règle ...<br />
<br />
<h2>Où se trouve une chaîne personnalisée dans le diagramme ?</h2><br />
Bonne question. Pour l'instant, nul part ! Pour associer notre nouvelle chaîne au diagramme il faut utiliser ce genre de commande :<br />
iptables -A INPUT -j nom_de_la_chaine<br />
Ce qui aura pour effet qu'un paquet rentrant passera en premier lieu aux travers des règles INPUT. Mais si aucune correspondance n'est trouvé, à la sortie de INPUT, le paquet sera dirigé vers la chaîne : nom_de_la_chaine.<br />
Une chaîne personnalisée peut donc se retrouver n'importe où dans le diagramme suivant les associations qui seront faite.<br />
<br />
<h2>Suppression d'une chaîne</h2><br />
Dans un premier temps il faut vider la chaîne avec :<br />
iptables -F nom_de_la_chaine<br />
Puis la supprimer avec :<br />
iptables -X nom_de_la_chaine<br />
<br />
<h2>Exemple de redirection de port</h2><br />
Si on reprend notre exemple de redirection de port vu plus haut, on peut avec des chaînes personnalisées, classer tout ça de manière plus propre<br />
<br />
iptables -t nat -N SMTP_PREROUTING<br />
iptables -t nat -A SMTP_PREROUTING -p tcp --dport 25 -j DNAT --to-destination 192.168.1.2:25<br />
iptables -t nat -A PREROUTING -j SMTP_PREROUTING<br />
<br />
iptables -N SMTP_FORWARD<br />
iptables -A SMTP_FORWARD -p tcp --dport 25 -j ACCEPT<br />
iptables -A SMTP_FORWARD -p tcp --sport 25 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT<br />
iptables -A FORWARD -j SMTP_FORWARD<br />
<br />
iptables -t nat -N SMTP_POSTROUTING<br />
iptables -t nat -A SMTP_POSTROUTING -p tcp --dport 25 -o eth0 -j MASQUERADE<br />
iptables -t nat -A POSTROUTING -j SMTP_POSTROUTING<br />
<br />
Ce qui rend les choses plus lisible quand on affiche les règles Iptables :<br />
<pre style="color: silver; background: black;"><br />
Chain SMTP_PREROUTING (1 references)<br />
target prot opt source destination <br />
DNAT tcp -- anywhere anywhere tcp dpt:smtp to:192.168.1.2:25<br />
</pre><br />
<br />
Pour supprimer ces règles, il suffira simplement de connaître leurs noms :<br />
#vider les chaines<br />
iptables -t nat -F SMTP_PREROUTING<br />
iptables -F SMTP_FORWARD<br />
iptables -t nat -F SMTP_POSTROUTING<br />
<br />
#suppression des réferences<br />
iptables -t nat -D PREROUTING -j SMTP_PREROUTING<br />
iptables -D FORWARD -j SMTP_FORWARD<br />
iptables -t nat -D POSTROUTING -j SMTP_POSTROUTING<br />
<br />
#suppression des chaines<br />
iptables -t nat -X SMTP_PREROUTING<br />
iptables -X SMTP_FORWARD<br />
iptables -t nat -X SMTP_POSTROUTING<br />
<br />
<h1>Blocage d'adresse ip</h1><br />
<h2>Cas général</h2><br />
Lorsqu'on a un serveur il arrive que l'on voit des adresses essayant de se connecter, souvent à des fin malveillantes. Pour les bloquer il suffit d'ajouter cette ligne :<br />
iptables -I INPUT -s 155.133.82.146 -j DROP<br />
L'option -I spécifie que cette règle doit passer avant toutes les autres dans la table INPUT, de cette manière on s'assure que même s'il existe une règle permettant l'accès elle ne sera pas appliqué pour cette adresse ip.<br />
<br />
<h2>Cas de Docker</h2><br />
Avec Docker la règle modifiant la table INPUT n'aura aucun effet, car Docker crée sa propre table pour gérer les entrées/sorties des conteneurs. Par défaut il ouvre les ports spécifiés des conteneurs vers le monde extérieurs sans aucune restriction. Pour en limiter l'accès il faut alors utiliser :<br />
iptables -I DOCKER -s 155.133.82.146 -j DROP<br />
Qui va modifier la table créée par Docker et bloquer l'adresse ip qui tente de se connecter sans cesse.<br />
<br />
<h2>Automatisation des blocages</h2><br />
[https://wiki.jackbot.fr/index.php?title=Fail2ban fail2ban] est un logiciel permettant d'ajouter automatiquement des adresses ip à la liste noire lorsque trop de tentative infructueuse de connexion ont eu lieu.<br />
<br />
<h1>Limitation de la fréquence des paquets</h1><br />
Prenons un cas concret, lorsqu'on possède un serveur on s'y connecte en SSH. Cependant le port 22 est l'un des premier à être scanné par des attaquants et parfois de très nombreuses fois par seconde. Il est donc intéressant de limiter la fréquence à laquelle un port peut être questionné chaque seconde.<br />
<br />
<h2>Chaînes personnalisées</h2><br />
Pour faire ça propre, commençons par créer des chaînes personnalisées :<br />
iptables -N SSH<br />
iptables -N SSH_FAIL<br />
iptables -N SSH_ACCEPT<br />
<br />
Il faut ensuite créer un "point d'entrée" vers la chaîne SSH<br />
iptables -t filter -A INPUT -p tcp --dport 22 -j SSH<br />
De cette façon, tous les paquets à destination du port 22 seront redirigés vers la chaîne SSH.<br />
<br />
<h2>Ne pas se tirer une balle dans le pied</h2><br />
Un des points important est de se laisser une porte ouverte. C'est à dire qu'il faut créer en premier une exception pour que notre accès vers notre serveur ne soit pas limité. On peut écrire une règle de ce type :<br />
iptables -A SSH -s 192.168.1.122 -i eth0 -j ACCEPT<br />
En adaptant évidemment l'adresse IP et/ou l'interface à laquelle on se connecte.<br />
<br />
<h2>Suivre une adresse IP</h2><br />
Maintenant il faut suivre le comportement d'une adresse IP. Pour cela il faut l'ajouter à la liste<br />
iptables -A SSH -m state --state NEW -m recent --name SSH --set<br />
#si un nouveau paquet arrive qu il est dans la liste SSH qu il a moins de 60s et qu'il a été reçu au moins 3 fois alors il est jeté<br />
iptables -A SSH -m state --state NEW -m recent --name SSH --update --seconds 60 --hitcount 3 -j SSH_FAIL<br />
#dans les autres cas on accepte<br />
iptables -A SSH -m state --state NEW -m recent --name SSH --rcheck -j SSH_ACCEPT<br />
<br />
*La première règle fait que quand un nouveau paquet (-m state --state NEW) arrive on l'ajoute à la liste (--set).<br />
*La deuxième règle va permettre de mettre à jour l'horodatage (--update) et de vérifier combien de fois cette adresse a été vu au cours d'une période (--seconds 60 --hitcount 3). Dans ce cas là si l'adresse a été vu 3 fois ou plus en 60 seconde, alors le paquet est redirigé vers la chaîne SSH_FAIL.<br />
*La troisième règle est simplement là dans le cas contraire. Si l'adresse source n'a pas été vu plus de 3 fois en moins de 60 secondes, alors il sera redirigé vers la chaîne SSH_ACCEPT<br />
<br />
<h2>Décision finale sur les paquets</h2><br />
Pour finir il faut décider de ce qu'on va faire des paquets qui sont dirigés vers les chaînes SSH_FAIL et SSH_ACCEPT. On en profite pour ajouter des log au passage :<br />
<br />
#SSH_FAIL<br />
#Si un paquet arrive dans cette chaine c est qu il doit être jeté<br />
iptables -A SSH_FAIL -j LOG --log-prefix "SSH FAIL :"<br />
iptables -A SSH_FAIL -j DROP<br />
<br />
#SSH_ACCEPT<br />
#Si un paquet arrive dans cette chaine c est qu il doit être accepté<br />
iptables -A SSH_ACCEPT -j LOG --log-prefix "SSH ACCEPT :"<br />
iptables -A SSH_ACCEPT -j ACCEPT<br />
<br />
<br />
<br />
<br />
<h1>Sources :</h1><br />
*https://karchnu.fr/pages/securite-systemes-et-reseaux/iptables.html<br />
*https://linuxfr.org/forums/linux-debutant/posts/iptables-debutant<br />
*https://www.microlinux.fr/iptables/<br />
*http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-sg-fr-4/s1-firewall-ipt-fwd.html</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Guide_d%27autod%C3%A9fense_num%C3%A9rique&diff=815Guide d'autodéfense numérique2023-02-17T17:16:09Z<p>Jackbot : </p>
<hr />
<div>[[Category:Informatique]]<br />
[[Category:Securite]]<br />
https://guide.boum.org/pr%C3%A9face-%C3%A0-cette-%C3%A9dition.html</div>Jackbothttps://wiki.jackbot.fr/index.php?title=Guide_d%27autod%C3%A9fense_num%C3%A9rique&diff=814Guide d'autodéfense numérique2023-02-17T17:16:00Z<p>Jackbot : Page créée avec « Category:Informatique Category:Securite https://guide.boum.org/pr%C3%A9face-%C3%A0-cette-%C3%A9dition.html »</p>
<hr />
<div>[[Category:Informatique]]<br />
[[Category:Securite]]<br />
<br />
https://guide.boum.org/pr%C3%A9face-%C3%A0-cette-%C3%A9dition.html</div>Jackbot