<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.sn4ky.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sn4kY</id>
	<title>Sn4kY - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sn4ky.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sn4kY"/>
	<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Sp%C3%A9cial:Contributions/Sn4kY"/>
	<updated>2026-05-06T13:11:55Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenSSH&amp;diff=128</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenSSH&amp;diff=128"/>
		<updated>2026-03-18T14:29:08Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SFTP ==&lt;br /&gt;
=== Activer un chroot SFTP avec OpenSSH ===&lt;br /&gt;
&lt;br /&gt;
dans &amp;lt;code&amp;gt;/path/to/sshd_config.d/sftp.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
==== si ftp par user ====&lt;br /&gt;
 Match user sftp-user&lt;br /&gt;
       ChrootDirectory /home/sftp/%u&lt;br /&gt;
       ForceCommand internal-sftp&lt;br /&gt;
       AllowTcpForwarding no&lt;br /&gt;
       GatewayPorts no&lt;br /&gt;
       X11Forwarding no&lt;br /&gt;
&lt;br /&gt;
==== si sftp par groupe ====&lt;br /&gt;
 Match group sftp&lt;br /&gt;
        ChrootDirectory /home/sftp/%u&lt;br /&gt;
        ForceCommand internal-sftp&lt;br /&gt;
        AllowTcpForwarding no&lt;br /&gt;
        GatewayPorts no&lt;br /&gt;
        X11Forwarding no&lt;br /&gt;
&lt;br /&gt;
=== Mettre l&#039;user dans le bon home directory à la connexion ===&lt;br /&gt;
 mkdir /home/sftp/&lt;br /&gt;
 mkdir -p /home/sftp/sftp-user&lt;br /&gt;
==== Si sftp par user ====&lt;br /&gt;
 useradd -M -b / -s /sbin/nologin sftp-user&lt;br /&gt;
==== Si sftp par groupe ====&lt;br /&gt;
 groupadd -g 3000 sftp&lt;br /&gt;
 useradd -g sftp -M -b / -s /sbin/nologin sftp-user&lt;br /&gt;
&lt;br /&gt;
L&#039;idée est d&#039;avoir dans &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; un utilisateur comme ceci :&lt;br /&gt;
 sftp-user:x:500:3000::/sftp-user:/sbin/nologin&lt;br /&gt;
&amp;lt;code&amp;gt;/sbin/nologin&amp;lt;/code&amp;gt; peut être remplacé par &amp;lt;code&amp;gt;/bin/false&amp;lt;/code&amp;gt;, le shell est forcé par le &amp;lt;code&amp;gt;ForceCommand&amp;lt;/code&amp;gt; de la sous section d&#039;OpenSSH&lt;br /&gt;
&lt;br /&gt;
=== Autoriser l&#039;utilisation d&#039;une clé RSA ===&lt;br /&gt;
dans &amp;lt;code&amp;gt;/path/to/sshd_config&amp;lt;/code&amp;gt;&lt;br /&gt;
 AuthorizedKeysFile      /home/sftp/%u/.ssh/authorized_keys&lt;br /&gt;
Attention, l&#039;utilisateur &amp;quot;sftp-user&amp;quot; doit impérativement pouvoir lire le fichier authorized_keys (les droits de l&#039;intégralité du path doivent au moins contenir &amp;lt;code&amp;gt;read&amp;lt;/code&amp;gt; pour le groupe &amp;lt;code&amp;gt;sftp&amp;lt;/code&amp;gt;, le chroot étant réalisée une fois les credentials obtenus.&lt;br /&gt;
&lt;br /&gt;
=== Ajouter du log verbeux ===&lt;br /&gt;
Dans la rubrique &amp;lt;code&amp;gt;Match&amp;lt;/code&amp;gt;, ajouter &amp;lt;code&amp;gt; -f AUTH -l INFO&amp;lt;/code&amp;gt; à la fin de la ligne &amp;lt;code&amp;gt;ForceCommand internal-sftp&amp;lt;/code&amp;gt;.&lt;br /&gt;
Cela va avoir pour effet de forcer l&#039;user à écrire dans son /dev/log, qui n&#039;existe pas, il faut donc créer le répertoire &amp;lt;code&amp;gt;mkdir /home/sftp/sftp-user/dev&amp;lt;/code&amp;gt; et demander à rsyslog d&#039;aller y écouter. Dans &amp;lt;code&amp;gt;/etc/rsyslog.d/chroot.conf&amp;lt;/code&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
 $AddUnixListenSocket /home/sftp/sftp-user/dev/log&lt;br /&gt;
&lt;br /&gt;
Un restart du tout et c&#039;est OK.&lt;br /&gt;
&lt;br /&gt;
Il est possible de changer le niveau de verbosité (configuré à &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;) et le syslogfacility (&amp;lt;code&amp;gt;AUTH&amp;lt;/code&amp;gt;), mais il faudra également penser à adapter rsyslog pour traiter cette facility.&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
=== Afficher les algo acceptés par ssh sshd ===&lt;br /&gt;
 ssh -Q key&lt;br /&gt;
&lt;br /&gt;
=== Créer une clé SSH ===&lt;br /&gt;
 ssh-keygen -q -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot; -C &amp;quot;$(whoami)@$(hostname)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 ssh-keygen -q -t ed25519 -f ~/.ssh/id_ed25519 -N &amp;quot;&amp;quot; -C &amp;quot;$(whoami)@$(hostname)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Calculer un fingerprint ===&lt;br /&gt;
format sha256 encodé en base64&lt;br /&gt;
 ssh-keygen -lf ~/.ssh/id_rsa.pub&lt;br /&gt;
pour l&#039;avoir en ancien format MD5&lt;br /&gt;
 ssh-keygen -lf ~/.ssh/id_rsa.pub -E md5&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenSSH&amp;diff=127</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenSSH&amp;diff=127"/>
		<updated>2026-03-18T14:28:37Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : /* Autoriser l&amp;#039;utilisation d&amp;#039;une clé RSA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SFTP ==&lt;br /&gt;
=== Activer un chroot SFTP avec OpenSSH ===&lt;br /&gt;
&lt;br /&gt;
dans &amp;lt;code&amp;gt;/path/to/sshd_config.d/sftp.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
==== si ftp par user ====&lt;br /&gt;
 Match user sftp-user&lt;br /&gt;
       ChrootDirectory /home/sftp/%u&lt;br /&gt;
       ForceCommand internal-sftp&lt;br /&gt;
       AllowTcpForwarding no&lt;br /&gt;
       GatewayPorts no&lt;br /&gt;
       X11Forwarding no&lt;br /&gt;
&lt;br /&gt;
==== si sftp par groupe ====&lt;br /&gt;
 Match group sftp&lt;br /&gt;
        ChrootDirectory /home/sftp/%u&lt;br /&gt;
        ForceCommand internal-sftp&lt;br /&gt;
        AllowTcpForwarding no&lt;br /&gt;
        GatewayPorts no&lt;br /&gt;
        X11Forwarding no&lt;br /&gt;
&lt;br /&gt;
=== Mettre l&#039;user dans le bon home directory à la connexion ===&lt;br /&gt;
 mkdir /home/sftp/&lt;br /&gt;
 mkdir -p /home/sftp/sftp-user&lt;br /&gt;
==== Si sftp par user ====&lt;br /&gt;
 useradd -M -b / -s /sbin/nologin sftp-user&lt;br /&gt;
==== Si sftp par groupe ====&lt;br /&gt;
 groupadd -g 3000 sftp&lt;br /&gt;
 useradd -g sftp -M -b / -s /sbin/nologin sftp-user&lt;br /&gt;
&lt;br /&gt;
L&#039;idée est d&#039;avoir dans &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; un utilisateur comme ceci :&lt;br /&gt;
 sftp-user:x:500:3000::/sftp-user:/sbin/nologin&lt;br /&gt;
&amp;lt;code&amp;gt;/sbin/nologin&amp;lt;/code&amp;gt; peut être remplacé par &amp;lt;code&amp;gt;/bin/false&amp;lt;/code&amp;gt;, le shell est forcé par le &amp;lt;code&amp;gt;ForceCommand&amp;lt;/code&amp;gt; de la sous section d&#039;OpenSSH&lt;br /&gt;
&lt;br /&gt;
=== Autoriser l&#039;utilisation d&#039;une clé RSA ===&lt;br /&gt;
dans &amp;lt;code&amp;gt;/path/to/sshd_config&amp;lt;/code&amp;gt;&lt;br /&gt;
 AuthorizedKeysFile      /home/sftp/%u/.ssh/authorized_keys&lt;br /&gt;
Attention, l&#039;utilisateur &amp;quot;sftp-user&amp;quot; doit impérativement pouvoir lire le fichier authorized_keys (les droits de l&#039;intégralité du path doivent au moins contenir &amp;lt;code&amp;gt;read&amp;lt;/code&amp;gt; pour le groupe &amp;lt;code&amp;gt;sftp&amp;lt;/code&amp;gt;, le chroot étant réalisée une fois les credentials obtenus.&lt;br /&gt;
&lt;br /&gt;
=== Ajouter du log verbeux ===&lt;br /&gt;
Dans la rubrique &amp;lt;code&amp;gt;Match&amp;lt;/code&amp;gt;, ajouter &amp;lt;code&amp;gt; -f AUTH -l INFO&amp;lt;/code&amp;gt; à la fin de la ligne &amp;lt;code&amp;gt;ForceCommand internal-sftp&amp;lt;/code&amp;gt;.&lt;br /&gt;
Cela va avoir pour effet de forcer l&#039;user à écrire dans son /dev/log, qui n&#039;existe pas, il faut donc créer le répertoire &amp;lt;code&amp;gt;mkdir /home/sftpusers/sftp-user/dev&amp;lt;/code&amp;gt; et demander à rsyslog d&#039;aller y écouter. Dans &amp;lt;code&amp;gt;/etc/rsyslog.d/chroot.conf&amp;lt;/code&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
 $AddUnixListenSocket /home/sftpusers/sftp-user/dev/log&lt;br /&gt;
&lt;br /&gt;
Un restart du tout et c&#039;est OK.&lt;br /&gt;
&lt;br /&gt;
Il est possible de changer le niveau de verbosité (configuré à &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;) et le syslogfacility (&amp;lt;code&amp;gt;AUTH&amp;lt;/code&amp;gt;), mais il faudra également penser à adapter rsyslog pour traiter cette facility.&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
=== Afficher les algo acceptés par ssh sshd ===&lt;br /&gt;
 ssh -Q key&lt;br /&gt;
&lt;br /&gt;
=== Créer une clé SSH ===&lt;br /&gt;
 ssh-keygen -q -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot; -C &amp;quot;$(whoami)@$(hostname)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 ssh-keygen -q -t ed25519 -f ~/.ssh/id_ed25519 -N &amp;quot;&amp;quot; -C &amp;quot;$(whoami)@$(hostname)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Calculer un fingerprint ===&lt;br /&gt;
format sha256 encodé en base64&lt;br /&gt;
 ssh-keygen -lf ~/.ssh/id_rsa.pub&lt;br /&gt;
pour l&#039;avoir en ancien format MD5&lt;br /&gt;
 ssh-keygen -lf ~/.ssh/id_rsa.pub -E md5&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenSSH&amp;diff=126</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenSSH&amp;diff=126"/>
		<updated>2026-03-18T14:28:14Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : /* Autoriser l&amp;#039;utilisation d&amp;#039;une clé RSA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SFTP ==&lt;br /&gt;
=== Activer un chroot SFTP avec OpenSSH ===&lt;br /&gt;
&lt;br /&gt;
dans &amp;lt;code&amp;gt;/path/to/sshd_config.d/sftp.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
==== si ftp par user ====&lt;br /&gt;
 Match user sftp-user&lt;br /&gt;
       ChrootDirectory /home/sftp/%u&lt;br /&gt;
       ForceCommand internal-sftp&lt;br /&gt;
       AllowTcpForwarding no&lt;br /&gt;
       GatewayPorts no&lt;br /&gt;
       X11Forwarding no&lt;br /&gt;
&lt;br /&gt;
==== si sftp par groupe ====&lt;br /&gt;
 Match group sftp&lt;br /&gt;
        ChrootDirectory /home/sftp/%u&lt;br /&gt;
        ForceCommand internal-sftp&lt;br /&gt;
        AllowTcpForwarding no&lt;br /&gt;
        GatewayPorts no&lt;br /&gt;
        X11Forwarding no&lt;br /&gt;
&lt;br /&gt;
=== Mettre l&#039;user dans le bon home directory à la connexion ===&lt;br /&gt;
 mkdir /home/sftp/&lt;br /&gt;
 mkdir -p /home/sftp/sftp-user&lt;br /&gt;
==== Si sftp par user ====&lt;br /&gt;
 useradd -M -b / -s /sbin/nologin sftp-user&lt;br /&gt;
==== Si sftp par groupe ====&lt;br /&gt;
 groupadd -g 3000 sftp&lt;br /&gt;
 useradd -g sftp -M -b / -s /sbin/nologin sftp-user&lt;br /&gt;
&lt;br /&gt;
L&#039;idée est d&#039;avoir dans &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; un utilisateur comme ceci :&lt;br /&gt;
 sftp-user:x:500:3000::/sftp-user:/sbin/nologin&lt;br /&gt;
&amp;lt;code&amp;gt;/sbin/nologin&amp;lt;/code&amp;gt; peut être remplacé par &amp;lt;code&amp;gt;/bin/false&amp;lt;/code&amp;gt;, le shell est forcé par le &amp;lt;code&amp;gt;ForceCommand&amp;lt;/code&amp;gt; de la sous section d&#039;OpenSSH&lt;br /&gt;
&lt;br /&gt;
=== Autoriser l&#039;utilisation d&#039;une clé RSA ===&lt;br /&gt;
dans &amp;lt;code&amp;gt;/path/to/sshd_config&amp;lt;/code&amp;gt;&lt;br /&gt;
 AuthorizedKeysFile      /home/sftp/%u/.ssh/authorized_keys&lt;br /&gt;
Attention, l&#039;utilisateur &amp;quot;sftp-user&amp;quot; doit impérativement pouvoir lire le fichier authorized_keys (les droits de l&#039;intégralité du path doivent au moins contenir &amp;lt;code&amp;gt;read&amp;lt;/code&amp;gt; pour le groupe &amp;lt;code&amp;gt;sftpusers&amp;lt;/code&amp;gt;, le chroot étant réalisée une fois les credentials obtenus.&lt;br /&gt;
&lt;br /&gt;
=== Ajouter du log verbeux ===&lt;br /&gt;
Dans la rubrique &amp;lt;code&amp;gt;Match&amp;lt;/code&amp;gt;, ajouter &amp;lt;code&amp;gt; -f AUTH -l INFO&amp;lt;/code&amp;gt; à la fin de la ligne &amp;lt;code&amp;gt;ForceCommand internal-sftp&amp;lt;/code&amp;gt;.&lt;br /&gt;
Cela va avoir pour effet de forcer l&#039;user à écrire dans son /dev/log, qui n&#039;existe pas, il faut donc créer le répertoire &amp;lt;code&amp;gt;mkdir /home/sftpusers/sftp-user/dev&amp;lt;/code&amp;gt; et demander à rsyslog d&#039;aller y écouter. Dans &amp;lt;code&amp;gt;/etc/rsyslog.d/chroot.conf&amp;lt;/code&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
 $AddUnixListenSocket /home/sftpusers/sftp-user/dev/log&lt;br /&gt;
&lt;br /&gt;
Un restart du tout et c&#039;est OK.&lt;br /&gt;
&lt;br /&gt;
Il est possible de changer le niveau de verbosité (configuré à &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;) et le syslogfacility (&amp;lt;code&amp;gt;AUTH&amp;lt;/code&amp;gt;), mais il faudra également penser à adapter rsyslog pour traiter cette facility.&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
=== Afficher les algo acceptés par ssh sshd ===&lt;br /&gt;
 ssh -Q key&lt;br /&gt;
&lt;br /&gt;
=== Créer une clé SSH ===&lt;br /&gt;
 ssh-keygen -q -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot; -C &amp;quot;$(whoami)@$(hostname)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 ssh-keygen -q -t ed25519 -f ~/.ssh/id_ed25519 -N &amp;quot;&amp;quot; -C &amp;quot;$(whoami)@$(hostname)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Calculer un fingerprint ===&lt;br /&gt;
format sha256 encodé en base64&lt;br /&gt;
 ssh-keygen -lf ~/.ssh/id_rsa.pub&lt;br /&gt;
pour l&#039;avoir en ancien format MD5&lt;br /&gt;
 ssh-keygen -lf ~/.ssh/id_rsa.pub -E md5&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Nettoyage_de_sites_hack%C3%A9s&amp;diff=125</id>
		<title>Nettoyage de sites hackés</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Nettoyage_de_sites_hack%C3%A9s&amp;diff=125"/>
		<updated>2026-02-12T14:40:53Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nettoyage prestashop&lt;br /&gt;
 https://devcustom.net/public/scripts/cleaner.zip&lt;br /&gt;
Quelques commandes utiles pour trouver rapidement des fichiers d&#039;un site web qui contiennent du code malicieux (frauduleux, toussa toussa)&lt;br /&gt;
&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$auth_pass = &amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$_passssword&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | sort --uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;preg_replace(\&amp;quot;\/\.\*\/e\&amp;quot;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;@preg_replace&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$____=&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;eval(.*(\$.*, \$.*));?&amp;gt;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.*=\&amp;quot;stop_\&amp;quot;;\$.*=strtoupper(&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.*=\&amp;quot;stop_\&amp;quot;;\$.*=strtolower(&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;$.*=&amp;quot;.*_&amp;quot;;$.*=strtoupper(&#039; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;$.*=&amp;quot;.*_&amp;quot;;$.*=strtolower(&#039; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;echo &#039;You are forbidden\!&#039;;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$.*=&amp;quot;.*&amp;quot;;@eval(&#039; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;global\$&#039; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;&amp;lt;\?php *\$GLOBALS\[&#039; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$GLOBALS\[\$GLOBALS.*\.\$GLOBALS&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$_COOKIE\[.*\$_COOKIE\[.*\$_COOKIE&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;if(isset(\$_GET\[&#039;.*&#039;\])){if(isset(\$_FILES\[&#039;.*&#039;\]))&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$. = .*; assert(\$.(&#039;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.*=\$_COOKIE;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;@setcookie&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;@move_uploaded_file&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$.*=&amp;quot;base64_decode&amp;quot;;return \$&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;eval.*base64_decode&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;create_function.*base64_decode&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;php eval(\$_POST\[.*\]&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;&amp;lt;?php *\$.*?&amp;gt;&amp;lt;?php&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -iE &amp;quot;@system\(.*\.sh&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$s_.*shell&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;$GLOBALS.*packer.*shell.*;&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$b64 = \&amp;quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\&amp;quot;;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.* = fwrite(\$.*, \$.*); fclose(\$.*); echo \$.*; exit()&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;&amp;lt;script&amp;gt;var.*&#039;?key=b64&#039;&amp;quot; | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.* = \$.*{.*} \. \$.*{.*} \. \$.*{.*}&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.*=.*;.*function .*\(\$.*, \$.*\){\$.*&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;&amp;lt;\?php \$.* = \&amp;quot;.*\&amp;quot;;\$.* = \&amp;quot;.*\&amp;quot;;\$.* = \&amp;quot;.*\&amp;quot;;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;&amp;lt;\?php \$.*=\$.*\[.*\];.*eval(\$i&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;$.*=urldecode(\&amp;quot;.*\&amp;quot;);\$.*=\$.*{.*}\.\$.*&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;&amp;lt;?php  preg_replace(\&amp;quot;.*\&amp;quot;, \&amp;quot;.*&amp;quot;\.&amp;quot;.*(&#039;\&amp;quot;.\$_REQUEST\[&#039;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;preg_match(\&amp;quot;/(bing|googlebot|bingbot|google|yahoo)/\&amp;quot;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;@include &amp;quot;\\x&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;if(!empty($this-&amp;gt;.*))return $this-&amp;gt;.*;&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;if(move_uploaded_file($temp,$file)&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;if (move_uploaded_file(\$_FILES&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;IndoXploit&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;if(md5(\$_GET\[&#039;pwd&#039;\]&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;cPanel Cracker&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;Gassrini&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;define(&#039;__SEC_VALUE__&#039;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;base64_decode(\$_POST\[&#039;.*&#039;\]); @eval&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.*=base64_decode(&#039;.*&#039;).\$_GET&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;payload_file&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -iP &#039;eval\(&amp;quot;\\x.*\\x.*\\x.*\\x.*\\x.*\\x.*\\x.*\\x.*&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;eval (\$_POST\[&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$.*=.*str_replace(&amp;quot;.*&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;.*s.*t.*r.*_.*r.*e.*p.*l.*a.*c.*e.*&amp;quot;);&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$.*=urldecode(.*);\$GLOBALS\[.*\]=\$.*{.*}\.\$&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;if(\$password!=\$config_password)&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$rn=array_shift(\$.*);\$.*=array();foreach(\$.* as $.*){array_push(\$.*,(\$.*-\$.*));}\$.*=\$.*;&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -li &#039;\$.* = stripslashes(base64_decode(\$_POST\[&#039;.*&#039;\]));&#039;&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -li &#039;gzinflate.*\\x&#039;&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -Pli &#039;GIF89a|b374k|Web Shell by oRb|WSO_VERSION|FoxAutoV4|&amp;lt;title&amp;gt;MARIJUANA&amp;lt;/title&amp;gt;|leafmailer|encode\(base64_decode|md5\(implode|base64_decode\(md5|&amp;quot;base64&amp;quot;;return|gzinflate\(str_rot13\(base64_decode&#039;&lt;br /&gt;
 find . -type f -regextype posix-egrep -regex &amp;quot;.+\.(php|tpl)$&amp;quot; -print0 | xargs -0 grep -Pli &amp;quot;atob\(&#039;|&#039;bota&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -li &#039;.\{1000\}&#039; $i | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -li &#039;error_reporting(0)&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 old_IFS=$IFS     # sauvegarde du searateur de champ&lt;br /&gt;
 IFS=$&#039;\n&#039;     # nouveau separateur de champ, le caractere fin de ligne&lt;br /&gt;
 for line in $(find . -type f -name &amp;quot;*.php&amp;quot; | xargs wc -l | egrep -v &amp;quot;*.total$&amp;quot;)&lt;br /&gt;
 do&lt;br /&gt;
 	FILE=$(echo ${line} | awk {&#039;print $2&#039;})&lt;br /&gt;
 	NBR=$(echo ${line} | awk {&#039;print $1&#039;})&lt;br /&gt;
 	if [ $(ls -l $FILE | awk {&#039;print $5&#039;}) -gt 33 ]&lt;br /&gt;
 	then&lt;br /&gt;
 		if [ ${NBR} = 0 ]&lt;br /&gt;
 		then&lt;br /&gt;
 			if [ $(grep -c &amp;quot;You don&#039;t belong here&amp;quot; $FILE) = 0 ]&lt;br /&gt;
 			then&lt;br /&gt;
 				echo &amp;quot;$FILE&amp;quot;&lt;br /&gt;
 			fi&lt;br /&gt;
 		elif [ ${NBR} = 1 ]&lt;br /&gt;
 		then&lt;br /&gt;
 			echo &amp;quot;$FILE&amp;quot;&lt;br /&gt;
 		elif [ ${NBR} = 2 ]&lt;br /&gt;
 		then&lt;br /&gt;
 			echo &amp;quot;$FILE&amp;quot;&lt;br /&gt;
 		fi&lt;br /&gt;
 	fi&lt;br /&gt;
 done&lt;br /&gt;
 IFS=$old_IFS&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Nettoyage_de_sites_hack%C3%A9s&amp;diff=124</id>
		<title>Nettoyage de sites hackés</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Nettoyage_de_sites_hack%C3%A9s&amp;diff=124"/>
		<updated>2026-02-12T11:47:51Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nettoyage prestashop&lt;br /&gt;
 https://devcustom.net/public/scripts/cleaner.zip&lt;br /&gt;
Quelques commandes utiles pour trouver rapidement des fichiers d&#039;un site web qui contiennent du code malicieux (frauduleux, toussa toussa)&lt;br /&gt;
&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$auth_pass = &amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$_passssword&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | sort --uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;preg_replace(\&amp;quot;\/\.\*\/e\&amp;quot;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;@preg_replace&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$____=&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;eval(.*(\$.*, \$.*));?&amp;gt;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.*=\&amp;quot;stop_\&amp;quot;;\$.*=strtoupper(&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.*=\&amp;quot;stop_\&amp;quot;;\$.*=strtolower(&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;$.*=&amp;quot;.*_&amp;quot;;$.*=strtoupper(&#039; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;$.*=&amp;quot;.*_&amp;quot;;$.*=strtolower(&#039; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;echo &#039;You are forbidden\!&#039;;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$.*=&amp;quot;.*&amp;quot;;@eval(&#039; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;global\$&#039; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;&amp;lt;\?php *\$GLOBALS\[&#039; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$GLOBALS\[\$GLOBALS.*\.\$GLOBALS&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$_COOKIE\[.*\$_COOKIE\[.*\$_COOKIE&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;if(isset(\$_GET\[&#039;.*&#039;\])){if(isset(\$_FILES\[&#039;.*&#039;\]))&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$. = .*; assert(\$.(&#039;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.*=\$_COOKIE;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;@setcookie&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;@move_uploaded_file&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$.*=&amp;quot;base64_decode&amp;quot;;return \$&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;eval.*base64_decode&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;create_function.*base64_decode&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;php eval(\$_POST\[.*\]&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;&amp;lt;?php *\$.*?&amp;gt;&amp;lt;?php&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -iE &amp;quot;@system\(.*\.sh&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$s_.*shell&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;$GLOBALS.*packer.*shell.*;&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$b64 = \&amp;quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\&amp;quot;;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.* = fwrite(\$.*, \$.*); fclose(\$.*); echo \$.*; exit()&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;&amp;lt;script&amp;gt;var.*&#039;?key=b64&#039;&amp;quot; | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.* = \$.*{.*} \. \$.*{.*} \. \$.*{.*}&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.*=.*;.*function .*\(\$.*, \$.*\){\$.*&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;&amp;lt;\?php \$.* = \&amp;quot;.*\&amp;quot;;\$.* = \&amp;quot;.*\&amp;quot;;\$.* = \&amp;quot;.*\&amp;quot;;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;&amp;lt;\?php \$.*=\$.*\[.*\];.*eval(\$i&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;$.*=urldecode(\&amp;quot;.*\&amp;quot;);\$.*=\$.*{.*}\.\$.*&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;&amp;lt;?php  preg_replace(\&amp;quot;.*\&amp;quot;, \&amp;quot;.*&amp;quot;\.&amp;quot;.*(&#039;\&amp;quot;.\$_REQUEST\[&#039;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;preg_match(\&amp;quot;/(bing|googlebot|bingbot|google|yahoo)/\&amp;quot;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;@include &amp;quot;\\x&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;if(!empty($this-&amp;gt;.*))return $this-&amp;gt;.*;&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;if(move_uploaded_file($temp,$file)&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;if (move_uploaded_file(\$_FILES&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;IndoXploit&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;if(md5(\$_GET\[&#039;pwd&#039;\]&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;cPanel Cracker&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;Gassrini&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;define(&#039;__SEC_VALUE__&#039;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;base64_decode(\$_POST\[&#039;.*&#039;\]); @eval&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.*=base64_decode(&#039;.*&#039;).\$_GET&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;payload_file&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -iP &#039;eval\(&amp;quot;\\x.*\\x.*\\x.*\\x.*\\x.*\\x.*\\x.*\\x.*&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;eval (\$_POST\[&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$.*=.*str_replace(&amp;quot;.*&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;.*s.*t.*r.*_.*r.*e.*p.*l.*a.*c.*e.*&amp;quot;);&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$.*=urldecode(.*);\$GLOBALS\[.*\]=\$.*{.*}\.\$&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;if(\$password!=\$config_password)&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$rn=array_shift(\$.*);\$.*=array();foreach(\$.* as $.*){array_push(\$.*,(\$.*-\$.*));}\$.*=\$.*;&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -li &#039;\$.* = stripslashes(base64_decode(\$_POST\[&#039;.*&#039;\]));&#039;&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -li &#039;gzinflate.*\\x&#039;&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -Pli &#039;GIF89a|b374k|Web Shell by oRb|WSO_VERSION|FoxAutoV4|&amp;lt;title&amp;gt;MARIJUANA&amp;lt;/title&amp;gt;|leafmailer|encode\(base64_decode|md5\(implode|base64_decode\(md5|&amp;quot;base64&amp;quot;;return|gzinflate\(str_rot13\(base64_decode&#039;&lt;br /&gt;
 find . -type f -regextype posix-egrep -regex &amp;quot;.+\.(php|tpl)$&amp;quot; -print0 | xargs -0 grep -li &amp;quot;atob(&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -li &#039;.\{1000\}&#039; $i | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -li &#039;error_reporting(0)&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 old_IFS=$IFS     # sauvegarde du searateur de champ&lt;br /&gt;
 IFS=$&#039;\n&#039;     # nouveau separateur de champ, le caractere fin de ligne&lt;br /&gt;
 for line in $(find . -type f -name &amp;quot;*.php&amp;quot; | xargs wc -l | egrep -v &amp;quot;*.total$&amp;quot;)&lt;br /&gt;
 do&lt;br /&gt;
 	FILE=$(echo ${line} | awk {&#039;print $2&#039;})&lt;br /&gt;
 	NBR=$(echo ${line} | awk {&#039;print $1&#039;})&lt;br /&gt;
 	if [ $(ls -l $FILE | awk {&#039;print $5&#039;}) -gt 33 ]&lt;br /&gt;
 	then&lt;br /&gt;
 		if [ ${NBR} = 0 ]&lt;br /&gt;
 		then&lt;br /&gt;
 			if [ $(grep -c &amp;quot;You don&#039;t belong here&amp;quot; $FILE) = 0 ]&lt;br /&gt;
 			then&lt;br /&gt;
 				echo &amp;quot;$FILE&amp;quot;&lt;br /&gt;
 			fi&lt;br /&gt;
 		elif [ ${NBR} = 1 ]&lt;br /&gt;
 		then&lt;br /&gt;
 			echo &amp;quot;$FILE&amp;quot;&lt;br /&gt;
 		elif [ ${NBR} = 2 ]&lt;br /&gt;
 		then&lt;br /&gt;
 			echo &amp;quot;$FILE&amp;quot;&lt;br /&gt;
 		fi&lt;br /&gt;
 	fi&lt;br /&gt;
 done&lt;br /&gt;
 IFS=$old_IFS&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Tips_syst%C3%A8mes&amp;diff=123</id>
		<title>Tips systèmes</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Tips_syst%C3%A8mes&amp;diff=123"/>
		<updated>2026-02-02T14:17:51Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : /* IPTABLES */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liens externe ==&lt;br /&gt;
https://jeznet.org/Wiki/CodeSnippets&lt;br /&gt;
==MYSQL==&lt;br /&gt;
Créer compte user :&lt;br /&gt;
 CREATE USER &amp;lt;user&amp;gt; IDENTIFIED BY &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
créer un compte utilisateur + database&lt;br /&gt;
 GRANT ALL PRIVILEGES ON &amp;lt;database&amp;gt;.* TO &#039;&amp;lt;user&amp;gt;&#039;@&#039;&amp;lt;host&amp;gt;&#039; IDENTIFIED BY &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON &amp;lt;database&amp;gt;.* TO &#039;&amp;lt;user&amp;gt;&#039;@&#039;&amp;lt;host&amp;gt;&#039; IDENTIFIED BY PASSWORD &#039;*&amp;lt;password_hash&amp;gt;&#039;;&lt;br /&gt;
voir les comptes utilisateurs&lt;br /&gt;
 select host, user, password from mysql.user;&lt;br /&gt;
dumper une base et la compresser a la volée&lt;br /&gt;
 mysqldump -h $HOST -u $USER -p $DATABASE | gzip &amp;gt; dump_$DATABASE.sql.gz&lt;br /&gt;
importer dans MySQL une base gzippée&lt;br /&gt;
 gunzip -c &amp;lt; dump_$DATABASE.sql.gz | mysql -h $HOST -u $USER -p $DATABASE&lt;br /&gt;
Import MySQL over SSH&lt;br /&gt;
 ssh $HOST &amp;quot;mysqldump -u $USER1 -p$PASS1 $DB1&amp;quot; | mysql -u$USER2 -p$PASS2 $DB2&lt;br /&gt;
Import GZIP MySQL over SSH On the fly&lt;br /&gt;
 ssh $HOST &amp;quot;mysqldump -u $USER1 -p$PASS1 $DB1 | gzip&amp;quot; | gunzip -c | mysql -u$USER2 -p$PASS2 $DB2&lt;br /&gt;
Dump MySQL Database, compress, export, and import - One liner&lt;br /&gt;
 mysqldump -u $USER1 -p$PASS1 $DB1 | pigz | ssh $HOST &amp;quot;gunzip -c | mysql -u$USER2 -p$PASS2 $DB2&amp;quot;&lt;br /&gt;
Obtenir la taille de toutes les bases de données&lt;br /&gt;
 SELECT table_schema &amp;quot;DB Name&amp;quot;, &lt;br /&gt;
 Round(Sum(data_length + index_length) / 1024 / 1024, 1) &amp;quot;DB Size in MB&amp;quot; &lt;br /&gt;
 FROM   information_schema.tables &lt;br /&gt;
 GROUP  BY table_schema;&lt;br /&gt;
Obtenir la taille d&#039;UNE base de données mentionnée&lt;br /&gt;
 SELECT table_schema &amp;quot;DB Name&amp;quot;, &lt;br /&gt;
 Round(Sum(data_length + index_length) / 1024 / 1024, 1) &amp;quot;DB Size in MB&amp;quot; &lt;br /&gt;
 FROM   information_schema.tables&lt;br /&gt;
 WHERE table_schema = &amp;quot;YOUR_DATABASE_NAME&amp;quot;  &lt;br /&gt;
 GROUP  BY table_schema;&lt;br /&gt;
Convertir toutes les tables InnoDB en InnoDB (lors de l&#039;ajout du parametre innodb_file_per_table=1 par exemple)&lt;br /&gt;
 for table in $(mysql --batch information_schema -e &amp;quot;select CONCAT(TABLE_SCHEMA,&#039;.&#039;,TABLE_NAME) FROM TABLES WHERE ENGINE=&#039;InnoDB&#039;;&amp;quot; | grep -v &amp;quot;CONCAT(TABLE_SCHEMA,&#039;.&#039;,TABLE_NAME)&amp;quot;)&lt;br /&gt;
 do&lt;br /&gt;
  mysql --batch -uadmin -p$(cat /etc/psa/.psa.shadow) -e &amp;quot;ALTER TABLE ${table} ENGINE=InnoDB;&amp;quot;&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
==SYSTEME==&lt;br /&gt;
beaucoup de connexions&lt;br /&gt;
 netstat -pant | grep -i esta | awk &#039;{print $5}&#039;| cut -d &amp;quot;:&amp;quot; -f 1| sort |uniq -c&lt;br /&gt;
fait le total d&#039;espace disque utilisé par les vhosts&lt;br /&gt;
 for i in `grep -i documentroot /opt/applis/httpd/conf/httpd.conf | grep -v &amp;quot;#&amp;quot;| awk &#039;{ print $2}&#039;`;do du -sh $i;done&lt;br /&gt;
fouiller un fichier de log entre 2 dates&lt;br /&gt;
 awk &#039;/Apr 1 11:00:00/,/Apr 1 16:15:00/{print}&#039; /var/log/httpd/httpd_access.log&lt;br /&gt;
 awk &#039;$0&amp;gt;=from&amp;amp;&amp;amp;$0&amp;lt;=to&#039; from=&amp;quot;Apr 1 11:00:00&amp;quot; to=&amp;quot;Apr 1 16:15:00&amp;quot; /var/log/httpd/httpd_access.log&lt;br /&gt;
Liste les répertoires et les trie par taille&lt;br /&gt;
 du -h --max-depth=1 | perl -e &#039;sub h{%h=(K=&amp;gt;10,M=&amp;gt;20,G=&amp;gt;30);($n,$u)=shift=~/([0-9.,]+)(\D)/; return $n*2**$h{$u}}print sort{h($b)&amp;lt;=&amp;gt;h($a)}&amp;lt;&amp;gt;;&#039;&lt;br /&gt;
tar over ssh&lt;br /&gt;
 tar zcvf - /path | ssh root@server &amp;quot;cat &amp;gt; /backup/wwwdata.tar.gz&amp;quot;&lt;br /&gt;
tar over ssh untar&lt;br /&gt;
 tar zcvf - /path/to/directory/ | ssh root@inrage.fr &amp;quot;cd /path/to/ &amp;amp;&amp;amp; tar zxvf - &amp;quot;&lt;br /&gt;
vitesse d&#039;un pipe&lt;br /&gt;
 command1 | cpipe -vt | command2&lt;br /&gt;
Linux force reboot (magical way)&lt;br /&gt;
 echo 1 &amp;gt; /proc/sys/kernel/sysrq&lt;br /&gt;
 echo b &amp;gt; /proc/sysrq-trigger&lt;br /&gt;
&lt;br /&gt;
==CHROOT==&lt;br /&gt;
Créer le nécessaire du chroot&lt;br /&gt;
 mount /dev/&amp;lt;devicepX&amp;gt; /mnt&lt;br /&gt;
 mount --bind /dev /mnt/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/dev/pts&lt;br /&gt;
 mount -t proc /proc /mnt/proc&lt;br /&gt;
 mount --bind /run  /mnt/run&lt;br /&gt;
 mount -t sysfs /sys /mnt/sys&lt;br /&gt;
 mount --bind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars &lt;br /&gt;
 chroot /mnt /bin/bash&lt;br /&gt;
&lt;br /&gt;
Démonter le tout&lt;br /&gt;
 umount /mnt/sys/firmware/efi/efivars &lt;br /&gt;
 umount /mnt/sys&lt;br /&gt;
 umount /mnt/run&lt;br /&gt;
 umount /mnt/proc&lt;br /&gt;
 umount /mnt/dev/pts&lt;br /&gt;
 umount /mnt/dev&lt;br /&gt;
 umount /mnt&lt;br /&gt;
&lt;br /&gt;
==IPTABLES==&lt;br /&gt;
diagramme de flux&lt;br /&gt;
&lt;br /&gt;
http://www.linuxchannel.net/board/board_files/alpha/phpIqSLS2/iptables.gif&lt;br /&gt;
===Base firewall===&lt;br /&gt;
 *filter&lt;br /&gt;
 :INPUT DROP [0:0]&lt;br /&gt;
 :FORWARD DROP [0:0]&lt;br /&gt;
 :OUTPUT DROP [0:0]&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Global Rules&amp;quot;&lt;br /&gt;
 -A INPUT -f -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP&lt;br /&gt;
 -A INPUT -m state --state INVALID -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --dport 25 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 50 --connlimit-mask 32 --connlimit-saddr -j DROP&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT&lt;br /&gt;
 -A INPUT -i lo -j ACCEPT&lt;br /&gt;
 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Public access Rules&amp;quot;&lt;br /&gt;
 -A INPUT -p tcp -m multiport --dports 25,80,110,143,443,465,587,993,995 -j ACCEPT&lt;br /&gt;
 -A INPUT -p udp -m udp --dport 53 -j ACCEPT&lt;br /&gt;
 -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Access Client&amp;quot;&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Dutiko : Admin &amp;amp; Monitoring&amp;quot;&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 62.210.45.142/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p tcp -m multiport --dport 21:22,5666,49152:49252 -m comment --comment &amp;quot;Supervision&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p udp -m udp --dport 161 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 62.210.45.133/32 -p tcp -m multiport --dport 22,9102 -m comment --comment &amp;quot;Backup&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.164/32 -p tcp -m multiport --dport 21:22,10000,49152:49252 -m comment --comment &amp;quot;VPN Dutiko&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.173/32 -p tcp -m multiport --dport 21:22,49152:49252 -m comment --comment &amp;quot;admin Dutiko&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 217.109.151.1/32 -p tcp -m tcp --dport 10000 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -o lo -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p icmp -j ACCEPT&lt;br /&gt;
 -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p tcp -m multiport --dports 21,25,80,443,465,587 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p udp -m multiport --dports 53,123 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p tcp -m tcp --dport 9103 -m comment --comment &amp;quot;Backup filers&amp;quot; -j ACCEPT&lt;br /&gt;
 COMMIT&lt;br /&gt;
&lt;br /&gt;
===Log du firewall===&lt;br /&gt;
 iptables -A INPUT -j LOG --log-prefix &amp;quot;firewall: &amp;quot; --log-level 7&lt;br /&gt;
rsyslogd&lt;br /&gt;
créer un fichier &#039;&#039;/etc/rsyslog.d/firewall.conf&#039;&#039; :&lt;br /&gt;
 :msg, contains, &amp;quot;firewall: &amp;quot; -/var/log/firewall.log&lt;br /&gt;
 &amp;amp; ~&lt;br /&gt;
Depuis rsyslog 7, il faut utiliser :&lt;br /&gt;
 if $msg contains &#039;firewall: &#039; then /var/log/firewall.log&lt;br /&gt;
 &amp;amp; stop&lt;br /&gt;
logrotate&lt;br /&gt;
 /var/log/firewall.log {&lt;br /&gt;
 	rotate 5&lt;br /&gt;
 	weekly&lt;br /&gt;
 	dateext&lt;br /&gt;
 	missingok&lt;br /&gt;
 	notifempty&lt;br /&gt;
 	compress&lt;br /&gt;
 	delaycompress&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Blacklist en masse===&lt;br /&gt;
utilisation = un des sed retire les connexion qui ont une patern de regex en nombre de connexion, ceux qui restent sont a bl (ici 60)--&lt;br /&gt;
 netstat -nt | grep &#039;:80&#039; | sed -e &#039;s/.*:80 //&#039; | sed -e &#039;s/:.*//&#039; | sort | uniq -c | grep -v 172.25.8.62 | grep -v 172.25.8.61 | grep  -v 172.25.8.60 | grep -v 10.252.5.74 | grep -v 10.252.5.25 | grep -v 217.174.192.246 | sed &#039;s/^ *[1-9] .*//g&#039; | sed &#039;s/^ *[1-5][0-9] .*//g&#039; | sed &#039;/^$/d&#039; | awk {&#039;print$2&#039;}  | sed &#039;/^[ ]*#\|#\|^$/! s/.*/network-object host &amp;amp;/&#039;&lt;br /&gt;
&lt;br /&gt;
===TCPDump le trafic dans un tunnel ipsec===&lt;br /&gt;
Ajouter les règles au firewall&lt;br /&gt;
 iptables -I INPUT -m addrtype --dst-type LOCAL -m policy --pol ipsec --dir in -j NFLOG --nflog-group 5&lt;br /&gt;
Ouvrir tcpdump en spécifiant l&#039;interface nflog&lt;br /&gt;
 tcpdump -s 0 -n -i nflog:5&lt;br /&gt;
&lt;br /&gt;
==MAIL==&lt;br /&gt;
Clean mailq&lt;br /&gt;
 mailq | grep -B1 &amp;quot;Connection refused&amp;quot; | cut -d&amp;quot; &amp;quot; -f1 | grep -e &amp;quot;[A-Z][1-9]*&amp;quot; | xargs -L1 postsuper -d&lt;br /&gt;
 sendmail -qSMAILER-DAEMON -v -O Timeout.queuereturn=1s -O Timeout.connect=1s -O Timeout.ident=0s&lt;br /&gt;
relance force des mails :&lt;br /&gt;
 kill -ALRM &amp;lt;qmail-send pid&amp;gt;&lt;br /&gt;
Lire un fichier .db&lt;br /&gt;
 makemap -u hash /etc/mail/virtusertable.db&lt;br /&gt;
Nombre de mails par destinataires&lt;br /&gt;
 mailq|awk &#039;NR=3 {print $1}&#039;|awk -F &amp;quot;&amp;lt;&amp;quot; &#039;length($2)&amp;gt;0 {print $2}&#039;|sed &amp;quot;s/&amp;gt;//g&amp;quot;|sort|uniq -c|sort&lt;br /&gt;
Nombre de mails par domaine&lt;br /&gt;
 mailq|awk &#039;NR=3 {print $1}&#039;|awk -F &amp;quot;&amp;lt;&amp;quot; &#039;length($2)&amp;gt;0 {print tolower($2)}&#039;|sed &amp;quot;s/&amp;gt;//g&amp;quot;|awk -F &amp;quot;@&amp;quot; &#039;{print $2}&#039;|sort|uniq -c|sort&lt;br /&gt;
===SMTP en telnet===&lt;br /&gt;
 telnet serveur.com 25&lt;br /&gt;
 HELO dutiko.com&lt;br /&gt;
 MAIL FROM: &amp;lt;sn4ky@sn4ky.net&amp;gt;&lt;br /&gt;
 RCPT TO: &amp;lt;sn4ky@sn4ky.net&amp;gt;&lt;br /&gt;
 DATA&lt;br /&gt;
 Subject: Sujet&lt;br /&gt;
 Message&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
===SMTP authentifié en telnet===&lt;br /&gt;
 telnet smtp-relay.gmail.com&lt;br /&gt;
 HELO dutiko.com&lt;br /&gt;
 AUTH LOGIN&lt;br /&gt;
Le serveur doit retourner 334 VXNlcm5hbWU6; ceci est du texte encodé en base64 demanant le login. Coller le login encodé en base64 en retour :&lt;br /&gt;
 dXNlcm5hbWUuY29t&lt;br /&gt;
Le serveur a du retourner 34 UGFzc3dvcmQ6; encore une fois en base64, demandant le mot de passe, a retourner en base64 :&lt;br /&gt;
 bXlwYXNzd29yZA==&lt;br /&gt;
Le retour du serveur doit indiquer que l&#039;authentification a été acceptée&lt;br /&gt;
&lt;br /&gt;
encoder en base64 : http://ostermiller.org/calc/encode.html&lt;br /&gt;
 perl -MMIME::Base64 -e &#039;print encode_base64(&amp;quot;username&amp;quot;);&#039;&lt;br /&gt;
 perl -MMIME::Base64 -e &#039;print encode_base64(&amp;quot;password&amp;quot;);&#039;&lt;br /&gt;
&lt;br /&gt;
===IMAP en telnet===&lt;br /&gt;
&#039;&#039;inbox&#039;&#039; représente le nom du répertoire IMAP dans lequel on souhaite lire le mail&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;1&#039;&#039; représente le numéro du mail, par ordre d&#039;arrivée sur le serveur&lt;br /&gt;
 telnet serveur.com 143&lt;br /&gt;
 . LOGIN username ********&lt;br /&gt;
 . LIST &amp;quot;&amp;quot; &amp;quot;*&amp;quot;&lt;br /&gt;
 . SELECT inbox&lt;br /&gt;
 . FETCH 1 full&lt;br /&gt;
 . FETCH 1 BODY[TEXT]&lt;br /&gt;
 . LOGOUT&lt;br /&gt;
&lt;br /&gt;
source : http://bobpeers.com/technical/telnet_imap&lt;br /&gt;
&lt;br /&gt;
===POP en telnet===&lt;br /&gt;
 telnet serveur.com 110&lt;br /&gt;
 USER username&lt;br /&gt;
 PASS ********&lt;br /&gt;
 LIST&lt;br /&gt;
 TOP 1&lt;br /&gt;
 RETR 1&lt;br /&gt;
 DELE 1&lt;br /&gt;
 QUIT&lt;br /&gt;
&lt;br /&gt;
==APACHE==&lt;br /&gt;
===Rediriger entièrement en SSL===&lt;br /&gt;
 RewriteCond %{HTTPS} off&lt;br /&gt;
 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}&lt;br /&gt;
&lt;br /&gt;
===Interdire la navigation des robots===&lt;br /&gt;
 Header set X-Robots-Tag &amp;quot;noindex, noarchive, nosniff, nofollow&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==SWAP==&lt;br /&gt;
Modifier la manière dont le kernel va utiliser la mémoire SWAP, on va modifier le paramètre système vm.swappiness. Ce paramètre exprime l&#039;agressivité du noyau à utiliser l&#039;espace de pagination (SWAP) pour les processus réalisant peu d&#039;échanges mémoire.&lt;br /&gt;
&lt;br /&gt;
La valeur exprimée est un pourcentage. &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; corresponds à une utilisation la plus faible possible de SWAP (quasi inexistante), tandis que &amp;lt;code&amp;gt;100&amp;lt;/code&amp;gt; corresponds à une utilisation maximale de la SWAP.&lt;br /&gt;
&lt;br /&gt;
Pour connaitre sa valeur actuelle&lt;br /&gt;
 cat /proc/sys/vm/swappiness&lt;br /&gt;
&lt;br /&gt;
Pour modifier à la volée&lt;br /&gt;
 sysctl vm.swappiness=XX&lt;br /&gt;
(Il faut désactiver et réactiver totalement les espaces SWAP pour prendre en compte la valeur)&lt;br /&gt;
 swapoff -av&lt;br /&gt;
 swapon -av &lt;br /&gt;
Pour rendre le paramètre actif dès le boot, rajouter &amp;lt;code&amp;gt;vm.swappiness=XX&amp;lt;/code&amp;gt; dans le fichier &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Script pour connaitre les processus qui swappent :&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # Get current swap usage for all running processes&lt;br /&gt;
 # Erik Ljungstrom 27/05/2011&lt;br /&gt;
 SUM=0&lt;br /&gt;
 OVERALL=0&lt;br /&gt;
 for DIR in `find /proc/ -maxdepth 1 -type d | egrep &amp;quot;^/proc/[0-9]&amp;quot;` ; do&lt;br /&gt;
 PID=`echo $DIR | cut -d / -f 3`&lt;br /&gt;
 PROGNAME=`ps -p $PID -o comm --no-headers`&lt;br /&gt;
 for SWAP in `grep Swap $DIR/smaps 2&amp;gt;/dev/null| awk &#039;{ print $2 }&#039;` ; do&lt;br /&gt;
 let SUM=$SUM+$SWAP&lt;br /&gt;
 done&lt;br /&gt;
 echo &amp;quot;PID=$PID - Swap used: $SUM - ($PROGNAME )&amp;quot;&lt;br /&gt;
 let OVERALL=$OVERALL+$SUM&lt;br /&gt;
 SUM=0&lt;br /&gt;
 done  | grep -v &amp;quot;Swap used: 0 &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Nouveaux Kernels&lt;br /&gt;
Script pour connaitre les processus qui swappent :&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # Get current swap usage for all running processes&lt;br /&gt;
 # Erik Ljungstrom 27/05/2011&lt;br /&gt;
 SUM=0&lt;br /&gt;
 OVERALL=0&lt;br /&gt;
 for DIR in `find /proc/ -maxdepth 1 -type d | egrep &amp;quot;^/proc/[0-9]&amp;quot;` ; do&lt;br /&gt;
 PID=`echo $DIR | cut -d / -f 3`&lt;br /&gt;
 PROGNAME=`ps -p $PID -o comm --no-headers`&lt;br /&gt;
 for SWAP in `grep VmSwap $DIR/status 2&amp;gt;/dev/null| awk &#039;{ print $2 }&#039;` ; do&lt;br /&gt;
 let SUM=$SUM+$SWAP&lt;br /&gt;
 done&lt;br /&gt;
 echo &amp;quot;PID=$PID - Swap used: $SUM - ($PROGNAME )&amp;quot;&lt;br /&gt;
 let OVERALL=$OVERALL+$SUM&lt;br /&gt;
 SUM=0&lt;br /&gt;
 done  | grep -v &amp;quot;Swap used: 0 &amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Limite sur le nombre de fichiers ouverts==&lt;br /&gt;
Sur Linux, il existe un paramètre permettant de limiter le nombre de fichiers ouverts par un utilisateur. Il s&#039;agit du paramètre &amp;lt;code&amp;gt;ulimit&amp;lt;/code&amp;gt;. La valeur par défaut de ce paramètre est usuellement de 1024.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $ ulimit -a #liste les paramètres kernel des limites&lt;br /&gt;
 $ ulimit -n #affiche la limite du nombre de fichiers ouverts&lt;br /&gt;
 # ulimit -n 65535 #augmente la limite du nombre de fichiers à 65535 pour l&#039;utilisateur courant&lt;br /&gt;
&lt;br /&gt;
Modifier ce paramètre ne le modifie qu&#039;en &amp;quot;mou&amp;quot;. il n&#039;est valide que pour la session courante de l&#039;utilisateur en cours.&lt;br /&gt;
&lt;br /&gt;
Pour que cette modification soit permanente, il faut procéder à quelques ajustements :&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier &amp;lt;code&amp;gt;/etc/pam.d/common-session&amp;lt;/code&amp;gt; pour y insérer la ligne :&lt;br /&gt;
 session required pam_limits.so&lt;br /&gt;
Puis éditer le fichier &amp;lt;code&amp;gt;/etc/security/limits.conf&amp;lt;/code&amp;gt; pour procéder aux ajustements :&lt;br /&gt;
 user      soft     nofile     131070&lt;br /&gt;
 user      hard     nofile     262140&lt;br /&gt;
D&#039;autres modification peuvent être effectuées, se référer à &amp;lt;code&amp;gt;man 5 limits.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DUMMY RPM==&lt;br /&gt;
php-5.2.14-1.spec&lt;br /&gt;
 ###############################################################################&lt;br /&gt;
 Summary : Dummy php 5.2.14-1&lt;br /&gt;
 Name: Agarik-php&lt;br /&gt;
 Version: 5.2.14&lt;br /&gt;
 Release: 1&lt;br /&gt;
 License: GPL&lt;br /&gt;
 Group: Services&lt;br /&gt;
 Source: agarik.com&lt;br /&gt;
 URL: http://www.agarik.com&lt;br /&gt;
 BuildArch: noarch&lt;br /&gt;
 Provides: php-5.2.14-1&lt;br /&gt;
 &lt;br /&gt;
 %description&lt;br /&gt;
 Ceci est un dummy package pour le service &amp;lt;service-version&amp;gt; installé par Agarik&lt;br /&gt;
 %files&lt;br /&gt;
 ###############################################################################&lt;br /&gt;
&lt;br /&gt;
 rpmbuild -bb php-5.2.14-1.spec&lt;br /&gt;
 rpm -U /usr/src/redhat/RPMS/noarch/Agarik-php-5.2.14-1.noarch.rpm&lt;br /&gt;
&lt;br /&gt;
==7Zip script==&lt;br /&gt;
===compress tous les fichiers d&#039;un répertoire===&lt;br /&gt;
 @ECHO OFF&lt;br /&gt;
 FOR /F &amp;quot;usebackq delims==&amp;quot; %%y IN (`dir /b *.log`) DO CALL :compress %%~ny&lt;br /&gt;
 GOTO :fin&lt;br /&gt;
 :compress&lt;br /&gt;
 C:\&amp;quot;Program Files&amp;quot;\7-Zip\7z.exe a %1.zip %1.log&lt;br /&gt;
 del %1.log&lt;br /&gt;
 GOTO :eof&lt;br /&gt;
 :fin&lt;br /&gt;
 ECHO tous les fichiers ont ete traites...&lt;br /&gt;
&lt;br /&gt;
==MEGACLI==&lt;br /&gt;
 MegaCli -LDInfo -LALL -aALL ; donne infos essentiels&lt;br /&gt;
 MegaCli -LDSetProp ADRA -LALL -AALL ; passe le cache &amp;quot;Read Policy&amp;quot; en readadaptative&lt;br /&gt;
 MegaCli -LDSetProp WB -LALL -AALL ; passe le cache &amp;quot;Write Policy&amp;quot; en write back&lt;br /&gt;
 MegaCli -LDSetProp cached -LALL -AALL ; passe le cache en cached&lt;br /&gt;
 MegaCli -AdpBbuCmd -BBuLearn -a0 ; lance un relearn de la batterie&lt;br /&gt;
 MegaCli -AdpBbuCmd -GetBbuCapacityInfo  -aALL ; vérifie si la batterie est en charge ou pas&lt;br /&gt;
 MegaCli -AdpAllInfo -aALL ; info general du contolleur&lt;br /&gt;
 MegaCli -PDList -aALL ; info disques&lt;br /&gt;
 MegaCli -CfgDsply -aALL ; info sur la conf array / disques&lt;br /&gt;
 MegaCli -AdpEventLog -GetEvents -f events.log -aALL ; dumpe les logs de la carte dans events.log&lt;br /&gt;
 MegaCli -PdLocate -start -physdrv \[32:0\] -a0 ; faire blink la led du disque 32:0&lt;br /&gt;
Smartctl sur MegaCli :&lt;br /&gt;
 smartctl -a -d megaraid,N  /dev/sda&lt;br /&gt;
N représente le DeviceID sur le contrôlleur, a récupérer avec un PDlist&lt;br /&gt;
&lt;br /&gt;
==STORCLI==&lt;br /&gt;
lister tous les disques du controler 0&lt;br /&gt;
 storcli /c0 /eall /sall show&lt;br /&gt;
Smartctl sur storcli :&lt;br /&gt;
 smartctl -a -d megaraid,N  /dev/sda&lt;br /&gt;
N représente le DID sur le contrôlleur&lt;br /&gt;
allumer la led du disque&lt;br /&gt;
 storcli /c0 /e250 /s7 start locate&lt;br /&gt;
&lt;br /&gt;
==Similitudes commandes UNIX/LINUX/AIX==&lt;br /&gt;
http://bhami.com/rosetta.html&lt;br /&gt;
&lt;br /&gt;
== IPMI ==&lt;br /&gt;
A faire lorsque le process kipmi0 prends 100% de CPU et que le load monte en conséquence&lt;br /&gt;
 echo &amp;quot;remove,kcs,i/o,0xca8,rsp=4,rsi=1,rsh=0,irq=0,ipmb=0&amp;quot; &amp;gt; /sys/module/ipmi_si/parameters/hotmod&lt;br /&gt;
 echo &amp;quot;add,kcs,i/o,0xca8,rsp=4,rsi=1,rsh=0,irq=0,ipmb=0&amp;quot; &amp;gt; /sys/module/ipmi_si/parameters/hotmod&lt;br /&gt;
&lt;br /&gt;
==Fail2Ban==&lt;br /&gt;
===simple jail to ban known bad url===&lt;br /&gt;
 [apache-badurl]&lt;br /&gt;
 enabled = true&lt;br /&gt;
 &lt;br /&gt;
 failregex = ^&amp;lt;HOST&amp;gt; -.*&amp;quot;(GET|POST|HEAD) (/)+(ios|wp-).*&amp;quot;$&lt;br /&gt;
 ignoreregex =&lt;br /&gt;
 datepattern = ^[^\[]*\[({DATE})&lt;br /&gt;
               {^LN-BEG}&lt;br /&gt;
 action   = iptables-multiport[name=BadUrl, port=&amp;quot;http,https,7080,7081&amp;quot;]&lt;br /&gt;
 logpath  = /var/www/vhosts/system/domain.com/logs/access_ssl_log&lt;br /&gt;
 bantime  = 48h&lt;br /&gt;
 maxretry = 1&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenSSH&amp;diff=121</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenSSH&amp;diff=121"/>
		<updated>2025-11-13T14:49:34Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : /* Mettre l&amp;#039;user dans le bon home directory à la connexion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SFTP ==&lt;br /&gt;
=== Activer un chroot SFTP avec OpenSSH ===&lt;br /&gt;
&lt;br /&gt;
dans &amp;lt;code&amp;gt;/path/to/sshd_config.d/sftp.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
==== si ftp par user ====&lt;br /&gt;
 Match user sftp-user&lt;br /&gt;
       ChrootDirectory /home/sftp/%u&lt;br /&gt;
       ForceCommand internal-sftp&lt;br /&gt;
       AllowTcpForwarding no&lt;br /&gt;
       GatewayPorts no&lt;br /&gt;
       X11Forwarding no&lt;br /&gt;
&lt;br /&gt;
==== si sftp par groupe ====&lt;br /&gt;
 Match group sftp&lt;br /&gt;
        ChrootDirectory /home/sftp/%u&lt;br /&gt;
        ForceCommand internal-sftp&lt;br /&gt;
        AllowTcpForwarding no&lt;br /&gt;
        GatewayPorts no&lt;br /&gt;
        X11Forwarding no&lt;br /&gt;
&lt;br /&gt;
=== Mettre l&#039;user dans le bon home directory à la connexion ===&lt;br /&gt;
 mkdir /home/sftp/&lt;br /&gt;
 mkdir -p /home/sftp/sftp-user&lt;br /&gt;
==== Si sftp par user ====&lt;br /&gt;
 useradd -M -b / -s /sbin/nologin sftp-user&lt;br /&gt;
==== Si sftp par groupe ====&lt;br /&gt;
 groupadd -g 3000 sftp&lt;br /&gt;
 useradd -g sftp -M -b / -s /sbin/nologin sftp-user&lt;br /&gt;
&lt;br /&gt;
L&#039;idée est d&#039;avoir dans &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; un utilisateur comme ceci :&lt;br /&gt;
 sftp-user:x:500:3000::/sftp-user:/sbin/nologin&lt;br /&gt;
&amp;lt;code&amp;gt;/sbin/nologin&amp;lt;/code&amp;gt; peut être remplacé par &amp;lt;code&amp;gt;/bin/false&amp;lt;/code&amp;gt;, le shell est forcé par le &amp;lt;code&amp;gt;ForceCommand&amp;lt;/code&amp;gt; de la sous section d&#039;OpenSSH&lt;br /&gt;
&lt;br /&gt;
=== Autoriser l&#039;utilisation d&#039;une clé RSA ===&lt;br /&gt;
dans &amp;lt;code&amp;gt;/path/to/sshd_config&amp;lt;/code&amp;gt;&lt;br /&gt;
 AuthorizedKeysFile      /home/sftpusers/%u/.ssh/authorized_keys&lt;br /&gt;
Attention, l&#039;utilisateur &amp;quot;sftp-user&amp;quot; doit impérativement pouvoir lire le fichier authorized_keys (les droits de l&#039;intégralité du path doivent au moins contenir &amp;lt;code&amp;gt;read&amp;lt;/code&amp;gt; pour le groupe &amp;lt;code&amp;gt;sftpusers&amp;lt;/code&amp;gt;, le chroot étant réalisée une fois les credentials obtenus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ajouter du log verbeux ===&lt;br /&gt;
Dans la rubrique &amp;lt;code&amp;gt;Match&amp;lt;/code&amp;gt;, ajouter &amp;lt;code&amp;gt; -f AUTH -l INFO&amp;lt;/code&amp;gt; à la fin de la ligne &amp;lt;code&amp;gt;ForceCommand internal-sftp&amp;lt;/code&amp;gt;.&lt;br /&gt;
Cela va avoir pour effet de forcer l&#039;user à écrire dans son /dev/log, qui n&#039;existe pas, il faut donc créer le répertoire &amp;lt;code&amp;gt;mkdir /home/sftpusers/sftp-user/dev&amp;lt;/code&amp;gt; et demander à rsyslog d&#039;aller y écouter. Dans &amp;lt;code&amp;gt;/etc/rsyslog.d/chroot.conf&amp;lt;/code&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
 $AddUnixListenSocket /home/sftpusers/sftp-user/dev/log&lt;br /&gt;
&lt;br /&gt;
Un restart du tout et c&#039;est OK.&lt;br /&gt;
&lt;br /&gt;
Il est possible de changer le niveau de verbosité (configuré à &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;) et le syslogfacility (&amp;lt;code&amp;gt;AUTH&amp;lt;/code&amp;gt;), mais il faudra également penser à adapter rsyslog pour traiter cette facility.&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
=== Afficher les algo acceptés par ssh sshd ===&lt;br /&gt;
 ssh -Q key&lt;br /&gt;
&lt;br /&gt;
=== Créer une clé SSH ===&lt;br /&gt;
 ssh-keygen -q -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot; -C &amp;quot;$(whoami)@$(hostname)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 ssh-keygen -q -t ed25519 -f ~/.ssh/id_ed25519 -N &amp;quot;&amp;quot; -C &amp;quot;$(whoami)@$(hostname)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Calculer un fingerprint ===&lt;br /&gt;
format sha256 encodé en base64&lt;br /&gt;
 ssh-keygen -lf ~/.ssh/id_rsa.pub&lt;br /&gt;
pour l&#039;avoir en ancien format MD5&lt;br /&gt;
 ssh-keygen -lf ~/.ssh/id_rsa.pub -E md5&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenSSH&amp;diff=120</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenSSH&amp;diff=120"/>
		<updated>2025-11-13T14:48:03Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : /* si ftp par user */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SFTP ==&lt;br /&gt;
=== Activer un chroot SFTP avec OpenSSH ===&lt;br /&gt;
&lt;br /&gt;
dans &amp;lt;code&amp;gt;/path/to/sshd_config.d/sftp.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
==== si ftp par user ====&lt;br /&gt;
 Match user sftp-user&lt;br /&gt;
       ChrootDirectory /home/sftp/%u&lt;br /&gt;
       ForceCommand internal-sftp&lt;br /&gt;
       AllowTcpForwarding no&lt;br /&gt;
       GatewayPorts no&lt;br /&gt;
       X11Forwarding no&lt;br /&gt;
&lt;br /&gt;
==== si sftp par groupe ====&lt;br /&gt;
 Match group sftp&lt;br /&gt;
        ChrootDirectory /home/sftp/%u&lt;br /&gt;
        ForceCommand internal-sftp&lt;br /&gt;
        AllowTcpForwarding no&lt;br /&gt;
        GatewayPorts no&lt;br /&gt;
        X11Forwarding no&lt;br /&gt;
&lt;br /&gt;
=== Mettre l&#039;user dans le bon home directory à la connexion ===&lt;br /&gt;
&lt;br /&gt;
 groupadd -g 3000 sftp&lt;br /&gt;
 mkdir /home/sftp/&lt;br /&gt;
 mkdir -p /home/sftp/sftp-user&lt;br /&gt;
 useradd -g sftp -M -b / -s /sbin/nologin sftp-user&lt;br /&gt;
&lt;br /&gt;
L&#039;idée est d&#039;avoir dans &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; un utilisateur comme ceci :&lt;br /&gt;
 sftp-user:x:500:3000::/sftp-user:/sbin/nologin&lt;br /&gt;
&amp;lt;code&amp;gt;/sbin/nologin&amp;lt;/code&amp;gt; peut être remplacé par &amp;lt;code&amp;gt;/bin/false&amp;lt;/code&amp;gt;, le shell est forcé par le &amp;lt;code&amp;gt;ForceCommand&amp;lt;/code&amp;gt; de la sous section d&#039;OpenSSH&lt;br /&gt;
&lt;br /&gt;
=== Autoriser l&#039;utilisation d&#039;une clé RSA ===&lt;br /&gt;
dans &amp;lt;code&amp;gt;/path/to/sshd_config&amp;lt;/code&amp;gt;&lt;br /&gt;
 AuthorizedKeysFile      /home/sftpusers/%u/.ssh/authorized_keys&lt;br /&gt;
Attention, l&#039;utilisateur &amp;quot;sftp-user&amp;quot; doit impérativement pouvoir lire le fichier authorized_keys (les droits de l&#039;intégralité du path doivent au moins contenir &amp;lt;code&amp;gt;read&amp;lt;/code&amp;gt; pour le groupe &amp;lt;code&amp;gt;sftpusers&amp;lt;/code&amp;gt;, le chroot étant réalisée une fois les credentials obtenus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ajouter du log verbeux ===&lt;br /&gt;
Dans la rubrique &amp;lt;code&amp;gt;Match&amp;lt;/code&amp;gt;, ajouter &amp;lt;code&amp;gt; -f AUTH -l INFO&amp;lt;/code&amp;gt; à la fin de la ligne &amp;lt;code&amp;gt;ForceCommand internal-sftp&amp;lt;/code&amp;gt;.&lt;br /&gt;
Cela va avoir pour effet de forcer l&#039;user à écrire dans son /dev/log, qui n&#039;existe pas, il faut donc créer le répertoire &amp;lt;code&amp;gt;mkdir /home/sftpusers/sftp-user/dev&amp;lt;/code&amp;gt; et demander à rsyslog d&#039;aller y écouter. Dans &amp;lt;code&amp;gt;/etc/rsyslog.d/chroot.conf&amp;lt;/code&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
 $AddUnixListenSocket /home/sftpusers/sftp-user/dev/log&lt;br /&gt;
&lt;br /&gt;
Un restart du tout et c&#039;est OK.&lt;br /&gt;
&lt;br /&gt;
Il est possible de changer le niveau de verbosité (configuré à &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;) et le syslogfacility (&amp;lt;code&amp;gt;AUTH&amp;lt;/code&amp;gt;), mais il faudra également penser à adapter rsyslog pour traiter cette facility.&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
=== Afficher les algo acceptés par ssh sshd ===&lt;br /&gt;
 ssh -Q key&lt;br /&gt;
&lt;br /&gt;
=== Créer une clé SSH ===&lt;br /&gt;
 ssh-keygen -q -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot; -C &amp;quot;$(whoami)@$(hostname)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 ssh-keygen -q -t ed25519 -f ~/.ssh/id_ed25519 -N &amp;quot;&amp;quot; -C &amp;quot;$(whoami)@$(hostname)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Calculer un fingerprint ===&lt;br /&gt;
format sha256 encodé en base64&lt;br /&gt;
 ssh-keygen -lf ~/.ssh/id_rsa.pub&lt;br /&gt;
pour l&#039;avoir en ancien format MD5&lt;br /&gt;
 ssh-keygen -lf ~/.ssh/id_rsa.pub -E md5&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenSSH&amp;diff=119</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenSSH&amp;diff=119"/>
		<updated>2025-11-13T14:47:56Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : /* Activer un chroot SFTP avec OpenSSH */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SFTP ==&lt;br /&gt;
=== Activer un chroot SFTP avec OpenSSH ===&lt;br /&gt;
&lt;br /&gt;
dans &amp;lt;code&amp;gt;/path/to/sshd_config.d/sftp.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
==== si ftp par user ====&lt;br /&gt;
Match user sftp-user&lt;br /&gt;
       ChrootDirectory /home/sftp/%u&lt;br /&gt;
       ForceCommand internal-sftp&lt;br /&gt;
       AllowTcpForwarding no&lt;br /&gt;
       GatewayPorts no&lt;br /&gt;
       X11Forwarding no&lt;br /&gt;
==== si sftp par groupe ====&lt;br /&gt;
 Match group sftp&lt;br /&gt;
        ChrootDirectory /home/sftp/%u&lt;br /&gt;
        ForceCommand internal-sftp&lt;br /&gt;
        AllowTcpForwarding no&lt;br /&gt;
        GatewayPorts no&lt;br /&gt;
        X11Forwarding no&lt;br /&gt;
&lt;br /&gt;
=== Mettre l&#039;user dans le bon home directory à la connexion ===&lt;br /&gt;
&lt;br /&gt;
 groupadd -g 3000 sftp&lt;br /&gt;
 mkdir /home/sftp/&lt;br /&gt;
 mkdir -p /home/sftp/sftp-user&lt;br /&gt;
 useradd -g sftp -M -b / -s /sbin/nologin sftp-user&lt;br /&gt;
&lt;br /&gt;
L&#039;idée est d&#039;avoir dans &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; un utilisateur comme ceci :&lt;br /&gt;
 sftp-user:x:500:3000::/sftp-user:/sbin/nologin&lt;br /&gt;
&amp;lt;code&amp;gt;/sbin/nologin&amp;lt;/code&amp;gt; peut être remplacé par &amp;lt;code&amp;gt;/bin/false&amp;lt;/code&amp;gt;, le shell est forcé par le &amp;lt;code&amp;gt;ForceCommand&amp;lt;/code&amp;gt; de la sous section d&#039;OpenSSH&lt;br /&gt;
&lt;br /&gt;
=== Autoriser l&#039;utilisation d&#039;une clé RSA ===&lt;br /&gt;
dans &amp;lt;code&amp;gt;/path/to/sshd_config&amp;lt;/code&amp;gt;&lt;br /&gt;
 AuthorizedKeysFile      /home/sftpusers/%u/.ssh/authorized_keys&lt;br /&gt;
Attention, l&#039;utilisateur &amp;quot;sftp-user&amp;quot; doit impérativement pouvoir lire le fichier authorized_keys (les droits de l&#039;intégralité du path doivent au moins contenir &amp;lt;code&amp;gt;read&amp;lt;/code&amp;gt; pour le groupe &amp;lt;code&amp;gt;sftpusers&amp;lt;/code&amp;gt;, le chroot étant réalisée une fois les credentials obtenus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ajouter du log verbeux ===&lt;br /&gt;
Dans la rubrique &amp;lt;code&amp;gt;Match&amp;lt;/code&amp;gt;, ajouter &amp;lt;code&amp;gt; -f AUTH -l INFO&amp;lt;/code&amp;gt; à la fin de la ligne &amp;lt;code&amp;gt;ForceCommand internal-sftp&amp;lt;/code&amp;gt;.&lt;br /&gt;
Cela va avoir pour effet de forcer l&#039;user à écrire dans son /dev/log, qui n&#039;existe pas, il faut donc créer le répertoire &amp;lt;code&amp;gt;mkdir /home/sftpusers/sftp-user/dev&amp;lt;/code&amp;gt; et demander à rsyslog d&#039;aller y écouter. Dans &amp;lt;code&amp;gt;/etc/rsyslog.d/chroot.conf&amp;lt;/code&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
 $AddUnixListenSocket /home/sftpusers/sftp-user/dev/log&lt;br /&gt;
&lt;br /&gt;
Un restart du tout et c&#039;est OK.&lt;br /&gt;
&lt;br /&gt;
Il est possible de changer le niveau de verbosité (configuré à &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;) et le syslogfacility (&amp;lt;code&amp;gt;AUTH&amp;lt;/code&amp;gt;), mais il faudra également penser à adapter rsyslog pour traiter cette facility.&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
=== Afficher les algo acceptés par ssh sshd ===&lt;br /&gt;
 ssh -Q key&lt;br /&gt;
&lt;br /&gt;
=== Créer une clé SSH ===&lt;br /&gt;
 ssh-keygen -q -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot; -C &amp;quot;$(whoami)@$(hostname)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 ssh-keygen -q -t ed25519 -f ~/.ssh/id_ed25519 -N &amp;quot;&amp;quot; -C &amp;quot;$(whoami)@$(hostname)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Calculer un fingerprint ===&lt;br /&gt;
format sha256 encodé en base64&lt;br /&gt;
 ssh-keygen -lf ~/.ssh/id_rsa.pub&lt;br /&gt;
pour l&#039;avoir en ancien format MD5&lt;br /&gt;
 ssh-keygen -lf ~/.ssh/id_rsa.pub -E md5&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenSSH&amp;diff=118</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenSSH&amp;diff=118"/>
		<updated>2025-11-13T14:46:37Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SFTP ==&lt;br /&gt;
=== Activer un chroot SFTP avec OpenSSH ===&lt;br /&gt;
&lt;br /&gt;
dans &amp;lt;code&amp;gt;/path/to/sshd_config&amp;lt;/code&amp;gt;&lt;br /&gt;
 Subsystem       sftp    internal-sftp&lt;br /&gt;
 Match group sftp&lt;br /&gt;
        ChrootDirectory /home/sftp/%u&lt;br /&gt;
        ForceCommand internal-sftp&lt;br /&gt;
        AllowTcpForwarding no&lt;br /&gt;
        GatewayPorts no&lt;br /&gt;
        X11Forwarding no&lt;br /&gt;
&lt;br /&gt;
=== Mettre l&#039;user dans le bon home directory à la connexion ===&lt;br /&gt;
&lt;br /&gt;
 groupadd -g 3000 sftp&lt;br /&gt;
 mkdir /home/sftp/&lt;br /&gt;
 mkdir -p /home/sftp/sftp-user&lt;br /&gt;
 useradd -g sftp -M -b / -s /sbin/nologin sftp-user&lt;br /&gt;
&lt;br /&gt;
L&#039;idée est d&#039;avoir dans &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; un utilisateur comme ceci :&lt;br /&gt;
 sftp-user:x:500:3000::/sftp-user:/sbin/nologin&lt;br /&gt;
&amp;lt;code&amp;gt;/sbin/nologin&amp;lt;/code&amp;gt; peut être remplacé par &amp;lt;code&amp;gt;/bin/false&amp;lt;/code&amp;gt;, le shell est forcé par le &amp;lt;code&amp;gt;ForceCommand&amp;lt;/code&amp;gt; de la sous section d&#039;OpenSSH&lt;br /&gt;
&lt;br /&gt;
=== Autoriser l&#039;utilisation d&#039;une clé RSA ===&lt;br /&gt;
dans &amp;lt;code&amp;gt;/path/to/sshd_config&amp;lt;/code&amp;gt;&lt;br /&gt;
 AuthorizedKeysFile      /home/sftpusers/%u/.ssh/authorized_keys&lt;br /&gt;
Attention, l&#039;utilisateur &amp;quot;sftp-user&amp;quot; doit impérativement pouvoir lire le fichier authorized_keys (les droits de l&#039;intégralité du path doivent au moins contenir &amp;lt;code&amp;gt;read&amp;lt;/code&amp;gt; pour le groupe &amp;lt;code&amp;gt;sftpusers&amp;lt;/code&amp;gt;, le chroot étant réalisée une fois les credentials obtenus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ajouter du log verbeux ===&lt;br /&gt;
Dans la rubrique &amp;lt;code&amp;gt;Match&amp;lt;/code&amp;gt;, ajouter &amp;lt;code&amp;gt; -f AUTH -l INFO&amp;lt;/code&amp;gt; à la fin de la ligne &amp;lt;code&amp;gt;ForceCommand internal-sftp&amp;lt;/code&amp;gt;.&lt;br /&gt;
Cela va avoir pour effet de forcer l&#039;user à écrire dans son /dev/log, qui n&#039;existe pas, il faut donc créer le répertoire &amp;lt;code&amp;gt;mkdir /home/sftpusers/sftp-user/dev&amp;lt;/code&amp;gt; et demander à rsyslog d&#039;aller y écouter. Dans &amp;lt;code&amp;gt;/etc/rsyslog.d/chroot.conf&amp;lt;/code&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
 $AddUnixListenSocket /home/sftpusers/sftp-user/dev/log&lt;br /&gt;
&lt;br /&gt;
Un restart du tout et c&#039;est OK.&lt;br /&gt;
&lt;br /&gt;
Il est possible de changer le niveau de verbosité (configuré à &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;) et le syslogfacility (&amp;lt;code&amp;gt;AUTH&amp;lt;/code&amp;gt;), mais il faudra également penser à adapter rsyslog pour traiter cette facility.&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
=== Afficher les algo acceptés par ssh sshd ===&lt;br /&gt;
 ssh -Q key&lt;br /&gt;
&lt;br /&gt;
=== Créer une clé SSH ===&lt;br /&gt;
 ssh-keygen -q -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot; -C &amp;quot;$(whoami)@$(hostname)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 ssh-keygen -q -t ed25519 -f ~/.ssh/id_ed25519 -N &amp;quot;&amp;quot; -C &amp;quot;$(whoami)@$(hostname)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Calculer un fingerprint ===&lt;br /&gt;
format sha256 encodé en base64&lt;br /&gt;
 ssh-keygen -lf ~/.ssh/id_rsa.pub&lt;br /&gt;
pour l&#039;avoir en ancien format MD5&lt;br /&gt;
 ssh-keygen -lf ~/.ssh/id_rsa.pub -E md5&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenSSH&amp;diff=117</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenSSH&amp;diff=117"/>
		<updated>2025-11-13T14:46:02Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SFTP ==&lt;br /&gt;
=== Activer un chroot SFTP avec OpenSSH ===&lt;br /&gt;
&lt;br /&gt;
dans &amp;lt;code&amp;gt;/path/to/sshd_config&amp;lt;/code&amp;gt;&lt;br /&gt;
 Subsystem       sftp    internal-sftp&lt;br /&gt;
 Match group sftp&lt;br /&gt;
        ChrootDirectory /home/sftpusers/%u&lt;br /&gt;
        ForceCommand internal-sftp&lt;br /&gt;
        AllowTcpForwarding no&lt;br /&gt;
        GatewayPorts no&lt;br /&gt;
        X11Forwarding no&lt;br /&gt;
&lt;br /&gt;
=== Mettre l&#039;user dans le bon home directory à la connexion ===&lt;br /&gt;
&lt;br /&gt;
 groupadd -g 3000 sftp&lt;br /&gt;
 mkdir /home/sftpusers/&lt;br /&gt;
 mkdir -p /home/sftpusers/sftp-user&lt;br /&gt;
 useradd -g sftp -M -b / -s /sbin/nologin sftp-user&lt;br /&gt;
&lt;br /&gt;
L&#039;idée est d&#039;avoir dans &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; un utilisateur comme ceci :&lt;br /&gt;
 sftp-user:x:500:3000::/sftp-user:/sbin/nologin&lt;br /&gt;
&amp;lt;code&amp;gt;/sbin/nologin&amp;lt;/code&amp;gt; peut être remplacé par &amp;lt;code&amp;gt;/bin/false&amp;lt;/code&amp;gt;, le shell est forcé par le &amp;lt;code&amp;gt;ForceCommand&amp;lt;/code&amp;gt; de la sous section d&#039;OpenSSH&lt;br /&gt;
&lt;br /&gt;
=== Autoriser l&#039;utilisation d&#039;une clé RSA ===&lt;br /&gt;
dans &amp;lt;code&amp;gt;/path/to/sshd_config&amp;lt;/code&amp;gt;&lt;br /&gt;
 AuthorizedKeysFile      /home/sftpusers/%u/.ssh/authorized_keys&lt;br /&gt;
Attention, l&#039;utilisateur &amp;quot;sftp-user&amp;quot; doit impérativement pouvoir lire le fichier authorized_keys (les droits de l&#039;intégralité du path doivent au moins contenir &amp;lt;code&amp;gt;read&amp;lt;/code&amp;gt; pour le groupe &amp;lt;code&amp;gt;sftpusers&amp;lt;/code&amp;gt;, le chroot étant réalisée une fois les credentials obtenus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ajouter du log verbeux ===&lt;br /&gt;
Dans la rubrique &amp;lt;code&amp;gt;Match&amp;lt;/code&amp;gt;, ajouter &amp;lt;code&amp;gt; -f AUTH -l INFO&amp;lt;/code&amp;gt; à la fin de la ligne &amp;lt;code&amp;gt;ForceCommand internal-sftp&amp;lt;/code&amp;gt;.&lt;br /&gt;
Cela va avoir pour effet de forcer l&#039;user à écrire dans son /dev/log, qui n&#039;existe pas, il faut donc créer le répertoire &amp;lt;code&amp;gt;mkdir /home/sftpusers/sftp-user/dev&amp;lt;/code&amp;gt; et demander à rsyslog d&#039;aller y écouter. Dans &amp;lt;code&amp;gt;/etc/rsyslog.d/chroot.conf&amp;lt;/code&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
 $AddUnixListenSocket /home/sftpusers/sftp-user/dev/log&lt;br /&gt;
&lt;br /&gt;
Un restart du tout et c&#039;est OK.&lt;br /&gt;
&lt;br /&gt;
Il est possible de changer le niveau de verbosité (configuré à &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;) et le syslogfacility (&amp;lt;code&amp;gt;AUTH&amp;lt;/code&amp;gt;), mais il faudra également penser à adapter rsyslog pour traiter cette facility.&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
=== Afficher les algo acceptés par ssh sshd ===&lt;br /&gt;
 ssh -Q key&lt;br /&gt;
&lt;br /&gt;
=== Créer une clé SSH ===&lt;br /&gt;
 ssh-keygen -q -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot; -C &amp;quot;$(whoami)@$(hostname)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 ssh-keygen -q -t ed25519 -f ~/.ssh/id_ed25519 -N &amp;quot;&amp;quot; -C &amp;quot;$(whoami)@$(hostname)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Calculer un fingerprint ===&lt;br /&gt;
format sha256 encodé en base64&lt;br /&gt;
 ssh-keygen -lf ~/.ssh/id_rsa.pub&lt;br /&gt;
pour l&#039;avoir en ancien format MD5&lt;br /&gt;
 ssh-keygen -lf ~/.ssh/id_rsa.pub -E md5&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Plesk&amp;diff=116</id>
		<title>Plesk</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Plesk&amp;diff=116"/>
		<updated>2025-06-24T14:27:42Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Lister les domaines =&lt;br /&gt;
 plesk bin domain --list&lt;br /&gt;
&lt;br /&gt;
= Lister les redirections emails =&lt;br /&gt;
 mysql -uadmin -p$(cat /etc/psa/.psa.shadow) --batch psa -e &amp;quot;SELECT CONCAT_WS(&#039;@&#039;,mail.mail_name,domains.name) AS adresse ,mail_redir.address AS redirection FROM domains,mail,mail_redir WHERE domains.id=mail.dom_id AND mn_id=mail.id ORDER BY domains.name ASC,mail.mail_name ASC;&amp;quot; | sed &#039;s/\t/\t-&amp;gt;\t/g&#039;&lt;br /&gt;
&lt;br /&gt;
= Lister les domaines par IP =&lt;br /&gt;
 MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -u admin -Dpsa -e&amp;quot;SELECT dom.id, dom.name, ia.ipAddressId, iad.ip_address FROM domains dom LEFT JOIN DomainServices d ON (dom.id = d.dom_id AND d.type = &#039;web&#039;) LEFT JOIN IpAddressesCollections ia ON ia.ipCollectionId = d.ipCollectionId LEFT JOIN IP_Addresses iad ON iad.id = ia.ipAddressId WHERE iad.ip_address=&#039;&amp;lt;THE.IP.ADDRESS.HERE&amp;gt;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Changer l&#039;IP d&#039;un domaine =&lt;br /&gt;
 plesk bin subscription -u &amp;quot;$DOMAIN&amp;quot; -ip &amp;lt;ip_address&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Lister les handlers PHP =&lt;br /&gt;
 plesk bin php_handler --list&lt;br /&gt;
&lt;br /&gt;
= Lister les id de domaines par version/handler PHP =&lt;br /&gt;
 MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -uadmin psa -e &amp;quot;select dom_id,php_handler_id from hosting where php_handler_id LIKE &#039;%5.2%&#039;;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Lister les domaines qui ont une version spécifique de PHP =&lt;br /&gt;
 MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -uadmin psa --batch -e &amp;quot;select name from domains, hosting WHERE domains.id=hosting.dom_id AND hosting.php_handler_id LIKE &#039;%72%&#039;;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Sortir une liste pour fichier hosts des sites hébergés =&lt;br /&gt;
 MYSQL_PWD=$(cat /etc/psa/.psa.shadow) mysql -u admin -Dpsa -e&amp;quot;SELECT dom.id, dom.name, ia.ipAddressId, iad.ip_address FROM domains dom LEFT JOIN DomainServices d ON (dom.id = d.dom_id AND d.type = &#039;web&#039;) LEFT JOIN IpAddressesCollections ia ON ia.ipCollectionId = d.ipCollectionId LEFT JOIN IP_Addresses iad ON iad.id = ia.ipAddressId&amp;quot; | awk {&#039;print $4&amp;quot; www.&amp;quot;$2&amp;quot; &amp;quot;$2&#039;}&lt;br /&gt;
&lt;br /&gt;
= Désactiver DNS pour tous les domaines =&lt;br /&gt;
 for dom in $(plesk bin domain --list) ; do plesk bin dns --off ${dom} ; done&lt;br /&gt;
&lt;br /&gt;
= Désactiver la gestion des mails pour tous les domaines =&lt;br /&gt;
 for dom in $(plesk bin domain --list) ; do plesk bin subscription --update ${dom} -mail_service false ; done&lt;br /&gt;
&lt;br /&gt;
= Voir les mots de passe des boites mail =&lt;br /&gt;
 plesk sbin mail_auth_view&lt;br /&gt;
&lt;br /&gt;
= Lister les date d&#039;expiration des certificats SSL TLS chargés dans postfix =&lt;br /&gt;
 for domain in $(postmap -s /var/spool/postfix/plesk/certs| cut -d$&#039;\t&#039; -f1) ; do echo $domain ; postmap -s /var/spool/postfix/plesk/certs| grep ${domain} | cut -d$&#039;\t&#039; -f2 |  base64 -d | openssl x509 -in -  -noout -enddate ; done&lt;br /&gt;
Afficher EXPIRED ou valid :&lt;br /&gt;
 for domain in $(postmap -s /var/spool/postfix/plesk/certs| cut -d$&#039;\t&#039; -f1) ; do CERTDATE=$(postmap -s /var/spool/postfix/plesk/certs| grep ${domain} | cut -d$&#039;\t&#039; -f2 |  base64 -d | openssl x509 -in -  -noout -enddate |  cut -d&amp;quot;=&amp;quot; -f2) ; CERTDATE_SEC=$(date -d &amp;quot;${CERTDATE}&amp;quot; +%s) ; if (( $CERTDATE_SEC &amp;lt; $(date +%s) )) ; then echo $domain : EXPIRED ; else echo $domain : valid ; fi ; done&lt;br /&gt;
&lt;br /&gt;
= Faire en sorte que le site https et le site http soit le même documentroot (et plus httpsdocs) =&lt;br /&gt;
 plesk bin subscription -u example.com -same_ssl true&lt;br /&gt;
&lt;br /&gt;
= liste des logs plesk =&lt;br /&gt;
https://support.plesk.com/hc/en-us/articles/12377744787991-Plesk-for-Linux-services-logs-and-configuration-files#roundcube&lt;br /&gt;
&lt;br /&gt;
= Reconfigurer nginx pour la nouvelle syntaxe http2 =&lt;br /&gt;
si l&#039;erreur est&lt;br /&gt;
 nginx: [warn] the &amp;quot;listen ... http2&amp;quot; directive is deprecated, use the &amp;quot;http2&amp;quot; directive instead in &lt;br /&gt;
alors, en root, faire : &lt;br /&gt;
 plesk bin http2_pref --disable&lt;br /&gt;
 plesk bin http2_pref --enable&lt;br /&gt;
(commande globale à tout le serveur)&lt;br /&gt;
&lt;br /&gt;
= Activer les rotation de logs =&lt;br /&gt;
chaque semaine, 12 jours de rétention&lt;br /&gt;
 plesk bin site --update example.com -log-rotate true -log-compress true -log-bytime weekly -log-max-num-files 12&lt;br /&gt;
&lt;br /&gt;
= Trouver les abonnements n&#039;ayant pas 1 domaine unique =&lt;br /&gt;
 for subscription in $(plesk bin subscription --list) ; do ndomain=$(mysql psa -Ns -uadmin -p$(cat /etc/psa/.psa.shadow) -e &amp;quot;select count(a.name) AS domainname FROM domains AS a inner join hosting  AS b ON b.dom_id = a.id inner join sys_users AS c ON c.id = b.sys_user_id where c.home LIKE &#039;%${subscription}&#039;&amp;quot;) ; if [ $ndomain -ne 1 ] ; then echo $subscription has $ndomain domain ; fi ; done&lt;br /&gt;
&lt;br /&gt;
= lister les domaines appartenant à un client particulier =&lt;br /&gt;
 MYSQL_PWD=$(cat /etc/psa/.psa.shadow) mysql -u admin -Dpsa -Nse &amp;quot;SELECT domains.name FROM domains,clients WHERE domains.cl_id=clients.id AND type=&#039;client&#039; AND pname=&#039;NOM DU CLIENT&#039;;&amp;quot;&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Plesk&amp;diff=115</id>
		<title>Plesk</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Plesk&amp;diff=115"/>
		<updated>2025-06-24T14:27:04Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Lister les domaines =&lt;br /&gt;
 plesk bin domain --list&lt;br /&gt;
&lt;br /&gt;
= Lister les redirections emails =&lt;br /&gt;
 mysql -uadmin -p$(cat /etc/psa/.psa.shadow) --batch psa -e &amp;quot;SELECT CONCAT_WS(&#039;@&#039;,mail.mail_name,domains.name) AS adresse ,mail_redir.address AS redirection FROM domains,mail,mail_redir WHERE domains.id=mail.dom_id AND mn_id=mail.id ORDER BY domains.name ASC,mail.mail_name ASC;&amp;quot; | sed &#039;s/\t/\t-&amp;gt;\t/g&#039;&lt;br /&gt;
&lt;br /&gt;
= Lister les domaines par IP =&lt;br /&gt;
 MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -u admin -Dpsa -e&amp;quot;SELECT dom.id, dom.name, ia.ipAddressId, iad.ip_address FROM domains dom LEFT JOIN DomainServices d ON (dom.id = d.dom_id AND d.type = &#039;web&#039;) LEFT JOIN IpAddressesCollections ia ON ia.ipCollectionId = d.ipCollectionId LEFT JOIN IP_Addresses iad ON iad.id = ia.ipAddressId WHERE iad.ip_address=&#039;&amp;lt;THE.IP.ADDRESS.HERE&amp;gt;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Changer l&#039;IP d&#039;un domaine =&lt;br /&gt;
 plesk bin subscription -u &amp;quot;$DOMAIN&amp;quot; -ip &amp;lt;ip_address&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Lister les handlers PHP =&lt;br /&gt;
 plesk bin php_handler --list&lt;br /&gt;
&lt;br /&gt;
= Lister les id de domaines par version/handler PHP =&lt;br /&gt;
 MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -uadmin psa -e &amp;quot;select dom_id,php_handler_id from hosting where php_handler_id LIKE &#039;%5.2%&#039;;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Lister les domaines qui ont une version spécifique de PHP =&lt;br /&gt;
 MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -uadmin psa --batch -e &amp;quot;select name from domains, hosting WHERE domains.id=hosting.dom_id AND hosting.php_handler_id LIKE &#039;%72%&#039;;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Sortir une liste pour fichier hosts des sites hébergés =&lt;br /&gt;
 MYSQL_PWD=$(cat /etc/psa/.psa.shadow) mysql -u admin -Dpsa -e&amp;quot;SELECT dom.id, dom.name, ia.ipAddressId, iad.ip_address FROM domains dom LEFT JOIN DomainServices d ON (dom.id = d.dom_id AND d.type = &#039;web&#039;) LEFT JOIN IpAddressesCollections ia ON ia.ipCollectionId = d.ipCollectionId LEFT JOIN IP_Addresses iad ON iad.id = ia.ipAddressId&amp;quot; | awk {&#039;print $4&amp;quot; www.&amp;quot;$2&amp;quot; &amp;quot;$2&#039;}&lt;br /&gt;
&lt;br /&gt;
= Désactiver DNS pour tous les domaines =&lt;br /&gt;
 for dom in $(plesk bin domain --list) ; do plesk bin dns --off ${dom} ; done&lt;br /&gt;
&lt;br /&gt;
= Désactiver la gestion des mails pour tous les domaines =&lt;br /&gt;
 for dom in $(plesk bin domain --list) ; do plesk bin subscription --update ${dom} -mail_service false ; done&lt;br /&gt;
&lt;br /&gt;
= Voir les mots de passe des boites mail =&lt;br /&gt;
 plesk sbin mail_auth_view&lt;br /&gt;
&lt;br /&gt;
= Lister les date d&#039;expiration des certificats SSL TLS chargés dans postfix =&lt;br /&gt;
 for domain in $(postmap -s /var/spool/postfix/plesk/certs| cut -d$&#039;\t&#039; -f1) ; do echo $domain ; postmap -s /var/spool/postfix/plesk/certs| grep ${domain} | cut -d$&#039;\t&#039; -f2 |  base64 -d | openssl x509 -in -  -noout -enddate ; done&lt;br /&gt;
Afficher EXPIRED ou valid :&lt;br /&gt;
 for domain in $(postmap -s /var/spool/postfix/plesk/certs| cut -d$&#039;\t&#039; -f1) ; do CERTDATE=$(postmap -s /var/spool/postfix/plesk/certs| grep ${domain} | cut -d$&#039;\t&#039; -f2 |  base64 -d | openssl x509 -in -  -noout -enddate |  cut -d&amp;quot;=&amp;quot; -f2) ; CERTDATE_SEC=$(date -d &amp;quot;${CERTDATE}&amp;quot; +%s) ; if (( $CERTDATE_SEC &amp;lt; $(date +%s) )) ; then echo $domain : EXPIRED ; else echo $domain : valid ; fi ; done&lt;br /&gt;
&lt;br /&gt;
= Faire en sorte que le site https et le site http soit le même documentroot (et plus httpsdocs) =&lt;br /&gt;
 plesk bin subscription -u example.com -same_ssl true&lt;br /&gt;
&lt;br /&gt;
= liste des logs plesk =&lt;br /&gt;
https://support.plesk.com/hc/en-us/articles/12377744787991-Plesk-for-Linux-services-logs-and-configuration-files#roundcube&lt;br /&gt;
&lt;br /&gt;
= Reconfigurer nginx pour la nouvelle syntaxe http2 =&lt;br /&gt;
si l&#039;erreur est&lt;br /&gt;
 nginx: [warn] the &amp;quot;listen ... http2&amp;quot; directive is deprecated, use the &amp;quot;http2&amp;quot; directive instead in &lt;br /&gt;
alors, en root, faire : &lt;br /&gt;
 plesk bin http2_pref --disable&lt;br /&gt;
 plesk bin http2_pref --enable&lt;br /&gt;
(commande globale à tout le serveur)&lt;br /&gt;
&lt;br /&gt;
= Activer les rotation de logs =&lt;br /&gt;
chaque semaine, 12 jours de rétention&lt;br /&gt;
 plesk bin site --update example.com -log-rotate true -log-compress true -log-bytime weekly -log-max-num-files 12&lt;br /&gt;
&lt;br /&gt;
= Trouver les abonnements n&#039;ayant pas 1 domaine unique =&lt;br /&gt;
 for subscription in $(plesk bin subscription --list) ; do ndomain=$(mysql psa -Ns -uadmin -p$(cat /etc/psa/.psa.shadow) -e &amp;quot;select count(a.name) AS domainname FROM domains AS a inner join hosting  AS b ON b.dom_id = a.id inner join sys_users AS c ON c.id = b.sys_user_id where c.home LIKE &#039;%${subscription}&#039;&amp;quot;) ; if [ $ndomain -ne 1 ] ; then echo $subscription has $ndomain domain ; fi ; done&lt;br /&gt;
&lt;br /&gt;
= lister les domaines appartenant à un client particulier =&lt;br /&gt;
 MYSQL_PWD=$(cat /etc/psa/.psa.shadow) mysql -u admin -Dpsa -e &amp;quot;SELECT domains.name FROM domains,clients WHERE domains.cl_id=clients.id AND type=&#039;client&#039; AND pname=&#039;NOM DU CLIENT&#039;;&amp;quot;&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=114</id>
		<title>OpenVPN on Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=114"/>
		<updated>2025-03-14T16:28:21Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : /* Configurer le serveur openvpn */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installation et configuration serveur OpenVPN sur Debian 12 =&lt;br /&gt;
=== Installation ===&lt;br /&gt;
 apt install openvpn easy-rsa&lt;br /&gt;
=== Génération de l&#039;autorité de certification ===&lt;br /&gt;
 make-cadir ~/openvpn-ca &amp;amp;&amp;amp; cd ~/openvpn-ca&lt;br /&gt;
Editez le ficher &#039;&#039;&#039;vars&#039;&#039;&#039; pour adapter a vos informations&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set_var EASYRSA_REQ_COUNTRY     &amp;quot;FR&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_PROVINCE    &amp;quot;France&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_CITY        &amp;quot;Paris&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_ORG &amp;quot;Sn4kY.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_EMAIL       &amp;quot;me@example.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_OU          &amp;quot;DSI&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Puis générez la CA&lt;br /&gt;
 ./easyrsa init-pki&lt;br /&gt;
 ./easyrsa build-ca&lt;br /&gt;
Téléchargez la clé DH pré calculée&lt;br /&gt;
 curl https://ssl-config.mozilla.org/ffdhe2048.txt &amp;gt; pki/dh2048.pem&lt;br /&gt;
Créer la clé des secrets pré-partagés :&lt;br /&gt;
 openvpn genkey --secret pki/ta.key&lt;br /&gt;
=== Génération du certificat du serveur ===&lt;br /&gt;
 ./easyrsa gen-req server nopass&lt;br /&gt;
 ./easyrsa sign-req server server&lt;br /&gt;
=== Configurer le serveur openvpn ===&lt;br /&gt;
Utiliser le fichier d&#039;exemple du serveur pour créer une base :&lt;br /&gt;
 grep -Pv &amp;quot;^#|^;|^$&amp;quot; /usr/share/doc/openvpn/examples/sample-config-files/client.conf &amp;gt; /etc/openvpn/server.conf&lt;br /&gt;
Copier les fichiers nécessaire :&lt;br /&gt;
 cp /root/openvpn-ca/pki/{ca.crt,dh2048.pem,ta.key} /etc/openvpn&lt;br /&gt;
 cp /root/openvpn-ca/pki/issued/server.crt /etc/openvpn&lt;br /&gt;
 cp /root/openvpn-ca/pki/private/server.key /etc/openvpn&lt;br /&gt;
Puis éditez le fichier &#039;&#039;/etc/openvpn/server.conf&#039;&#039; pour ajouter/vérifier les infos suivantes&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ca ca.crt&lt;br /&gt;
cert server.crt&lt;br /&gt;
key server.key  # Keep this file secure&lt;br /&gt;
dh dh2048.pem&lt;br /&gt;
;tls-auth ta.key 1&lt;br /&gt;
tls-crypt ta.key&lt;br /&gt;
cipher AES-256-CBC&lt;br /&gt;
data-ciphers AES-256-CBC&lt;br /&gt;
log /var/log/openvpn/openvpn.log&lt;br /&gt;
log-append /var/log/openvpn/openvpn.log&lt;br /&gt;
push &amp;quot;redirect-gateway def1 bypass-dhcp&amp;quot; # Router tout le trafic réseau au travers du VPN&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
La configuration est prête. Sauvegarder le fichier, puis démarrer le service&lt;br /&gt;
 systemctl enable --now openvpn@server&lt;br /&gt;
&lt;br /&gt;
=== Activer le forward d&#039;IP et le masquage d&#039;adresse ===&lt;br /&gt;
 echo &amp;quot;net.ipv4.ip_forward=1&amp;quot; &amp;gt;&amp;gt; /etc/sysctl.d/local.conf&lt;br /&gt;
 sysctl -p /etc/sysctl.d/local.conf&lt;br /&gt;
=== Créer des configurations clients ===&lt;br /&gt;
Commençons par créer un template&lt;br /&gt;
 grep -Pv &amp;quot;^#|^;|^$&amp;quot; /usr/share/doc/openvpn/examples/sample-config-files/client.conf &amp;gt; ~/openvpn-ca/template_client.conf&lt;br /&gt;
éditer le fichier pour configurer les variables&lt;br /&gt;
 remote my-server-1 1194 # mettre l&#039;IP ou le nom de domaine du serveur&lt;br /&gt;
 ;ca ca.crt&lt;br /&gt;
 ;cert client.crt&lt;br /&gt;
 ;key client.key&lt;br /&gt;
 ;tls-auth ta.key 1&lt;br /&gt;
 cipher AES-256-CBC&lt;br /&gt;
 data-ciphers AES-256-CBC&lt;br /&gt;
 key-direction 1&lt;br /&gt;
&lt;br /&gt;
Création d&#039;un script créer un certificat et générer le fichier de cnfig : &#039;&#039;~/openvpn-ca/config_gen.sh&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#!/bin/bash&lt;br /&gt;
# check presence of arg&lt;br /&gt;
if [[ $# -ne 1 ]]&lt;br /&gt;
then&lt;br /&gt;
        echo &amp;quot;Usage: $0 login&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
fi&lt;br /&gt;
./easyrsa gen-req $1 nopass&lt;br /&gt;
./easyrsa sign-req client $1&lt;br /&gt;
KEY_DIR=/root/openvpn-ca/pki&lt;br /&gt;
OUTPUT_DIR=/root&lt;br /&gt;
BASE_CONFIG=/root/openvpn-ca/template_client.conf&lt;br /&gt;
cat ${BASE_CONFIG} \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;ca&amp;gt;&#039;) \&lt;br /&gt;
    ${KEY_DIR}/ca.crt \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;/ca&amp;gt;\n&amp;lt;cert&amp;gt;&#039;) \&lt;br /&gt;
    ${KEY_DIR}/issued/${1}.crt \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;/cert&amp;gt;\n&amp;lt;key&amp;gt;&#039;) \&lt;br /&gt;
    ${KEY_DIR}/private/${1}.key \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;/key&amp;gt;\n&amp;lt;tls-crypt&amp;gt;&#039;) \&lt;br /&gt;
    ${KEY_DIR}/ta.key \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;/tls-crypt&amp;gt;&#039;) \&lt;br /&gt;
    &amp;gt; ${OUTPUT_DIR}/${1}.ovpn&lt;br /&gt;
chmod 600 ${OUTPUT_DIR}/${1}.ovpn&lt;br /&gt;
echo &amp;quot;Config file to sent to the client : ${OUTPUT_DIR}/${1}.ovpn&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Rendez le script exécutable, puis exécutez le&lt;br /&gt;
 chmod 700 ~/openvpn-ca/config_gen.sh&lt;br /&gt;
 ./config_gen.sh client1&lt;br /&gt;
cela créé un fichier client1.ovpn tout prêt qu&#039;il suffit d&#039;importer dans le client OpenVPN.&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=113</id>
		<title>OpenVPN on Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=113"/>
		<updated>2025-03-14T16:27:49Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : /* Configurer le serveur openvpn */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installation et configuration serveur OpenVPN sur Debian 12 =&lt;br /&gt;
=== Installation ===&lt;br /&gt;
 apt install openvpn easy-rsa&lt;br /&gt;
=== Génération de l&#039;autorité de certification ===&lt;br /&gt;
 make-cadir ~/openvpn-ca &amp;amp;&amp;amp; cd ~/openvpn-ca&lt;br /&gt;
Editez le ficher &#039;&#039;&#039;vars&#039;&#039;&#039; pour adapter a vos informations&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set_var EASYRSA_REQ_COUNTRY     &amp;quot;FR&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_PROVINCE    &amp;quot;France&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_CITY        &amp;quot;Paris&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_ORG &amp;quot;Sn4kY.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_EMAIL       &amp;quot;me@example.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_OU          &amp;quot;DSI&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Puis générez la CA&lt;br /&gt;
 ./easyrsa init-pki&lt;br /&gt;
 ./easyrsa build-ca&lt;br /&gt;
Téléchargez la clé DH pré calculée&lt;br /&gt;
 curl https://ssl-config.mozilla.org/ffdhe2048.txt &amp;gt; pki/dh2048.pem&lt;br /&gt;
Créer la clé des secrets pré-partagés :&lt;br /&gt;
 openvpn genkey --secret pki/ta.key&lt;br /&gt;
=== Génération du certificat du serveur ===&lt;br /&gt;
 ./easyrsa gen-req server nopass&lt;br /&gt;
 ./easyrsa sign-req server server&lt;br /&gt;
=== Configurer le serveur openvpn ===&lt;br /&gt;
Utiliser le fichier d&#039;exemple du serveur pour créer une base :&lt;br /&gt;
 grep -Pv &amp;quot;^#|^;|^$&amp;quot; /usr/share/doc/openvpn/examples/sample-config-files/client.conf &amp;gt; /etc/openvpn/server.conf&lt;br /&gt;
Copier les fichiers nécessaire :&lt;br /&gt;
 cp /root/openvpn-ca/pki/{ca.crt,dh2048.pem,ta.key} /etc/openvpn&lt;br /&gt;
 cp /root/openvpn-ca/pki/issued/server.crt /etc/openvpn&lt;br /&gt;
 cp /root/openvpn-ca/pki/private/server.key /etc/openvpn&lt;br /&gt;
Puis éditez le fichier &#039;&#039;/etc/openvpn/server.conf&#039;&#039; pour ajouter/vérifier les infos suivantes&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ca ca.crt&lt;br /&gt;
cert server.crt&lt;br /&gt;
key server.key  # Keep this file secure&lt;br /&gt;
dh dh2048.pem&lt;br /&gt;
;tls-auth ta.key 1&lt;br /&gt;
tls-crypt ta.key&lt;br /&gt;
cipher AES-256-CBC&lt;br /&gt;
data-ciphers AES-256-CBC&lt;br /&gt;
log /var/log/openvpn/openvpn.log&lt;br /&gt;
log-append /var/log/openvpn/openvpn.log&lt;br /&gt;
push &amp;quot;redirect-gateway def1 bypass-dhcp&amp;quot; #pour router tout le trafic réseau au travers du VPN&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
La configuration est prête. Sauvegarder le fichier, puis démarrer le service&lt;br /&gt;
 systemctl enable --now openvpn@server&lt;br /&gt;
&lt;br /&gt;
=== Activer le forward d&#039;IP et le masquage d&#039;adresse ===&lt;br /&gt;
 echo &amp;quot;net.ipv4.ip_forward=1&amp;quot; &amp;gt;&amp;gt; /etc/sysctl.d/local.conf&lt;br /&gt;
 sysctl -p /etc/sysctl.d/local.conf&lt;br /&gt;
=== Créer des configurations clients ===&lt;br /&gt;
Commençons par créer un template&lt;br /&gt;
 grep -Pv &amp;quot;^#|^;|^$&amp;quot; /usr/share/doc/openvpn/examples/sample-config-files/client.conf &amp;gt; ~/openvpn-ca/template_client.conf&lt;br /&gt;
éditer le fichier pour configurer les variables&lt;br /&gt;
 remote my-server-1 1194 # mettre l&#039;IP ou le nom de domaine du serveur&lt;br /&gt;
 ;ca ca.crt&lt;br /&gt;
 ;cert client.crt&lt;br /&gt;
 ;key client.key&lt;br /&gt;
 ;tls-auth ta.key 1&lt;br /&gt;
 cipher AES-256-CBC&lt;br /&gt;
 data-ciphers AES-256-CBC&lt;br /&gt;
 key-direction 1&lt;br /&gt;
&lt;br /&gt;
Création d&#039;un script créer un certificat et générer le fichier de cnfig : &#039;&#039;~/openvpn-ca/config_gen.sh&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#!/bin/bash&lt;br /&gt;
# check presence of arg&lt;br /&gt;
if [[ $# -ne 1 ]]&lt;br /&gt;
then&lt;br /&gt;
        echo &amp;quot;Usage: $0 login&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
fi&lt;br /&gt;
./easyrsa gen-req $1 nopass&lt;br /&gt;
./easyrsa sign-req client $1&lt;br /&gt;
KEY_DIR=/root/openvpn-ca/pki&lt;br /&gt;
OUTPUT_DIR=/root&lt;br /&gt;
BASE_CONFIG=/root/openvpn-ca/template_client.conf&lt;br /&gt;
cat ${BASE_CONFIG} \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;ca&amp;gt;&#039;) \&lt;br /&gt;
    ${KEY_DIR}/ca.crt \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;/ca&amp;gt;\n&amp;lt;cert&amp;gt;&#039;) \&lt;br /&gt;
    ${KEY_DIR}/issued/${1}.crt \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;/cert&amp;gt;\n&amp;lt;key&amp;gt;&#039;) \&lt;br /&gt;
    ${KEY_DIR}/private/${1}.key \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;/key&amp;gt;\n&amp;lt;tls-crypt&amp;gt;&#039;) \&lt;br /&gt;
    ${KEY_DIR}/ta.key \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;/tls-crypt&amp;gt;&#039;) \&lt;br /&gt;
    &amp;gt; ${OUTPUT_DIR}/${1}.ovpn&lt;br /&gt;
chmod 600 ${OUTPUT_DIR}/${1}.ovpn&lt;br /&gt;
echo &amp;quot;Config file to sent to the client : ${OUTPUT_DIR}/${1}.ovpn&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Rendez le script exécutable, puis exécutez le&lt;br /&gt;
 chmod 700 ~/openvpn-ca/config_gen.sh&lt;br /&gt;
 ./config_gen.sh client1&lt;br /&gt;
cela créé un fichier client1.ovpn tout prêt qu&#039;il suffit d&#039;importer dans le client OpenVPN.&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=112</id>
		<title>OpenVPN on Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=112"/>
		<updated>2025-03-14T16:10:44Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : /* Créer des configurations clients */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installation et configuration serveur OpenVPN sur Debian 12 =&lt;br /&gt;
=== Installation ===&lt;br /&gt;
 apt install openvpn easy-rsa&lt;br /&gt;
=== Génération de l&#039;autorité de certification ===&lt;br /&gt;
 make-cadir ~/openvpn-ca &amp;amp;&amp;amp; cd ~/openvpn-ca&lt;br /&gt;
Editez le ficher &#039;&#039;&#039;vars&#039;&#039;&#039; pour adapter a vos informations&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set_var EASYRSA_REQ_COUNTRY     &amp;quot;FR&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_PROVINCE    &amp;quot;France&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_CITY        &amp;quot;Paris&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_ORG &amp;quot;Sn4kY.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_EMAIL       &amp;quot;me@example.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_OU          &amp;quot;DSI&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Puis générez la CA&lt;br /&gt;
 ./easyrsa init-pki&lt;br /&gt;
 ./easyrsa build-ca&lt;br /&gt;
Téléchargez la clé DH pré calculée&lt;br /&gt;
 curl https://ssl-config.mozilla.org/ffdhe2048.txt &amp;gt; pki/dh2048.pem&lt;br /&gt;
Créer la clé des secrets pré-partagés :&lt;br /&gt;
 openvpn genkey --secret pki/ta.key&lt;br /&gt;
=== Génération du certificat du serveur ===&lt;br /&gt;
 ./easyrsa gen-req server nopass&lt;br /&gt;
 ./easyrsa sign-req server server&lt;br /&gt;
=== Configurer le serveur openvpn ===&lt;br /&gt;
Utiliser le fichier d&#039;exemple du serveur pour créer une base :&lt;br /&gt;
 grep -Pv &amp;quot;^#|^;|^$&amp;quot; /usr/share/doc/openvpn/examples/sample-config-files/client.conf &amp;gt; /etc/openvpn/server.conf&lt;br /&gt;
Copier les fichiers nécessaire :&lt;br /&gt;
 cp /root/openvpn-ca/pki/{ca.crt,dh2048.pem,ta.key} /etc/openvpn&lt;br /&gt;
 cp /root/openvpn-ca/pki/issued/server.crt /etc/openvpn&lt;br /&gt;
 cp /root/openvpn-ca/pki/private/server.key /etc/openvpn&lt;br /&gt;
Puis éditez le fichier &#039;&#039;/etc/openvpn/server.conf&#039;&#039; pour ajouter/vérifier les infos suivantes&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ca ca.crt&lt;br /&gt;
cert server.crt&lt;br /&gt;
key server.key  # Keep this file secure&lt;br /&gt;
dh dh2048.pem&lt;br /&gt;
;tls-auth ta.key 1&lt;br /&gt;
tls-crypt ta.key&lt;br /&gt;
cipher AES-256-CBC&lt;br /&gt;
data-ciphers AES-256-CBC&lt;br /&gt;
log /var/log/openvpn/openvpn.log&lt;br /&gt;
log-append /var/log/openvpn/openvpn.log&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
La configuration est prête. Sauvegarder le fichier, puis démarrer le service&lt;br /&gt;
 systemctl enable --now openvpn@server&lt;br /&gt;
=== Activer le forward d&#039;IP et le masquage d&#039;adresse ===&lt;br /&gt;
 echo &amp;quot;net.ipv4.ip_forward=1&amp;quot; &amp;gt;&amp;gt; /etc/sysctl.d/local.conf&lt;br /&gt;
 sysctl -p /etc/sysctl.d/local.conf&lt;br /&gt;
=== Créer des configurations clients ===&lt;br /&gt;
Commençons par créer un template&lt;br /&gt;
 grep -Pv &amp;quot;^#|^;|^$&amp;quot; /usr/share/doc/openvpn/examples/sample-config-files/client.conf &amp;gt; ~/openvpn-ca/template_client.conf&lt;br /&gt;
éditer le fichier pour configurer les variables&lt;br /&gt;
 remote my-server-1 1194 # mettre l&#039;IP ou le nom de domaine du serveur&lt;br /&gt;
 ;ca ca.crt&lt;br /&gt;
 ;cert client.crt&lt;br /&gt;
 ;key client.key&lt;br /&gt;
 ;tls-auth ta.key 1&lt;br /&gt;
 cipher AES-256-CBC&lt;br /&gt;
 data-ciphers AES-256-CBC&lt;br /&gt;
 key-direction 1&lt;br /&gt;
&lt;br /&gt;
Création d&#039;un script créer un certificat et générer le fichier de cnfig : &#039;&#039;~/openvpn-ca/config_gen.sh&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#!/bin/bash&lt;br /&gt;
# check presence of arg&lt;br /&gt;
if [[ $# -ne 1 ]]&lt;br /&gt;
then&lt;br /&gt;
        echo &amp;quot;Usage: $0 login&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
fi&lt;br /&gt;
./easyrsa gen-req $1 nopass&lt;br /&gt;
./easyrsa sign-req client $1&lt;br /&gt;
KEY_DIR=/root/openvpn-ca/pki&lt;br /&gt;
OUTPUT_DIR=/root&lt;br /&gt;
BASE_CONFIG=/root/openvpn-ca/template_client.conf&lt;br /&gt;
cat ${BASE_CONFIG} \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;ca&amp;gt;&#039;) \&lt;br /&gt;
    ${KEY_DIR}/ca.crt \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;/ca&amp;gt;\n&amp;lt;cert&amp;gt;&#039;) \&lt;br /&gt;
    ${KEY_DIR}/issued/${1}.crt \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;/cert&amp;gt;\n&amp;lt;key&amp;gt;&#039;) \&lt;br /&gt;
    ${KEY_DIR}/private/${1}.key \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;/key&amp;gt;\n&amp;lt;tls-crypt&amp;gt;&#039;) \&lt;br /&gt;
    ${KEY_DIR}/ta.key \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;/tls-crypt&amp;gt;&#039;) \&lt;br /&gt;
    &amp;gt; ${OUTPUT_DIR}/${1}.ovpn&lt;br /&gt;
chmod 600 ${OUTPUT_DIR}/${1}.ovpn&lt;br /&gt;
echo &amp;quot;Config file to sent to the client : ${OUTPUT_DIR}/${1}.ovpn&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Rendez le script exécutable, puis exécutez le&lt;br /&gt;
 chmod 700 ~/openvpn-ca/config_gen.sh&lt;br /&gt;
 ./config_gen.sh client1&lt;br /&gt;
cela créé un fichier client1.ovpn tout prêt qu&#039;il suffit d&#039;importer dans le client OpenVPN.&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=111</id>
		<title>OpenVPN on Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=111"/>
		<updated>2025-03-14T16:08:53Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installation et configuration serveur OpenVPN sur Debian 12 =&lt;br /&gt;
=== Installation ===&lt;br /&gt;
 apt install openvpn easy-rsa&lt;br /&gt;
=== Génération de l&#039;autorité de certification ===&lt;br /&gt;
 make-cadir ~/openvpn-ca &amp;amp;&amp;amp; cd ~/openvpn-ca&lt;br /&gt;
Editez le ficher &#039;&#039;&#039;vars&#039;&#039;&#039; pour adapter a vos informations&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set_var EASYRSA_REQ_COUNTRY     &amp;quot;FR&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_PROVINCE    &amp;quot;France&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_CITY        &amp;quot;Paris&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_ORG &amp;quot;Sn4kY.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_EMAIL       &amp;quot;me@example.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_OU          &amp;quot;DSI&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Puis générez la CA&lt;br /&gt;
 ./easyrsa init-pki&lt;br /&gt;
 ./easyrsa build-ca&lt;br /&gt;
Téléchargez la clé DH pré calculée&lt;br /&gt;
 curl https://ssl-config.mozilla.org/ffdhe2048.txt &amp;gt; pki/dh2048.pem&lt;br /&gt;
Créer la clé des secrets pré-partagés :&lt;br /&gt;
 openvpn genkey --secret pki/ta.key&lt;br /&gt;
=== Génération du certificat du serveur ===&lt;br /&gt;
 ./easyrsa gen-req server nopass&lt;br /&gt;
 ./easyrsa sign-req server server&lt;br /&gt;
=== Configurer le serveur openvpn ===&lt;br /&gt;
Utiliser le fichier d&#039;exemple du serveur pour créer une base :&lt;br /&gt;
 grep -Pv &amp;quot;^#|^;|^$&amp;quot; /usr/share/doc/openvpn/examples/sample-config-files/client.conf &amp;gt; /etc/openvpn/server.conf&lt;br /&gt;
Copier les fichiers nécessaire :&lt;br /&gt;
 cp /root/openvpn-ca/pki/{ca.crt,dh2048.pem,ta.key} /etc/openvpn&lt;br /&gt;
 cp /root/openvpn-ca/pki/issued/server.crt /etc/openvpn&lt;br /&gt;
 cp /root/openvpn-ca/pki/private/server.key /etc/openvpn&lt;br /&gt;
Puis éditez le fichier &#039;&#039;/etc/openvpn/server.conf&#039;&#039; pour ajouter/vérifier les infos suivantes&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ca ca.crt&lt;br /&gt;
cert server.crt&lt;br /&gt;
key server.key  # Keep this file secure&lt;br /&gt;
dh dh2048.pem&lt;br /&gt;
;tls-auth ta.key 1&lt;br /&gt;
tls-crypt ta.key&lt;br /&gt;
cipher AES-256-CBC&lt;br /&gt;
data-ciphers AES-256-CBC&lt;br /&gt;
log /var/log/openvpn/openvpn.log&lt;br /&gt;
log-append /var/log/openvpn/openvpn.log&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
La configuration est prête. Sauvegarder le fichier, puis démarrer le service&lt;br /&gt;
 systemctl enable --now openvpn@server&lt;br /&gt;
=== Activer le forward d&#039;IP et le masquage d&#039;adresse ===&lt;br /&gt;
 echo &amp;quot;net.ipv4.ip_forward=1&amp;quot; &amp;gt;&amp;gt; /etc/sysctl.d/local.conf&lt;br /&gt;
 sysctl -p /etc/sysctl.d/local.conf&lt;br /&gt;
=== Créer des configurations clients ===&lt;br /&gt;
Commençons par créer un template&lt;br /&gt;
 grep -Pv &amp;quot;^#|^;|^$&amp;quot; /usr/share/doc/openvpn/examples/sample-config-files/client.conf &amp;gt; ~/openvpn-ca/template_client.conf&lt;br /&gt;
éditer le fichier pour configurer les variables&lt;br /&gt;
 remote my-server-1 1194 # mettre l&#039;IP ou le nom de domaine du serveur&lt;br /&gt;
 ;ca ca.crt&lt;br /&gt;
 ;cert client.crt&lt;br /&gt;
 ;key client.key&lt;br /&gt;
 ;tls-auth ta.key 1&lt;br /&gt;
 cipher AES-256-CBC&lt;br /&gt;
 data-ciphers AES-256-CBC&lt;br /&gt;
 key-direction 1&lt;br /&gt;
Création du certificat client&lt;br /&gt;
 cd ~/openvpn-ca&lt;br /&gt;
 ./easyrsa gen-req client1 nopass&lt;br /&gt;
 ./easyrsa sign-req client client1&lt;br /&gt;
Création d&#039;un script pour assembler le tout : &#039;&#039;config_gen.sh&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#!/bin/bash&lt;br /&gt;
# check presence of arg&lt;br /&gt;
if [[ $# -ne 1 ]]&lt;br /&gt;
then&lt;br /&gt;
        echo &amp;quot;Usage: $0 login&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
fi&lt;br /&gt;
./easyrsa gen-req $1 nopass&lt;br /&gt;
./easyrsa sign-req client $1&lt;br /&gt;
KEY_DIR=/root/openvpn-ca/pki&lt;br /&gt;
OUTPUT_DIR=/root&lt;br /&gt;
BASE_CONFIG=/root/openvpn-ca/template_client.conf&lt;br /&gt;
cat ${BASE_CONFIG} \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;ca&amp;gt;&#039;) \&lt;br /&gt;
    ${KEY_DIR}/ca.crt \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;/ca&amp;gt;\n&amp;lt;cert&amp;gt;&#039;) \&lt;br /&gt;
    ${KEY_DIR}/issued/${1}.crt \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;/cert&amp;gt;\n&amp;lt;key&amp;gt;&#039;) \&lt;br /&gt;
    ${KEY_DIR}/private/${1}.key \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;/key&amp;gt;\n&amp;lt;tls-crypt&amp;gt;&#039;) \&lt;br /&gt;
    ${KEY_DIR}/ta.key \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;/tls-crypt&amp;gt;&#039;) \&lt;br /&gt;
    &amp;gt; ${OUTPUT_DIR}/${1}.ovpn&lt;br /&gt;
chmod 600 ${OUTPUT_DIR}/${1}.ovpn&lt;br /&gt;
echo &amp;quot;Config file to sent to the client : ${OUTPUT_DIR}/${1}.ovpn&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Rendez le script exécutable, puis exécutez le&lt;br /&gt;
 chmod 700 ~/openvpn-ca/config_gen.sh&lt;br /&gt;
 ./config_gen.sh client1&lt;br /&gt;
cela créé un fichier client1.ovpn tout prêt qu&#039;il suffit d&#039;importer dans le client OpenVPN.&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=110</id>
		<title>OpenVPN on Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=110"/>
		<updated>2025-03-14T16:06:57Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installation et configuration serveur OpenVPN sur Debian 12 =&lt;br /&gt;
=== Installation ===&lt;br /&gt;
 apt install openvpn easy-rsa&lt;br /&gt;
=== Génération de l&#039;autorité de certification ===&lt;br /&gt;
 make-cadir ~/openvpn-ca &amp;amp;&amp;amp; cd ~/openvpn-ca&lt;br /&gt;
Editez le ficher &#039;&#039;&#039;vars&#039;&#039;&#039; pour adapter a vos informations&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set_var EASYRSA_REQ_COUNTRY     &amp;quot;FR&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_PROVINCE    &amp;quot;France&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_CITY        &amp;quot;Paris&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_ORG &amp;quot;Sn4kY.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_EMAIL       &amp;quot;me@example.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_OU          &amp;quot;DSI&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Puis générez la CA&lt;br /&gt;
 ./easyrsa init-pki&lt;br /&gt;
 ./easyrsa build-ca&lt;br /&gt;
Téléchargez la clé DH pré calculée&lt;br /&gt;
 curl https://ssl-config.mozilla.org/ffdhe2048.txt &amp;gt; pki/dh2048.pem&lt;br /&gt;
Créer la clé des secrets pré-partagés :&lt;br /&gt;
 openvpn genkey --secret pki/ta.key&lt;br /&gt;
=== Génération du certificat du serveur ===&lt;br /&gt;
 ./easyrsa gen-req server nopass&lt;br /&gt;
 ./easyrsa sign-req server server&lt;br /&gt;
=== Configurer le serveur openvpn ===&lt;br /&gt;
Utiliser le fichier d&#039;exemple du serveur pour créer une base :&lt;br /&gt;
 grep -Pv &amp;quot;^#|^;|^$&amp;quot; /usr/share/doc/openvpn/examples/sample-config-files/client.conf &amp;gt; /etc/openvpn/server.conf&lt;br /&gt;
Copier les fichiers nécessaire :&lt;br /&gt;
 cp /root/openvpn-ca/pki/{ca.crt,dh2048.pem,ta.key} /etc/openvpn&lt;br /&gt;
 cp /root/openvpn-ca/pki/issued/server.crt /etc/openvpn&lt;br /&gt;
 cp /root/openvpn-ca/pki/private/server.key /etc/openvpn&lt;br /&gt;
Puis éditez le fichier &#039;&#039;/etc/openvpn/server.conf&#039;&#039; pour ajouter/vérifier les infos suivantes&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ca ca.crt&lt;br /&gt;
cert server.crt&lt;br /&gt;
key server.key  # Keep this file secure&lt;br /&gt;
dh dh2048.pem&lt;br /&gt;
;tls-auth ta.key 1&lt;br /&gt;
tls-crypt ta.key&lt;br /&gt;
cipher AES-256-CBC&lt;br /&gt;
data-ciphers AES-256-CBC&lt;br /&gt;
log /var/log/openvpn/openvpn.log&lt;br /&gt;
log-append /var/log/openvpn/openvpn.log&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
La configuration est prête. Sauvegarder le fichier, puis démarrer le service&lt;br /&gt;
 systemctl enable --now openvpn@server&lt;br /&gt;
=== Activer le forward d&#039;IP et le masquage d&#039;adresse ===&lt;br /&gt;
 echo &amp;quot;net.ipv4.ip_forward=1&amp;quot; &amp;gt;&amp;gt; /etc/sysctl.d/local.conf&lt;br /&gt;
 sysctl -p /etc/sysctl.d/local.conf&lt;br /&gt;
=== Créer des configurations clients ===&lt;br /&gt;
Commençons par créer un template&lt;br /&gt;
 grep -Pv &amp;quot;^#|^;|^$&amp;quot; /usr/share/doc/openvpn/examples/sample-config-files/client.conf &amp;gt; ~/openvpn-ca/template_client.conf&lt;br /&gt;
éditer le fichier pour configurer les variables&lt;br /&gt;
 remote my-server-1 1194 # mettre l&#039;IP ou le nom de domaine du serveur&lt;br /&gt;
 ;ca ca.crt&lt;br /&gt;
 ;cert client.crt&lt;br /&gt;
 ;key client.key&lt;br /&gt;
 ;tls-auth ta.key 1&lt;br /&gt;
 cipher AES-256-CBC&lt;br /&gt;
 data-ciphers AES-256-CBC&lt;br /&gt;
 key-direction 1&lt;br /&gt;
Création du certificat client&lt;br /&gt;
 cd ~/openvpn-ca&lt;br /&gt;
 ./easyrsa gen-req client1 nopass&lt;br /&gt;
 ./easyrsa sign-req client client1&lt;br /&gt;
Création d&#039;un script pour assembler le tout : config_gen.sh&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#!/bin/bash&lt;br /&gt;
# check presence of arg&lt;br /&gt;
if [[ $# -ne 1 ]]&lt;br /&gt;
then&lt;br /&gt;
        echo &amp;quot;Usage: $0 login&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
fi&lt;br /&gt;
./easyrsa gen-req $1 nopass&lt;br /&gt;
./easyrsa sign-req client $1&lt;br /&gt;
KEY_DIR=/root/openvpn-ca/pki&lt;br /&gt;
OUTPUT_DIR=/root&lt;br /&gt;
BASE_CONFIG=/root/openvpn-ca/template_client.conf&lt;br /&gt;
cat ${BASE_CONFIG} \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;ca&amp;gt;&#039;) \&lt;br /&gt;
    ${KEY_DIR}/ca.crt \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;/ca&amp;gt;\n&amp;lt;cert&amp;gt;&#039;) \&lt;br /&gt;
    ${KEY_DIR}/issued/${1}.crt \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;/cert&amp;gt;\n&amp;lt;key&amp;gt;&#039;) \&lt;br /&gt;
    ${KEY_DIR}/private/${1}.key \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;/key&amp;gt;\n&amp;lt;tls-crypt&amp;gt;&#039;) \&lt;br /&gt;
    ${KEY_DIR}/ta.key \&lt;br /&gt;
    &amp;lt;(echo -e &#039;&amp;lt;/tls-crypt&amp;gt;&#039;) \&lt;br /&gt;
    &amp;gt; ${OUTPUT_DIR}/${1}.ovpn&lt;br /&gt;
chmod 600 ${OUTPUT_DIR}/${1}.ovpn&lt;br /&gt;
echo &amp;quot;Config file to sent to the client : ${OUTPUT_DIR}/${1}.ovpn&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=109</id>
		<title>OpenVPN on Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=109"/>
		<updated>2025-03-14T16:04:31Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installation et configuration serveur OpenVPN sur Debian 12 =&lt;br /&gt;
=== Installation ===&lt;br /&gt;
 apt install openvpn easy-rsa&lt;br /&gt;
=== Génération de l&#039;autorité de certification ===&lt;br /&gt;
 make-cadir ~/openvpn-ca &amp;amp;&amp;amp; cd ~/openvpn-ca&lt;br /&gt;
Editez le ficher &#039;&#039;&#039;vars&#039;&#039;&#039; pour adapter a vos informations&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set_var EASYRSA_REQ_COUNTRY     &amp;quot;FR&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_PROVINCE    &amp;quot;France&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_CITY        &amp;quot;Paris&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_ORG &amp;quot;Sn4kY.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_EMAIL       &amp;quot;me@example.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_OU          &amp;quot;DSI&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Puis générez la CA&lt;br /&gt;
 ./easyrsa init-pki&lt;br /&gt;
 ./easyrsa build-ca&lt;br /&gt;
Téléchargez la clé DH pré calculée&lt;br /&gt;
 curl https://ssl-config.mozilla.org/ffdhe2048.txt &amp;gt; pki/dh2048.pem&lt;br /&gt;
Créer la clé des secrets pré-partagés :&lt;br /&gt;
 openvpn genkey --secret pki/ta.key&lt;br /&gt;
=== Génération du certificat du serveur ===&lt;br /&gt;
 ./easyrsa gen-req server nopass&lt;br /&gt;
 ./easyrsa sign-req server server&lt;br /&gt;
=== Configurer le serveur openvpn ===&lt;br /&gt;
Utiliser le fichier d&#039;exemple du serveur pour créer une base :&lt;br /&gt;
 grep -Pv &amp;quot;^#|^;|^$&amp;quot; /usr/share/doc/openvpn/examples/sample-config-files/client.conf &amp;gt; /etc/openvpn/server.conf&lt;br /&gt;
Copier les fichiers nécessaire :&lt;br /&gt;
 cp /root/openvpn-ca/pki/{ca.crt,dh2048.pem,ta.key} /etc/openvpn&lt;br /&gt;
 cp /root/openvpn-ca/pki/issued/server.crt /etc/openvpn&lt;br /&gt;
 cp /root/openvpn-ca/pki/private/server.key /etc/openvpn&lt;br /&gt;
Puis éditez le fichier &#039;&#039;/etc/openvpn/server.conf&#039;&#039; pour ajouter/vérifier les infos suivantes&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ca ca.crt&lt;br /&gt;
cert server.crt&lt;br /&gt;
key server.key  # Keep this file secure&lt;br /&gt;
dh dh2048.pem&lt;br /&gt;
;tls-auth ta.key 1&lt;br /&gt;
tls-crypt ta.key&lt;br /&gt;
cipher AES-256-CBC&lt;br /&gt;
data-ciphers AES-256-CBC&lt;br /&gt;
log /var/log/openvpn/openvpn.log&lt;br /&gt;
log-append /var/log/openvpn/openvpn.log&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
La configuration est prête. Sauvegarder le fichier, puis démarrer le service&lt;br /&gt;
 systemctl enable --now openvpn@server&lt;br /&gt;
=== Activer le forward d&#039;IP et le masquage d&#039;adresse ===&lt;br /&gt;
 echo &amp;quot;net.ipv4.ip_forward=1&amp;quot; &amp;gt;&amp;gt; /etc/sysctl.d/local.conf&lt;br /&gt;
 sysctl -p /etc/sysctl.d/local.conf&lt;br /&gt;
=== Créer des configurations clients ===&lt;br /&gt;
Commençons par créer un template&lt;br /&gt;
 grep -Pv &amp;quot;^#|^;|^$&amp;quot; /usr/share/doc/openvpn/examples/sample-config-files/client.conf &amp;gt; ~/openvpn-ca/template_client.conf&lt;br /&gt;
éditer le fichier pour configurer les variables&lt;br /&gt;
 remote my-server-1 1194 # mettre l&#039;IP ou le nom de domaine du serveur&lt;br /&gt;
 ;ca ca.crt&lt;br /&gt;
 ;cert client.crt&lt;br /&gt;
 ;key client.key&lt;br /&gt;
 ;tls-auth ta.key 1&lt;br /&gt;
 cipher AES-256-CBC&lt;br /&gt;
 data-ciphers AES-256-CBC&lt;br /&gt;
 key-direction 1&lt;br /&gt;
Création du certificat client&lt;br /&gt;
 ./easyrsa gen-req client1 nopass&lt;br /&gt;
 ./easyrsa sign-req client client1&lt;br /&gt;
 cp pki/private/client1.key /etc/openvpn/client/&lt;br /&gt;
 cp pki/issued/client1.crt /etc/openvpn/client/&lt;br /&gt;
 cp pki/{ca.crt,ta.key} /etc/openvpn/client/&lt;br /&gt;
Création d&#039;un script pour assembler le tout&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=108</id>
		<title>OpenVPN on Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=108"/>
		<updated>2025-03-14T16:03:21Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installation et configuration serveur OpenVPN sur Debian 12 =&lt;br /&gt;
=== Installation ===&lt;br /&gt;
 apt install openvpn easy-rsa&lt;br /&gt;
=== Génération de l&#039;autorité de certification ===&lt;br /&gt;
 make-cadir ~/openvpn-ca &amp;amp;&amp;amp; cd ~/openvpn-ca&lt;br /&gt;
Editez le ficher &#039;&#039;&#039;vars&#039;&#039;&#039; pour adapter a vos informations&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set_var EASYRSA_REQ_COUNTRY     &amp;quot;FR&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_PROVINCE    &amp;quot;France&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_CITY        &amp;quot;Paris&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_ORG &amp;quot;Sn4kY.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_EMAIL       &amp;quot;me@example.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_OU          &amp;quot;DSI&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Puis générez la CA&lt;br /&gt;
 ./easyrsa init-pki&lt;br /&gt;
 ./easyrsa build-ca&lt;br /&gt;
Téléchargez la clé DH pré calculée&lt;br /&gt;
 curl https://ssl-config.mozilla.org/ffdhe2048.txt &amp;gt; pki/dh2048.pem&lt;br /&gt;
Créer la clé des secrets pré-partagés :&lt;br /&gt;
 openvpn genkey --secret pki/ta.key&lt;br /&gt;
=== Génération du certificat du serveur ===&lt;br /&gt;
 ./easyrsa gen-req server nopass&lt;br /&gt;
 ./easyrsa sign-req server server&lt;br /&gt;
=== Configurer le serveur openvpn ===&lt;br /&gt;
Utiliser le fichier d&#039;exemple du serveur pour créer une base :&lt;br /&gt;
 grep -Pv &amp;quot;^#|^;|^$&amp;quot; /usr/share/doc/openvpn/examples/sample-config-files/client.conf &amp;gt; /etc/openvpn/server.conf&lt;br /&gt;
Copier les fichiers nécessaire :&lt;br /&gt;
 cp /root/openvpn-ca/pki/{ca.crt,dh2048.pem,ta.key} /etc/openvpn&lt;br /&gt;
 cp /root/openvpn-ca/pki/issued/server.crt /etc/openvpn&lt;br /&gt;
 cp /root/openvpn-ca/pki/private/server.key /etc/openvpn&lt;br /&gt;
Puis éditez le fichier &#039;&#039;/etc/openvpn/server.conf&#039;&#039; pour ajouter/vérifier les infos suivantes&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ca ca.crt&lt;br /&gt;
cert server.crt&lt;br /&gt;
key server.key  # Keep this file secure&lt;br /&gt;
dh dh2048.pem&lt;br /&gt;
;tls-auth ta.key 1&lt;br /&gt;
tls-crypt ta.key&lt;br /&gt;
cipher AES-256-CBC&lt;br /&gt;
data-ciphers AES-256-CBC&lt;br /&gt;
log /var/log/openvpn/openvpn.log&lt;br /&gt;
log-append /var/log/openvpn/openvpn.log&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
La configuration est prête. Sauvegarder le fichier, puis démarrer le service&lt;br /&gt;
 systemctl enable --now openvpn@server&lt;br /&gt;
=== Activer le forward d&#039;IP et le masquage d&#039;adresse ===&lt;br /&gt;
 echo &amp;quot;net.ipv4.ip_forward=1&amp;quot; &amp;gt;&amp;gt; /etc/sysctl.d/local.conf&lt;br /&gt;
 sysctl -p /etc/sysctl.d/local.conf&lt;br /&gt;
=== Créer des configurations clients ===&lt;br /&gt;
Commençons par créer un template&lt;br /&gt;
 grep -Pv &amp;quot;^#|^;|^$&amp;quot; /usr/share/doc/openvpn/examples/sample-config-files/client.conf &amp;gt; ~/openvpn-ca/template_client.conf&lt;br /&gt;
éditer le fichier pour configurer les variables&lt;br /&gt;
 remote my-server-1 1194 # mettre l&#039;IP ou le nom de domaine du serveur&lt;br /&gt;
 ;ca ca.crt&lt;br /&gt;
 ;cert client.crt&lt;br /&gt;
 ;key client.key&lt;br /&gt;
 ;tls-auth ta.key 1&lt;br /&gt;
 cipher AES-256-CBC&lt;br /&gt;
 data-ciphers AES-256-CBC&lt;br /&gt;
 key-direction 1&lt;br /&gt;
Création du certificat client&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=107</id>
		<title>OpenVPN on Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=107"/>
		<updated>2025-03-14T15:58:27Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installation et configuration serveur OpenVPN sur Debian 12 =&lt;br /&gt;
=== Installation ===&lt;br /&gt;
 apt install openvpn easy-rsa&lt;br /&gt;
=== Génération de l&#039;autorité de certification ===&lt;br /&gt;
 make-cadir ~/openvpn-ca &amp;amp;&amp;amp; cd ~/openvpn-ca&lt;br /&gt;
Editez le ficher &#039;&#039;&#039;vars&#039;&#039;&#039; pour adapter a vos informations&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set_var EASYRSA_REQ_COUNTRY     &amp;quot;FR&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_PROVINCE    &amp;quot;France&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_CITY        &amp;quot;Paris&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_ORG &amp;quot;Sn4kY.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_EMAIL       &amp;quot;me@example.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_OU          &amp;quot;DSI&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Puis générez la CA&lt;br /&gt;
 ./easyrsa init-pki&lt;br /&gt;
 ./easyrsa build-ca&lt;br /&gt;
Téléchargez la clé DH pré calculée&lt;br /&gt;
 curl https://ssl-config.mozilla.org/ffdhe2048.txt &amp;gt; pki/dh2048.pem&lt;br /&gt;
Créer la clé des secrets pré-partagés :&lt;br /&gt;
 openvpn genkey --secret pki/ta.key&lt;br /&gt;
=== Génération du certificat du serveur ===&lt;br /&gt;
 ./easyrsa gen-req server nopass&lt;br /&gt;
 ./easyrsa sign-req server server&lt;br /&gt;
=== Configurer le serveur openvpn ===&lt;br /&gt;
Utiliser le fichier d&#039;exemple du serveur pour créer une base :&lt;br /&gt;
 grep -Pv &amp;quot;^#|^;|^$&amp;quot; /usr/share/doc/openvpn/examples/sample-config-files/client.conf &amp;gt; /etc/openvpn/server.conf&lt;br /&gt;
Copier les fichiers nécessaire :&lt;br /&gt;
 cp /root/openvpn-ca/pki/{ca.crt,dh2048.pem,ta.key} /etc/openvpn&lt;br /&gt;
 cp /root/openvpn-ca/pki/issued/server.crt /etc/openvpn&lt;br /&gt;
 cp /root/openvpn-ca/pki/private/server.key /etc/openvpn&lt;br /&gt;
Puis éditez le fichier &#039;&#039;/etc/openvpn/server.conf&#039;&#039; pour ajouter/vérifier les infos suivantes&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ca ca.crt&lt;br /&gt;
cert server.crt&lt;br /&gt;
key server.key  # Keep this file secure&lt;br /&gt;
dh dh2048.pem&lt;br /&gt;
;tls-auth ta.key 1&lt;br /&gt;
tls-crypt ta.key&lt;br /&gt;
cipher AES-256-CBC&lt;br /&gt;
data-ciphers AES-256-CBC&lt;br /&gt;
log /var/log/openvpn/openvpn.log&lt;br /&gt;
log-append /var/log/openvpn/openvpn.log&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
La configuration est prête. Sauvegarder le fichier, puis démarrer le service&lt;br /&gt;
 systemctl enable --now openvpn@server&lt;br /&gt;
=== Activer le forward d&#039;IP et le masquage d&#039;adresse ===&lt;br /&gt;
 echo &amp;quot;net.ipv4.ip_forward=1&amp;quot; &amp;gt;&amp;gt; /etc/sysctl.d/local.conf&lt;br /&gt;
 sysctl -p /etc/sysctl.d/local.conf&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=106</id>
		<title>OpenVPN on Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=106"/>
		<updated>2025-03-14T15:53:41Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installation et configuration serveur OpenVPN sur Debian 12 =&lt;br /&gt;
=== Installation ===&lt;br /&gt;
 apt install openvpn easy-rsa&lt;br /&gt;
=== Génération de l&#039;autorité de certification ===&lt;br /&gt;
 make-cadir ~/openvpn-ca &amp;amp;&amp;amp; cd ~/openvpn-ca&lt;br /&gt;
Editez le ficher &#039;&#039;&#039;vars&#039;&#039;&#039; pour adapter a vos informations&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set_var EASYRSA_REQ_COUNTRY     &amp;quot;FR&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_PROVINCE    &amp;quot;France&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_CITY        &amp;quot;Paris&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_ORG &amp;quot;Sn4kY.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_EMAIL       &amp;quot;me@example.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_OU          &amp;quot;DSI&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Puis générez la CA&lt;br /&gt;
 ./easyrsa init-pki&lt;br /&gt;
 ./easyrsa build-ca&lt;br /&gt;
Téléchargez la clé DH pré calculée&lt;br /&gt;
 curl https://ssl-config.mozilla.org/ffdhe2048.txt &amp;gt; pki/dh2048.pem&lt;br /&gt;
Créer la clé des secrets pré-partagés :&lt;br /&gt;
 openvpn genkey --secret pki/ta.key&lt;br /&gt;
=== Génération du certificat du serveur ===&lt;br /&gt;
 ./easyrsa gen-req server nopass&lt;br /&gt;
 ./easyrsa sign-req server server&lt;br /&gt;
=== Configurer le serveur openvpn ===&lt;br /&gt;
Utiliser le fichier d&#039;exemple du serveur pour créer une base :&lt;br /&gt;
 grep -Pv &amp;quot;^#|^;|^$&amp;quot; /usr/share/doc/openvpn/examples/sample-config-files/client.conf &amp;gt; /etc/openvpn/server.conf&lt;br /&gt;
Copier les fichiers nécessaire :&lt;br /&gt;
 cp /root/openvpn-ca/pki/{ca.crt,dh2048.pem,ta.key} /etc/openvpn&lt;br /&gt;
 cp /root/openvpn-ca/pki/issued/server.crt /etc/openvpn&lt;br /&gt;
 cp /root/openvpn-ca/pki/private/server.key /etc/openvpn&lt;br /&gt;
Puis éditez le fichier &#039;&#039;/etc/openvpn/server.conf&#039;&#039; pour ajouter/vérifier les infos suivantes&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ca ca.crt&lt;br /&gt;
cert server.crt&lt;br /&gt;
key server.key  # Keep this file secure&lt;br /&gt;
dh dh2048.pem&lt;br /&gt;
;tls-auth ta.key 1&lt;br /&gt;
tls-crypt ta.key&lt;br /&gt;
data-ciphers AES-256-CBC&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=105</id>
		<title>OpenVPN on Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=105"/>
		<updated>2025-03-14T15:48:29Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installation et configuration serveur OpenVPN sur Debian 12 =&lt;br /&gt;
=== Installation ===&lt;br /&gt;
 apt install openvpn easy-rsa&lt;br /&gt;
=== Génération de l&#039;autorité de certification ===&lt;br /&gt;
 make-cadir ~/openvpn-ca &amp;amp;&amp;amp; cd ~/openvpn-ca&lt;br /&gt;
Editez le ficher &#039;&#039;&#039;vars&#039;&#039;&#039; pour adapter a vos informations&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set_var EASYRSA_REQ_COUNTRY     &amp;quot;FR&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_PROVINCE    &amp;quot;France&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_CITY        &amp;quot;Paris&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_ORG &amp;quot;Sn4kY.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_EMAIL       &amp;quot;me@example.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_OU          &amp;quot;DSI&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Puis générez la CA&lt;br /&gt;
 ./easyrsa init-pki&lt;br /&gt;
 ./easyrsa build-ca&lt;br /&gt;
Téléchargez la clé DH pré calculée&lt;br /&gt;
 curl https://ssl-config.mozilla.org/ffdhe2048.txt &amp;gt; pki/dh.pem&lt;br /&gt;
Créer la clé des secrets pré-partagés :&lt;br /&gt;
 openvpn genkey --secret pki/ta.key&lt;br /&gt;
=== Génération du certificat du serveur ===&lt;br /&gt;
 ./easyrsa gen-req server nopass&lt;br /&gt;
 ./easyrsa sign-req server server&lt;br /&gt;
=== Configurer le serveur openvpn ===&lt;br /&gt;
Utiliser le fichier d&#039;exemple du serveur pour créer une base :&lt;br /&gt;
 grep -Pv &amp;quot;^#|^;|^$&amp;quot; /usr/share/doc/openvpn/examples/sample-config-files/client.conf &amp;gt; /etc/openvpn/server.conf&lt;br /&gt;
Copier les fichiers nécessaire :&lt;br /&gt;
 cp /root/openvpn-ca/pki/{ca.crt,dh.pem,ta.key} /etc/openvpn&lt;br /&gt;
 cp /root/openvpn-ca/pki/issued/server.crt /etc/openvpn&lt;br /&gt;
 cp /root/openvpn-ca/pki/private/server.key /etc/openvpn&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=104</id>
		<title>OpenVPN on Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=104"/>
		<updated>2025-03-14T15:43:30Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installation et configuration serveur OpenVPN sur Debian 12 =&lt;br /&gt;
=== Installation ===&lt;br /&gt;
 apt install openvpn easy-rsa&lt;br /&gt;
=== Génération de l&#039;autorité de certification ===&lt;br /&gt;
 make-cadir ~/openvpn-ca &amp;amp;&amp;amp; cd ~/openvpn-ca&lt;br /&gt;
Editez le ficher &#039;&#039;&#039;vars&#039;&#039;&#039; pour adapter a vos informations&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set_var EASYRSA_REQ_COUNTRY     &amp;quot;FR&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_PROVINCE    &amp;quot;France&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_CITY        &amp;quot;Paris&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_ORG &amp;quot;Sn4kY.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_EMAIL       &amp;quot;me@example.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_OU          &amp;quot;DSI&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Puis générez la CA&lt;br /&gt;
 ./easyrsa init-pki&lt;br /&gt;
 ./easyrsa build-ca&lt;br /&gt;
Téléchargez la clé DH pré calculée&lt;br /&gt;
 curl https://ssl-config.mozilla.org/ffdhe2048.txt &amp;gt; dh.pem&lt;br /&gt;
Créer la clé des secrets pré-partagés :&lt;br /&gt;
 openvpn genkey --secret pki/ta.key&lt;br /&gt;
=== Génération du certificat du serveur ===&lt;br /&gt;
 ./easyrsa gen-req server nopass&lt;br /&gt;
 ./easyrsa sign-req server server&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=103</id>
		<title>OpenVPN on Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=103"/>
		<updated>2025-03-14T15:38:30Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installation et configuration serveur OpenVPN sur Debian 12 =&lt;br /&gt;
=== Installation ===&lt;br /&gt;
 apt install openvpn easy-rsa&lt;br /&gt;
=== Génération de l&#039;autorité de certification ===&lt;br /&gt;
 make-cadir ~/openvpn-ca &amp;amp;&amp;amp; cd ~/openvpn-ca&lt;br /&gt;
Editez le ficher &#039;&#039;&#039;vars&#039;&#039;&#039; pour adapter a vos informations&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set_var EASYRSA_REQ_COUNTRY     &amp;quot;FR&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_PROVINCE    &amp;quot;France&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_CITY        &amp;quot;Paris&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_ORG &amp;quot;Sn4kY.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_EMAIL       &amp;quot;me@example.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_OU          &amp;quot;DSI&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Puis générez la CA&lt;br /&gt;
 ./easyrsa init-pki&lt;br /&gt;
 ./easyrsa build-ca&lt;br /&gt;
Téléchargez la clé DH pré calculée&lt;br /&gt;
 curl https://ssl-config.mozilla.org/ffdhe2048.txt &amp;gt; dh.pem&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=102</id>
		<title>OpenVPN on Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=102"/>
		<updated>2025-03-14T15:35:33Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : /* Installation et configuration serveur OpenVPN sur Debian 12 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installation et configuration serveur OpenVPN sur Debian 12 =&lt;br /&gt;
=== Installation ===&lt;br /&gt;
 apt install openvpn easy-rsa&lt;br /&gt;
=== Génération de l&#039;autorité de certification ===&lt;br /&gt;
 make-cadir ~/openvpn-ca &amp;amp;&amp;amp; cd ~/openvpn-ca&lt;br /&gt;
Editez le ficher vars vars pour adapter a vos informations&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set_var EASYRSA_REQ_COUNTRY     &amp;quot;FR&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_PROVINCE    &amp;quot;France&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_CITY        &amp;quot;Paris&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_ORG &amp;quot;Sn4kY.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_EMAIL       &amp;quot;me@example.net&amp;quot;&lt;br /&gt;
set_var EASYRSA_REQ_OU          &amp;quot;DSI&amp;quot;&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=101</id>
		<title>OpenVPN on Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=101"/>
		<updated>2025-03-14T15:31:49Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : /* Installation et configuration serveur OpenVPN sur Debian 12 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installation et configuration serveur OpenVPN sur Debian 12 =&lt;br /&gt;
=== Installation ===&lt;br /&gt;
 apt install openvpn easy-rsa&lt;br /&gt;
=== Génération de l&#039;autorité de certification ===&lt;br /&gt;
 make-cadir ~/openvpn-ca &amp;amp;&amp;amp; cd ~/openvpn-ca&lt;br /&gt;
Editez le vars vars pour adapter a vos informations&lt;br /&gt;
 set_var EASYRSA_REQ_COUNTRY     &amp;quot;FR&amp;quot;&lt;br /&gt;
 set_var EASYRSA_REQ_PROVINCE    &amp;quot;France&amp;quot;&lt;br /&gt;
 set_var EASYRSA_REQ_CITY        &amp;quot;Paris&amp;quot;&lt;br /&gt;
 set_var EASYRSA_REQ_ORG &amp;quot;Sn4kY.net&amp;quot;&lt;br /&gt;
 set_var EASYRSA_REQ_EMAIL       &amp;quot;me@example.net&amp;quot;&lt;br /&gt;
 set_var EASYRSA_REQ_OU          &amp;quot;DSI&amp;quot;&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=100</id>
		<title>OpenVPN on Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenVPN_on_Debian_12&amp;diff=100"/>
		<updated>2025-03-14T15:28:51Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : Page créée avec « = Installation et configuration serveur OpenVPN sur Debian 12 = »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installation et configuration serveur OpenVPN sur Debian 12 =&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Accueil&amp;diff=99</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Accueil&amp;diff=99"/>
		<updated>2025-03-14T15:28:09Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : /* Tuto */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Wiki&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wiki MarkAsRead/Sn4kY&lt;br /&gt;
&lt;br /&gt;
== Tuto ==&lt;br /&gt;
=== Xen ===&lt;br /&gt;
* [[Xen Sur Debian 6]] Squeeze&lt;br /&gt;
* [[Xen Sur Debian 7]] Wheezy&lt;br /&gt;
* [[Astuces et optimisations]]&lt;br /&gt;
* [[Troubleshooting]]&lt;br /&gt;
&lt;br /&gt;
=== LVM ===&lt;br /&gt;
* [[Rollback d&#039;un Snapshot]]&lt;br /&gt;
=== DRBD ===&lt;br /&gt;
* [[Mise en place DRBD|Mise en place]]&lt;br /&gt;
* [[Xen Live migration avec DRBD|Xen Live Migration]]&lt;br /&gt;
&lt;br /&gt;
=== Systèmes de fichiers ===&lt;br /&gt;
* [[Resize IMG file]]&lt;br /&gt;
=== NginX ===&lt;br /&gt;
* [[NginX]] (comming soon)&lt;br /&gt;
&lt;br /&gt;
=== OpenVPN ===&lt;br /&gt;
* [[OpenVPN on Debian 12]]&lt;br /&gt;
&lt;br /&gt;
== Tips divers ==&lt;br /&gt;
* [[Tips systèmes]]&lt;br /&gt;
* [[Nettoyage de sites hackés]]&lt;br /&gt;
* [[Certificats SSL]]&lt;br /&gt;
* [[OpenSSH]]&lt;br /&gt;
* [[MySQL]]&lt;br /&gt;
* [[Plesk]]&lt;br /&gt;
* [[Raspberry Pi]]&lt;br /&gt;
* [[git]]&lt;br /&gt;
&lt;br /&gt;
== Scripts de backup ==&lt;br /&gt;
* [[Dumps MySQL]]&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Tips_syst%C3%A8mes&amp;diff=98</id>
		<title>Tips systèmes</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Tips_syst%C3%A8mes&amp;diff=98"/>
		<updated>2025-02-05T09:32:27Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : /* MAIL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liens externe ==&lt;br /&gt;
https://jeznet.org/Wiki/CodeSnippets&lt;br /&gt;
==MYSQL==&lt;br /&gt;
Créer compte user :&lt;br /&gt;
 CREATE USER &amp;lt;user&amp;gt; IDENTIFIED BY &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
créer un compte utilisateur + database&lt;br /&gt;
 GRANT ALL PRIVILEGES ON &amp;lt;database&amp;gt;.* TO &#039;&amp;lt;user&amp;gt;&#039;@&#039;&amp;lt;host&amp;gt;&#039; IDENTIFIED BY &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON &amp;lt;database&amp;gt;.* TO &#039;&amp;lt;user&amp;gt;&#039;@&#039;&amp;lt;host&amp;gt;&#039; IDENTIFIED BY PASSWORD &#039;*&amp;lt;password_hash&amp;gt;&#039;;&lt;br /&gt;
voir les comptes utilisateurs&lt;br /&gt;
 select host, user, password from mysql.user;&lt;br /&gt;
dumper une base et la compresser a la volée&lt;br /&gt;
 mysqldump -h $HOST -u $USER -p $DATABASE | gzip &amp;gt; dump_$DATABASE.sql.gz&lt;br /&gt;
importer dans MySQL une base gzippée&lt;br /&gt;
 gunzip -c &amp;lt; dump_$DATABASE.sql.gz | mysql -h $HOST -u $USER -p $DATABASE&lt;br /&gt;
Import MySQL over SSH&lt;br /&gt;
 ssh $HOST &amp;quot;mysqldump -u $USER1 -p$PASS1 $DB1&amp;quot; | mysql -u$USER2 -p$PASS2 $DB2&lt;br /&gt;
Import GZIP MySQL over SSH On the fly&lt;br /&gt;
 ssh $HOST &amp;quot;mysqldump -u $USER1 -p$PASS1 $DB1 | gzip&amp;quot; | gunzip -c | mysql -u$USER2 -p$PASS2 $DB2&lt;br /&gt;
Dump MySQL Database, compress, export, and import - One liner&lt;br /&gt;
 mysqldump -u $USER1 -p$PASS1 $DB1 | pigz | ssh $HOST &amp;quot;gunzip -c | mysql -u$USER2 -p$PASS2 $DB2&amp;quot;&lt;br /&gt;
Obtenir la taille de toutes les bases de données&lt;br /&gt;
 SELECT table_schema &amp;quot;DB Name&amp;quot;, &lt;br /&gt;
 Round(Sum(data_length + index_length) / 1024 / 1024, 1) &amp;quot;DB Size in MB&amp;quot; &lt;br /&gt;
 FROM   information_schema.tables &lt;br /&gt;
 GROUP  BY table_schema;&lt;br /&gt;
Obtenir la taille d&#039;UNE base de données mentionnée&lt;br /&gt;
 SELECT table_schema &amp;quot;DB Name&amp;quot;, &lt;br /&gt;
 Round(Sum(data_length + index_length) / 1024 / 1024, 1) &amp;quot;DB Size in MB&amp;quot; &lt;br /&gt;
 FROM   information_schema.tables&lt;br /&gt;
 WHERE table_schema = &amp;quot;YOUR_DATABASE_NAME&amp;quot;  &lt;br /&gt;
 GROUP  BY table_schema;&lt;br /&gt;
Convertir toutes les tables InnoDB en InnoDB (lors de l&#039;ajout du parametre innodb_file_per_table=1 par exemple)&lt;br /&gt;
 for table in $(mysql --batch information_schema -e &amp;quot;select CONCAT(TABLE_SCHEMA,&#039;.&#039;,TABLE_NAME) FROM TABLES WHERE ENGINE=&#039;InnoDB&#039;;&amp;quot; | grep -v &amp;quot;CONCAT(TABLE_SCHEMA,&#039;.&#039;,TABLE_NAME)&amp;quot;)&lt;br /&gt;
 do&lt;br /&gt;
  mysql --batch -uadmin -p$(cat /etc/psa/.psa.shadow) -e &amp;quot;ALTER TABLE ${table} ENGINE=InnoDB;&amp;quot;&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
==SYSTEME==&lt;br /&gt;
beaucoup de connexions&lt;br /&gt;
 netstat -pant | grep -i esta | awk &#039;{print $5}&#039;| cut -d &amp;quot;:&amp;quot; -f 1| sort |uniq -c&lt;br /&gt;
fait le total d&#039;espace disque utilisé par les vhosts&lt;br /&gt;
 for i in `grep -i documentroot /opt/applis/httpd/conf/httpd.conf | grep -v &amp;quot;#&amp;quot;| awk &#039;{ print $2}&#039;`;do du -sh $i;done&lt;br /&gt;
fouiller un fichier de log entre 2 dates&lt;br /&gt;
 awk &#039;/Apr 1 11:00:00/,/Apr 1 16:15:00/{print}&#039; /var/log/httpd/httpd_access.log&lt;br /&gt;
 awk &#039;$0&amp;gt;=from&amp;amp;&amp;amp;$0&amp;lt;=to&#039; from=&amp;quot;Apr 1 11:00:00&amp;quot; to=&amp;quot;Apr 1 16:15:00&amp;quot; /var/log/httpd/httpd_access.log&lt;br /&gt;
Liste les répertoires et les trie par taille&lt;br /&gt;
 du -h --max-depth=1 | perl -e &#039;sub h{%h=(K=&amp;gt;10,M=&amp;gt;20,G=&amp;gt;30);($n,$u)=shift=~/([0-9.,]+)(\D)/; return $n*2**$h{$u}}print sort{h($b)&amp;lt;=&amp;gt;h($a)}&amp;lt;&amp;gt;;&#039;&lt;br /&gt;
tar over ssh&lt;br /&gt;
 tar zcvf - /path | ssh root@server &amp;quot;cat &amp;gt; /backup/wwwdata.tar.gz&amp;quot;&lt;br /&gt;
tar over ssh untar&lt;br /&gt;
 tar zcvf - /path/to/directory/ | ssh root@inrage.fr &amp;quot;cd /path/to/ &amp;amp;&amp;amp; tar zxvf - &amp;quot;&lt;br /&gt;
vitesse d&#039;un pipe&lt;br /&gt;
 command1 | cpipe -vt | command2&lt;br /&gt;
Linux force reboot (magical way)&lt;br /&gt;
 echo 1 &amp;gt; /proc/sys/kernel/sysrq&lt;br /&gt;
 echo b &amp;gt; /proc/sysrq-trigger&lt;br /&gt;
&lt;br /&gt;
==CHROOT==&lt;br /&gt;
Créer le nécessaire du chroot&lt;br /&gt;
 mount /dev/&amp;lt;devicepX&amp;gt; /mnt&lt;br /&gt;
 mount --bind /dev /mnt/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/dev/pts&lt;br /&gt;
 mount -t proc /proc /mnt/proc&lt;br /&gt;
 mount --bind /run  /mnt/run&lt;br /&gt;
 mount -t sysfs /sys /mnt/sys&lt;br /&gt;
 mount --bind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars &lt;br /&gt;
 chroot /mnt /bin/bash&lt;br /&gt;
&lt;br /&gt;
Démonter le tout&lt;br /&gt;
 umount /mnt/sys/firmware/efi/efivars &lt;br /&gt;
 umount /mnt/sys&lt;br /&gt;
 umount /mnt/run&lt;br /&gt;
 umount /mnt/proc&lt;br /&gt;
 umount /mnt/dev/pts&lt;br /&gt;
 umount /mnt/dev&lt;br /&gt;
 umount /mnt&lt;br /&gt;
&lt;br /&gt;
==IPTABLES==&lt;br /&gt;
diagramme de flux&lt;br /&gt;
&lt;br /&gt;
http://www.linuxchannel.net/board/board_files/alpha/phpIqSLS2/iptables.gif&lt;br /&gt;
===Base firewall===&lt;br /&gt;
 *filter&lt;br /&gt;
 :INPUT DROP [0:0]&lt;br /&gt;
 :FORWARD DROP [0:0]&lt;br /&gt;
 :OUTPUT DROP [0:0]&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Global Rules&amp;quot;&lt;br /&gt;
 -A INPUT -f -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP&lt;br /&gt;
 -A INPUT -m state --state INVALID -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --dport 25 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 50 --connlimit-mask 32 --connlimit-saddr -j DROP&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT&lt;br /&gt;
 -A INPUT -i lo -j ACCEPT&lt;br /&gt;
 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Public access Rules&amp;quot;&lt;br /&gt;
 -A INPUT -p tcp -m multiport --dports 25,80,110,143,443,465,587,993,995 -j ACCEPT&lt;br /&gt;
 -A INPUT -p udp -m udp --dport 53 -j ACCEPT&lt;br /&gt;
 -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Access Client&amp;quot;&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Dutiko : Admin &amp;amp; Monitoring&amp;quot;&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 62.210.45.142/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p tcp -m multiport --dport 21:22,5666,49152:49252 -m comment --comment &amp;quot;Supervision&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p udp -m udp --dport 161 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 62.210.45.133/32 -p tcp -m multiport --dport 22,9102 -m comment --comment &amp;quot;Backup&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.164/32 -p tcp -m multiport --dport 21:22,10000,49152:49252 -m comment --comment &amp;quot;VPN Dutiko&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.173/32 -p tcp -m multiport --dport 21:22,49152:49252 -m comment --comment &amp;quot;admin Dutiko&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 217.109.151.1/32 -p tcp -m tcp --dport 10000 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -o lo -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p icmp -j ACCEPT&lt;br /&gt;
 -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p tcp -m multiport --dports 21,25,80,443,465,587 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p udp -m multiport --dports 53,123 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p tcp -m tcp --dport 9103 -m comment --comment &amp;quot;Backup filers&amp;quot; -j ACCEPT&lt;br /&gt;
 COMMIT&lt;br /&gt;
&lt;br /&gt;
===Log du firewall===&lt;br /&gt;
 iptables -A INPUT -j LOG --log-prefix &amp;quot;firewall: &amp;quot; --log-level 7&lt;br /&gt;
rsyslogd&lt;br /&gt;
créer un fichier &#039;&#039;/etc/rsyslog.d/firewall.conf&#039;&#039; :&lt;br /&gt;
 :msg, contains, &amp;quot;firewall: &amp;quot; -/var/log/firewall.log&lt;br /&gt;
 &amp;amp; ~&lt;br /&gt;
Depuis rsyslog 7, il faut utiliser :&lt;br /&gt;
 if $msg contains &#039;firewall: &#039; then /var/log/firewall.log&lt;br /&gt;
 &amp;amp; stop&lt;br /&gt;
logrotate&lt;br /&gt;
 /var/log/firewall.log {&lt;br /&gt;
 	rotate 5&lt;br /&gt;
 	weekly&lt;br /&gt;
 	dateext&lt;br /&gt;
 	missingok&lt;br /&gt;
 	notifempty&lt;br /&gt;
 	compress&lt;br /&gt;
 	delaycompress&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Blacklist en masse===&lt;br /&gt;
utilisation = un des sed retire les connexion qui ont une patern de regex en nombre de connexion, ceux qui restent sont a bl (ici 60)--&lt;br /&gt;
 netstat -nt | grep &#039;:80&#039; | sed -e &#039;s/.*:80 //&#039; | sed -e &#039;s/:.*//&#039; | sort | uniq -c | grep -v 172.25.8.62 | grep -v 172.25.8.61 | grep  -v 172.25.8.60 | grep -v 10.252.5.74 | grep -v 10.252.5.25 | grep -v 217.174.192.246 | sed &#039;s/^ *[1-9] .*//g&#039; | sed &#039;s/^ *[1-5][0-9] .*//g&#039; | sed &#039;/^$/d&#039; | awk {&#039;print$2&#039;}  | sed &#039;/^[ ]*#\|#\|^$/! s/.*/network-object host &amp;amp;/&#039;&lt;br /&gt;
&lt;br /&gt;
==MAIL==&lt;br /&gt;
Clean mailq&lt;br /&gt;
 mailq | grep -B1 &amp;quot;Connection refused&amp;quot; | cut -d&amp;quot; &amp;quot; -f1 | grep -e &amp;quot;[A-Z][1-9]*&amp;quot; | xargs -L1 postsuper -d&lt;br /&gt;
 sendmail -qSMAILER-DAEMON -v -O Timeout.queuereturn=1s -O Timeout.connect=1s -O Timeout.ident=0s&lt;br /&gt;
relance force des mails :&lt;br /&gt;
 kill -ALRM &amp;lt;qmail-send pid&amp;gt;&lt;br /&gt;
Lire un fichier .db&lt;br /&gt;
 makemap -u hash /etc/mail/virtusertable.db&lt;br /&gt;
Nombre de mails par destinataires&lt;br /&gt;
 mailq|awk &#039;NR=3 {print $1}&#039;|awk -F &amp;quot;&amp;lt;&amp;quot; &#039;length($2)&amp;gt;0 {print $2}&#039;|sed &amp;quot;s/&amp;gt;//g&amp;quot;|sort|uniq -c|sort&lt;br /&gt;
Nombre de mails par domaine&lt;br /&gt;
 mailq|awk &#039;NR=3 {print $1}&#039;|awk -F &amp;quot;&amp;lt;&amp;quot; &#039;length($2)&amp;gt;0 {print tolower($2)}&#039;|sed &amp;quot;s/&amp;gt;//g&amp;quot;|awk -F &amp;quot;@&amp;quot; &#039;{print $2}&#039;|sort|uniq -c|sort&lt;br /&gt;
===SMTP en telnet===&lt;br /&gt;
 telnet serveur.com 25&lt;br /&gt;
 HELO dutiko.com&lt;br /&gt;
 MAIL FROM: &amp;lt;sn4ky@sn4ky.net&amp;gt;&lt;br /&gt;
 RCPT TO: &amp;lt;sn4ky@sn4ky.net&amp;gt;&lt;br /&gt;
 DATA&lt;br /&gt;
 Subject: Sujet&lt;br /&gt;
 Message&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
===SMTP authentifié en telnet===&lt;br /&gt;
 telnet smtp-relay.gmail.com&lt;br /&gt;
 HELO dutiko.com&lt;br /&gt;
 AUTH LOGIN&lt;br /&gt;
Le serveur doit retourner 334 VXNlcm5hbWU6; ceci est du texte encodé en base64 demanant le login. Coller le login encodé en base64 en retour :&lt;br /&gt;
 dXNlcm5hbWUuY29t&lt;br /&gt;
Le serveur a du retourner 34 UGFzc3dvcmQ6; encore une fois en base64, demandant le mot de passe, a retourner en base64 :&lt;br /&gt;
 bXlwYXNzd29yZA==&lt;br /&gt;
Le retour du serveur doit indiquer que l&#039;authentification a été acceptée&lt;br /&gt;
&lt;br /&gt;
encoder en base64 : http://ostermiller.org/calc/encode.html&lt;br /&gt;
 perl -MMIME::Base64 -e &#039;print encode_base64(&amp;quot;username&amp;quot;);&#039;&lt;br /&gt;
 perl -MMIME::Base64 -e &#039;print encode_base64(&amp;quot;password&amp;quot;);&#039;&lt;br /&gt;
&lt;br /&gt;
===IMAP en telnet===&lt;br /&gt;
&#039;&#039;inbox&#039;&#039; représente le nom du répertoire IMAP dans lequel on souhaite lire le mail&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;1&#039;&#039; représente le numéro du mail, par ordre d&#039;arrivée sur le serveur&lt;br /&gt;
 telnet serveur.com 143&lt;br /&gt;
 . LOGIN username ********&lt;br /&gt;
 . LIST &amp;quot;&amp;quot; &amp;quot;*&amp;quot;&lt;br /&gt;
 . SELECT inbox&lt;br /&gt;
 . FETCH 1 full&lt;br /&gt;
 . FETCH 1 BODY[TEXT]&lt;br /&gt;
 . LOGOUT&lt;br /&gt;
&lt;br /&gt;
source : http://bobpeers.com/technical/telnet_imap&lt;br /&gt;
&lt;br /&gt;
===POP en telnet===&lt;br /&gt;
 telnet serveur.com 110&lt;br /&gt;
 USER username&lt;br /&gt;
 PASS ********&lt;br /&gt;
 LIST&lt;br /&gt;
 TOP 1&lt;br /&gt;
 RETR 1&lt;br /&gt;
 DELE 1&lt;br /&gt;
 QUIT&lt;br /&gt;
&lt;br /&gt;
==APACHE==&lt;br /&gt;
===Rediriger entièrement en SSL===&lt;br /&gt;
 RewriteCond %{HTTPS} off&lt;br /&gt;
 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}&lt;br /&gt;
&lt;br /&gt;
===Interdire la navigation des robots===&lt;br /&gt;
 Header set X-Robots-Tag &amp;quot;noindex, noarchive, nosniff, nofollow&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==SWAP==&lt;br /&gt;
Modifier la manière dont le kernel va utiliser la mémoire SWAP, on va modifier le paramètre système vm.swappiness. Ce paramètre exprime l&#039;agressivité du noyau à utiliser l&#039;espace de pagination (SWAP) pour les processus réalisant peu d&#039;échanges mémoire.&lt;br /&gt;
&lt;br /&gt;
La valeur exprimée est un pourcentage. &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; corresponds à une utilisation la plus faible possible de SWAP (quasi inexistante), tandis que &amp;lt;code&amp;gt;100&amp;lt;/code&amp;gt; corresponds à une utilisation maximale de la SWAP.&lt;br /&gt;
&lt;br /&gt;
Pour connaitre sa valeur actuelle&lt;br /&gt;
 cat /proc/sys/vm/swappiness&lt;br /&gt;
&lt;br /&gt;
Pour modifier à la volée&lt;br /&gt;
 sysctl vm.swappiness=XX&lt;br /&gt;
(Il faut désactiver et réactiver totalement les espaces SWAP pour prendre en compte la valeur)&lt;br /&gt;
 swapoff -av&lt;br /&gt;
 swapon -av &lt;br /&gt;
Pour rendre le paramètre actif dès le boot, rajouter &amp;lt;code&amp;gt;vm.swappiness=XX&amp;lt;/code&amp;gt; dans le fichier &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Script pour connaitre les processus qui swappent :&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # Get current swap usage for all running processes&lt;br /&gt;
 # Erik Ljungstrom 27/05/2011&lt;br /&gt;
 SUM=0&lt;br /&gt;
 OVERALL=0&lt;br /&gt;
 for DIR in `find /proc/ -maxdepth 1 -type d | egrep &amp;quot;^/proc/[0-9]&amp;quot;` ; do&lt;br /&gt;
 PID=`echo $DIR | cut -d / -f 3`&lt;br /&gt;
 PROGNAME=`ps -p $PID -o comm --no-headers`&lt;br /&gt;
 for SWAP in `grep Swap $DIR/smaps 2&amp;gt;/dev/null| awk &#039;{ print $2 }&#039;` ; do&lt;br /&gt;
 let SUM=$SUM+$SWAP&lt;br /&gt;
 done&lt;br /&gt;
 echo &amp;quot;PID=$PID - Swap used: $SUM - ($PROGNAME )&amp;quot;&lt;br /&gt;
 let OVERALL=$OVERALL+$SUM&lt;br /&gt;
 SUM=0&lt;br /&gt;
 done  | grep -v &amp;quot;Swap used: 0 &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Nouveaux Kernels&lt;br /&gt;
Script pour connaitre les processus qui swappent :&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # Get current swap usage for all running processes&lt;br /&gt;
 # Erik Ljungstrom 27/05/2011&lt;br /&gt;
 SUM=0&lt;br /&gt;
 OVERALL=0&lt;br /&gt;
 for DIR in `find /proc/ -maxdepth 1 -type d | egrep &amp;quot;^/proc/[0-9]&amp;quot;` ; do&lt;br /&gt;
 PID=`echo $DIR | cut -d / -f 3`&lt;br /&gt;
 PROGNAME=`ps -p $PID -o comm --no-headers`&lt;br /&gt;
 for SWAP in `grep VmSwap $DIR/status 2&amp;gt;/dev/null| awk &#039;{ print $2 }&#039;` ; do&lt;br /&gt;
 let SUM=$SUM+$SWAP&lt;br /&gt;
 done&lt;br /&gt;
 echo &amp;quot;PID=$PID - Swap used: $SUM - ($PROGNAME )&amp;quot;&lt;br /&gt;
 let OVERALL=$OVERALL+$SUM&lt;br /&gt;
 SUM=0&lt;br /&gt;
 done  | grep -v &amp;quot;Swap used: 0 &amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Limite sur le nombre de fichiers ouverts==&lt;br /&gt;
Sur Linux, il existe un paramètre permettant de limiter le nombre de fichiers ouverts par un utilisateur. Il s&#039;agit du paramètre &amp;lt;code&amp;gt;ulimit&amp;lt;/code&amp;gt;. La valeur par défaut de ce paramètre est usuellement de 1024.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $ ulimit -a #liste les paramètres kernel des limites&lt;br /&gt;
 $ ulimit -n #affiche la limite du nombre de fichiers ouverts&lt;br /&gt;
 # ulimit -n 65535 #augmente la limite du nombre de fichiers à 65535 pour l&#039;utilisateur courant&lt;br /&gt;
&lt;br /&gt;
Modifier ce paramètre ne le modifie qu&#039;en &amp;quot;mou&amp;quot;. il n&#039;est valide que pour la session courante de l&#039;utilisateur en cours.&lt;br /&gt;
&lt;br /&gt;
Pour que cette modification soit permanente, il faut procéder à quelques ajustements :&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier &amp;lt;code&amp;gt;/etc/pam.d/common-session&amp;lt;/code&amp;gt; pour y insérer la ligne :&lt;br /&gt;
 session required pam_limits.so&lt;br /&gt;
Puis éditer le fichier &amp;lt;code&amp;gt;/etc/security/limits.conf&amp;lt;/code&amp;gt; pour procéder aux ajustements :&lt;br /&gt;
 user      soft     nofile     131070&lt;br /&gt;
 user      hard     nofile     262140&lt;br /&gt;
D&#039;autres modification peuvent être effectuées, se référer à &amp;lt;code&amp;gt;man 5 limits.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DUMMY RPM==&lt;br /&gt;
php-5.2.14-1.spec&lt;br /&gt;
 ###############################################################################&lt;br /&gt;
 Summary : Dummy php 5.2.14-1&lt;br /&gt;
 Name: Agarik-php&lt;br /&gt;
 Version: 5.2.14&lt;br /&gt;
 Release: 1&lt;br /&gt;
 License: GPL&lt;br /&gt;
 Group: Services&lt;br /&gt;
 Source: agarik.com&lt;br /&gt;
 URL: http://www.agarik.com&lt;br /&gt;
 BuildArch: noarch&lt;br /&gt;
 Provides: php-5.2.14-1&lt;br /&gt;
 &lt;br /&gt;
 %description&lt;br /&gt;
 Ceci est un dummy package pour le service &amp;lt;service-version&amp;gt; installé par Agarik&lt;br /&gt;
 %files&lt;br /&gt;
 ###############################################################################&lt;br /&gt;
&lt;br /&gt;
 rpmbuild -bb php-5.2.14-1.spec&lt;br /&gt;
 rpm -U /usr/src/redhat/RPMS/noarch/Agarik-php-5.2.14-1.noarch.rpm&lt;br /&gt;
&lt;br /&gt;
==7Zip script==&lt;br /&gt;
===compress tous les fichiers d&#039;un répertoire===&lt;br /&gt;
 @ECHO OFF&lt;br /&gt;
 FOR /F &amp;quot;usebackq delims==&amp;quot; %%y IN (`dir /b *.log`) DO CALL :compress %%~ny&lt;br /&gt;
 GOTO :fin&lt;br /&gt;
 :compress&lt;br /&gt;
 C:\&amp;quot;Program Files&amp;quot;\7-Zip\7z.exe a %1.zip %1.log&lt;br /&gt;
 del %1.log&lt;br /&gt;
 GOTO :eof&lt;br /&gt;
 :fin&lt;br /&gt;
 ECHO tous les fichiers ont ete traites...&lt;br /&gt;
&lt;br /&gt;
==MEGACLI==&lt;br /&gt;
 MegaCli -LDInfo -LALL -aALL ; donne infos essentiels&lt;br /&gt;
 MegaCli -LDSetProp ADRA -LALL -AALL ; passe le cache &amp;quot;Read Policy&amp;quot; en readadaptative&lt;br /&gt;
 MegaCli -LDSetProp WB -LALL -AALL ; passe le cache &amp;quot;Write Policy&amp;quot; en write back&lt;br /&gt;
 MegaCli -LDSetProp cached -LALL -AALL ; passe le cache en cached&lt;br /&gt;
 MegaCli -AdpBbuCmd -BBuLearn -a0 ; lance un relearn de la batterie&lt;br /&gt;
 MegaCli -AdpBbuCmd -GetBbuCapacityInfo  -aALL ; vérifie si la batterie est en charge ou pas&lt;br /&gt;
 MegaCli -AdpAllInfo -aALL ; info general du contolleur&lt;br /&gt;
 MegaCli -PDList -aALL ; info disques&lt;br /&gt;
 MegaCli -CfgDsply -aALL ; info sur la conf array / disques&lt;br /&gt;
 MegaCli -AdpEventLog -GetEvents -f events.log -aALL ; dumpe les logs de la carte dans events.log&lt;br /&gt;
 MegaCli -PdLocate -start -physdrv \[32:0\] -a0 ; faire blink la led du disque 32:0&lt;br /&gt;
Smartctl sur MegaCli :&lt;br /&gt;
 smartctl -a -d megaraid,N  /dev/sda&lt;br /&gt;
N représente le DeviceID sur le contrôlleur, a récupérer avec un PDlist&lt;br /&gt;
&lt;br /&gt;
==STORCLI==&lt;br /&gt;
lister tous les disques du controler 0&lt;br /&gt;
 storcli /c0 /eall /sall show&lt;br /&gt;
Smartctl sur storcli :&lt;br /&gt;
 smartctl -a -d megaraid,N  /dev/sda&lt;br /&gt;
N représente le DID sur le contrôlleur&lt;br /&gt;
allumer la led du disque&lt;br /&gt;
 storcli /c0 /e250 /s7 start locate&lt;br /&gt;
&lt;br /&gt;
==Similitudes commandes UNIX/LINUX/AIX==&lt;br /&gt;
http://bhami.com/rosetta.html&lt;br /&gt;
&lt;br /&gt;
== IPMI ==&lt;br /&gt;
A faire lorsque le process kipmi0 prends 100% de CPU et que le load monte en conséquence&lt;br /&gt;
 echo &amp;quot;remove,kcs,i/o,0xca8,rsp=4,rsi=1,rsh=0,irq=0,ipmb=0&amp;quot; &amp;gt; /sys/module/ipmi_si/parameters/hotmod&lt;br /&gt;
 echo &amp;quot;add,kcs,i/o,0xca8,rsp=4,rsi=1,rsh=0,irq=0,ipmb=0&amp;quot; &amp;gt; /sys/module/ipmi_si/parameters/hotmod&lt;br /&gt;
&lt;br /&gt;
==Fail2Ban==&lt;br /&gt;
===simple jail to ban known bad url===&lt;br /&gt;
 [apache-badurl]&lt;br /&gt;
 enabled = true&lt;br /&gt;
 &lt;br /&gt;
 failregex = ^&amp;lt;HOST&amp;gt; -.*&amp;quot;(GET|POST|HEAD) (/)+(ios|wp-).*&amp;quot;$&lt;br /&gt;
 ignoreregex =&lt;br /&gt;
 datepattern = ^[^\[]*\[({DATE})&lt;br /&gt;
               {^LN-BEG}&lt;br /&gt;
 action   = iptables-multiport[name=BadUrl, port=&amp;quot;http,https,7080,7081&amp;quot;]&lt;br /&gt;
 logpath  = /var/www/vhosts/system/domain.com/logs/access_ssl_log&lt;br /&gt;
 bantime  = 48h&lt;br /&gt;
 maxretry = 1&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Tips_syst%C3%A8mes&amp;diff=97</id>
		<title>Tips systèmes</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Tips_syst%C3%A8mes&amp;diff=97"/>
		<updated>2025-02-05T09:27:54Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : /* SMTP en telnet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liens externe ==&lt;br /&gt;
https://jeznet.org/Wiki/CodeSnippets&lt;br /&gt;
==MYSQL==&lt;br /&gt;
Créer compte user :&lt;br /&gt;
 CREATE USER &amp;lt;user&amp;gt; IDENTIFIED BY &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
créer un compte utilisateur + database&lt;br /&gt;
 GRANT ALL PRIVILEGES ON &amp;lt;database&amp;gt;.* TO &#039;&amp;lt;user&amp;gt;&#039;@&#039;&amp;lt;host&amp;gt;&#039; IDENTIFIED BY &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON &amp;lt;database&amp;gt;.* TO &#039;&amp;lt;user&amp;gt;&#039;@&#039;&amp;lt;host&amp;gt;&#039; IDENTIFIED BY PASSWORD &#039;*&amp;lt;password_hash&amp;gt;&#039;;&lt;br /&gt;
voir les comptes utilisateurs&lt;br /&gt;
 select host, user, password from mysql.user;&lt;br /&gt;
dumper une base et la compresser a la volée&lt;br /&gt;
 mysqldump -h $HOST -u $USER -p $DATABASE | gzip &amp;gt; dump_$DATABASE.sql.gz&lt;br /&gt;
importer dans MySQL une base gzippée&lt;br /&gt;
 gunzip -c &amp;lt; dump_$DATABASE.sql.gz | mysql -h $HOST -u $USER -p $DATABASE&lt;br /&gt;
Import MySQL over SSH&lt;br /&gt;
 ssh $HOST &amp;quot;mysqldump -u $USER1 -p$PASS1 $DB1&amp;quot; | mysql -u$USER2 -p$PASS2 $DB2&lt;br /&gt;
Import GZIP MySQL over SSH On the fly&lt;br /&gt;
 ssh $HOST &amp;quot;mysqldump -u $USER1 -p$PASS1 $DB1 | gzip&amp;quot; | gunzip -c | mysql -u$USER2 -p$PASS2 $DB2&lt;br /&gt;
Dump MySQL Database, compress, export, and import - One liner&lt;br /&gt;
 mysqldump -u $USER1 -p$PASS1 $DB1 | pigz | ssh $HOST &amp;quot;gunzip -c | mysql -u$USER2 -p$PASS2 $DB2&amp;quot;&lt;br /&gt;
Obtenir la taille de toutes les bases de données&lt;br /&gt;
 SELECT table_schema &amp;quot;DB Name&amp;quot;, &lt;br /&gt;
 Round(Sum(data_length + index_length) / 1024 / 1024, 1) &amp;quot;DB Size in MB&amp;quot; &lt;br /&gt;
 FROM   information_schema.tables &lt;br /&gt;
 GROUP  BY table_schema;&lt;br /&gt;
Obtenir la taille d&#039;UNE base de données mentionnée&lt;br /&gt;
 SELECT table_schema &amp;quot;DB Name&amp;quot;, &lt;br /&gt;
 Round(Sum(data_length + index_length) / 1024 / 1024, 1) &amp;quot;DB Size in MB&amp;quot; &lt;br /&gt;
 FROM   information_schema.tables&lt;br /&gt;
 WHERE table_schema = &amp;quot;YOUR_DATABASE_NAME&amp;quot;  &lt;br /&gt;
 GROUP  BY table_schema;&lt;br /&gt;
Convertir toutes les tables InnoDB en InnoDB (lors de l&#039;ajout du parametre innodb_file_per_table=1 par exemple)&lt;br /&gt;
 for table in $(mysql --batch information_schema -e &amp;quot;select CONCAT(TABLE_SCHEMA,&#039;.&#039;,TABLE_NAME) FROM TABLES WHERE ENGINE=&#039;InnoDB&#039;;&amp;quot; | grep -v &amp;quot;CONCAT(TABLE_SCHEMA,&#039;.&#039;,TABLE_NAME)&amp;quot;)&lt;br /&gt;
 do&lt;br /&gt;
  mysql --batch -uadmin -p$(cat /etc/psa/.psa.shadow) -e &amp;quot;ALTER TABLE ${table} ENGINE=InnoDB;&amp;quot;&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
==SYSTEME==&lt;br /&gt;
beaucoup de connexions&lt;br /&gt;
 netstat -pant | grep -i esta | awk &#039;{print $5}&#039;| cut -d &amp;quot;:&amp;quot; -f 1| sort |uniq -c&lt;br /&gt;
fait le total d&#039;espace disque utilisé par les vhosts&lt;br /&gt;
 for i in `grep -i documentroot /opt/applis/httpd/conf/httpd.conf | grep -v &amp;quot;#&amp;quot;| awk &#039;{ print $2}&#039;`;do du -sh $i;done&lt;br /&gt;
fouiller un fichier de log entre 2 dates&lt;br /&gt;
 awk &#039;/Apr 1 11:00:00/,/Apr 1 16:15:00/{print}&#039; /var/log/httpd/httpd_access.log&lt;br /&gt;
 awk &#039;$0&amp;gt;=from&amp;amp;&amp;amp;$0&amp;lt;=to&#039; from=&amp;quot;Apr 1 11:00:00&amp;quot; to=&amp;quot;Apr 1 16:15:00&amp;quot; /var/log/httpd/httpd_access.log&lt;br /&gt;
Liste les répertoires et les trie par taille&lt;br /&gt;
 du -h --max-depth=1 | perl -e &#039;sub h{%h=(K=&amp;gt;10,M=&amp;gt;20,G=&amp;gt;30);($n,$u)=shift=~/([0-9.,]+)(\D)/; return $n*2**$h{$u}}print sort{h($b)&amp;lt;=&amp;gt;h($a)}&amp;lt;&amp;gt;;&#039;&lt;br /&gt;
tar over ssh&lt;br /&gt;
 tar zcvf - /path | ssh root@server &amp;quot;cat &amp;gt; /backup/wwwdata.tar.gz&amp;quot;&lt;br /&gt;
tar over ssh untar&lt;br /&gt;
 tar zcvf - /path/to/directory/ | ssh root@inrage.fr &amp;quot;cd /path/to/ &amp;amp;&amp;amp; tar zxvf - &amp;quot;&lt;br /&gt;
vitesse d&#039;un pipe&lt;br /&gt;
 command1 | cpipe -vt | command2&lt;br /&gt;
Linux force reboot (magical way)&lt;br /&gt;
 echo 1 &amp;gt; /proc/sys/kernel/sysrq&lt;br /&gt;
 echo b &amp;gt; /proc/sysrq-trigger&lt;br /&gt;
&lt;br /&gt;
==CHROOT==&lt;br /&gt;
Créer le nécessaire du chroot&lt;br /&gt;
 mount /dev/&amp;lt;devicepX&amp;gt; /mnt&lt;br /&gt;
 mount --bind /dev /mnt/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/dev/pts&lt;br /&gt;
 mount -t proc /proc /mnt/proc&lt;br /&gt;
 mount --bind /run  /mnt/run&lt;br /&gt;
 mount -t sysfs /sys /mnt/sys&lt;br /&gt;
 mount --bind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars &lt;br /&gt;
 chroot /mnt /bin/bash&lt;br /&gt;
&lt;br /&gt;
Démonter le tout&lt;br /&gt;
 umount /mnt/sys/firmware/efi/efivars &lt;br /&gt;
 umount /mnt/sys&lt;br /&gt;
 umount /mnt/run&lt;br /&gt;
 umount /mnt/proc&lt;br /&gt;
 umount /mnt/dev/pts&lt;br /&gt;
 umount /mnt/dev&lt;br /&gt;
 umount /mnt&lt;br /&gt;
&lt;br /&gt;
==IPTABLES==&lt;br /&gt;
diagramme de flux&lt;br /&gt;
&lt;br /&gt;
http://www.linuxchannel.net/board/board_files/alpha/phpIqSLS2/iptables.gif&lt;br /&gt;
===Base firewall===&lt;br /&gt;
 *filter&lt;br /&gt;
 :INPUT DROP [0:0]&lt;br /&gt;
 :FORWARD DROP [0:0]&lt;br /&gt;
 :OUTPUT DROP [0:0]&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Global Rules&amp;quot;&lt;br /&gt;
 -A INPUT -f -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP&lt;br /&gt;
 -A INPUT -m state --state INVALID -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --dport 25 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 50 --connlimit-mask 32 --connlimit-saddr -j DROP&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT&lt;br /&gt;
 -A INPUT -i lo -j ACCEPT&lt;br /&gt;
 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Public access Rules&amp;quot;&lt;br /&gt;
 -A INPUT -p tcp -m multiport --dports 25,80,110,143,443,465,587,993,995 -j ACCEPT&lt;br /&gt;
 -A INPUT -p udp -m udp --dport 53 -j ACCEPT&lt;br /&gt;
 -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Access Client&amp;quot;&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Dutiko : Admin &amp;amp; Monitoring&amp;quot;&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 62.210.45.142/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p tcp -m multiport --dport 21:22,5666,49152:49252 -m comment --comment &amp;quot;Supervision&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p udp -m udp --dport 161 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 62.210.45.133/32 -p tcp -m multiport --dport 22,9102 -m comment --comment &amp;quot;Backup&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.164/32 -p tcp -m multiport --dport 21:22,10000,49152:49252 -m comment --comment &amp;quot;VPN Dutiko&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.173/32 -p tcp -m multiport --dport 21:22,49152:49252 -m comment --comment &amp;quot;admin Dutiko&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 217.109.151.1/32 -p tcp -m tcp --dport 10000 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -o lo -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p icmp -j ACCEPT&lt;br /&gt;
 -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p tcp -m multiport --dports 21,25,80,443,465,587 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p udp -m multiport --dports 53,123 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p tcp -m tcp --dport 9103 -m comment --comment &amp;quot;Backup filers&amp;quot; -j ACCEPT&lt;br /&gt;
 COMMIT&lt;br /&gt;
&lt;br /&gt;
===Log du firewall===&lt;br /&gt;
 iptables -A INPUT -j LOG --log-prefix &amp;quot;firewall: &amp;quot; --log-level 7&lt;br /&gt;
rsyslogd&lt;br /&gt;
créer un fichier &#039;&#039;/etc/rsyslog.d/firewall.conf&#039;&#039; :&lt;br /&gt;
 :msg, contains, &amp;quot;firewall: &amp;quot; -/var/log/firewall.log&lt;br /&gt;
 &amp;amp; ~&lt;br /&gt;
Depuis rsyslog 7, il faut utiliser :&lt;br /&gt;
 if $msg contains &#039;firewall: &#039; then /var/log/firewall.log&lt;br /&gt;
 &amp;amp; stop&lt;br /&gt;
logrotate&lt;br /&gt;
 /var/log/firewall.log {&lt;br /&gt;
 	rotate 5&lt;br /&gt;
 	weekly&lt;br /&gt;
 	dateext&lt;br /&gt;
 	missingok&lt;br /&gt;
 	notifempty&lt;br /&gt;
 	compress&lt;br /&gt;
 	delaycompress&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Blacklist en masse===&lt;br /&gt;
utilisation = un des sed retire les connexion qui ont une patern de regex en nombre de connexion, ceux qui restent sont a bl (ici 60)--&lt;br /&gt;
 netstat -nt | grep &#039;:80&#039; | sed -e &#039;s/.*:80 //&#039; | sed -e &#039;s/:.*//&#039; | sort | uniq -c | grep -v 172.25.8.62 | grep -v 172.25.8.61 | grep  -v 172.25.8.60 | grep -v 10.252.5.74 | grep -v 10.252.5.25 | grep -v 217.174.192.246 | sed &#039;s/^ *[1-9] .*//g&#039; | sed &#039;s/^ *[1-5][0-9] .*//g&#039; | sed &#039;/^$/d&#039; | awk {&#039;print$2&#039;}  | sed &#039;/^[ ]*#\|#\|^$/! s/.*/network-object host &amp;amp;/&#039;&lt;br /&gt;
&lt;br /&gt;
==MAIL==&lt;br /&gt;
Clean mailq&lt;br /&gt;
 mailq | grep -B1 &amp;quot;Connection refused&amp;quot; | cut -d&amp;quot; &amp;quot; -f1 | grep -e &amp;quot;[A-Z][1-9]*&amp;quot; | xargs -L1 postsuper -d&lt;br /&gt;
 sendmail -qSMAILER-DAEMON -v -O Timeout.queuereturn=1s -O Timeout.connect=1s -O Timeout.ident=0s&lt;br /&gt;
relance force des mails :&lt;br /&gt;
 kill -ALRM &amp;lt;qmail-send pid&amp;gt;&lt;br /&gt;
Lire un fichier .db&lt;br /&gt;
 makemap -u hash /etc/mail/virtusertable.db&lt;br /&gt;
Nombre de mails par destinataires&lt;br /&gt;
 mailq|awk &#039;NR=3 {print $1}&#039;|awk -F &amp;quot;&amp;lt;&amp;quot; &#039;length($2)&amp;gt;0 {print $2}&#039;|sed &amp;quot;s/&amp;gt;//g&amp;quot;|sort|uniq -c|sort&lt;br /&gt;
Nombre de mails par domaine&lt;br /&gt;
 mailq|awk &#039;NR=3 {print $1}&#039;|awk -F &amp;quot;&amp;lt;&amp;quot; &#039;length($2)&amp;gt;0 {print tolower($2)}&#039;|sed &amp;quot;s/&amp;gt;//g&amp;quot;|awk -F &amp;quot;@&amp;quot; &#039;{print $2}&#039;|sort|uniq -c|sort&lt;br /&gt;
===SMTP en telnet===&lt;br /&gt;
 telnet serveur.com 25&lt;br /&gt;
 HELO dutiko.com&lt;br /&gt;
 MAIL FROM: &amp;lt;sn4ky@sn4ky.net&amp;gt;&lt;br /&gt;
 RCPT TO: &amp;lt;sn4ky@sn4ky.net&amp;gt;&lt;br /&gt;
 DATA&lt;br /&gt;
 Subject: Sujet&lt;br /&gt;
 Message&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
encoder en base64 : http://ostermiller.org/calc/encode.html&lt;br /&gt;
&lt;br /&gt;
===IMAP en telnet===&lt;br /&gt;
&#039;&#039;inbox&#039;&#039; représente le nom du répertoire IMAP dans lequel on souhaite lire le mail&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;1&#039;&#039; représente le numéro du mail, par ordre d&#039;arrivée sur le serveur&lt;br /&gt;
 telnet serveur.com 143&lt;br /&gt;
 . LOGIN username ********&lt;br /&gt;
 . LIST &amp;quot;&amp;quot; &amp;quot;*&amp;quot;&lt;br /&gt;
 . SELECT inbox&lt;br /&gt;
 . FETCH 1 full&lt;br /&gt;
 . FETCH 1 BODY[TEXT]&lt;br /&gt;
 . LOGOUT&lt;br /&gt;
&lt;br /&gt;
source : http://bobpeers.com/technical/telnet_imap&lt;br /&gt;
&lt;br /&gt;
===POP en telnet===&lt;br /&gt;
 telnet serveur.com 110&lt;br /&gt;
 USER username&lt;br /&gt;
 PASS ********&lt;br /&gt;
 LIST&lt;br /&gt;
 TOP 1&lt;br /&gt;
 RETR 1&lt;br /&gt;
 DELE 1&lt;br /&gt;
 QUIT&lt;br /&gt;
&lt;br /&gt;
==APACHE==&lt;br /&gt;
===Rediriger entièrement en SSL===&lt;br /&gt;
 RewriteCond %{HTTPS} off&lt;br /&gt;
 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}&lt;br /&gt;
&lt;br /&gt;
===Interdire la navigation des robots===&lt;br /&gt;
 Header set X-Robots-Tag &amp;quot;noindex, noarchive, nosniff, nofollow&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==SWAP==&lt;br /&gt;
Modifier la manière dont le kernel va utiliser la mémoire SWAP, on va modifier le paramètre système vm.swappiness. Ce paramètre exprime l&#039;agressivité du noyau à utiliser l&#039;espace de pagination (SWAP) pour les processus réalisant peu d&#039;échanges mémoire.&lt;br /&gt;
&lt;br /&gt;
La valeur exprimée est un pourcentage. &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; corresponds à une utilisation la plus faible possible de SWAP (quasi inexistante), tandis que &amp;lt;code&amp;gt;100&amp;lt;/code&amp;gt; corresponds à une utilisation maximale de la SWAP.&lt;br /&gt;
&lt;br /&gt;
Pour connaitre sa valeur actuelle&lt;br /&gt;
 cat /proc/sys/vm/swappiness&lt;br /&gt;
&lt;br /&gt;
Pour modifier à la volée&lt;br /&gt;
 sysctl vm.swappiness=XX&lt;br /&gt;
(Il faut désactiver et réactiver totalement les espaces SWAP pour prendre en compte la valeur)&lt;br /&gt;
 swapoff -av&lt;br /&gt;
 swapon -av &lt;br /&gt;
Pour rendre le paramètre actif dès le boot, rajouter &amp;lt;code&amp;gt;vm.swappiness=XX&amp;lt;/code&amp;gt; dans le fichier &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Script pour connaitre les processus qui swappent :&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # Get current swap usage for all running processes&lt;br /&gt;
 # Erik Ljungstrom 27/05/2011&lt;br /&gt;
 SUM=0&lt;br /&gt;
 OVERALL=0&lt;br /&gt;
 for DIR in `find /proc/ -maxdepth 1 -type d | egrep &amp;quot;^/proc/[0-9]&amp;quot;` ; do&lt;br /&gt;
 PID=`echo $DIR | cut -d / -f 3`&lt;br /&gt;
 PROGNAME=`ps -p $PID -o comm --no-headers`&lt;br /&gt;
 for SWAP in `grep Swap $DIR/smaps 2&amp;gt;/dev/null| awk &#039;{ print $2 }&#039;` ; do&lt;br /&gt;
 let SUM=$SUM+$SWAP&lt;br /&gt;
 done&lt;br /&gt;
 echo &amp;quot;PID=$PID - Swap used: $SUM - ($PROGNAME )&amp;quot;&lt;br /&gt;
 let OVERALL=$OVERALL+$SUM&lt;br /&gt;
 SUM=0&lt;br /&gt;
 done  | grep -v &amp;quot;Swap used: 0 &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Nouveaux Kernels&lt;br /&gt;
Script pour connaitre les processus qui swappent :&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # Get current swap usage for all running processes&lt;br /&gt;
 # Erik Ljungstrom 27/05/2011&lt;br /&gt;
 SUM=0&lt;br /&gt;
 OVERALL=0&lt;br /&gt;
 for DIR in `find /proc/ -maxdepth 1 -type d | egrep &amp;quot;^/proc/[0-9]&amp;quot;` ; do&lt;br /&gt;
 PID=`echo $DIR | cut -d / -f 3`&lt;br /&gt;
 PROGNAME=`ps -p $PID -o comm --no-headers`&lt;br /&gt;
 for SWAP in `grep VmSwap $DIR/status 2&amp;gt;/dev/null| awk &#039;{ print $2 }&#039;` ; do&lt;br /&gt;
 let SUM=$SUM+$SWAP&lt;br /&gt;
 done&lt;br /&gt;
 echo &amp;quot;PID=$PID - Swap used: $SUM - ($PROGNAME )&amp;quot;&lt;br /&gt;
 let OVERALL=$OVERALL+$SUM&lt;br /&gt;
 SUM=0&lt;br /&gt;
 done  | grep -v &amp;quot;Swap used: 0 &amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Limite sur le nombre de fichiers ouverts==&lt;br /&gt;
Sur Linux, il existe un paramètre permettant de limiter le nombre de fichiers ouverts par un utilisateur. Il s&#039;agit du paramètre &amp;lt;code&amp;gt;ulimit&amp;lt;/code&amp;gt;. La valeur par défaut de ce paramètre est usuellement de 1024.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $ ulimit -a #liste les paramètres kernel des limites&lt;br /&gt;
 $ ulimit -n #affiche la limite du nombre de fichiers ouverts&lt;br /&gt;
 # ulimit -n 65535 #augmente la limite du nombre de fichiers à 65535 pour l&#039;utilisateur courant&lt;br /&gt;
&lt;br /&gt;
Modifier ce paramètre ne le modifie qu&#039;en &amp;quot;mou&amp;quot;. il n&#039;est valide que pour la session courante de l&#039;utilisateur en cours.&lt;br /&gt;
&lt;br /&gt;
Pour que cette modification soit permanente, il faut procéder à quelques ajustements :&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier &amp;lt;code&amp;gt;/etc/pam.d/common-session&amp;lt;/code&amp;gt; pour y insérer la ligne :&lt;br /&gt;
 session required pam_limits.so&lt;br /&gt;
Puis éditer le fichier &amp;lt;code&amp;gt;/etc/security/limits.conf&amp;lt;/code&amp;gt; pour procéder aux ajustements :&lt;br /&gt;
 user      soft     nofile     131070&lt;br /&gt;
 user      hard     nofile     262140&lt;br /&gt;
D&#039;autres modification peuvent être effectuées, se référer à &amp;lt;code&amp;gt;man 5 limits.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DUMMY RPM==&lt;br /&gt;
php-5.2.14-1.spec&lt;br /&gt;
 ###############################################################################&lt;br /&gt;
 Summary : Dummy php 5.2.14-1&lt;br /&gt;
 Name: Agarik-php&lt;br /&gt;
 Version: 5.2.14&lt;br /&gt;
 Release: 1&lt;br /&gt;
 License: GPL&lt;br /&gt;
 Group: Services&lt;br /&gt;
 Source: agarik.com&lt;br /&gt;
 URL: http://www.agarik.com&lt;br /&gt;
 BuildArch: noarch&lt;br /&gt;
 Provides: php-5.2.14-1&lt;br /&gt;
 &lt;br /&gt;
 %description&lt;br /&gt;
 Ceci est un dummy package pour le service &amp;lt;service-version&amp;gt; installé par Agarik&lt;br /&gt;
 %files&lt;br /&gt;
 ###############################################################################&lt;br /&gt;
&lt;br /&gt;
 rpmbuild -bb php-5.2.14-1.spec&lt;br /&gt;
 rpm -U /usr/src/redhat/RPMS/noarch/Agarik-php-5.2.14-1.noarch.rpm&lt;br /&gt;
&lt;br /&gt;
==7Zip script==&lt;br /&gt;
===compress tous les fichiers d&#039;un répertoire===&lt;br /&gt;
 @ECHO OFF&lt;br /&gt;
 FOR /F &amp;quot;usebackq delims==&amp;quot; %%y IN (`dir /b *.log`) DO CALL :compress %%~ny&lt;br /&gt;
 GOTO :fin&lt;br /&gt;
 :compress&lt;br /&gt;
 C:\&amp;quot;Program Files&amp;quot;\7-Zip\7z.exe a %1.zip %1.log&lt;br /&gt;
 del %1.log&lt;br /&gt;
 GOTO :eof&lt;br /&gt;
 :fin&lt;br /&gt;
 ECHO tous les fichiers ont ete traites...&lt;br /&gt;
&lt;br /&gt;
==MEGACLI==&lt;br /&gt;
 MegaCli -LDInfo -LALL -aALL ; donne infos essentiels&lt;br /&gt;
 MegaCli -LDSetProp ADRA -LALL -AALL ; passe le cache &amp;quot;Read Policy&amp;quot; en readadaptative&lt;br /&gt;
 MegaCli -LDSetProp WB -LALL -AALL ; passe le cache &amp;quot;Write Policy&amp;quot; en write back&lt;br /&gt;
 MegaCli -LDSetProp cached -LALL -AALL ; passe le cache en cached&lt;br /&gt;
 MegaCli -AdpBbuCmd -BBuLearn -a0 ; lance un relearn de la batterie&lt;br /&gt;
 MegaCli -AdpBbuCmd -GetBbuCapacityInfo  -aALL ; vérifie si la batterie est en charge ou pas&lt;br /&gt;
 MegaCli -AdpAllInfo -aALL ; info general du contolleur&lt;br /&gt;
 MegaCli -PDList -aALL ; info disques&lt;br /&gt;
 MegaCli -CfgDsply -aALL ; info sur la conf array / disques&lt;br /&gt;
 MegaCli -AdpEventLog -GetEvents -f events.log -aALL ; dumpe les logs de la carte dans events.log&lt;br /&gt;
 MegaCli -PdLocate -start -physdrv \[32:0\] -a0 ; faire blink la led du disque 32:0&lt;br /&gt;
Smartctl sur MegaCli :&lt;br /&gt;
 smartctl -a -d megaraid,N  /dev/sda&lt;br /&gt;
N représente le DeviceID sur le contrôlleur, a récupérer avec un PDlist&lt;br /&gt;
&lt;br /&gt;
==STORCLI==&lt;br /&gt;
lister tous les disques du controler 0&lt;br /&gt;
 storcli /c0 /eall /sall show&lt;br /&gt;
Smartctl sur storcli :&lt;br /&gt;
 smartctl -a -d megaraid,N  /dev/sda&lt;br /&gt;
N représente le DID sur le contrôlleur&lt;br /&gt;
allumer la led du disque&lt;br /&gt;
 storcli /c0 /e250 /s7 start locate&lt;br /&gt;
&lt;br /&gt;
==Similitudes commandes UNIX/LINUX/AIX==&lt;br /&gt;
http://bhami.com/rosetta.html&lt;br /&gt;
&lt;br /&gt;
== IPMI ==&lt;br /&gt;
A faire lorsque le process kipmi0 prends 100% de CPU et que le load monte en conséquence&lt;br /&gt;
 echo &amp;quot;remove,kcs,i/o,0xca8,rsp=4,rsi=1,rsh=0,irq=0,ipmb=0&amp;quot; &amp;gt; /sys/module/ipmi_si/parameters/hotmod&lt;br /&gt;
 echo &amp;quot;add,kcs,i/o,0xca8,rsp=4,rsi=1,rsh=0,irq=0,ipmb=0&amp;quot; &amp;gt; /sys/module/ipmi_si/parameters/hotmod&lt;br /&gt;
&lt;br /&gt;
==Fail2Ban==&lt;br /&gt;
===simple jail to ban known bad url===&lt;br /&gt;
 [apache-badurl]&lt;br /&gt;
 enabled = true&lt;br /&gt;
 &lt;br /&gt;
 failregex = ^&amp;lt;HOST&amp;gt; -.*&amp;quot;(GET|POST|HEAD) (/)+(ios|wp-).*&amp;quot;$&lt;br /&gt;
 ignoreregex =&lt;br /&gt;
 datepattern = ^[^\[]*\[({DATE})&lt;br /&gt;
               {^LN-BEG}&lt;br /&gt;
 action   = iptables-multiport[name=BadUrl, port=&amp;quot;http,https,7080,7081&amp;quot;]&lt;br /&gt;
 logpath  = /var/www/vhosts/system/domain.com/logs/access_ssl_log&lt;br /&gt;
 bantime  = 48h&lt;br /&gt;
 maxretry = 1&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Tips_syst%C3%A8mes&amp;diff=96</id>
		<title>Tips systèmes</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Tips_syst%C3%A8mes&amp;diff=96"/>
		<updated>2024-09-20T08:37:40Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : /* simple jail to ban known bad url */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liens externe ==&lt;br /&gt;
https://jeznet.org/Wiki/CodeSnippets&lt;br /&gt;
==MYSQL==&lt;br /&gt;
Créer compte user :&lt;br /&gt;
 CREATE USER &amp;lt;user&amp;gt; IDENTIFIED BY &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
créer un compte utilisateur + database&lt;br /&gt;
 GRANT ALL PRIVILEGES ON &amp;lt;database&amp;gt;.* TO &#039;&amp;lt;user&amp;gt;&#039;@&#039;&amp;lt;host&amp;gt;&#039; IDENTIFIED BY &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON &amp;lt;database&amp;gt;.* TO &#039;&amp;lt;user&amp;gt;&#039;@&#039;&amp;lt;host&amp;gt;&#039; IDENTIFIED BY PASSWORD &#039;*&amp;lt;password_hash&amp;gt;&#039;;&lt;br /&gt;
voir les comptes utilisateurs&lt;br /&gt;
 select host, user, password from mysql.user;&lt;br /&gt;
dumper une base et la compresser a la volée&lt;br /&gt;
 mysqldump -h $HOST -u $USER -p $DATABASE | gzip &amp;gt; dump_$DATABASE.sql.gz&lt;br /&gt;
importer dans MySQL une base gzippée&lt;br /&gt;
 gunzip -c &amp;lt; dump_$DATABASE.sql.gz | mysql -h $HOST -u $USER -p $DATABASE&lt;br /&gt;
Import MySQL over SSH&lt;br /&gt;
 ssh $HOST &amp;quot;mysqldump -u $USER1 -p$PASS1 $DB1&amp;quot; | mysql -u$USER2 -p$PASS2 $DB2&lt;br /&gt;
Import GZIP MySQL over SSH On the fly&lt;br /&gt;
 ssh $HOST &amp;quot;mysqldump -u $USER1 -p$PASS1 $DB1 | gzip&amp;quot; | gunzip -c | mysql -u$USER2 -p$PASS2 $DB2&lt;br /&gt;
Dump MySQL Database, compress, export, and import - One liner&lt;br /&gt;
 mysqldump -u $USER1 -p$PASS1 $DB1 | pigz | ssh $HOST &amp;quot;gunzip -c | mysql -u$USER2 -p$PASS2 $DB2&amp;quot;&lt;br /&gt;
Obtenir la taille de toutes les bases de données&lt;br /&gt;
 SELECT table_schema &amp;quot;DB Name&amp;quot;, &lt;br /&gt;
 Round(Sum(data_length + index_length) / 1024 / 1024, 1) &amp;quot;DB Size in MB&amp;quot; &lt;br /&gt;
 FROM   information_schema.tables &lt;br /&gt;
 GROUP  BY table_schema;&lt;br /&gt;
Obtenir la taille d&#039;UNE base de données mentionnée&lt;br /&gt;
 SELECT table_schema &amp;quot;DB Name&amp;quot;, &lt;br /&gt;
 Round(Sum(data_length + index_length) / 1024 / 1024, 1) &amp;quot;DB Size in MB&amp;quot; &lt;br /&gt;
 FROM   information_schema.tables&lt;br /&gt;
 WHERE table_schema = &amp;quot;YOUR_DATABASE_NAME&amp;quot;  &lt;br /&gt;
 GROUP  BY table_schema;&lt;br /&gt;
Convertir toutes les tables InnoDB en InnoDB (lors de l&#039;ajout du parametre innodb_file_per_table=1 par exemple)&lt;br /&gt;
 for table in $(mysql --batch information_schema -e &amp;quot;select CONCAT(TABLE_SCHEMA,&#039;.&#039;,TABLE_NAME) FROM TABLES WHERE ENGINE=&#039;InnoDB&#039;;&amp;quot; | grep -v &amp;quot;CONCAT(TABLE_SCHEMA,&#039;.&#039;,TABLE_NAME)&amp;quot;)&lt;br /&gt;
 do&lt;br /&gt;
  mysql --batch -uadmin -p$(cat /etc/psa/.psa.shadow) -e &amp;quot;ALTER TABLE ${table} ENGINE=InnoDB;&amp;quot;&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
==SYSTEME==&lt;br /&gt;
beaucoup de connexions&lt;br /&gt;
 netstat -pant | grep -i esta | awk &#039;{print $5}&#039;| cut -d &amp;quot;:&amp;quot; -f 1| sort |uniq -c&lt;br /&gt;
fait le total d&#039;espace disque utilisé par les vhosts&lt;br /&gt;
 for i in `grep -i documentroot /opt/applis/httpd/conf/httpd.conf | grep -v &amp;quot;#&amp;quot;| awk &#039;{ print $2}&#039;`;do du -sh $i;done&lt;br /&gt;
fouiller un fichier de log entre 2 dates&lt;br /&gt;
 awk &#039;/Apr 1 11:00:00/,/Apr 1 16:15:00/{print}&#039; /var/log/httpd/httpd_access.log&lt;br /&gt;
 awk &#039;$0&amp;gt;=from&amp;amp;&amp;amp;$0&amp;lt;=to&#039; from=&amp;quot;Apr 1 11:00:00&amp;quot; to=&amp;quot;Apr 1 16:15:00&amp;quot; /var/log/httpd/httpd_access.log&lt;br /&gt;
Liste les répertoires et les trie par taille&lt;br /&gt;
 du -h --max-depth=1 | perl -e &#039;sub h{%h=(K=&amp;gt;10,M=&amp;gt;20,G=&amp;gt;30);($n,$u)=shift=~/([0-9.,]+)(\D)/; return $n*2**$h{$u}}print sort{h($b)&amp;lt;=&amp;gt;h($a)}&amp;lt;&amp;gt;;&#039;&lt;br /&gt;
tar over ssh&lt;br /&gt;
 tar zcvf - /path | ssh root@server &amp;quot;cat &amp;gt; /backup/wwwdata.tar.gz&amp;quot;&lt;br /&gt;
tar over ssh untar&lt;br /&gt;
 tar zcvf - /path/to/directory/ | ssh root@inrage.fr &amp;quot;cd /path/to/ &amp;amp;&amp;amp; tar zxvf - &amp;quot;&lt;br /&gt;
vitesse d&#039;un pipe&lt;br /&gt;
 command1 | cpipe -vt | command2&lt;br /&gt;
Linux force reboot (magical way)&lt;br /&gt;
 echo 1 &amp;gt; /proc/sys/kernel/sysrq&lt;br /&gt;
 echo b &amp;gt; /proc/sysrq-trigger&lt;br /&gt;
&lt;br /&gt;
==CHROOT==&lt;br /&gt;
Créer le nécessaire du chroot&lt;br /&gt;
 mount /dev/&amp;lt;devicepX&amp;gt; /mnt&lt;br /&gt;
 mount --bind /dev /mnt/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/dev/pts&lt;br /&gt;
 mount -t proc /proc /mnt/proc&lt;br /&gt;
 mount --bind /run  /mnt/run&lt;br /&gt;
 mount -t sysfs /sys /mnt/sys&lt;br /&gt;
 mount --bind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars &lt;br /&gt;
 chroot /mnt /bin/bash&lt;br /&gt;
&lt;br /&gt;
Démonter le tout&lt;br /&gt;
 umount /mnt/sys/firmware/efi/efivars &lt;br /&gt;
 umount /mnt/sys&lt;br /&gt;
 umount /mnt/run&lt;br /&gt;
 umount /mnt/proc&lt;br /&gt;
 umount /mnt/dev/pts&lt;br /&gt;
 umount /mnt/dev&lt;br /&gt;
 umount /mnt&lt;br /&gt;
&lt;br /&gt;
==IPTABLES==&lt;br /&gt;
diagramme de flux&lt;br /&gt;
&lt;br /&gt;
http://www.linuxchannel.net/board/board_files/alpha/phpIqSLS2/iptables.gif&lt;br /&gt;
===Base firewall===&lt;br /&gt;
 *filter&lt;br /&gt;
 :INPUT DROP [0:0]&lt;br /&gt;
 :FORWARD DROP [0:0]&lt;br /&gt;
 :OUTPUT DROP [0:0]&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Global Rules&amp;quot;&lt;br /&gt;
 -A INPUT -f -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP&lt;br /&gt;
 -A INPUT -m state --state INVALID -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --dport 25 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 50 --connlimit-mask 32 --connlimit-saddr -j DROP&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT&lt;br /&gt;
 -A INPUT -i lo -j ACCEPT&lt;br /&gt;
 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Public access Rules&amp;quot;&lt;br /&gt;
 -A INPUT -p tcp -m multiport --dports 25,80,110,143,443,465,587,993,995 -j ACCEPT&lt;br /&gt;
 -A INPUT -p udp -m udp --dport 53 -j ACCEPT&lt;br /&gt;
 -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Access Client&amp;quot;&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Dutiko : Admin &amp;amp; Monitoring&amp;quot;&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 62.210.45.142/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p tcp -m multiport --dport 21:22,5666,49152:49252 -m comment --comment &amp;quot;Supervision&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p udp -m udp --dport 161 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 62.210.45.133/32 -p tcp -m multiport --dport 22,9102 -m comment --comment &amp;quot;Backup&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.164/32 -p tcp -m multiport --dport 21:22,10000,49152:49252 -m comment --comment &amp;quot;VPN Dutiko&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.173/32 -p tcp -m multiport --dport 21:22,49152:49252 -m comment --comment &amp;quot;admin Dutiko&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 217.109.151.1/32 -p tcp -m tcp --dport 10000 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -o lo -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p icmp -j ACCEPT&lt;br /&gt;
 -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p tcp -m multiport --dports 21,25,80,443,465,587 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p udp -m multiport --dports 53,123 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p tcp -m tcp --dport 9103 -m comment --comment &amp;quot;Backup filers&amp;quot; -j ACCEPT&lt;br /&gt;
 COMMIT&lt;br /&gt;
&lt;br /&gt;
===Log du firewall===&lt;br /&gt;
 iptables -A INPUT -j LOG --log-prefix &amp;quot;firewall: &amp;quot; --log-level 7&lt;br /&gt;
rsyslogd&lt;br /&gt;
créer un fichier &#039;&#039;/etc/rsyslog.d/firewall.conf&#039;&#039; :&lt;br /&gt;
 :msg, contains, &amp;quot;firewall: &amp;quot; -/var/log/firewall.log&lt;br /&gt;
 &amp;amp; ~&lt;br /&gt;
Depuis rsyslog 7, il faut utiliser :&lt;br /&gt;
 if $msg contains &#039;firewall: &#039; then /var/log/firewall.log&lt;br /&gt;
 &amp;amp; stop&lt;br /&gt;
logrotate&lt;br /&gt;
 /var/log/firewall.log {&lt;br /&gt;
 	rotate 5&lt;br /&gt;
 	weekly&lt;br /&gt;
 	dateext&lt;br /&gt;
 	missingok&lt;br /&gt;
 	notifempty&lt;br /&gt;
 	compress&lt;br /&gt;
 	delaycompress&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Blacklist en masse===&lt;br /&gt;
utilisation = un des sed retire les connexion qui ont une patern de regex en nombre de connexion, ceux qui restent sont a bl (ici 60)--&lt;br /&gt;
 netstat -nt | grep &#039;:80&#039; | sed -e &#039;s/.*:80 //&#039; | sed -e &#039;s/:.*//&#039; | sort | uniq -c | grep -v 172.25.8.62 | grep -v 172.25.8.61 | grep  -v 172.25.8.60 | grep -v 10.252.5.74 | grep -v 10.252.5.25 | grep -v 217.174.192.246 | sed &#039;s/^ *[1-9] .*//g&#039; | sed &#039;s/^ *[1-5][0-9] .*//g&#039; | sed &#039;/^$/d&#039; | awk {&#039;print$2&#039;}  | sed &#039;/^[ ]*#\|#\|^$/! s/.*/network-object host &amp;amp;/&#039;&lt;br /&gt;
&lt;br /&gt;
==MAIL==&lt;br /&gt;
Clean mailq&lt;br /&gt;
 mailq | grep -B1 &amp;quot;Connection refused&amp;quot; | cut -d&amp;quot; &amp;quot; -f1 | grep -e &amp;quot;[A-Z][1-9]*&amp;quot; | xargs -L1 postsuper -d&lt;br /&gt;
 sendmail -qSMAILER-DAEMON -v -O Timeout.queuereturn=1s -O Timeout.connect=1s -O Timeout.ident=0s&lt;br /&gt;
relance force des mails :&lt;br /&gt;
 kill -ALRM &amp;lt;qmail-send pid&amp;gt;&lt;br /&gt;
Lire un fichier .db&lt;br /&gt;
 makemap -u hash /etc/mail/virtusertable.db&lt;br /&gt;
Nombre de mails par destinataires&lt;br /&gt;
 mailq|awk &#039;NR=3 {print $1}&#039;|awk -F &amp;quot;&amp;lt;&amp;quot; &#039;length($2)&amp;gt;0 {print $2}&#039;|sed &amp;quot;s/&amp;gt;//g&amp;quot;|sort|uniq -c|sort&lt;br /&gt;
Nombre de mails par domaine&lt;br /&gt;
 mailq|awk &#039;NR=3 {print $1}&#039;|awk -F &amp;quot;&amp;lt;&amp;quot; &#039;length($2)&amp;gt;0 {print tolower($2)}&#039;|sed &amp;quot;s/&amp;gt;//g&amp;quot;|awk -F &amp;quot;@&amp;quot; &#039;{print $2}&#039;|sort|uniq -c|sort&lt;br /&gt;
===SMTP en telnet===&lt;br /&gt;
 telnet serveur.com 25&lt;br /&gt;
 HELO agarik.com&lt;br /&gt;
 MAIL FROM: &amp;lt;sn4ky@sn4ky.net&amp;gt;&lt;br /&gt;
 RCPT TO: &amp;lt;sn4ky@sn4ky.net&amp;gt;&lt;br /&gt;
 DATA&lt;br /&gt;
 Subject: Sujet&lt;br /&gt;
 Message&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
encoder en base64 : http://ostermiller.org/calc/encode.html&lt;br /&gt;
&lt;br /&gt;
===IMAP en telnet===&lt;br /&gt;
&#039;&#039;inbox&#039;&#039; représente le nom du répertoire IMAP dans lequel on souhaite lire le mail&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;1&#039;&#039; représente le numéro du mail, par ordre d&#039;arrivée sur le serveur&lt;br /&gt;
 telnet serveur.com 143&lt;br /&gt;
 . LOGIN username ********&lt;br /&gt;
 . LIST &amp;quot;&amp;quot; &amp;quot;*&amp;quot;&lt;br /&gt;
 . SELECT inbox&lt;br /&gt;
 . FETCH 1 full&lt;br /&gt;
 . FETCH 1 BODY[TEXT]&lt;br /&gt;
 . LOGOUT&lt;br /&gt;
&lt;br /&gt;
source : http://bobpeers.com/technical/telnet_imap&lt;br /&gt;
&lt;br /&gt;
===POP en telnet===&lt;br /&gt;
 telnet serveur.com 110&lt;br /&gt;
 USER username&lt;br /&gt;
 PASS ********&lt;br /&gt;
 LIST&lt;br /&gt;
 TOP 1&lt;br /&gt;
 RETR 1&lt;br /&gt;
 DELE 1&lt;br /&gt;
 QUIT&lt;br /&gt;
&lt;br /&gt;
==APACHE==&lt;br /&gt;
===Rediriger entièrement en SSL===&lt;br /&gt;
 RewriteCond %{HTTPS} off&lt;br /&gt;
 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}&lt;br /&gt;
&lt;br /&gt;
===Interdire la navigation des robots===&lt;br /&gt;
 Header set X-Robots-Tag &amp;quot;noindex, noarchive, nosniff, nofollow&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==SWAP==&lt;br /&gt;
Modifier la manière dont le kernel va utiliser la mémoire SWAP, on va modifier le paramètre système vm.swappiness. Ce paramètre exprime l&#039;agressivité du noyau à utiliser l&#039;espace de pagination (SWAP) pour les processus réalisant peu d&#039;échanges mémoire.&lt;br /&gt;
&lt;br /&gt;
La valeur exprimée est un pourcentage. &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; corresponds à une utilisation la plus faible possible de SWAP (quasi inexistante), tandis que &amp;lt;code&amp;gt;100&amp;lt;/code&amp;gt; corresponds à une utilisation maximale de la SWAP.&lt;br /&gt;
&lt;br /&gt;
Pour connaitre sa valeur actuelle&lt;br /&gt;
 cat /proc/sys/vm/swappiness&lt;br /&gt;
&lt;br /&gt;
Pour modifier à la volée&lt;br /&gt;
 sysctl vm.swappiness=XX&lt;br /&gt;
(Il faut désactiver et réactiver totalement les espaces SWAP pour prendre en compte la valeur)&lt;br /&gt;
 swapoff -av&lt;br /&gt;
 swapon -av &lt;br /&gt;
Pour rendre le paramètre actif dès le boot, rajouter &amp;lt;code&amp;gt;vm.swappiness=XX&amp;lt;/code&amp;gt; dans le fichier &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Script pour connaitre les processus qui swappent :&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # Get current swap usage for all running processes&lt;br /&gt;
 # Erik Ljungstrom 27/05/2011&lt;br /&gt;
 SUM=0&lt;br /&gt;
 OVERALL=0&lt;br /&gt;
 for DIR in `find /proc/ -maxdepth 1 -type d | egrep &amp;quot;^/proc/[0-9]&amp;quot;` ; do&lt;br /&gt;
 PID=`echo $DIR | cut -d / -f 3`&lt;br /&gt;
 PROGNAME=`ps -p $PID -o comm --no-headers`&lt;br /&gt;
 for SWAP in `grep Swap $DIR/smaps 2&amp;gt;/dev/null| awk &#039;{ print $2 }&#039;` ; do&lt;br /&gt;
 let SUM=$SUM+$SWAP&lt;br /&gt;
 done&lt;br /&gt;
 echo &amp;quot;PID=$PID - Swap used: $SUM - ($PROGNAME )&amp;quot;&lt;br /&gt;
 let OVERALL=$OVERALL+$SUM&lt;br /&gt;
 SUM=0&lt;br /&gt;
 done  | grep -v &amp;quot;Swap used: 0 &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Nouveaux Kernels&lt;br /&gt;
Script pour connaitre les processus qui swappent :&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # Get current swap usage for all running processes&lt;br /&gt;
 # Erik Ljungstrom 27/05/2011&lt;br /&gt;
 SUM=0&lt;br /&gt;
 OVERALL=0&lt;br /&gt;
 for DIR in `find /proc/ -maxdepth 1 -type d | egrep &amp;quot;^/proc/[0-9]&amp;quot;` ; do&lt;br /&gt;
 PID=`echo $DIR | cut -d / -f 3`&lt;br /&gt;
 PROGNAME=`ps -p $PID -o comm --no-headers`&lt;br /&gt;
 for SWAP in `grep VmSwap $DIR/status 2&amp;gt;/dev/null| awk &#039;{ print $2 }&#039;` ; do&lt;br /&gt;
 let SUM=$SUM+$SWAP&lt;br /&gt;
 done&lt;br /&gt;
 echo &amp;quot;PID=$PID - Swap used: $SUM - ($PROGNAME )&amp;quot;&lt;br /&gt;
 let OVERALL=$OVERALL+$SUM&lt;br /&gt;
 SUM=0&lt;br /&gt;
 done  | grep -v &amp;quot;Swap used: 0 &amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Limite sur le nombre de fichiers ouverts==&lt;br /&gt;
Sur Linux, il existe un paramètre permettant de limiter le nombre de fichiers ouverts par un utilisateur. Il s&#039;agit du paramètre &amp;lt;code&amp;gt;ulimit&amp;lt;/code&amp;gt;. La valeur par défaut de ce paramètre est usuellement de 1024.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $ ulimit -a #liste les paramètres kernel des limites&lt;br /&gt;
 $ ulimit -n #affiche la limite du nombre de fichiers ouverts&lt;br /&gt;
 # ulimit -n 65535 #augmente la limite du nombre de fichiers à 65535 pour l&#039;utilisateur courant&lt;br /&gt;
&lt;br /&gt;
Modifier ce paramètre ne le modifie qu&#039;en &amp;quot;mou&amp;quot;. il n&#039;est valide que pour la session courante de l&#039;utilisateur en cours.&lt;br /&gt;
&lt;br /&gt;
Pour que cette modification soit permanente, il faut procéder à quelques ajustements :&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier &amp;lt;code&amp;gt;/etc/pam.d/common-session&amp;lt;/code&amp;gt; pour y insérer la ligne :&lt;br /&gt;
 session required pam_limits.so&lt;br /&gt;
Puis éditer le fichier &amp;lt;code&amp;gt;/etc/security/limits.conf&amp;lt;/code&amp;gt; pour procéder aux ajustements :&lt;br /&gt;
 user      soft     nofile     131070&lt;br /&gt;
 user      hard     nofile     262140&lt;br /&gt;
D&#039;autres modification peuvent être effectuées, se référer à &amp;lt;code&amp;gt;man 5 limits.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DUMMY RPM==&lt;br /&gt;
php-5.2.14-1.spec&lt;br /&gt;
 ###############################################################################&lt;br /&gt;
 Summary : Dummy php 5.2.14-1&lt;br /&gt;
 Name: Agarik-php&lt;br /&gt;
 Version: 5.2.14&lt;br /&gt;
 Release: 1&lt;br /&gt;
 License: GPL&lt;br /&gt;
 Group: Services&lt;br /&gt;
 Source: agarik.com&lt;br /&gt;
 URL: http://www.agarik.com&lt;br /&gt;
 BuildArch: noarch&lt;br /&gt;
 Provides: php-5.2.14-1&lt;br /&gt;
 &lt;br /&gt;
 %description&lt;br /&gt;
 Ceci est un dummy package pour le service &amp;lt;service-version&amp;gt; installé par Agarik&lt;br /&gt;
 %files&lt;br /&gt;
 ###############################################################################&lt;br /&gt;
&lt;br /&gt;
 rpmbuild -bb php-5.2.14-1.spec&lt;br /&gt;
 rpm -U /usr/src/redhat/RPMS/noarch/Agarik-php-5.2.14-1.noarch.rpm&lt;br /&gt;
&lt;br /&gt;
==7Zip script==&lt;br /&gt;
===compress tous les fichiers d&#039;un répertoire===&lt;br /&gt;
 @ECHO OFF&lt;br /&gt;
 FOR /F &amp;quot;usebackq delims==&amp;quot; %%y IN (`dir /b *.log`) DO CALL :compress %%~ny&lt;br /&gt;
 GOTO :fin&lt;br /&gt;
 :compress&lt;br /&gt;
 C:\&amp;quot;Program Files&amp;quot;\7-Zip\7z.exe a %1.zip %1.log&lt;br /&gt;
 del %1.log&lt;br /&gt;
 GOTO :eof&lt;br /&gt;
 :fin&lt;br /&gt;
 ECHO tous les fichiers ont ete traites...&lt;br /&gt;
&lt;br /&gt;
==MEGACLI==&lt;br /&gt;
 MegaCli -LDInfo -LALL -aALL ; donne infos essentiels&lt;br /&gt;
 MegaCli -LDSetProp ADRA -LALL -AALL ; passe le cache &amp;quot;Read Policy&amp;quot; en readadaptative&lt;br /&gt;
 MegaCli -LDSetProp WB -LALL -AALL ; passe le cache &amp;quot;Write Policy&amp;quot; en write back&lt;br /&gt;
 MegaCli -LDSetProp cached -LALL -AALL ; passe le cache en cached&lt;br /&gt;
 MegaCli -AdpBbuCmd -BBuLearn -a0 ; lance un relearn de la batterie&lt;br /&gt;
 MegaCli -AdpBbuCmd -GetBbuCapacityInfo  -aALL ; vérifie si la batterie est en charge ou pas&lt;br /&gt;
 MegaCli -AdpAllInfo -aALL ; info general du contolleur&lt;br /&gt;
 MegaCli -PDList -aALL ; info disques&lt;br /&gt;
 MegaCli -CfgDsply -aALL ; info sur la conf array / disques&lt;br /&gt;
 MegaCli -AdpEventLog -GetEvents -f events.log -aALL ; dumpe les logs de la carte dans events.log&lt;br /&gt;
 MegaCli -PdLocate -start -physdrv \[32:0\] -a0 ; faire blink la led du disque 32:0&lt;br /&gt;
Smartctl sur MegaCli :&lt;br /&gt;
 smartctl -a -d megaraid,N  /dev/sda&lt;br /&gt;
N représente le DeviceID sur le contrôlleur, a récupérer avec un PDlist&lt;br /&gt;
&lt;br /&gt;
==STORCLI==&lt;br /&gt;
lister tous les disques du controler 0&lt;br /&gt;
 storcli /c0 /eall /sall show&lt;br /&gt;
Smartctl sur storcli :&lt;br /&gt;
 smartctl -a -d megaraid,N  /dev/sda&lt;br /&gt;
N représente le DID sur le contrôlleur&lt;br /&gt;
allumer la led du disque&lt;br /&gt;
 storcli /c0 /e250 /s7 start locate&lt;br /&gt;
&lt;br /&gt;
==Similitudes commandes UNIX/LINUX/AIX==&lt;br /&gt;
http://bhami.com/rosetta.html&lt;br /&gt;
&lt;br /&gt;
== IPMI ==&lt;br /&gt;
A faire lorsque le process kipmi0 prends 100% de CPU et que le load monte en conséquence&lt;br /&gt;
 echo &amp;quot;remove,kcs,i/o,0xca8,rsp=4,rsi=1,rsh=0,irq=0,ipmb=0&amp;quot; &amp;gt; /sys/module/ipmi_si/parameters/hotmod&lt;br /&gt;
 echo &amp;quot;add,kcs,i/o,0xca8,rsp=4,rsi=1,rsh=0,irq=0,ipmb=0&amp;quot; &amp;gt; /sys/module/ipmi_si/parameters/hotmod&lt;br /&gt;
&lt;br /&gt;
==Fail2Ban==&lt;br /&gt;
===simple jail to ban known bad url===&lt;br /&gt;
 [apache-badurl]&lt;br /&gt;
 enabled = true&lt;br /&gt;
 &lt;br /&gt;
 failregex = ^&amp;lt;HOST&amp;gt; -.*&amp;quot;(GET|POST|HEAD) (/)+(ios|wp-).*&amp;quot;$&lt;br /&gt;
 ignoreregex =&lt;br /&gt;
 datepattern = ^[^\[]*\[({DATE})&lt;br /&gt;
               {^LN-BEG}&lt;br /&gt;
 action   = iptables-multiport[name=BadUrl, port=&amp;quot;http,https,7080,7081&amp;quot;]&lt;br /&gt;
 logpath  = /var/www/vhosts/system/domain.com/logs/access_ssl_log&lt;br /&gt;
 bantime  = 48h&lt;br /&gt;
 maxretry = 1&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Tips_syst%C3%A8mes&amp;diff=95</id>
		<title>Tips systèmes</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Tips_syst%C3%A8mes&amp;diff=95"/>
		<updated>2024-09-20T08:37:16Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liens externe ==&lt;br /&gt;
https://jeznet.org/Wiki/CodeSnippets&lt;br /&gt;
==MYSQL==&lt;br /&gt;
Créer compte user :&lt;br /&gt;
 CREATE USER &amp;lt;user&amp;gt; IDENTIFIED BY &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
créer un compte utilisateur + database&lt;br /&gt;
 GRANT ALL PRIVILEGES ON &amp;lt;database&amp;gt;.* TO &#039;&amp;lt;user&amp;gt;&#039;@&#039;&amp;lt;host&amp;gt;&#039; IDENTIFIED BY &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON &amp;lt;database&amp;gt;.* TO &#039;&amp;lt;user&amp;gt;&#039;@&#039;&amp;lt;host&amp;gt;&#039; IDENTIFIED BY PASSWORD &#039;*&amp;lt;password_hash&amp;gt;&#039;;&lt;br /&gt;
voir les comptes utilisateurs&lt;br /&gt;
 select host, user, password from mysql.user;&lt;br /&gt;
dumper une base et la compresser a la volée&lt;br /&gt;
 mysqldump -h $HOST -u $USER -p $DATABASE | gzip &amp;gt; dump_$DATABASE.sql.gz&lt;br /&gt;
importer dans MySQL une base gzippée&lt;br /&gt;
 gunzip -c &amp;lt; dump_$DATABASE.sql.gz | mysql -h $HOST -u $USER -p $DATABASE&lt;br /&gt;
Import MySQL over SSH&lt;br /&gt;
 ssh $HOST &amp;quot;mysqldump -u $USER1 -p$PASS1 $DB1&amp;quot; | mysql -u$USER2 -p$PASS2 $DB2&lt;br /&gt;
Import GZIP MySQL over SSH On the fly&lt;br /&gt;
 ssh $HOST &amp;quot;mysqldump -u $USER1 -p$PASS1 $DB1 | gzip&amp;quot; | gunzip -c | mysql -u$USER2 -p$PASS2 $DB2&lt;br /&gt;
Dump MySQL Database, compress, export, and import - One liner&lt;br /&gt;
 mysqldump -u $USER1 -p$PASS1 $DB1 | pigz | ssh $HOST &amp;quot;gunzip -c | mysql -u$USER2 -p$PASS2 $DB2&amp;quot;&lt;br /&gt;
Obtenir la taille de toutes les bases de données&lt;br /&gt;
 SELECT table_schema &amp;quot;DB Name&amp;quot;, &lt;br /&gt;
 Round(Sum(data_length + index_length) / 1024 / 1024, 1) &amp;quot;DB Size in MB&amp;quot; &lt;br /&gt;
 FROM   information_schema.tables &lt;br /&gt;
 GROUP  BY table_schema;&lt;br /&gt;
Obtenir la taille d&#039;UNE base de données mentionnée&lt;br /&gt;
 SELECT table_schema &amp;quot;DB Name&amp;quot;, &lt;br /&gt;
 Round(Sum(data_length + index_length) / 1024 / 1024, 1) &amp;quot;DB Size in MB&amp;quot; &lt;br /&gt;
 FROM   information_schema.tables&lt;br /&gt;
 WHERE table_schema = &amp;quot;YOUR_DATABASE_NAME&amp;quot;  &lt;br /&gt;
 GROUP  BY table_schema;&lt;br /&gt;
Convertir toutes les tables InnoDB en InnoDB (lors de l&#039;ajout du parametre innodb_file_per_table=1 par exemple)&lt;br /&gt;
 for table in $(mysql --batch information_schema -e &amp;quot;select CONCAT(TABLE_SCHEMA,&#039;.&#039;,TABLE_NAME) FROM TABLES WHERE ENGINE=&#039;InnoDB&#039;;&amp;quot; | grep -v &amp;quot;CONCAT(TABLE_SCHEMA,&#039;.&#039;,TABLE_NAME)&amp;quot;)&lt;br /&gt;
 do&lt;br /&gt;
  mysql --batch -uadmin -p$(cat /etc/psa/.psa.shadow) -e &amp;quot;ALTER TABLE ${table} ENGINE=InnoDB;&amp;quot;&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
==SYSTEME==&lt;br /&gt;
beaucoup de connexions&lt;br /&gt;
 netstat -pant | grep -i esta | awk &#039;{print $5}&#039;| cut -d &amp;quot;:&amp;quot; -f 1| sort |uniq -c&lt;br /&gt;
fait le total d&#039;espace disque utilisé par les vhosts&lt;br /&gt;
 for i in `grep -i documentroot /opt/applis/httpd/conf/httpd.conf | grep -v &amp;quot;#&amp;quot;| awk &#039;{ print $2}&#039;`;do du -sh $i;done&lt;br /&gt;
fouiller un fichier de log entre 2 dates&lt;br /&gt;
 awk &#039;/Apr 1 11:00:00/,/Apr 1 16:15:00/{print}&#039; /var/log/httpd/httpd_access.log&lt;br /&gt;
 awk &#039;$0&amp;gt;=from&amp;amp;&amp;amp;$0&amp;lt;=to&#039; from=&amp;quot;Apr 1 11:00:00&amp;quot; to=&amp;quot;Apr 1 16:15:00&amp;quot; /var/log/httpd/httpd_access.log&lt;br /&gt;
Liste les répertoires et les trie par taille&lt;br /&gt;
 du -h --max-depth=1 | perl -e &#039;sub h{%h=(K=&amp;gt;10,M=&amp;gt;20,G=&amp;gt;30);($n,$u)=shift=~/([0-9.,]+)(\D)/; return $n*2**$h{$u}}print sort{h($b)&amp;lt;=&amp;gt;h($a)}&amp;lt;&amp;gt;;&#039;&lt;br /&gt;
tar over ssh&lt;br /&gt;
 tar zcvf - /path | ssh root@server &amp;quot;cat &amp;gt; /backup/wwwdata.tar.gz&amp;quot;&lt;br /&gt;
tar over ssh untar&lt;br /&gt;
 tar zcvf - /path/to/directory/ | ssh root@inrage.fr &amp;quot;cd /path/to/ &amp;amp;&amp;amp; tar zxvf - &amp;quot;&lt;br /&gt;
vitesse d&#039;un pipe&lt;br /&gt;
 command1 | cpipe -vt | command2&lt;br /&gt;
Linux force reboot (magical way)&lt;br /&gt;
 echo 1 &amp;gt; /proc/sys/kernel/sysrq&lt;br /&gt;
 echo b &amp;gt; /proc/sysrq-trigger&lt;br /&gt;
&lt;br /&gt;
==CHROOT==&lt;br /&gt;
Créer le nécessaire du chroot&lt;br /&gt;
 mount /dev/&amp;lt;devicepX&amp;gt; /mnt&lt;br /&gt;
 mount --bind /dev /mnt/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/dev/pts&lt;br /&gt;
 mount -t proc /proc /mnt/proc&lt;br /&gt;
 mount --bind /run  /mnt/run&lt;br /&gt;
 mount -t sysfs /sys /mnt/sys&lt;br /&gt;
 mount --bind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars &lt;br /&gt;
 chroot /mnt /bin/bash&lt;br /&gt;
&lt;br /&gt;
Démonter le tout&lt;br /&gt;
 umount /mnt/sys/firmware/efi/efivars &lt;br /&gt;
 umount /mnt/sys&lt;br /&gt;
 umount /mnt/run&lt;br /&gt;
 umount /mnt/proc&lt;br /&gt;
 umount /mnt/dev/pts&lt;br /&gt;
 umount /mnt/dev&lt;br /&gt;
 umount /mnt&lt;br /&gt;
&lt;br /&gt;
==IPTABLES==&lt;br /&gt;
diagramme de flux&lt;br /&gt;
&lt;br /&gt;
http://www.linuxchannel.net/board/board_files/alpha/phpIqSLS2/iptables.gif&lt;br /&gt;
===Base firewall===&lt;br /&gt;
 *filter&lt;br /&gt;
 :INPUT DROP [0:0]&lt;br /&gt;
 :FORWARD DROP [0:0]&lt;br /&gt;
 :OUTPUT DROP [0:0]&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Global Rules&amp;quot;&lt;br /&gt;
 -A INPUT -f -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP&lt;br /&gt;
 -A INPUT -m state --state INVALID -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --dport 25 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 50 --connlimit-mask 32 --connlimit-saddr -j DROP&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT&lt;br /&gt;
 -A INPUT -i lo -j ACCEPT&lt;br /&gt;
 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Public access Rules&amp;quot;&lt;br /&gt;
 -A INPUT -p tcp -m multiport --dports 25,80,110,143,443,465,587,993,995 -j ACCEPT&lt;br /&gt;
 -A INPUT -p udp -m udp --dport 53 -j ACCEPT&lt;br /&gt;
 -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Access Client&amp;quot;&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Dutiko : Admin &amp;amp; Monitoring&amp;quot;&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 62.210.45.142/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p tcp -m multiport --dport 21:22,5666,49152:49252 -m comment --comment &amp;quot;Supervision&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p udp -m udp --dport 161 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 62.210.45.133/32 -p tcp -m multiport --dport 22,9102 -m comment --comment &amp;quot;Backup&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.164/32 -p tcp -m multiport --dport 21:22,10000,49152:49252 -m comment --comment &amp;quot;VPN Dutiko&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.173/32 -p tcp -m multiport --dport 21:22,49152:49252 -m comment --comment &amp;quot;admin Dutiko&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 217.109.151.1/32 -p tcp -m tcp --dport 10000 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -o lo -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p icmp -j ACCEPT&lt;br /&gt;
 -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p tcp -m multiport --dports 21,25,80,443,465,587 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p udp -m multiport --dports 53,123 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p tcp -m tcp --dport 9103 -m comment --comment &amp;quot;Backup filers&amp;quot; -j ACCEPT&lt;br /&gt;
 COMMIT&lt;br /&gt;
&lt;br /&gt;
===Log du firewall===&lt;br /&gt;
 iptables -A INPUT -j LOG --log-prefix &amp;quot;firewall: &amp;quot; --log-level 7&lt;br /&gt;
rsyslogd&lt;br /&gt;
créer un fichier &#039;&#039;/etc/rsyslog.d/firewall.conf&#039;&#039; :&lt;br /&gt;
 :msg, contains, &amp;quot;firewall: &amp;quot; -/var/log/firewall.log&lt;br /&gt;
 &amp;amp; ~&lt;br /&gt;
Depuis rsyslog 7, il faut utiliser :&lt;br /&gt;
 if $msg contains &#039;firewall: &#039; then /var/log/firewall.log&lt;br /&gt;
 &amp;amp; stop&lt;br /&gt;
logrotate&lt;br /&gt;
 /var/log/firewall.log {&lt;br /&gt;
 	rotate 5&lt;br /&gt;
 	weekly&lt;br /&gt;
 	dateext&lt;br /&gt;
 	missingok&lt;br /&gt;
 	notifempty&lt;br /&gt;
 	compress&lt;br /&gt;
 	delaycompress&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Blacklist en masse===&lt;br /&gt;
utilisation = un des sed retire les connexion qui ont une patern de regex en nombre de connexion, ceux qui restent sont a bl (ici 60)--&lt;br /&gt;
 netstat -nt | grep &#039;:80&#039; | sed -e &#039;s/.*:80 //&#039; | sed -e &#039;s/:.*//&#039; | sort | uniq -c | grep -v 172.25.8.62 | grep -v 172.25.8.61 | grep  -v 172.25.8.60 | grep -v 10.252.5.74 | grep -v 10.252.5.25 | grep -v 217.174.192.246 | sed &#039;s/^ *[1-9] .*//g&#039; | sed &#039;s/^ *[1-5][0-9] .*//g&#039; | sed &#039;/^$/d&#039; | awk {&#039;print$2&#039;}  | sed &#039;/^[ ]*#\|#\|^$/! s/.*/network-object host &amp;amp;/&#039;&lt;br /&gt;
&lt;br /&gt;
==MAIL==&lt;br /&gt;
Clean mailq&lt;br /&gt;
 mailq | grep -B1 &amp;quot;Connection refused&amp;quot; | cut -d&amp;quot; &amp;quot; -f1 | grep -e &amp;quot;[A-Z][1-9]*&amp;quot; | xargs -L1 postsuper -d&lt;br /&gt;
 sendmail -qSMAILER-DAEMON -v -O Timeout.queuereturn=1s -O Timeout.connect=1s -O Timeout.ident=0s&lt;br /&gt;
relance force des mails :&lt;br /&gt;
 kill -ALRM &amp;lt;qmail-send pid&amp;gt;&lt;br /&gt;
Lire un fichier .db&lt;br /&gt;
 makemap -u hash /etc/mail/virtusertable.db&lt;br /&gt;
Nombre de mails par destinataires&lt;br /&gt;
 mailq|awk &#039;NR=3 {print $1}&#039;|awk -F &amp;quot;&amp;lt;&amp;quot; &#039;length($2)&amp;gt;0 {print $2}&#039;|sed &amp;quot;s/&amp;gt;//g&amp;quot;|sort|uniq -c|sort&lt;br /&gt;
Nombre de mails par domaine&lt;br /&gt;
 mailq|awk &#039;NR=3 {print $1}&#039;|awk -F &amp;quot;&amp;lt;&amp;quot; &#039;length($2)&amp;gt;0 {print tolower($2)}&#039;|sed &amp;quot;s/&amp;gt;//g&amp;quot;|awk -F &amp;quot;@&amp;quot; &#039;{print $2}&#039;|sort|uniq -c|sort&lt;br /&gt;
===SMTP en telnet===&lt;br /&gt;
 telnet serveur.com 25&lt;br /&gt;
 HELO agarik.com&lt;br /&gt;
 MAIL FROM: &amp;lt;sn4ky@sn4ky.net&amp;gt;&lt;br /&gt;
 RCPT TO: &amp;lt;sn4ky@sn4ky.net&amp;gt;&lt;br /&gt;
 DATA&lt;br /&gt;
 Subject: Sujet&lt;br /&gt;
 Message&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
encoder en base64 : http://ostermiller.org/calc/encode.html&lt;br /&gt;
&lt;br /&gt;
===IMAP en telnet===&lt;br /&gt;
&#039;&#039;inbox&#039;&#039; représente le nom du répertoire IMAP dans lequel on souhaite lire le mail&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;1&#039;&#039; représente le numéro du mail, par ordre d&#039;arrivée sur le serveur&lt;br /&gt;
 telnet serveur.com 143&lt;br /&gt;
 . LOGIN username ********&lt;br /&gt;
 . LIST &amp;quot;&amp;quot; &amp;quot;*&amp;quot;&lt;br /&gt;
 . SELECT inbox&lt;br /&gt;
 . FETCH 1 full&lt;br /&gt;
 . FETCH 1 BODY[TEXT]&lt;br /&gt;
 . LOGOUT&lt;br /&gt;
&lt;br /&gt;
source : http://bobpeers.com/technical/telnet_imap&lt;br /&gt;
&lt;br /&gt;
===POP en telnet===&lt;br /&gt;
 telnet serveur.com 110&lt;br /&gt;
 USER username&lt;br /&gt;
 PASS ********&lt;br /&gt;
 LIST&lt;br /&gt;
 TOP 1&lt;br /&gt;
 RETR 1&lt;br /&gt;
 DELE 1&lt;br /&gt;
 QUIT&lt;br /&gt;
&lt;br /&gt;
==APACHE==&lt;br /&gt;
===Rediriger entièrement en SSL===&lt;br /&gt;
 RewriteCond %{HTTPS} off&lt;br /&gt;
 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}&lt;br /&gt;
&lt;br /&gt;
===Interdire la navigation des robots===&lt;br /&gt;
 Header set X-Robots-Tag &amp;quot;noindex, noarchive, nosniff, nofollow&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==SWAP==&lt;br /&gt;
Modifier la manière dont le kernel va utiliser la mémoire SWAP, on va modifier le paramètre système vm.swappiness. Ce paramètre exprime l&#039;agressivité du noyau à utiliser l&#039;espace de pagination (SWAP) pour les processus réalisant peu d&#039;échanges mémoire.&lt;br /&gt;
&lt;br /&gt;
La valeur exprimée est un pourcentage. &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; corresponds à une utilisation la plus faible possible de SWAP (quasi inexistante), tandis que &amp;lt;code&amp;gt;100&amp;lt;/code&amp;gt; corresponds à une utilisation maximale de la SWAP.&lt;br /&gt;
&lt;br /&gt;
Pour connaitre sa valeur actuelle&lt;br /&gt;
 cat /proc/sys/vm/swappiness&lt;br /&gt;
&lt;br /&gt;
Pour modifier à la volée&lt;br /&gt;
 sysctl vm.swappiness=XX&lt;br /&gt;
(Il faut désactiver et réactiver totalement les espaces SWAP pour prendre en compte la valeur)&lt;br /&gt;
 swapoff -av&lt;br /&gt;
 swapon -av &lt;br /&gt;
Pour rendre le paramètre actif dès le boot, rajouter &amp;lt;code&amp;gt;vm.swappiness=XX&amp;lt;/code&amp;gt; dans le fichier &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Script pour connaitre les processus qui swappent :&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # Get current swap usage for all running processes&lt;br /&gt;
 # Erik Ljungstrom 27/05/2011&lt;br /&gt;
 SUM=0&lt;br /&gt;
 OVERALL=0&lt;br /&gt;
 for DIR in `find /proc/ -maxdepth 1 -type d | egrep &amp;quot;^/proc/[0-9]&amp;quot;` ; do&lt;br /&gt;
 PID=`echo $DIR | cut -d / -f 3`&lt;br /&gt;
 PROGNAME=`ps -p $PID -o comm --no-headers`&lt;br /&gt;
 for SWAP in `grep Swap $DIR/smaps 2&amp;gt;/dev/null| awk &#039;{ print $2 }&#039;` ; do&lt;br /&gt;
 let SUM=$SUM+$SWAP&lt;br /&gt;
 done&lt;br /&gt;
 echo &amp;quot;PID=$PID - Swap used: $SUM - ($PROGNAME )&amp;quot;&lt;br /&gt;
 let OVERALL=$OVERALL+$SUM&lt;br /&gt;
 SUM=0&lt;br /&gt;
 done  | grep -v &amp;quot;Swap used: 0 &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Nouveaux Kernels&lt;br /&gt;
Script pour connaitre les processus qui swappent :&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # Get current swap usage for all running processes&lt;br /&gt;
 # Erik Ljungstrom 27/05/2011&lt;br /&gt;
 SUM=0&lt;br /&gt;
 OVERALL=0&lt;br /&gt;
 for DIR in `find /proc/ -maxdepth 1 -type d | egrep &amp;quot;^/proc/[0-9]&amp;quot;` ; do&lt;br /&gt;
 PID=`echo $DIR | cut -d / -f 3`&lt;br /&gt;
 PROGNAME=`ps -p $PID -o comm --no-headers`&lt;br /&gt;
 for SWAP in `grep VmSwap $DIR/status 2&amp;gt;/dev/null| awk &#039;{ print $2 }&#039;` ; do&lt;br /&gt;
 let SUM=$SUM+$SWAP&lt;br /&gt;
 done&lt;br /&gt;
 echo &amp;quot;PID=$PID - Swap used: $SUM - ($PROGNAME )&amp;quot;&lt;br /&gt;
 let OVERALL=$OVERALL+$SUM&lt;br /&gt;
 SUM=0&lt;br /&gt;
 done  | grep -v &amp;quot;Swap used: 0 &amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Limite sur le nombre de fichiers ouverts==&lt;br /&gt;
Sur Linux, il existe un paramètre permettant de limiter le nombre de fichiers ouverts par un utilisateur. Il s&#039;agit du paramètre &amp;lt;code&amp;gt;ulimit&amp;lt;/code&amp;gt;. La valeur par défaut de ce paramètre est usuellement de 1024.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $ ulimit -a #liste les paramètres kernel des limites&lt;br /&gt;
 $ ulimit -n #affiche la limite du nombre de fichiers ouverts&lt;br /&gt;
 # ulimit -n 65535 #augmente la limite du nombre de fichiers à 65535 pour l&#039;utilisateur courant&lt;br /&gt;
&lt;br /&gt;
Modifier ce paramètre ne le modifie qu&#039;en &amp;quot;mou&amp;quot;. il n&#039;est valide que pour la session courante de l&#039;utilisateur en cours.&lt;br /&gt;
&lt;br /&gt;
Pour que cette modification soit permanente, il faut procéder à quelques ajustements :&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier &amp;lt;code&amp;gt;/etc/pam.d/common-session&amp;lt;/code&amp;gt; pour y insérer la ligne :&lt;br /&gt;
 session required pam_limits.so&lt;br /&gt;
Puis éditer le fichier &amp;lt;code&amp;gt;/etc/security/limits.conf&amp;lt;/code&amp;gt; pour procéder aux ajustements :&lt;br /&gt;
 user      soft     nofile     131070&lt;br /&gt;
 user      hard     nofile     262140&lt;br /&gt;
D&#039;autres modification peuvent être effectuées, se référer à &amp;lt;code&amp;gt;man 5 limits.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DUMMY RPM==&lt;br /&gt;
php-5.2.14-1.spec&lt;br /&gt;
 ###############################################################################&lt;br /&gt;
 Summary : Dummy php 5.2.14-1&lt;br /&gt;
 Name: Agarik-php&lt;br /&gt;
 Version: 5.2.14&lt;br /&gt;
 Release: 1&lt;br /&gt;
 License: GPL&lt;br /&gt;
 Group: Services&lt;br /&gt;
 Source: agarik.com&lt;br /&gt;
 URL: http://www.agarik.com&lt;br /&gt;
 BuildArch: noarch&lt;br /&gt;
 Provides: php-5.2.14-1&lt;br /&gt;
 &lt;br /&gt;
 %description&lt;br /&gt;
 Ceci est un dummy package pour le service &amp;lt;service-version&amp;gt; installé par Agarik&lt;br /&gt;
 %files&lt;br /&gt;
 ###############################################################################&lt;br /&gt;
&lt;br /&gt;
 rpmbuild -bb php-5.2.14-1.spec&lt;br /&gt;
 rpm -U /usr/src/redhat/RPMS/noarch/Agarik-php-5.2.14-1.noarch.rpm&lt;br /&gt;
&lt;br /&gt;
==7Zip script==&lt;br /&gt;
===compress tous les fichiers d&#039;un répertoire===&lt;br /&gt;
 @ECHO OFF&lt;br /&gt;
 FOR /F &amp;quot;usebackq delims==&amp;quot; %%y IN (`dir /b *.log`) DO CALL :compress %%~ny&lt;br /&gt;
 GOTO :fin&lt;br /&gt;
 :compress&lt;br /&gt;
 C:\&amp;quot;Program Files&amp;quot;\7-Zip\7z.exe a %1.zip %1.log&lt;br /&gt;
 del %1.log&lt;br /&gt;
 GOTO :eof&lt;br /&gt;
 :fin&lt;br /&gt;
 ECHO tous les fichiers ont ete traites...&lt;br /&gt;
&lt;br /&gt;
==MEGACLI==&lt;br /&gt;
 MegaCli -LDInfo -LALL -aALL ; donne infos essentiels&lt;br /&gt;
 MegaCli -LDSetProp ADRA -LALL -AALL ; passe le cache &amp;quot;Read Policy&amp;quot; en readadaptative&lt;br /&gt;
 MegaCli -LDSetProp WB -LALL -AALL ; passe le cache &amp;quot;Write Policy&amp;quot; en write back&lt;br /&gt;
 MegaCli -LDSetProp cached -LALL -AALL ; passe le cache en cached&lt;br /&gt;
 MegaCli -AdpBbuCmd -BBuLearn -a0 ; lance un relearn de la batterie&lt;br /&gt;
 MegaCli -AdpBbuCmd -GetBbuCapacityInfo  -aALL ; vérifie si la batterie est en charge ou pas&lt;br /&gt;
 MegaCli -AdpAllInfo -aALL ; info general du contolleur&lt;br /&gt;
 MegaCli -PDList -aALL ; info disques&lt;br /&gt;
 MegaCli -CfgDsply -aALL ; info sur la conf array / disques&lt;br /&gt;
 MegaCli -AdpEventLog -GetEvents -f events.log -aALL ; dumpe les logs de la carte dans events.log&lt;br /&gt;
 MegaCli -PdLocate -start -physdrv \[32:0\] -a0 ; faire blink la led du disque 32:0&lt;br /&gt;
Smartctl sur MegaCli :&lt;br /&gt;
 smartctl -a -d megaraid,N  /dev/sda&lt;br /&gt;
N représente le DeviceID sur le contrôlleur, a récupérer avec un PDlist&lt;br /&gt;
&lt;br /&gt;
==STORCLI==&lt;br /&gt;
lister tous les disques du controler 0&lt;br /&gt;
 storcli /c0 /eall /sall show&lt;br /&gt;
Smartctl sur storcli :&lt;br /&gt;
 smartctl -a -d megaraid,N  /dev/sda&lt;br /&gt;
N représente le DID sur le contrôlleur&lt;br /&gt;
allumer la led du disque&lt;br /&gt;
 storcli /c0 /e250 /s7 start locate&lt;br /&gt;
&lt;br /&gt;
==Similitudes commandes UNIX/LINUX/AIX==&lt;br /&gt;
http://bhami.com/rosetta.html&lt;br /&gt;
&lt;br /&gt;
== IPMI ==&lt;br /&gt;
A faire lorsque le process kipmi0 prends 100% de CPU et que le load monte en conséquence&lt;br /&gt;
 echo &amp;quot;remove,kcs,i/o,0xca8,rsp=4,rsi=1,rsh=0,irq=0,ipmb=0&amp;quot; &amp;gt; /sys/module/ipmi_si/parameters/hotmod&lt;br /&gt;
 echo &amp;quot;add,kcs,i/o,0xca8,rsp=4,rsi=1,rsh=0,irq=0,ipmb=0&amp;quot; &amp;gt; /sys/module/ipmi_si/parameters/hotmod&lt;br /&gt;
&lt;br /&gt;
==Fail2Ban==&lt;br /&gt;
===simple jail to ban known bad url===&lt;br /&gt;
 [apache-elion]&lt;br /&gt;
 enabled = true&lt;br /&gt;
 &lt;br /&gt;
 failregex = ^&amp;lt;HOST&amp;gt; -.*&amp;quot;(GET|POST|HEAD) (/)+(ios|wp-).*&amp;quot;$&lt;br /&gt;
 ignoreregex =&lt;br /&gt;
 datepattern = ^[^\[]*\[({DATE})&lt;br /&gt;
               {^LN-BEG}&lt;br /&gt;
 #filter   = apache-badbots&lt;br /&gt;
 action   = iptables-multiport[name=BadUrl, port=&amp;quot;http,https,7080,7081&amp;quot;]&lt;br /&gt;
 logpath  = /var/www/vhosts/system/elionparis.com/logs/access_ssl_log&lt;br /&gt;
 bantime  = 48h&lt;br /&gt;
 maxretry = 1&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Nettoyage_de_sites_hack%C3%A9s&amp;diff=94</id>
		<title>Nettoyage de sites hackés</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Nettoyage_de_sites_hack%C3%A9s&amp;diff=94"/>
		<updated>2024-09-10T09:26:03Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nettoyage prestashop&lt;br /&gt;
 https://devcustom.net/public/scripts/cleaner.zip&lt;br /&gt;
Quelques commandes utiles pour trouver rapidement des fichiers d&#039;un site web qui contiennent du code malicieux (frauduleux, toussa toussa)&lt;br /&gt;
&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$auth_pass = &amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$_passssword&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | sort --uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;preg_replace(\&amp;quot;\/\.\*\/e\&amp;quot;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;@preg_replace&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$____=&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;eval(.*(\$.*, \$.*));?&amp;gt;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.*=\&amp;quot;stop_\&amp;quot;;\$.*=strtoupper(&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.*=\&amp;quot;stop_\&amp;quot;;\$.*=strtolower(&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;$.*=&amp;quot;.*_&amp;quot;;$.*=strtoupper(&#039; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;$.*=&amp;quot;.*_&amp;quot;;$.*=strtolower(&#039; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;echo &#039;You are forbidden\!&#039;;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$.*=&amp;quot;.*&amp;quot;;@eval(&#039; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;global\$&#039; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;&amp;lt;\?php *\$GLOBALS\[&#039; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$GLOBALS\[\$GLOBALS.*\.\$GLOBALS&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$_COOKIE\[.*\$_COOKIE\[.*\$_COOKIE&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;if(isset(\$_GET\[&#039;.*&#039;\])){if(isset(\$_FILES\[&#039;.*&#039;\]))&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$. = .*; assert(\$.(&#039;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.*=\$_COOKIE;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;@setcookie&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;@move_uploaded_file&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$.*=&amp;quot;base64_decode&amp;quot;;return \$&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;eval.*base64_decode&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;create_function.*base64_decode&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;php eval(\$_POST\[.*\]&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;&amp;lt;?php *\$.*?&amp;gt;&amp;lt;?php&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -iE &amp;quot;@system\(.*\.sh&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$s_.*shell&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;$GLOBALS.*packer.*shell.*;&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$b64 = \&amp;quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\&amp;quot;;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.* = fwrite(\$.*, \$.*); fclose(\$.*); echo \$.*; exit()&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;&amp;lt;script&amp;gt;var.*&#039;?key=b64&#039;&amp;quot; | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.* = \$.*{.*} \. \$.*{.*} \. \$.*{.*}&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.*=.*;.*function .*\(\$.*, \$.*\){\$.*&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;&amp;lt;\?php \$.* = \&amp;quot;.*\&amp;quot;;\$.* = \&amp;quot;.*\&amp;quot;;\$.* = \&amp;quot;.*\&amp;quot;;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;&amp;lt;\?php \$.*=\$.*\[.*\];.*eval(\$i&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;$.*=urldecode(\&amp;quot;.*\&amp;quot;);\$.*=\$.*{.*}\.\$.*&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;&amp;lt;?php  preg_replace(\&amp;quot;.*\&amp;quot;, \&amp;quot;.*&amp;quot;\.&amp;quot;.*(&#039;\&amp;quot;.\$_REQUEST\[&#039;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;preg_match(\&amp;quot;/(bing|googlebot|bingbot|google|yahoo)/\&amp;quot;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;@include &amp;quot;\\x&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;if(!empty($this-&amp;gt;.*))return $this-&amp;gt;.*;&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;if(move_uploaded_file($temp,$file)&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;if (move_uploaded_file(\$_FILES&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;IndoXploit&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;if(md5(\$_GET\[&#039;pwd&#039;\]&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;cPanel Cracker&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;Gassrini&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;define(&#039;__SEC_VALUE__&#039;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;base64_decode(\$_POST\[&#039;.*&#039;\]); @eval&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.*=base64_decode(&#039;.*&#039;).\$_GET&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;payload_file&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -iP &#039;eval\(&amp;quot;\\x.*\\x.*\\x.*\\x.*\\x.*\\x.*\\x.*\\x.*&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;eval (\$_POST\[&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$.*=.*str_replace(&amp;quot;.*&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;.*s.*t.*r.*_.*r.*e.*p.*l.*a.*c.*e.*&amp;quot;);&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$.*=urldecode(.*);\$GLOBALS\[.*\]=\$.*{.*}\.\$&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;if(\$password!=\$config_password)&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$rn=array_shift(\$.*);\$.*=array();foreach(\$.* as $.*){array_push(\$.*,(\$.*-\$.*));}\$.*=\$.*;&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -li &#039;\$.* = stripslashes(base64_decode(\$_POST\[&#039;.*&#039;\]));&#039;&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -li &#039;gzinflate.*\\x&#039;&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -Pli &#039;GIF89a|b374k|Web Shell by oRb|WSO_VERSION|FoxAutoV4|&amp;lt;title&amp;gt;MARIJUANA&amp;lt;/title&amp;gt;|leafmailer|encode\(base64_decode|md5\(implode|base64_decode\(md5|&amp;quot;base64&amp;quot;;return|gzinflate\(str_rot13\(base64_decode&#039;&lt;br /&gt;
&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -li &#039;.\{1000\}&#039; $i | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -li &#039;error_reporting(0)&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 old_IFS=$IFS     # sauvegarde du searateur de champ&lt;br /&gt;
 IFS=$&#039;\n&#039;     # nouveau separateur de champ, le caractere fin de ligne&lt;br /&gt;
 for line in $(find . -type f -name &amp;quot;*.php&amp;quot; | xargs wc -l | egrep -v &amp;quot;*.total$&amp;quot;)&lt;br /&gt;
 do&lt;br /&gt;
 	FILE=$(echo ${line} | awk {&#039;print $2&#039;})&lt;br /&gt;
 	NBR=$(echo ${line} | awk {&#039;print $1&#039;})&lt;br /&gt;
 	if [ $(ls -l $FILE | awk {&#039;print $5&#039;}) -gt 33 ]&lt;br /&gt;
 	then&lt;br /&gt;
 		if [ ${NBR} = 0 ]&lt;br /&gt;
 		then&lt;br /&gt;
 			if [ $(grep -c &amp;quot;You don&#039;t belong here&amp;quot; $FILE) = 0 ]&lt;br /&gt;
 			then&lt;br /&gt;
 				echo &amp;quot;$FILE&amp;quot;&lt;br /&gt;
 			fi&lt;br /&gt;
 		elif [ ${NBR} = 1 ]&lt;br /&gt;
 		then&lt;br /&gt;
 			echo &amp;quot;$FILE&amp;quot;&lt;br /&gt;
 		elif [ ${NBR} = 2 ]&lt;br /&gt;
 		then&lt;br /&gt;
 			echo &amp;quot;$FILE&amp;quot;&lt;br /&gt;
 		fi&lt;br /&gt;
 	fi&lt;br /&gt;
 done&lt;br /&gt;
 IFS=$old_IFS&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Plesk&amp;diff=93</id>
		<title>Plesk</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Plesk&amp;diff=93"/>
		<updated>2024-08-29T13:15:52Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Lister les domaines =&lt;br /&gt;
 plesk bin domain --list&lt;br /&gt;
&lt;br /&gt;
= Lister les redirections emails =&lt;br /&gt;
 mysql -uadmin -p$(cat /etc/psa/.psa.shadow) --batch psa -e &amp;quot;SELECT CONCAT_WS(&#039;@&#039;,mail.mail_name,domains.name) AS adresse ,mail_redir.address AS redirection FROM domains,mail,mail_redir WHERE domains.id=mail.dom_id AND mn_id=mail.id ORDER BY domains.name ASC,mail.mail_name ASC;&amp;quot; | sed &#039;s/\t/\t-&amp;gt;\t/g&#039;&lt;br /&gt;
&lt;br /&gt;
= Lister les domaines par IP =&lt;br /&gt;
 MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -u admin -Dpsa -e&amp;quot;SELECT dom.id, dom.name, ia.ipAddressId, iad.ip_address FROM domains dom LEFT JOIN DomainServices d ON (dom.id = d.dom_id AND d.type = &#039;web&#039;) LEFT JOIN IpAddressesCollections ia ON ia.ipCollectionId = d.ipCollectionId LEFT JOIN IP_Addresses iad ON iad.id = ia.ipAddressId WHERE iad.ip_address=&#039;&amp;lt;THE.IP.ADDRESS.HERE&amp;gt;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Changer l&#039;IP d&#039;un domaine =&lt;br /&gt;
 plesk bin subscription -u &amp;quot;$DOMAIN&amp;quot; -ip &amp;lt;ip_address&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Lister les handlers PHP =&lt;br /&gt;
 plesk bin php_handler --list&lt;br /&gt;
&lt;br /&gt;
= Lister les id de domaines par version/handler PHP =&lt;br /&gt;
 MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -uadmin psa -e &amp;quot;select dom_id,php_handler_id from hosting where php_handler_id LIKE &#039;%5.2%&#039;;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Lister les domaines qui ont une version spécifique de PHP =&lt;br /&gt;
 MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -uadmin psa --batch -e &amp;quot;select name from domains, hosting WHERE domains.id=hosting.dom_id AND hosting.php_handler_id LIKE &#039;%72%&#039;;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Sortir une liste pour fichier hosts des sites hébergés =&lt;br /&gt;
 MYSQL_PWD=$(cat /etc/psa/.psa.shadow) mysql -u admin -Dpsa -e&amp;quot;SELECT dom.id, dom.name, ia.ipAddressId, iad.ip_address FROM domains dom LEFT JOIN DomainServices d ON (dom.id = d.dom_id AND d.type = &#039;web&#039;) LEFT JOIN IpAddressesCollections ia ON ia.ipCollectionId = d.ipCollectionId LEFT JOIN IP_Addresses iad ON iad.id = ia.ipAddressId&amp;quot; | awk {&#039;print $4&amp;quot; www.&amp;quot;$2&amp;quot; &amp;quot;$2&#039;}&lt;br /&gt;
&lt;br /&gt;
= Désactiver DNS pour tous les domaines =&lt;br /&gt;
 for dom in $(plesk bin domain --list) ; do plesk bin dns --off ${dom} ; done&lt;br /&gt;
&lt;br /&gt;
= Désactiver la gestion des mails pour tous les domaines =&lt;br /&gt;
 for dom in $(plesk bin domain --list) ; do plesk bin subscription --update ${dom} -mail_service false ; done&lt;br /&gt;
&lt;br /&gt;
= Voir les mots de passe des boites mail =&lt;br /&gt;
 plesk sbin mail_auth_view&lt;br /&gt;
&lt;br /&gt;
= Lister les date d&#039;expiration des certificats SSL TLS chargés dans postfix =&lt;br /&gt;
 for domain in $(postmap -s /var/spool/postfix/plesk/certs| cut -d$&#039;\t&#039; -f1) ; do echo $domain ; postmap -s /var/spool/postfix/plesk/certs| grep ${domain} | cut -d$&#039;\t&#039; -f2 |  base64 -d | openssl x509 -in -  -noout -enddate ; done&lt;br /&gt;
Afficher EXPIRED ou valid :&lt;br /&gt;
 for domain in $(postmap -s /var/spool/postfix/plesk/certs| cut -d$&#039;\t&#039; -f1) ; do CERTDATE=$(postmap -s /var/spool/postfix/plesk/certs| grep ${domain} | cut -d$&#039;\t&#039; -f2 |  base64 -d | openssl x509 -in -  -noout -enddate |  cut -d&amp;quot;=&amp;quot; -f2) ; CERTDATE_SEC=$(date -d &amp;quot;${CERTDATE}&amp;quot; +%s) ; if (( $CERTDATE_SEC &amp;lt; $(date +%s) )) ; then echo $domain : EXPIRED ; else echo $domain : valid ; fi ; done&lt;br /&gt;
&lt;br /&gt;
= Faire en sorte que le site https et le site http soit le même documentroot (et plus httpsdocs) =&lt;br /&gt;
 plesk bin subscription -u example.com -same_ssl true&lt;br /&gt;
&lt;br /&gt;
= liste des logs plesk =&lt;br /&gt;
https://support.plesk.com/hc/en-us/articles/12377744787991-Plesk-for-Linux-services-logs-and-configuration-files#roundcube&lt;br /&gt;
&lt;br /&gt;
= Reconfigurer nginx pour la nouvelle syntaxe http2 =&lt;br /&gt;
si l&#039;erreur est&lt;br /&gt;
 nginx: [warn] the &amp;quot;listen ... http2&amp;quot; directive is deprecated, use the &amp;quot;http2&amp;quot; directive instead in &lt;br /&gt;
alors, en root, faire : &lt;br /&gt;
 plesk bin http2_pref --disable&lt;br /&gt;
 plesk bin http2_pref --enable&lt;br /&gt;
(commande globale à tout le serveur)&lt;br /&gt;
&lt;br /&gt;
= Activer les rotation de logs =&lt;br /&gt;
chaque semaine, 12 jours de rétention&lt;br /&gt;
 plesk bin site --update example.com -log-rotate true -log-compress true -log-bytime weekly -log-max-num-files 12&lt;br /&gt;
&lt;br /&gt;
= Trouver les abonnements n&#039;ayant pas 1 domaine unique =&lt;br /&gt;
 for subscription in $(plesk bin subscription --list) ; do ndomain=$(mysql psa -Ns -uadmin -p$(cat /etc/psa/.psa.shadow) -e &amp;quot;select count(a.name) AS domainname FROM domains AS a inner join hosting  AS b ON b.dom_id = a.id inner join sys_users AS c ON c.id = b.sys_user_id where c.home LIKE &#039;%${subscription}&#039;&amp;quot;) ; if [ $ndomain -ne 1 ] ; then echo $subscription has $ndomain domain ; fi ; done&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Plesk&amp;diff=92</id>
		<title>Plesk</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Plesk&amp;diff=92"/>
		<updated>2024-07-24T14:35:11Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Lister les domaines =&lt;br /&gt;
 plesk bin domain --list&lt;br /&gt;
&lt;br /&gt;
= Lister les redirections emails =&lt;br /&gt;
 mysql -uadmin -p$(cat /etc/psa/.psa.shadow) --batch psa -e &amp;quot;SELECT CONCAT_WS(&#039;@&#039;,mail.mail_name,domains.name) AS adresse ,mail_redir.address AS redirection FROM domains,mail,mail_redir WHERE domains.id=mail.dom_id AND mn_id=mail.id ORDER BY domains.name ASC,mail.mail_name ASC;&amp;quot; | sed &#039;s/\t/\t-&amp;gt;\t/g&#039;&lt;br /&gt;
&lt;br /&gt;
= Lister les domaines par IP =&lt;br /&gt;
 MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -u admin -Dpsa -e&amp;quot;SELECT dom.id, dom.name, ia.ipAddressId, iad.ip_address FROM domains dom LEFT JOIN DomainServices d ON (dom.id = d.dom_id AND d.type = &#039;web&#039;) LEFT JOIN IpAddressesCollections ia ON ia.ipCollectionId = d.ipCollectionId LEFT JOIN IP_Addresses iad ON iad.id = ia.ipAddressId WHERE iad.ip_address=&#039;&amp;lt;THE.IP.ADDRESS.HERE&amp;gt;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Changer l&#039;IP d&#039;un domaine =&lt;br /&gt;
 plesk bin subscription -u &amp;quot;$DOMAIN&amp;quot; -ip &amp;lt;ip_address&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Lister les handlers PHP =&lt;br /&gt;
 plesk bin php_handler --list&lt;br /&gt;
&lt;br /&gt;
= Lister les id de domaines par version/handler PHP =&lt;br /&gt;
 MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -uadmin psa -e &amp;quot;select dom_id,php_handler_id from hosting where php_handler_id LIKE &#039;%5.2%&#039;;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Lister les domaines qui ont une version spécifique de PHP =&lt;br /&gt;
 MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -uadmin psa --batch -e &amp;quot;select name from domains, hosting WHERE domains.id=hosting.dom_id AND hosting.php_handler_id LIKE &#039;%72%&#039;;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Sortir une liste pour fichier hosts des sites hébergés =&lt;br /&gt;
 MYSQL_PWD=$(cat /etc/psa/.psa.shadow) mysql -u admin -Dpsa -e&amp;quot;SELECT dom.id, dom.name, ia.ipAddressId, iad.ip_address FROM domains dom LEFT JOIN DomainServices d ON (dom.id = d.dom_id AND d.type = &#039;web&#039;) LEFT JOIN IpAddressesCollections ia ON ia.ipCollectionId = d.ipCollectionId LEFT JOIN IP_Addresses iad ON iad.id = ia.ipAddressId&amp;quot; | awk {&#039;print $4&amp;quot; www.&amp;quot;$2&amp;quot; &amp;quot;$2&#039;}&lt;br /&gt;
&lt;br /&gt;
= Désactiver DNS pour tous les domaines =&lt;br /&gt;
 for dom in $(plesk bin domain --list) ; do plesk bin dns --off ${dom} ; done&lt;br /&gt;
&lt;br /&gt;
= Désactiver la gestion des mails pour tous les domaines =&lt;br /&gt;
 for dom in $(plesk bin domain --list) ; do plesk bin subscription --update ${dom} -mail_service false ; done&lt;br /&gt;
&lt;br /&gt;
= Voir les mots de passe des boites mail =&lt;br /&gt;
 plesk sbin mail_auth_view&lt;br /&gt;
&lt;br /&gt;
= Lister les date d&#039;expiration des certificats SSL TLS chargés dans postfix =&lt;br /&gt;
 for domain in $(postmap -s /var/spool/postfix/plesk/certs| cut -d$&#039;\t&#039; -f1) ; do echo $domain ; postmap -s /var/spool/postfix/plesk/certs| grep ${domain} | cut -d$&#039;\t&#039; -f2 |  base64 -d | openssl x509 -in -  -noout -enddate ; done&lt;br /&gt;
Afficher EXPIRED ou valid :&lt;br /&gt;
 for domain in $(postmap -s /var/spool/postfix/plesk/certs| cut -d$&#039;\t&#039; -f1) ; do CERTDATE=$(postmap -s /var/spool/postfix/plesk/certs| grep ${domain} | cut -d$&#039;\t&#039; -f2 |  base64 -d | openssl x509 -in -  -noout -enddate |  cut -d&amp;quot;=&amp;quot; -f2) ; CERTDATE_SEC=$(date -d &amp;quot;${CERTDATE}&amp;quot; +%s) ; if (( $CERTDATE_SEC &amp;lt; $(date +%s) )) ; then echo $domain : EXPIRED ; else echo $domain : valid ; fi ; done&lt;br /&gt;
&lt;br /&gt;
= Faire en sorte que le site https et le site http soit le même documentroot (et plus httpsdocs) =&lt;br /&gt;
 plesk bin subscription -u example.com -same_ssl true&lt;br /&gt;
&lt;br /&gt;
= liste des logs plesk =&lt;br /&gt;
https://support.plesk.com/hc/en-us/articles/12377744787991-Plesk-for-Linux-services-logs-and-configuration-files#roundcube&lt;br /&gt;
&lt;br /&gt;
= Reconfigurer nginx pour la nouvelle syntaxe http2 =&lt;br /&gt;
si l&#039;erreur est&lt;br /&gt;
 nginx: [warn] the &amp;quot;listen ... http2&amp;quot; directive is deprecated, use the &amp;quot;http2&amp;quot; directive instead in &lt;br /&gt;
alors, en root, faire : &lt;br /&gt;
 plesk bin http2_pref --disable&lt;br /&gt;
 plesk bin http2_pref --enable&lt;br /&gt;
(commande globale à tout le serveur)&lt;br /&gt;
&lt;br /&gt;
= Activer les rotation de logs =&lt;br /&gt;
chaque semaine, 12 jours de rétention&lt;br /&gt;
 plesk bin site --update example.com -log-rotate true -log-compress true -log-bytime weekly -log-max-num-files 12&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Plesk&amp;diff=91</id>
		<title>Plesk</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Plesk&amp;diff=91"/>
		<updated>2024-07-04T12:28:11Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Lister les domaines =&lt;br /&gt;
 plesk bin domain --list&lt;br /&gt;
&lt;br /&gt;
= Lister les redirections emails =&lt;br /&gt;
 mysql -uadmin -p$(cat /etc/psa/.psa.shadow) --batch psa -e &amp;quot;SELECT CONCAT_WS(&#039;@&#039;,mail.mail_name,domains.name) AS adresse ,mail_redir.address AS redirection FROM domains,mail,mail_redir WHERE domains.id=mail.dom_id AND mn_id=mail.id ORDER BY domains.name ASC,mail.mail_name ASC;&amp;quot; | sed &#039;s/\t/\t-&amp;gt;\t/g&#039;&lt;br /&gt;
&lt;br /&gt;
= Lister les domaines par IP =&lt;br /&gt;
 MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -u admin -Dpsa -e&amp;quot;SELECT dom.id, dom.name, ia.ipAddressId, iad.ip_address FROM domains dom LEFT JOIN DomainServices d ON (dom.id = d.dom_id AND d.type = &#039;web&#039;) LEFT JOIN IpAddressesCollections ia ON ia.ipCollectionId = d.ipCollectionId LEFT JOIN IP_Addresses iad ON iad.id = ia.ipAddressId WHERE iad.ip_address=&#039;&amp;lt;THE.IP.ADDRESS.HERE&amp;gt;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Changer l&#039;IP d&#039;un domaine =&lt;br /&gt;
 plesk bin subscription -u &amp;quot;$DOMAIN&amp;quot; -ip &amp;lt;ip_address&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Lister les handlers PHP =&lt;br /&gt;
 plesk bin php_handler --list&lt;br /&gt;
&lt;br /&gt;
= Lister les id de domaines par version/handler PHP =&lt;br /&gt;
 MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -uadmin psa -e &amp;quot;select dom_id,php_handler_id from hosting where php_handler_id LIKE &#039;%5.2%&#039;;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Lister les domaines qui ont une version spécifique de PHP =&lt;br /&gt;
 MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -uadmin psa --batch -e &amp;quot;select name from domains, hosting WHERE domains.id=hosting.dom_id AND hosting.php_handler_id LIKE &#039;%72%&#039;;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Sortir une liste pour fichier hosts des sites hébergés =&lt;br /&gt;
 MYSQL_PWD=$(cat /etc/psa/.psa.shadow) mysql -u admin -Dpsa -e&amp;quot;SELECT dom.id, dom.name, ia.ipAddressId, iad.ip_address FROM domains dom LEFT JOIN DomainServices d ON (dom.id = d.dom_id AND d.type = &#039;web&#039;) LEFT JOIN IpAddressesCollections ia ON ia.ipCollectionId = d.ipCollectionId LEFT JOIN IP_Addresses iad ON iad.id = ia.ipAddressId&amp;quot; | awk {&#039;print $4&amp;quot; www.&amp;quot;$2&amp;quot; &amp;quot;$2&#039;}&lt;br /&gt;
&lt;br /&gt;
= Désactiver DNS pour tous les domaines =&lt;br /&gt;
 for dom in $(plesk bin domain --list) ; do plesk bin dns --off ${dom} ; done&lt;br /&gt;
&lt;br /&gt;
= Désactiver la gestion des mails pour tous les domaines =&lt;br /&gt;
 for dom in $(plesk bin domain --list) ; do plesk bin subscription --update ${dom} -mail_service false ; done&lt;br /&gt;
&lt;br /&gt;
= Voir les mots de passe des boites mail =&lt;br /&gt;
 plesk sbin mail_auth_view&lt;br /&gt;
&lt;br /&gt;
= Lister les date d&#039;expiration des certificats SSL TLS chargés dans postfix =&lt;br /&gt;
 for domain in $(postmap -s /var/spool/postfix/plesk/certs| cut -d$&#039;\t&#039; -f1) ; do echo $domain ; postmap -s /var/spool/postfix/plesk/certs| grep ${domain} | cut -d$&#039;\t&#039; -f2 |  base64 -d | openssl x509 -in -  -noout -enddate ; done&lt;br /&gt;
Afficher EXPIRED ou valid :&lt;br /&gt;
 for domain in $(postmap -s /var/spool/postfix/plesk/certs| cut -d$&#039;\t&#039; -f1) ; do CERTDATE=$(postmap -s /var/spool/postfix/plesk/certs| grep ${domain} | cut -d$&#039;\t&#039; -f2 |  base64 -d | openssl x509 -in -  -noout -enddate |  cut -d&amp;quot;=&amp;quot; -f2) ; CERTDATE_SEC=$(date -d &amp;quot;${CERTDATE}&amp;quot; +%s) ; if (( $CERTDATE_SEC &amp;lt; $(date +%s) )) ; then echo $domain : EXPIRED ; else echo $domain : valid ; fi ; done&lt;br /&gt;
&lt;br /&gt;
= Faire en sorte que le site https et le site http soit le même documentroot (et plus httpsdocs) =&lt;br /&gt;
 plesk bin subscription -u example.com -same_ssl true&lt;br /&gt;
&lt;br /&gt;
= liste des logs plesk =&lt;br /&gt;
https://support.plesk.com/hc/en-us/articles/12377744787991-Plesk-for-Linux-services-logs-and-configuration-files#roundcube&lt;br /&gt;
&lt;br /&gt;
= Reconfigurer nginx pour la nouvelle syntaxe http2 =&lt;br /&gt;
si l&#039;erreur est&lt;br /&gt;
 nginx: [warn] the &amp;quot;listen ... http2&amp;quot; directive is deprecated, use the &amp;quot;http2&amp;quot; directive instead in &lt;br /&gt;
alors, en root, faire : &lt;br /&gt;
 plesk bin http2_pref --disable&lt;br /&gt;
 plesk bin http2_pref --enable&lt;br /&gt;
(commande globale à tout le serveur)&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Tips_syst%C3%A8mes&amp;diff=90</id>
		<title>Tips systèmes</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Tips_syst%C3%A8mes&amp;diff=90"/>
		<updated>2024-07-03T15:43:26Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : /* STORCLI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liens externe ==&lt;br /&gt;
https://jeznet.org/Wiki/CodeSnippets&lt;br /&gt;
==MYSQL==&lt;br /&gt;
Créer compte user :&lt;br /&gt;
 CREATE USER &amp;lt;user&amp;gt; IDENTIFIED BY &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
créer un compte utilisateur + database&lt;br /&gt;
 GRANT ALL PRIVILEGES ON &amp;lt;database&amp;gt;.* TO &#039;&amp;lt;user&amp;gt;&#039;@&#039;&amp;lt;host&amp;gt;&#039; IDENTIFIED BY &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON &amp;lt;database&amp;gt;.* TO &#039;&amp;lt;user&amp;gt;&#039;@&#039;&amp;lt;host&amp;gt;&#039; IDENTIFIED BY PASSWORD &#039;*&amp;lt;password_hash&amp;gt;&#039;;&lt;br /&gt;
voir les comptes utilisateurs&lt;br /&gt;
 select host, user, password from mysql.user;&lt;br /&gt;
dumper une base et la compresser a la volée&lt;br /&gt;
 mysqldump -h $HOST -u $USER -p $DATABASE | gzip &amp;gt; dump_$DATABASE.sql.gz&lt;br /&gt;
importer dans MySQL une base gzippée&lt;br /&gt;
 gunzip -c &amp;lt; dump_$DATABASE.sql.gz | mysql -h $HOST -u $USER -p $DATABASE&lt;br /&gt;
Import MySQL over SSH&lt;br /&gt;
 ssh $HOST &amp;quot;mysqldump -u $USER1 -p$PASS1 $DB1&amp;quot; | mysql -u$USER2 -p$PASS2 $DB2&lt;br /&gt;
Import GZIP MySQL over SSH On the fly&lt;br /&gt;
 ssh $HOST &amp;quot;mysqldump -u $USER1 -p$PASS1 $DB1 | gzip&amp;quot; | gunzip -c | mysql -u$USER2 -p$PASS2 $DB2&lt;br /&gt;
Dump MySQL Database, compress, export, and import - One liner&lt;br /&gt;
 mysqldump -u $USER1 -p$PASS1 $DB1 | pigz | ssh $HOST &amp;quot;gunzip -c | mysql -u$USER2 -p$PASS2 $DB2&amp;quot;&lt;br /&gt;
Obtenir la taille de toutes les bases de données&lt;br /&gt;
 SELECT table_schema &amp;quot;DB Name&amp;quot;, &lt;br /&gt;
 Round(Sum(data_length + index_length) / 1024 / 1024, 1) &amp;quot;DB Size in MB&amp;quot; &lt;br /&gt;
 FROM   information_schema.tables &lt;br /&gt;
 GROUP  BY table_schema;&lt;br /&gt;
Obtenir la taille d&#039;UNE base de données mentionnée&lt;br /&gt;
 SELECT table_schema &amp;quot;DB Name&amp;quot;, &lt;br /&gt;
 Round(Sum(data_length + index_length) / 1024 / 1024, 1) &amp;quot;DB Size in MB&amp;quot; &lt;br /&gt;
 FROM   information_schema.tables&lt;br /&gt;
 WHERE table_schema = &amp;quot;YOUR_DATABASE_NAME&amp;quot;  &lt;br /&gt;
 GROUP  BY table_schema;&lt;br /&gt;
Convertir toutes les tables InnoDB en InnoDB (lors de l&#039;ajout du parametre innodb_file_per_table=1 par exemple)&lt;br /&gt;
 for table in $(mysql --batch information_schema -e &amp;quot;select CONCAT(TABLE_SCHEMA,&#039;.&#039;,TABLE_NAME) FROM TABLES WHERE ENGINE=&#039;InnoDB&#039;;&amp;quot; | grep -v &amp;quot;CONCAT(TABLE_SCHEMA,&#039;.&#039;,TABLE_NAME)&amp;quot;)&lt;br /&gt;
 do&lt;br /&gt;
  mysql --batch -uadmin -p$(cat /etc/psa/.psa.shadow) -e &amp;quot;ALTER TABLE ${table} ENGINE=InnoDB;&amp;quot;&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
==SYSTEME==&lt;br /&gt;
beaucoup de connexions&lt;br /&gt;
 netstat -pant | grep -i esta | awk &#039;{print $5}&#039;| cut -d &amp;quot;:&amp;quot; -f 1| sort |uniq -c&lt;br /&gt;
fait le total d&#039;espace disque utilisé par les vhosts&lt;br /&gt;
 for i in `grep -i documentroot /opt/applis/httpd/conf/httpd.conf | grep -v &amp;quot;#&amp;quot;| awk &#039;{ print $2}&#039;`;do du -sh $i;done&lt;br /&gt;
fouiller un fichier de log entre 2 dates&lt;br /&gt;
 awk &#039;/Apr 1 11:00:00/,/Apr 1 16:15:00/{print}&#039; /var/log/httpd/httpd_access.log&lt;br /&gt;
 awk &#039;$0&amp;gt;=from&amp;amp;&amp;amp;$0&amp;lt;=to&#039; from=&amp;quot;Apr 1 11:00:00&amp;quot; to=&amp;quot;Apr 1 16:15:00&amp;quot; /var/log/httpd/httpd_access.log&lt;br /&gt;
Liste les répertoires et les trie par taille&lt;br /&gt;
 du -h --max-depth=1 | perl -e &#039;sub h{%h=(K=&amp;gt;10,M=&amp;gt;20,G=&amp;gt;30);($n,$u)=shift=~/([0-9.,]+)(\D)/; return $n*2**$h{$u}}print sort{h($b)&amp;lt;=&amp;gt;h($a)}&amp;lt;&amp;gt;;&#039;&lt;br /&gt;
tar over ssh&lt;br /&gt;
 tar zcvf - /path | ssh root@server &amp;quot;cat &amp;gt; /backup/wwwdata.tar.gz&amp;quot;&lt;br /&gt;
tar over ssh untar&lt;br /&gt;
 tar zcvf - /path/to/directory/ | ssh root@inrage.fr &amp;quot;cd /path/to/ &amp;amp;&amp;amp; tar zxvf - &amp;quot;&lt;br /&gt;
vitesse d&#039;un pipe&lt;br /&gt;
 command1 | cpipe -vt | command2&lt;br /&gt;
Linux force reboot (magical way)&lt;br /&gt;
 echo 1 &amp;gt; /proc/sys/kernel/sysrq&lt;br /&gt;
 echo b &amp;gt; /proc/sysrq-trigger&lt;br /&gt;
&lt;br /&gt;
==CHROOT==&lt;br /&gt;
Créer le nécessaire du chroot&lt;br /&gt;
 mount /dev/&amp;lt;devicepX&amp;gt; /mnt&lt;br /&gt;
 mount --bind /dev /mnt/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/dev/pts&lt;br /&gt;
 mount -t proc /proc /mnt/proc&lt;br /&gt;
 mount --bind /run  /mnt/run&lt;br /&gt;
 mount -t sysfs /sys /mnt/sys&lt;br /&gt;
 mount --bind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars &lt;br /&gt;
 chroot /mnt /bin/bash&lt;br /&gt;
&lt;br /&gt;
Démonter le tout&lt;br /&gt;
 umount /mnt/sys/firmware/efi/efivars &lt;br /&gt;
 umount /mnt/sys&lt;br /&gt;
 umount /mnt/run&lt;br /&gt;
 umount /mnt/proc&lt;br /&gt;
 umount /mnt/dev/pts&lt;br /&gt;
 umount /mnt/dev&lt;br /&gt;
 umount /mnt&lt;br /&gt;
&lt;br /&gt;
==IPTABLES==&lt;br /&gt;
diagramme de flux&lt;br /&gt;
&lt;br /&gt;
http://www.linuxchannel.net/board/board_files/alpha/phpIqSLS2/iptables.gif&lt;br /&gt;
===Base firewall===&lt;br /&gt;
 *filter&lt;br /&gt;
 :INPUT DROP [0:0]&lt;br /&gt;
 :FORWARD DROP [0:0]&lt;br /&gt;
 :OUTPUT DROP [0:0]&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Global Rules&amp;quot;&lt;br /&gt;
 -A INPUT -f -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP&lt;br /&gt;
 -A INPUT -m state --state INVALID -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --dport 25 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 50 --connlimit-mask 32 --connlimit-saddr -j DROP&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT&lt;br /&gt;
 -A INPUT -i lo -j ACCEPT&lt;br /&gt;
 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Public access Rules&amp;quot;&lt;br /&gt;
 -A INPUT -p tcp -m multiport --dports 25,80,110,143,443,465,587,993,995 -j ACCEPT&lt;br /&gt;
 -A INPUT -p udp -m udp --dport 53 -j ACCEPT&lt;br /&gt;
 -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Access Client&amp;quot;&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Dutiko : Admin &amp;amp; Monitoring&amp;quot;&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 62.210.45.142/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p tcp -m multiport --dport 21:22,5666,49152:49252 -m comment --comment &amp;quot;Supervision&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p udp -m udp --dport 161 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 62.210.45.133/32 -p tcp -m multiport --dport 22,9102 -m comment --comment &amp;quot;Backup&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.164/32 -p tcp -m multiport --dport 21:22,10000,49152:49252 -m comment --comment &amp;quot;VPN Dutiko&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.173/32 -p tcp -m multiport --dport 21:22,49152:49252 -m comment --comment &amp;quot;admin Dutiko&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 217.109.151.1/32 -p tcp -m tcp --dport 10000 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -o lo -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p icmp -j ACCEPT&lt;br /&gt;
 -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p tcp -m multiport --dports 21,25,80,443,465,587 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p udp -m multiport --dports 53,123 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p tcp -m tcp --dport 9103 -m comment --comment &amp;quot;Backup filers&amp;quot; -j ACCEPT&lt;br /&gt;
 COMMIT&lt;br /&gt;
&lt;br /&gt;
===Log du firewall===&lt;br /&gt;
 iptables -A INPUT -j LOG --log-prefix &amp;quot;firewall: &amp;quot; --log-level 7&lt;br /&gt;
rsyslogd&lt;br /&gt;
créer un fichier &#039;&#039;/etc/rsyslog.d/firewall.conf&#039;&#039; :&lt;br /&gt;
 :msg, contains, &amp;quot;firewall: &amp;quot; -/var/log/firewall.log&lt;br /&gt;
 &amp;amp; ~&lt;br /&gt;
Depuis rsyslog 7, il faut utiliser :&lt;br /&gt;
 if $msg contains &#039;firewall: &#039; then /var/log/firewall.log&lt;br /&gt;
 &amp;amp; stop&lt;br /&gt;
logrotate&lt;br /&gt;
 /var/log/firewall.log {&lt;br /&gt;
 	rotate 5&lt;br /&gt;
 	weekly&lt;br /&gt;
 	dateext&lt;br /&gt;
 	missingok&lt;br /&gt;
 	notifempty&lt;br /&gt;
 	compress&lt;br /&gt;
 	delaycompress&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Blacklist en masse===&lt;br /&gt;
utilisation = un des sed retire les connexion qui ont une patern de regex en nombre de connexion, ceux qui restent sont a bl (ici 60)--&lt;br /&gt;
 netstat -nt | grep &#039;:80&#039; | sed -e &#039;s/.*:80 //&#039; | sed -e &#039;s/:.*//&#039; | sort | uniq -c | grep -v 172.25.8.62 | grep -v 172.25.8.61 | grep  -v 172.25.8.60 | grep -v 10.252.5.74 | grep -v 10.252.5.25 | grep -v 217.174.192.246 | sed &#039;s/^ *[1-9] .*//g&#039; | sed &#039;s/^ *[1-5][0-9] .*//g&#039; | sed &#039;/^$/d&#039; | awk {&#039;print$2&#039;}  | sed &#039;/^[ ]*#\|#\|^$/! s/.*/network-object host &amp;amp;/&#039;&lt;br /&gt;
&lt;br /&gt;
==MAIL==&lt;br /&gt;
Clean mailq&lt;br /&gt;
 mailq | grep -B1 &amp;quot;Connection refused&amp;quot; | cut -d&amp;quot; &amp;quot; -f1 | grep -e &amp;quot;[A-Z][1-9]*&amp;quot; | xargs -L1 postsuper -d&lt;br /&gt;
 sendmail -qSMAILER-DAEMON -v -O Timeout.queuereturn=1s -O Timeout.connect=1s -O Timeout.ident=0s&lt;br /&gt;
relance force des mails :&lt;br /&gt;
 kill -ALRM &amp;lt;qmail-send pid&amp;gt;&lt;br /&gt;
Lire un fichier .db&lt;br /&gt;
 makemap -u hash /etc/mail/virtusertable.db&lt;br /&gt;
Nombre de mails par destinataires&lt;br /&gt;
 mailq|awk &#039;NR=3 {print $1}&#039;|awk -F &amp;quot;&amp;lt;&amp;quot; &#039;length($2)&amp;gt;0 {print $2}&#039;|sed &amp;quot;s/&amp;gt;//g&amp;quot;|sort|uniq -c|sort&lt;br /&gt;
Nombre de mails par domaine&lt;br /&gt;
 mailq|awk &#039;NR=3 {print $1}&#039;|awk -F &amp;quot;&amp;lt;&amp;quot; &#039;length($2)&amp;gt;0 {print tolower($2)}&#039;|sed &amp;quot;s/&amp;gt;//g&amp;quot;|awk -F &amp;quot;@&amp;quot; &#039;{print $2}&#039;|sort|uniq -c|sort&lt;br /&gt;
===SMTP en telnet===&lt;br /&gt;
 telnet serveur.com 25&lt;br /&gt;
 HELO agarik.com&lt;br /&gt;
 MAIL FROM: &amp;lt;sn4ky@sn4ky.net&amp;gt;&lt;br /&gt;
 RCPT TO: &amp;lt;sn4ky@sn4ky.net&amp;gt;&lt;br /&gt;
 DATA&lt;br /&gt;
 Subject: Sujet&lt;br /&gt;
 Message&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
encoder en base64 : http://ostermiller.org/calc/encode.html&lt;br /&gt;
&lt;br /&gt;
===IMAP en telnet===&lt;br /&gt;
&#039;&#039;inbox&#039;&#039; représente le nom du répertoire IMAP dans lequel on souhaite lire le mail&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;1&#039;&#039; représente le numéro du mail, par ordre d&#039;arrivée sur le serveur&lt;br /&gt;
 telnet serveur.com 143&lt;br /&gt;
 . LOGIN username ********&lt;br /&gt;
 . LIST &amp;quot;&amp;quot; &amp;quot;*&amp;quot;&lt;br /&gt;
 . SELECT inbox&lt;br /&gt;
 . FETCH 1 full&lt;br /&gt;
 . FETCH 1 BODY[TEXT]&lt;br /&gt;
 . LOGOUT&lt;br /&gt;
&lt;br /&gt;
source : http://bobpeers.com/technical/telnet_imap&lt;br /&gt;
&lt;br /&gt;
===POP en telnet===&lt;br /&gt;
 telnet serveur.com 110&lt;br /&gt;
 USER username&lt;br /&gt;
 PASS ********&lt;br /&gt;
 LIST&lt;br /&gt;
 TOP 1&lt;br /&gt;
 RETR 1&lt;br /&gt;
 DELE 1&lt;br /&gt;
 QUIT&lt;br /&gt;
&lt;br /&gt;
==APACHE==&lt;br /&gt;
===Rediriger entièrement en SSL===&lt;br /&gt;
 RewriteCond %{HTTPS} off&lt;br /&gt;
 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}&lt;br /&gt;
&lt;br /&gt;
===Interdire la navigation des robots===&lt;br /&gt;
 Header set X-Robots-Tag &amp;quot;noindex, noarchive, nosniff, nofollow&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==SWAP==&lt;br /&gt;
Modifier la manière dont le kernel va utiliser la mémoire SWAP, on va modifier le paramètre système vm.swappiness. Ce paramètre exprime l&#039;agressivité du noyau à utiliser l&#039;espace de pagination (SWAP) pour les processus réalisant peu d&#039;échanges mémoire.&lt;br /&gt;
&lt;br /&gt;
La valeur exprimée est un pourcentage. &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; corresponds à une utilisation la plus faible possible de SWAP (quasi inexistante), tandis que &amp;lt;code&amp;gt;100&amp;lt;/code&amp;gt; corresponds à une utilisation maximale de la SWAP.&lt;br /&gt;
&lt;br /&gt;
Pour connaitre sa valeur actuelle&lt;br /&gt;
 cat /proc/sys/vm/swappiness&lt;br /&gt;
&lt;br /&gt;
Pour modifier à la volée&lt;br /&gt;
 sysctl vm.swappiness=XX&lt;br /&gt;
(Il faut désactiver et réactiver totalement les espaces SWAP pour prendre en compte la valeur)&lt;br /&gt;
 swapoff -av&lt;br /&gt;
 swapon -av &lt;br /&gt;
Pour rendre le paramètre actif dès le boot, rajouter &amp;lt;code&amp;gt;vm.swappiness=XX&amp;lt;/code&amp;gt; dans le fichier &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Script pour connaitre les processus qui swappent :&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # Get current swap usage for all running processes&lt;br /&gt;
 # Erik Ljungstrom 27/05/2011&lt;br /&gt;
 SUM=0&lt;br /&gt;
 OVERALL=0&lt;br /&gt;
 for DIR in `find /proc/ -maxdepth 1 -type d | egrep &amp;quot;^/proc/[0-9]&amp;quot;` ; do&lt;br /&gt;
 PID=`echo $DIR | cut -d / -f 3`&lt;br /&gt;
 PROGNAME=`ps -p $PID -o comm --no-headers`&lt;br /&gt;
 for SWAP in `grep Swap $DIR/smaps 2&amp;gt;/dev/null| awk &#039;{ print $2 }&#039;` ; do&lt;br /&gt;
 let SUM=$SUM+$SWAP&lt;br /&gt;
 done&lt;br /&gt;
 echo &amp;quot;PID=$PID - Swap used: $SUM - ($PROGNAME )&amp;quot;&lt;br /&gt;
 let OVERALL=$OVERALL+$SUM&lt;br /&gt;
 SUM=0&lt;br /&gt;
 done  | grep -v &amp;quot;Swap used: 0 &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Nouveaux Kernels&lt;br /&gt;
Script pour connaitre les processus qui swappent :&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # Get current swap usage for all running processes&lt;br /&gt;
 # Erik Ljungstrom 27/05/2011&lt;br /&gt;
 SUM=0&lt;br /&gt;
 OVERALL=0&lt;br /&gt;
 for DIR in `find /proc/ -maxdepth 1 -type d | egrep &amp;quot;^/proc/[0-9]&amp;quot;` ; do&lt;br /&gt;
 PID=`echo $DIR | cut -d / -f 3`&lt;br /&gt;
 PROGNAME=`ps -p $PID -o comm --no-headers`&lt;br /&gt;
 for SWAP in `grep VmSwap $DIR/status 2&amp;gt;/dev/null| awk &#039;{ print $2 }&#039;` ; do&lt;br /&gt;
 let SUM=$SUM+$SWAP&lt;br /&gt;
 done&lt;br /&gt;
 echo &amp;quot;PID=$PID - Swap used: $SUM - ($PROGNAME )&amp;quot;&lt;br /&gt;
 let OVERALL=$OVERALL+$SUM&lt;br /&gt;
 SUM=0&lt;br /&gt;
 done  | grep -v &amp;quot;Swap used: 0 &amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Limite sur le nombre de fichiers ouverts==&lt;br /&gt;
Sur Linux, il existe un paramètre permettant de limiter le nombre de fichiers ouverts par un utilisateur. Il s&#039;agit du paramètre &amp;lt;code&amp;gt;ulimit&amp;lt;/code&amp;gt;. La valeur par défaut de ce paramètre est usuellement de 1024.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $ ulimit -a #liste les paramètres kernel des limites&lt;br /&gt;
 $ ulimit -n #affiche la limite du nombre de fichiers ouverts&lt;br /&gt;
 # ulimit -n 65535 #augmente la limite du nombre de fichiers à 65535 pour l&#039;utilisateur courant&lt;br /&gt;
&lt;br /&gt;
Modifier ce paramètre ne le modifie qu&#039;en &amp;quot;mou&amp;quot;. il n&#039;est valide que pour la session courante de l&#039;utilisateur en cours.&lt;br /&gt;
&lt;br /&gt;
Pour que cette modification soit permanente, il faut procéder à quelques ajustements :&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier &amp;lt;code&amp;gt;/etc/pam.d/common-session&amp;lt;/code&amp;gt; pour y insérer la ligne :&lt;br /&gt;
 session required pam_limits.so&lt;br /&gt;
Puis éditer le fichier &amp;lt;code&amp;gt;/etc/security/limits.conf&amp;lt;/code&amp;gt; pour procéder aux ajustements :&lt;br /&gt;
 user      soft     nofile     131070&lt;br /&gt;
 user      hard     nofile     262140&lt;br /&gt;
D&#039;autres modification peuvent être effectuées, se référer à &amp;lt;code&amp;gt;man 5 limits.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DUMMY RPM==&lt;br /&gt;
php-5.2.14-1.spec&lt;br /&gt;
 ###############################################################################&lt;br /&gt;
 Summary : Dummy php 5.2.14-1&lt;br /&gt;
 Name: Agarik-php&lt;br /&gt;
 Version: 5.2.14&lt;br /&gt;
 Release: 1&lt;br /&gt;
 License: GPL&lt;br /&gt;
 Group: Services&lt;br /&gt;
 Source: agarik.com&lt;br /&gt;
 URL: http://www.agarik.com&lt;br /&gt;
 BuildArch: noarch&lt;br /&gt;
 Provides: php-5.2.14-1&lt;br /&gt;
 &lt;br /&gt;
 %description&lt;br /&gt;
 Ceci est un dummy package pour le service &amp;lt;service-version&amp;gt; installé par Agarik&lt;br /&gt;
 %files&lt;br /&gt;
 ###############################################################################&lt;br /&gt;
&lt;br /&gt;
 rpmbuild -bb php-5.2.14-1.spec&lt;br /&gt;
 rpm -U /usr/src/redhat/RPMS/noarch/Agarik-php-5.2.14-1.noarch.rpm&lt;br /&gt;
&lt;br /&gt;
==7Zip script==&lt;br /&gt;
===compress tous les fichiers d&#039;un répertoire===&lt;br /&gt;
 @ECHO OFF&lt;br /&gt;
 FOR /F &amp;quot;usebackq delims==&amp;quot; %%y IN (`dir /b *.log`) DO CALL :compress %%~ny&lt;br /&gt;
 GOTO :fin&lt;br /&gt;
 :compress&lt;br /&gt;
 C:\&amp;quot;Program Files&amp;quot;\7-Zip\7z.exe a %1.zip %1.log&lt;br /&gt;
 del %1.log&lt;br /&gt;
 GOTO :eof&lt;br /&gt;
 :fin&lt;br /&gt;
 ECHO tous les fichiers ont ete traites...&lt;br /&gt;
&lt;br /&gt;
==MEGACLI==&lt;br /&gt;
 MegaCli -LDInfo -LALL -aALL ; donne infos essentiels&lt;br /&gt;
 MegaCli -LDSetProp ADRA -LALL -AALL ; passe le cache &amp;quot;Read Policy&amp;quot; en readadaptative&lt;br /&gt;
 MegaCli -LDSetProp WB -LALL -AALL ; passe le cache &amp;quot;Write Policy&amp;quot; en write back&lt;br /&gt;
 MegaCli -LDSetProp cached -LALL -AALL ; passe le cache en cached&lt;br /&gt;
 MegaCli -AdpBbuCmd -BBuLearn -a0 ; lance un relearn de la batterie&lt;br /&gt;
 MegaCli -AdpBbuCmd -GetBbuCapacityInfo  -aALL ; vérifie si la batterie est en charge ou pas&lt;br /&gt;
 MegaCli -AdpAllInfo -aALL ; info general du contolleur&lt;br /&gt;
 MegaCli -PDList -aALL ; info disques&lt;br /&gt;
 MegaCli -CfgDsply -aALL ; info sur la conf array / disques&lt;br /&gt;
 MegaCli -AdpEventLog -GetEvents -f events.log -aALL ; dumpe les logs de la carte dans events.log&lt;br /&gt;
 MegaCli -PdLocate -start -physdrv \[32:0\] -a0 ; faire blink la led du disque 32:0&lt;br /&gt;
Smartctl sur MegaCli :&lt;br /&gt;
 smartctl -a -d megaraid,N  /dev/sda&lt;br /&gt;
N représente le DeviceID sur le contrôlleur, a récupérer avec un PDlist&lt;br /&gt;
&lt;br /&gt;
==STORCLI==&lt;br /&gt;
lister tous les disques du controler 0&lt;br /&gt;
 storcli /c0 /eall /sall show&lt;br /&gt;
Smartctl sur storcli :&lt;br /&gt;
 smartctl -a -d megaraid,N  /dev/sda&lt;br /&gt;
N représente le DID sur le contrôlleur&lt;br /&gt;
allumer la led du disque&lt;br /&gt;
 storcli /c0 /e250 /s7 start locate&lt;br /&gt;
&lt;br /&gt;
==Similitudes commandes UNIX/LINUX/AIX==&lt;br /&gt;
http://bhami.com/rosetta.html&lt;br /&gt;
&lt;br /&gt;
== IPMI ==&lt;br /&gt;
A faire lorsque le process kipmi0 prends 100% de CPU et que le load monte en conséquence&lt;br /&gt;
 echo &amp;quot;remove,kcs,i/o,0xca8,rsp=4,rsi=1,rsh=0,irq=0,ipmb=0&amp;quot; &amp;gt; /sys/module/ipmi_si/parameters/hotmod&lt;br /&gt;
 echo &amp;quot;add,kcs,i/o,0xca8,rsp=4,rsi=1,rsh=0,irq=0,ipmb=0&amp;quot; &amp;gt; /sys/module/ipmi_si/parameters/hotmod&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Tips_syst%C3%A8mes&amp;diff=89</id>
		<title>Tips systèmes</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Tips_syst%C3%A8mes&amp;diff=89"/>
		<updated>2024-07-03T15:42:19Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liens externe ==&lt;br /&gt;
https://jeznet.org/Wiki/CodeSnippets&lt;br /&gt;
==MYSQL==&lt;br /&gt;
Créer compte user :&lt;br /&gt;
 CREATE USER &amp;lt;user&amp;gt; IDENTIFIED BY &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
créer un compte utilisateur + database&lt;br /&gt;
 GRANT ALL PRIVILEGES ON &amp;lt;database&amp;gt;.* TO &#039;&amp;lt;user&amp;gt;&#039;@&#039;&amp;lt;host&amp;gt;&#039; IDENTIFIED BY &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON &amp;lt;database&amp;gt;.* TO &#039;&amp;lt;user&amp;gt;&#039;@&#039;&amp;lt;host&amp;gt;&#039; IDENTIFIED BY PASSWORD &#039;*&amp;lt;password_hash&amp;gt;&#039;;&lt;br /&gt;
voir les comptes utilisateurs&lt;br /&gt;
 select host, user, password from mysql.user;&lt;br /&gt;
dumper une base et la compresser a la volée&lt;br /&gt;
 mysqldump -h $HOST -u $USER -p $DATABASE | gzip &amp;gt; dump_$DATABASE.sql.gz&lt;br /&gt;
importer dans MySQL une base gzippée&lt;br /&gt;
 gunzip -c &amp;lt; dump_$DATABASE.sql.gz | mysql -h $HOST -u $USER -p $DATABASE&lt;br /&gt;
Import MySQL over SSH&lt;br /&gt;
 ssh $HOST &amp;quot;mysqldump -u $USER1 -p$PASS1 $DB1&amp;quot; | mysql -u$USER2 -p$PASS2 $DB2&lt;br /&gt;
Import GZIP MySQL over SSH On the fly&lt;br /&gt;
 ssh $HOST &amp;quot;mysqldump -u $USER1 -p$PASS1 $DB1 | gzip&amp;quot; | gunzip -c | mysql -u$USER2 -p$PASS2 $DB2&lt;br /&gt;
Dump MySQL Database, compress, export, and import - One liner&lt;br /&gt;
 mysqldump -u $USER1 -p$PASS1 $DB1 | pigz | ssh $HOST &amp;quot;gunzip -c | mysql -u$USER2 -p$PASS2 $DB2&amp;quot;&lt;br /&gt;
Obtenir la taille de toutes les bases de données&lt;br /&gt;
 SELECT table_schema &amp;quot;DB Name&amp;quot;, &lt;br /&gt;
 Round(Sum(data_length + index_length) / 1024 / 1024, 1) &amp;quot;DB Size in MB&amp;quot; &lt;br /&gt;
 FROM   information_schema.tables &lt;br /&gt;
 GROUP  BY table_schema;&lt;br /&gt;
Obtenir la taille d&#039;UNE base de données mentionnée&lt;br /&gt;
 SELECT table_schema &amp;quot;DB Name&amp;quot;, &lt;br /&gt;
 Round(Sum(data_length + index_length) / 1024 / 1024, 1) &amp;quot;DB Size in MB&amp;quot; &lt;br /&gt;
 FROM   information_schema.tables&lt;br /&gt;
 WHERE table_schema = &amp;quot;YOUR_DATABASE_NAME&amp;quot;  &lt;br /&gt;
 GROUP  BY table_schema;&lt;br /&gt;
Convertir toutes les tables InnoDB en InnoDB (lors de l&#039;ajout du parametre innodb_file_per_table=1 par exemple)&lt;br /&gt;
 for table in $(mysql --batch information_schema -e &amp;quot;select CONCAT(TABLE_SCHEMA,&#039;.&#039;,TABLE_NAME) FROM TABLES WHERE ENGINE=&#039;InnoDB&#039;;&amp;quot; | grep -v &amp;quot;CONCAT(TABLE_SCHEMA,&#039;.&#039;,TABLE_NAME)&amp;quot;)&lt;br /&gt;
 do&lt;br /&gt;
  mysql --batch -uadmin -p$(cat /etc/psa/.psa.shadow) -e &amp;quot;ALTER TABLE ${table} ENGINE=InnoDB;&amp;quot;&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
==SYSTEME==&lt;br /&gt;
beaucoup de connexions&lt;br /&gt;
 netstat -pant | grep -i esta | awk &#039;{print $5}&#039;| cut -d &amp;quot;:&amp;quot; -f 1| sort |uniq -c&lt;br /&gt;
fait le total d&#039;espace disque utilisé par les vhosts&lt;br /&gt;
 for i in `grep -i documentroot /opt/applis/httpd/conf/httpd.conf | grep -v &amp;quot;#&amp;quot;| awk &#039;{ print $2}&#039;`;do du -sh $i;done&lt;br /&gt;
fouiller un fichier de log entre 2 dates&lt;br /&gt;
 awk &#039;/Apr 1 11:00:00/,/Apr 1 16:15:00/{print}&#039; /var/log/httpd/httpd_access.log&lt;br /&gt;
 awk &#039;$0&amp;gt;=from&amp;amp;&amp;amp;$0&amp;lt;=to&#039; from=&amp;quot;Apr 1 11:00:00&amp;quot; to=&amp;quot;Apr 1 16:15:00&amp;quot; /var/log/httpd/httpd_access.log&lt;br /&gt;
Liste les répertoires et les trie par taille&lt;br /&gt;
 du -h --max-depth=1 | perl -e &#039;sub h{%h=(K=&amp;gt;10,M=&amp;gt;20,G=&amp;gt;30);($n,$u)=shift=~/([0-9.,]+)(\D)/; return $n*2**$h{$u}}print sort{h($b)&amp;lt;=&amp;gt;h($a)}&amp;lt;&amp;gt;;&#039;&lt;br /&gt;
tar over ssh&lt;br /&gt;
 tar zcvf - /path | ssh root@server &amp;quot;cat &amp;gt; /backup/wwwdata.tar.gz&amp;quot;&lt;br /&gt;
tar over ssh untar&lt;br /&gt;
 tar zcvf - /path/to/directory/ | ssh root@inrage.fr &amp;quot;cd /path/to/ &amp;amp;&amp;amp; tar zxvf - &amp;quot;&lt;br /&gt;
vitesse d&#039;un pipe&lt;br /&gt;
 command1 | cpipe -vt | command2&lt;br /&gt;
Linux force reboot (magical way)&lt;br /&gt;
 echo 1 &amp;gt; /proc/sys/kernel/sysrq&lt;br /&gt;
 echo b &amp;gt; /proc/sysrq-trigger&lt;br /&gt;
&lt;br /&gt;
==CHROOT==&lt;br /&gt;
Créer le nécessaire du chroot&lt;br /&gt;
 mount /dev/&amp;lt;devicepX&amp;gt; /mnt&lt;br /&gt;
 mount --bind /dev /mnt/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/dev/pts&lt;br /&gt;
 mount -t proc /proc /mnt/proc&lt;br /&gt;
 mount --bind /run  /mnt/run&lt;br /&gt;
 mount -t sysfs /sys /mnt/sys&lt;br /&gt;
 mount --bind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars &lt;br /&gt;
 chroot /mnt /bin/bash&lt;br /&gt;
&lt;br /&gt;
Démonter le tout&lt;br /&gt;
 umount /mnt/sys/firmware/efi/efivars &lt;br /&gt;
 umount /mnt/sys&lt;br /&gt;
 umount /mnt/run&lt;br /&gt;
 umount /mnt/proc&lt;br /&gt;
 umount /mnt/dev/pts&lt;br /&gt;
 umount /mnt/dev&lt;br /&gt;
 umount /mnt&lt;br /&gt;
&lt;br /&gt;
==IPTABLES==&lt;br /&gt;
diagramme de flux&lt;br /&gt;
&lt;br /&gt;
http://www.linuxchannel.net/board/board_files/alpha/phpIqSLS2/iptables.gif&lt;br /&gt;
===Base firewall===&lt;br /&gt;
 *filter&lt;br /&gt;
 :INPUT DROP [0:0]&lt;br /&gt;
 :FORWARD DROP [0:0]&lt;br /&gt;
 :OUTPUT DROP [0:0]&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Global Rules&amp;quot;&lt;br /&gt;
 -A INPUT -f -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP&lt;br /&gt;
 -A INPUT -m state --state INVALID -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --dport 25 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 50 --connlimit-mask 32 --connlimit-saddr -j DROP&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT&lt;br /&gt;
 -A INPUT -i lo -j ACCEPT&lt;br /&gt;
 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Public access Rules&amp;quot;&lt;br /&gt;
 -A INPUT -p tcp -m multiport --dports 25,80,110,143,443,465,587,993,995 -j ACCEPT&lt;br /&gt;
 -A INPUT -p udp -m udp --dport 53 -j ACCEPT&lt;br /&gt;
 -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Access Client&amp;quot;&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Dutiko : Admin &amp;amp; Monitoring&amp;quot;&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 62.210.45.142/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p tcp -m multiport --dport 21:22,5666,49152:49252 -m comment --comment &amp;quot;Supervision&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p udp -m udp --dport 161 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 62.210.45.133/32 -p tcp -m multiport --dport 22,9102 -m comment --comment &amp;quot;Backup&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.164/32 -p tcp -m multiport --dport 21:22,10000,49152:49252 -m comment --comment &amp;quot;VPN Dutiko&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.173/32 -p tcp -m multiport --dport 21:22,49152:49252 -m comment --comment &amp;quot;admin Dutiko&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 217.109.151.1/32 -p tcp -m tcp --dport 10000 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -o lo -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p icmp -j ACCEPT&lt;br /&gt;
 -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p tcp -m multiport --dports 21,25,80,443,465,587 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p udp -m multiport --dports 53,123 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p tcp -m tcp --dport 9103 -m comment --comment &amp;quot;Backup filers&amp;quot; -j ACCEPT&lt;br /&gt;
 COMMIT&lt;br /&gt;
&lt;br /&gt;
===Log du firewall===&lt;br /&gt;
 iptables -A INPUT -j LOG --log-prefix &amp;quot;firewall: &amp;quot; --log-level 7&lt;br /&gt;
rsyslogd&lt;br /&gt;
créer un fichier &#039;&#039;/etc/rsyslog.d/firewall.conf&#039;&#039; :&lt;br /&gt;
 :msg, contains, &amp;quot;firewall: &amp;quot; -/var/log/firewall.log&lt;br /&gt;
 &amp;amp; ~&lt;br /&gt;
Depuis rsyslog 7, il faut utiliser :&lt;br /&gt;
 if $msg contains &#039;firewall: &#039; then /var/log/firewall.log&lt;br /&gt;
 &amp;amp; stop&lt;br /&gt;
logrotate&lt;br /&gt;
 /var/log/firewall.log {&lt;br /&gt;
 	rotate 5&lt;br /&gt;
 	weekly&lt;br /&gt;
 	dateext&lt;br /&gt;
 	missingok&lt;br /&gt;
 	notifempty&lt;br /&gt;
 	compress&lt;br /&gt;
 	delaycompress&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Blacklist en masse===&lt;br /&gt;
utilisation = un des sed retire les connexion qui ont une patern de regex en nombre de connexion, ceux qui restent sont a bl (ici 60)--&lt;br /&gt;
 netstat -nt | grep &#039;:80&#039; | sed -e &#039;s/.*:80 //&#039; | sed -e &#039;s/:.*//&#039; | sort | uniq -c | grep -v 172.25.8.62 | grep -v 172.25.8.61 | grep  -v 172.25.8.60 | grep -v 10.252.5.74 | grep -v 10.252.5.25 | grep -v 217.174.192.246 | sed &#039;s/^ *[1-9] .*//g&#039; | sed &#039;s/^ *[1-5][0-9] .*//g&#039; | sed &#039;/^$/d&#039; | awk {&#039;print$2&#039;}  | sed &#039;/^[ ]*#\|#\|^$/! s/.*/network-object host &amp;amp;/&#039;&lt;br /&gt;
&lt;br /&gt;
==MAIL==&lt;br /&gt;
Clean mailq&lt;br /&gt;
 mailq | grep -B1 &amp;quot;Connection refused&amp;quot; | cut -d&amp;quot; &amp;quot; -f1 | grep -e &amp;quot;[A-Z][1-9]*&amp;quot; | xargs -L1 postsuper -d&lt;br /&gt;
 sendmail -qSMAILER-DAEMON -v -O Timeout.queuereturn=1s -O Timeout.connect=1s -O Timeout.ident=0s&lt;br /&gt;
relance force des mails :&lt;br /&gt;
 kill -ALRM &amp;lt;qmail-send pid&amp;gt;&lt;br /&gt;
Lire un fichier .db&lt;br /&gt;
 makemap -u hash /etc/mail/virtusertable.db&lt;br /&gt;
Nombre de mails par destinataires&lt;br /&gt;
 mailq|awk &#039;NR=3 {print $1}&#039;|awk -F &amp;quot;&amp;lt;&amp;quot; &#039;length($2)&amp;gt;0 {print $2}&#039;|sed &amp;quot;s/&amp;gt;//g&amp;quot;|sort|uniq -c|sort&lt;br /&gt;
Nombre de mails par domaine&lt;br /&gt;
 mailq|awk &#039;NR=3 {print $1}&#039;|awk -F &amp;quot;&amp;lt;&amp;quot; &#039;length($2)&amp;gt;0 {print tolower($2)}&#039;|sed &amp;quot;s/&amp;gt;//g&amp;quot;|awk -F &amp;quot;@&amp;quot; &#039;{print $2}&#039;|sort|uniq -c|sort&lt;br /&gt;
===SMTP en telnet===&lt;br /&gt;
 telnet serveur.com 25&lt;br /&gt;
 HELO agarik.com&lt;br /&gt;
 MAIL FROM: &amp;lt;sn4ky@sn4ky.net&amp;gt;&lt;br /&gt;
 RCPT TO: &amp;lt;sn4ky@sn4ky.net&amp;gt;&lt;br /&gt;
 DATA&lt;br /&gt;
 Subject: Sujet&lt;br /&gt;
 Message&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
encoder en base64 : http://ostermiller.org/calc/encode.html&lt;br /&gt;
&lt;br /&gt;
===IMAP en telnet===&lt;br /&gt;
&#039;&#039;inbox&#039;&#039; représente le nom du répertoire IMAP dans lequel on souhaite lire le mail&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;1&#039;&#039; représente le numéro du mail, par ordre d&#039;arrivée sur le serveur&lt;br /&gt;
 telnet serveur.com 143&lt;br /&gt;
 . LOGIN username ********&lt;br /&gt;
 . LIST &amp;quot;&amp;quot; &amp;quot;*&amp;quot;&lt;br /&gt;
 . SELECT inbox&lt;br /&gt;
 . FETCH 1 full&lt;br /&gt;
 . FETCH 1 BODY[TEXT]&lt;br /&gt;
 . LOGOUT&lt;br /&gt;
&lt;br /&gt;
source : http://bobpeers.com/technical/telnet_imap&lt;br /&gt;
&lt;br /&gt;
===POP en telnet===&lt;br /&gt;
 telnet serveur.com 110&lt;br /&gt;
 USER username&lt;br /&gt;
 PASS ********&lt;br /&gt;
 LIST&lt;br /&gt;
 TOP 1&lt;br /&gt;
 RETR 1&lt;br /&gt;
 DELE 1&lt;br /&gt;
 QUIT&lt;br /&gt;
&lt;br /&gt;
==APACHE==&lt;br /&gt;
===Rediriger entièrement en SSL===&lt;br /&gt;
 RewriteCond %{HTTPS} off&lt;br /&gt;
 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}&lt;br /&gt;
&lt;br /&gt;
===Interdire la navigation des robots===&lt;br /&gt;
 Header set X-Robots-Tag &amp;quot;noindex, noarchive, nosniff, nofollow&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==SWAP==&lt;br /&gt;
Modifier la manière dont le kernel va utiliser la mémoire SWAP, on va modifier le paramètre système vm.swappiness. Ce paramètre exprime l&#039;agressivité du noyau à utiliser l&#039;espace de pagination (SWAP) pour les processus réalisant peu d&#039;échanges mémoire.&lt;br /&gt;
&lt;br /&gt;
La valeur exprimée est un pourcentage. &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; corresponds à une utilisation la plus faible possible de SWAP (quasi inexistante), tandis que &amp;lt;code&amp;gt;100&amp;lt;/code&amp;gt; corresponds à une utilisation maximale de la SWAP.&lt;br /&gt;
&lt;br /&gt;
Pour connaitre sa valeur actuelle&lt;br /&gt;
 cat /proc/sys/vm/swappiness&lt;br /&gt;
&lt;br /&gt;
Pour modifier à la volée&lt;br /&gt;
 sysctl vm.swappiness=XX&lt;br /&gt;
(Il faut désactiver et réactiver totalement les espaces SWAP pour prendre en compte la valeur)&lt;br /&gt;
 swapoff -av&lt;br /&gt;
 swapon -av &lt;br /&gt;
Pour rendre le paramètre actif dès le boot, rajouter &amp;lt;code&amp;gt;vm.swappiness=XX&amp;lt;/code&amp;gt; dans le fichier &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Script pour connaitre les processus qui swappent :&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # Get current swap usage for all running processes&lt;br /&gt;
 # Erik Ljungstrom 27/05/2011&lt;br /&gt;
 SUM=0&lt;br /&gt;
 OVERALL=0&lt;br /&gt;
 for DIR in `find /proc/ -maxdepth 1 -type d | egrep &amp;quot;^/proc/[0-9]&amp;quot;` ; do&lt;br /&gt;
 PID=`echo $DIR | cut -d / -f 3`&lt;br /&gt;
 PROGNAME=`ps -p $PID -o comm --no-headers`&lt;br /&gt;
 for SWAP in `grep Swap $DIR/smaps 2&amp;gt;/dev/null| awk &#039;{ print $2 }&#039;` ; do&lt;br /&gt;
 let SUM=$SUM+$SWAP&lt;br /&gt;
 done&lt;br /&gt;
 echo &amp;quot;PID=$PID - Swap used: $SUM - ($PROGNAME )&amp;quot;&lt;br /&gt;
 let OVERALL=$OVERALL+$SUM&lt;br /&gt;
 SUM=0&lt;br /&gt;
 done  | grep -v &amp;quot;Swap used: 0 &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Nouveaux Kernels&lt;br /&gt;
Script pour connaitre les processus qui swappent :&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # Get current swap usage for all running processes&lt;br /&gt;
 # Erik Ljungstrom 27/05/2011&lt;br /&gt;
 SUM=0&lt;br /&gt;
 OVERALL=0&lt;br /&gt;
 for DIR in `find /proc/ -maxdepth 1 -type d | egrep &amp;quot;^/proc/[0-9]&amp;quot;` ; do&lt;br /&gt;
 PID=`echo $DIR | cut -d / -f 3`&lt;br /&gt;
 PROGNAME=`ps -p $PID -o comm --no-headers`&lt;br /&gt;
 for SWAP in `grep VmSwap $DIR/status 2&amp;gt;/dev/null| awk &#039;{ print $2 }&#039;` ; do&lt;br /&gt;
 let SUM=$SUM+$SWAP&lt;br /&gt;
 done&lt;br /&gt;
 echo &amp;quot;PID=$PID - Swap used: $SUM - ($PROGNAME )&amp;quot;&lt;br /&gt;
 let OVERALL=$OVERALL+$SUM&lt;br /&gt;
 SUM=0&lt;br /&gt;
 done  | grep -v &amp;quot;Swap used: 0 &amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Limite sur le nombre de fichiers ouverts==&lt;br /&gt;
Sur Linux, il existe un paramètre permettant de limiter le nombre de fichiers ouverts par un utilisateur. Il s&#039;agit du paramètre &amp;lt;code&amp;gt;ulimit&amp;lt;/code&amp;gt;. La valeur par défaut de ce paramètre est usuellement de 1024.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $ ulimit -a #liste les paramètres kernel des limites&lt;br /&gt;
 $ ulimit -n #affiche la limite du nombre de fichiers ouverts&lt;br /&gt;
 # ulimit -n 65535 #augmente la limite du nombre de fichiers à 65535 pour l&#039;utilisateur courant&lt;br /&gt;
&lt;br /&gt;
Modifier ce paramètre ne le modifie qu&#039;en &amp;quot;mou&amp;quot;. il n&#039;est valide que pour la session courante de l&#039;utilisateur en cours.&lt;br /&gt;
&lt;br /&gt;
Pour que cette modification soit permanente, il faut procéder à quelques ajustements :&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier &amp;lt;code&amp;gt;/etc/pam.d/common-session&amp;lt;/code&amp;gt; pour y insérer la ligne :&lt;br /&gt;
 session required pam_limits.so&lt;br /&gt;
Puis éditer le fichier &amp;lt;code&amp;gt;/etc/security/limits.conf&amp;lt;/code&amp;gt; pour procéder aux ajustements :&lt;br /&gt;
 user      soft     nofile     131070&lt;br /&gt;
 user      hard     nofile     262140&lt;br /&gt;
D&#039;autres modification peuvent être effectuées, se référer à &amp;lt;code&amp;gt;man 5 limits.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DUMMY RPM==&lt;br /&gt;
php-5.2.14-1.spec&lt;br /&gt;
 ###############################################################################&lt;br /&gt;
 Summary : Dummy php 5.2.14-1&lt;br /&gt;
 Name: Agarik-php&lt;br /&gt;
 Version: 5.2.14&lt;br /&gt;
 Release: 1&lt;br /&gt;
 License: GPL&lt;br /&gt;
 Group: Services&lt;br /&gt;
 Source: agarik.com&lt;br /&gt;
 URL: http://www.agarik.com&lt;br /&gt;
 BuildArch: noarch&lt;br /&gt;
 Provides: php-5.2.14-1&lt;br /&gt;
 &lt;br /&gt;
 %description&lt;br /&gt;
 Ceci est un dummy package pour le service &amp;lt;service-version&amp;gt; installé par Agarik&lt;br /&gt;
 %files&lt;br /&gt;
 ###############################################################################&lt;br /&gt;
&lt;br /&gt;
 rpmbuild -bb php-5.2.14-1.spec&lt;br /&gt;
 rpm -U /usr/src/redhat/RPMS/noarch/Agarik-php-5.2.14-1.noarch.rpm&lt;br /&gt;
&lt;br /&gt;
==7Zip script==&lt;br /&gt;
===compress tous les fichiers d&#039;un répertoire===&lt;br /&gt;
 @ECHO OFF&lt;br /&gt;
 FOR /F &amp;quot;usebackq delims==&amp;quot; %%y IN (`dir /b *.log`) DO CALL :compress %%~ny&lt;br /&gt;
 GOTO :fin&lt;br /&gt;
 :compress&lt;br /&gt;
 C:\&amp;quot;Program Files&amp;quot;\7-Zip\7z.exe a %1.zip %1.log&lt;br /&gt;
 del %1.log&lt;br /&gt;
 GOTO :eof&lt;br /&gt;
 :fin&lt;br /&gt;
 ECHO tous les fichiers ont ete traites...&lt;br /&gt;
&lt;br /&gt;
==MEGACLI==&lt;br /&gt;
 MegaCli -LDInfo -LALL -aALL ; donne infos essentiels&lt;br /&gt;
 MegaCli -LDSetProp ADRA -LALL -AALL ; passe le cache &amp;quot;Read Policy&amp;quot; en readadaptative&lt;br /&gt;
 MegaCli -LDSetProp WB -LALL -AALL ; passe le cache &amp;quot;Write Policy&amp;quot; en write back&lt;br /&gt;
 MegaCli -LDSetProp cached -LALL -AALL ; passe le cache en cached&lt;br /&gt;
 MegaCli -AdpBbuCmd -BBuLearn -a0 ; lance un relearn de la batterie&lt;br /&gt;
 MegaCli -AdpBbuCmd -GetBbuCapacityInfo  -aALL ; vérifie si la batterie est en charge ou pas&lt;br /&gt;
 MegaCli -AdpAllInfo -aALL ; info general du contolleur&lt;br /&gt;
 MegaCli -PDList -aALL ; info disques&lt;br /&gt;
 MegaCli -CfgDsply -aALL ; info sur la conf array / disques&lt;br /&gt;
 MegaCli -AdpEventLog -GetEvents -f events.log -aALL ; dumpe les logs de la carte dans events.log&lt;br /&gt;
 MegaCli -PdLocate -start -physdrv \[32:0\] -a0 ; faire blink la led du disque 32:0&lt;br /&gt;
Smartctl sur MegaCli :&lt;br /&gt;
 smartctl -a -d megaraid,N  /dev/sda&lt;br /&gt;
N représente le DeviceID sur le contrôlleur, a récupérer avec un PDlist&lt;br /&gt;
&lt;br /&gt;
==STORCLI==&lt;br /&gt;
lister tous les disques du controler 0&lt;br /&gt;
 storcli /c0 /eall /sall show&lt;br /&gt;
Smartctl sur storcli :&lt;br /&gt;
 smartctl -a -d megaraid,N  /dev/sda&lt;br /&gt;
N représente le DID sur le contrôlleur&lt;br /&gt;
&lt;br /&gt;
==Similitudes commandes UNIX/LINUX/AIX==&lt;br /&gt;
http://bhami.com/rosetta.html&lt;br /&gt;
&lt;br /&gt;
== IPMI ==&lt;br /&gt;
A faire lorsque le process kipmi0 prends 100% de CPU et que le load monte en conséquence&lt;br /&gt;
 echo &amp;quot;remove,kcs,i/o,0xca8,rsp=4,rsi=1,rsh=0,irq=0,ipmb=0&amp;quot; &amp;gt; /sys/module/ipmi_si/parameters/hotmod&lt;br /&gt;
 echo &amp;quot;add,kcs,i/o,0xca8,rsp=4,rsi=1,rsh=0,irq=0,ipmb=0&amp;quot; &amp;gt; /sys/module/ipmi_si/parameters/hotmod&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Git&amp;diff=88</id>
		<title>Git</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Git&amp;diff=88"/>
		<updated>2024-06-27T13:16:39Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : Page créée avec « = git = === création d&amp;#039;une branch et push de celle-ci ===  git checkout -b &amp;lt;new_branch&amp;gt;  git add &amp;lt;file&amp;gt;  git commit -m &amp;quot;du blabla sur la new branch&amp;quot;  git push -u origin &amp;lt;... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= git =&lt;br /&gt;
=== création d&#039;une branch et push de celle-ci ===&lt;br /&gt;
 git checkout -b &amp;lt;new_branch&amp;gt;&lt;br /&gt;
 git add &amp;lt;file&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;du blabla sur la new branch&amp;quot;&lt;br /&gt;
 git push -u origin &amp;lt;new_branch&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Accueil&amp;diff=87</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Accueil&amp;diff=87"/>
		<updated>2024-06-27T13:15:27Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : /* Tips divers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Wiki&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wiki MarkAsRead/Sn4kY&lt;br /&gt;
&lt;br /&gt;
== Tuto ==&lt;br /&gt;
=== Xen ===&lt;br /&gt;
* [[Xen Sur Debian 6]] Squeeze&lt;br /&gt;
* [[Xen Sur Debian 7]] Wheezy&lt;br /&gt;
* [[Astuces et optimisations]]&lt;br /&gt;
* [[Troubleshooting]]&lt;br /&gt;
&lt;br /&gt;
=== LVM ===&lt;br /&gt;
* [[Rollback d&#039;un Snapshot]]&lt;br /&gt;
=== DRBD ===&lt;br /&gt;
* [[Mise en place DRBD|Mise en place]]&lt;br /&gt;
* [[Xen Live migration avec DRBD|Xen Live Migration]]&lt;br /&gt;
&lt;br /&gt;
=== Systèmes de fichiers ===&lt;br /&gt;
* [[Resize IMG file]]&lt;br /&gt;
=== NginX ===&lt;br /&gt;
* [[NginX]] (comming soon)&lt;br /&gt;
== Tips divers ==&lt;br /&gt;
* [[Tips systèmes]]&lt;br /&gt;
* [[Nettoyage de sites hackés]]&lt;br /&gt;
* [[Certificats SSL]]&lt;br /&gt;
* [[OpenSSH]]&lt;br /&gt;
* [[MySQL]]&lt;br /&gt;
* [[Plesk]]&lt;br /&gt;
* [[Raspberry Pi]]&lt;br /&gt;
* [[git]]&lt;br /&gt;
&lt;br /&gt;
== Scripts de backup ==&lt;br /&gt;
* [[Dumps MySQL]]&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Plesk&amp;diff=86</id>
		<title>Plesk</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Plesk&amp;diff=86"/>
		<updated>2024-05-29T08:53:42Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Lister les domaines =&lt;br /&gt;
 plesk bin domain --list&lt;br /&gt;
&lt;br /&gt;
= Lister les redirections emails =&lt;br /&gt;
 mysql -uadmin -p$(cat /etc/psa/.psa.shadow) --batch psa -e &amp;quot;SELECT CONCAT_WS(&#039;@&#039;,mail.mail_name,domains.name) AS adresse ,mail_redir.address AS redirection FROM domains,mail,mail_redir WHERE domains.id=mail.dom_id AND mn_id=mail.id ORDER BY domains.name ASC,mail.mail_name ASC;&amp;quot; | sed &#039;s/\t/\t-&amp;gt;\t/g&#039;&lt;br /&gt;
&lt;br /&gt;
= Lister les domaines par IP =&lt;br /&gt;
 MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -u admin -Dpsa -e&amp;quot;SELECT dom.id, dom.name, ia.ipAddressId, iad.ip_address FROM domains dom LEFT JOIN DomainServices d ON (dom.id = d.dom_id AND d.type = &#039;web&#039;) LEFT JOIN IpAddressesCollections ia ON ia.ipCollectionId = d.ipCollectionId LEFT JOIN IP_Addresses iad ON iad.id = ia.ipAddressId WHERE iad.ip_address=&#039;&amp;lt;THE.IP.ADDRESS.HERE&amp;gt;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Changer l&#039;IP d&#039;un domaine =&lt;br /&gt;
 plesk bin subscription -u &amp;quot;$DOMAIN&amp;quot; -ip &amp;lt;ip_address&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Lister les handlers PHP =&lt;br /&gt;
 plesk bin php_handler --list&lt;br /&gt;
&lt;br /&gt;
= Lister les id de domaines par version/handler PHP =&lt;br /&gt;
 MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -uadmin psa -e &amp;quot;select dom_id,php_handler_id from hosting where php_handler_id LIKE &#039;%5.2%&#039;;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Lister les domaines qui ont une version spécifique de PHP =&lt;br /&gt;
 MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -uadmin psa --batch -e &amp;quot;select name from domains, hosting WHERE domains.id=hosting.dom_id AND hosting.php_handler_id LIKE &#039;%72%&#039;;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Sortir une liste pour fichier hosts des sites hébergés =&lt;br /&gt;
 MYSQL_PWD=$(cat /etc/psa/.psa.shadow) mysql -u admin -Dpsa -e&amp;quot;SELECT dom.id, dom.name, ia.ipAddressId, iad.ip_address FROM domains dom LEFT JOIN DomainServices d ON (dom.id = d.dom_id AND d.type = &#039;web&#039;) LEFT JOIN IpAddressesCollections ia ON ia.ipCollectionId = d.ipCollectionId LEFT JOIN IP_Addresses iad ON iad.id = ia.ipAddressId&amp;quot; | awk {&#039;print $4&amp;quot; www.&amp;quot;$2&amp;quot; &amp;quot;$2&#039;}&lt;br /&gt;
&lt;br /&gt;
= Désactiver DNS pour tous les domaines =&lt;br /&gt;
 for dom in $(plesk bin domain --list) ; do plesk bin dns --off ${dom} ; done&lt;br /&gt;
&lt;br /&gt;
= Désactiver la gestion des mails pour tous les domaines =&lt;br /&gt;
 for dom in $(plesk bin domain --list) ; do plesk bin subscription --update ${dom} -mail_service false ; done&lt;br /&gt;
&lt;br /&gt;
= Voir les mots de passe des boites mail =&lt;br /&gt;
 plesk sbin mail_auth_view&lt;br /&gt;
&lt;br /&gt;
= Lister les date d&#039;expiration des certificats SSL TLS chargés dans postfix =&lt;br /&gt;
 for domain in $(postmap -s /var/spool/postfix/plesk/certs| cut -d$&#039;\t&#039; -f1) ; do echo $domain ; postmap -s /var/spool/postfix/plesk/certs| grep ${domain} | cut -d$&#039;\t&#039; -f2 |  base64 -d | openssl x509 -in -  -noout -enddate ; done&lt;br /&gt;
Afficher EXPIRED ou valid :&lt;br /&gt;
 for domain in $(postmap -s /var/spool/postfix/plesk/certs| cut -d$&#039;\t&#039; -f1) ; do CERTDATE=$(postmap -s /var/spool/postfix/plesk/certs| grep ${domain} | cut -d$&#039;\t&#039; -f2 |  base64 -d | openssl x509 -in -  -noout -enddate |  cut -d&amp;quot;=&amp;quot; -f2) ; CERTDATE_SEC=$(date -d &amp;quot;${CERTDATE}&amp;quot; +%s) ; if (( $CERTDATE_SEC &amp;lt; $(date +%s) )) ; then echo $domain : EXPIRED ; else echo $domain : valid ; fi ; done&lt;br /&gt;
&lt;br /&gt;
= Faire en sorte que le site https et le site http soit le même documentroot (et plus httpsdocs) =&lt;br /&gt;
 plesk bin subscription -u example.com -same_ssl true&lt;br /&gt;
&lt;br /&gt;
= liste des logs plesk =&lt;br /&gt;
https://support.plesk.com/hc/en-us/articles/12377744787991-Plesk-for-Linux-services-logs-and-configuration-files#roundcube&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Tips_syst%C3%A8mes&amp;diff=85</id>
		<title>Tips systèmes</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Tips_syst%C3%A8mes&amp;diff=85"/>
		<updated>2024-04-12T14:13:17Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : /* CHROOT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liens externe ==&lt;br /&gt;
https://jeznet.org/Wiki/CodeSnippets&lt;br /&gt;
==MYSQL==&lt;br /&gt;
Créer compte user :&lt;br /&gt;
 CREATE USER &amp;lt;user&amp;gt; IDENTIFIED BY &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
créer un compte utilisateur + database&lt;br /&gt;
 GRANT ALL PRIVILEGES ON &amp;lt;database&amp;gt;.* TO &#039;&amp;lt;user&amp;gt;&#039;@&#039;&amp;lt;host&amp;gt;&#039; IDENTIFIED BY &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON &amp;lt;database&amp;gt;.* TO &#039;&amp;lt;user&amp;gt;&#039;@&#039;&amp;lt;host&amp;gt;&#039; IDENTIFIED BY PASSWORD &#039;*&amp;lt;password_hash&amp;gt;&#039;;&lt;br /&gt;
voir les comptes utilisateurs&lt;br /&gt;
 select host, user, password from mysql.user;&lt;br /&gt;
dumper une base et la compresser a la volée&lt;br /&gt;
 mysqldump -h $HOST -u $USER -p $DATABASE | gzip &amp;gt; dump_$DATABASE.sql.gz&lt;br /&gt;
importer dans MySQL une base gzippée&lt;br /&gt;
 gunzip -c &amp;lt; dump_$DATABASE.sql.gz | mysql -h $HOST -u $USER -p $DATABASE&lt;br /&gt;
Import MySQL over SSH&lt;br /&gt;
 ssh $HOST &amp;quot;mysqldump -u $USER1 -p$PASS1 $DB1&amp;quot; | mysql -u$USER2 -p$PASS2 $DB2&lt;br /&gt;
Import GZIP MySQL over SSH On the fly&lt;br /&gt;
 ssh $HOST &amp;quot;mysqldump -u $USER1 -p$PASS1 $DB1 | gzip&amp;quot; | gunzip -c | mysql -u$USER2 -p$PASS2 $DB2&lt;br /&gt;
Dump MySQL Database, compress, export, and import - One liner&lt;br /&gt;
 mysqldump -u $USER1 -p$PASS1 $DB1 | pigz | ssh $HOST &amp;quot;gunzip -c | mysql -u$USER2 -p$PASS2 $DB2&amp;quot;&lt;br /&gt;
Obtenir la taille de toutes les bases de données&lt;br /&gt;
 SELECT table_schema &amp;quot;DB Name&amp;quot;, &lt;br /&gt;
 Round(Sum(data_length + index_length) / 1024 / 1024, 1) &amp;quot;DB Size in MB&amp;quot; &lt;br /&gt;
 FROM   information_schema.tables &lt;br /&gt;
 GROUP  BY table_schema;&lt;br /&gt;
Obtenir la taille d&#039;UNE base de données mentionnée&lt;br /&gt;
 SELECT table_schema &amp;quot;DB Name&amp;quot;, &lt;br /&gt;
 Round(Sum(data_length + index_length) / 1024 / 1024, 1) &amp;quot;DB Size in MB&amp;quot; &lt;br /&gt;
 FROM   information_schema.tables&lt;br /&gt;
 WHERE table_schema = &amp;quot;YOUR_DATABASE_NAME&amp;quot;  &lt;br /&gt;
 GROUP  BY table_schema;&lt;br /&gt;
Convertir toutes les tables InnoDB en InnoDB (lors de l&#039;ajout du parametre innodb_file_per_table=1 par exemple)&lt;br /&gt;
 for table in $(mysql --batch information_schema -e &amp;quot;select CONCAT(TABLE_SCHEMA,&#039;.&#039;,TABLE_NAME) FROM TABLES WHERE ENGINE=&#039;InnoDB&#039;;&amp;quot; | grep -v &amp;quot;CONCAT(TABLE_SCHEMA,&#039;.&#039;,TABLE_NAME)&amp;quot;)&lt;br /&gt;
 do&lt;br /&gt;
  mysql --batch -uadmin -p$(cat /etc/psa/.psa.shadow) -e &amp;quot;ALTER TABLE ${table} ENGINE=InnoDB;&amp;quot;&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
==SYSTEME==&lt;br /&gt;
beaucoup de connexions&lt;br /&gt;
 netstat -pant | grep -i esta | awk &#039;{print $5}&#039;| cut -d &amp;quot;:&amp;quot; -f 1| sort |uniq -c&lt;br /&gt;
fait le total d&#039;espace disque utilisé par les vhosts&lt;br /&gt;
 for i in `grep -i documentroot /opt/applis/httpd/conf/httpd.conf | grep -v &amp;quot;#&amp;quot;| awk &#039;{ print $2}&#039;`;do du -sh $i;done&lt;br /&gt;
fouiller un fichier de log entre 2 dates&lt;br /&gt;
 awk &#039;/Apr 1 11:00:00/,/Apr 1 16:15:00/{print}&#039; /var/log/httpd/httpd_access.log&lt;br /&gt;
 awk &#039;$0&amp;gt;=from&amp;amp;&amp;amp;$0&amp;lt;=to&#039; from=&amp;quot;Apr 1 11:00:00&amp;quot; to=&amp;quot;Apr 1 16:15:00&amp;quot; /var/log/httpd/httpd_access.log&lt;br /&gt;
Liste les répertoires et les trie par taille&lt;br /&gt;
 du -h --max-depth=1 | perl -e &#039;sub h{%h=(K=&amp;gt;10,M=&amp;gt;20,G=&amp;gt;30);($n,$u)=shift=~/([0-9.,]+)(\D)/; return $n*2**$h{$u}}print sort{h($b)&amp;lt;=&amp;gt;h($a)}&amp;lt;&amp;gt;;&#039;&lt;br /&gt;
tar over ssh&lt;br /&gt;
 tar zcvf - /path | ssh root@server &amp;quot;cat &amp;gt; /backup/wwwdata.tar.gz&amp;quot;&lt;br /&gt;
tar over ssh untar&lt;br /&gt;
 tar zcvf - /path/to/directory/ | ssh root@inrage.fr &amp;quot;cd /path/to/ &amp;amp;&amp;amp; tar zxvf - &amp;quot;&lt;br /&gt;
vitesse d&#039;un pipe&lt;br /&gt;
 command1 | cpipe -vt | command2&lt;br /&gt;
Linux force reboot (magical way)&lt;br /&gt;
 echo 1 &amp;gt; /proc/sys/kernel/sysrq&lt;br /&gt;
 echo b &amp;gt; /proc/sysrq-trigger&lt;br /&gt;
&lt;br /&gt;
==CHROOT==&lt;br /&gt;
Créer le nécessaire du chroot&lt;br /&gt;
 mount /dev/&amp;lt;devicepX&amp;gt; /mnt&lt;br /&gt;
 mount --bind /dev /mnt/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/dev/pts&lt;br /&gt;
 mount -t proc /proc /mnt/proc&lt;br /&gt;
 mount --bind /run  /mnt/run&lt;br /&gt;
 mount -t sysfs /sys /mnt/sys&lt;br /&gt;
 mount --bind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars &lt;br /&gt;
 chroot /mnt /bin/bash&lt;br /&gt;
&lt;br /&gt;
Démonter le tout&lt;br /&gt;
 umount /mnt/sys/firmware/efi/efivars &lt;br /&gt;
 umount /mnt/sys&lt;br /&gt;
 umount /mnt/run&lt;br /&gt;
 umount /mnt/proc&lt;br /&gt;
 umount /mnt/dev/pts&lt;br /&gt;
 umount /mnt/dev&lt;br /&gt;
 umount /mnt&lt;br /&gt;
&lt;br /&gt;
==IPTABLES==&lt;br /&gt;
diagramme de flux&lt;br /&gt;
&lt;br /&gt;
http://www.linuxchannel.net/board/board_files/alpha/phpIqSLS2/iptables.gif&lt;br /&gt;
===Base firewall===&lt;br /&gt;
 *filter&lt;br /&gt;
 :INPUT DROP [0:0]&lt;br /&gt;
 :FORWARD DROP [0:0]&lt;br /&gt;
 :OUTPUT DROP [0:0]&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Global Rules&amp;quot;&lt;br /&gt;
 -A INPUT -f -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP&lt;br /&gt;
 -A INPUT -m state --state INVALID -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --dport 25 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 50 --connlimit-mask 32 --connlimit-saddr -j DROP&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT&lt;br /&gt;
 -A INPUT -i lo -j ACCEPT&lt;br /&gt;
 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Public access Rules&amp;quot;&lt;br /&gt;
 -A INPUT -p tcp -m multiport --dports 25,80,110,143,443,465,587,993,995 -j ACCEPT&lt;br /&gt;
 -A INPUT -p udp -m udp --dport 53 -j ACCEPT&lt;br /&gt;
 -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Access Client&amp;quot;&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Dutiko : Admin &amp;amp; Monitoring&amp;quot;&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 62.210.45.142/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p tcp -m multiport --dport 21:22,5666,49152:49252 -m comment --comment &amp;quot;Supervision&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p udp -m udp --dport 161 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 62.210.45.133/32 -p tcp -m multiport --dport 22,9102 -m comment --comment &amp;quot;Backup&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.164/32 -p tcp -m multiport --dport 21:22,10000,49152:49252 -m comment --comment &amp;quot;VPN Dutiko&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.173/32 -p tcp -m multiport --dport 21:22,49152:49252 -m comment --comment &amp;quot;admin Dutiko&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 217.109.151.1/32 -p tcp -m tcp --dport 10000 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -o lo -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p icmp -j ACCEPT&lt;br /&gt;
 -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p tcp -m multiport --dports 21,25,80,443,465,587 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p udp -m multiport --dports 53,123 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p tcp -m tcp --dport 9103 -m comment --comment &amp;quot;Backup filers&amp;quot; -j ACCEPT&lt;br /&gt;
 COMMIT&lt;br /&gt;
&lt;br /&gt;
===Log du firewall===&lt;br /&gt;
 iptables -A INPUT -j LOG --log-prefix &amp;quot;firewall: &amp;quot; --log-level 7&lt;br /&gt;
rsyslogd&lt;br /&gt;
créer un fichier &#039;&#039;/etc/rsyslog.d/firewall.conf&#039;&#039; :&lt;br /&gt;
 :msg, contains, &amp;quot;firewall: &amp;quot; -/var/log/firewall.log&lt;br /&gt;
 &amp;amp; ~&lt;br /&gt;
Depuis rsyslog 7, il faut utiliser :&lt;br /&gt;
 if $msg contains &#039;firewall: &#039; then /var/log/firewall.log&lt;br /&gt;
 &amp;amp; stop&lt;br /&gt;
logrotate&lt;br /&gt;
 /var/log/firewall.log {&lt;br /&gt;
 	rotate 5&lt;br /&gt;
 	weekly&lt;br /&gt;
 	dateext&lt;br /&gt;
 	missingok&lt;br /&gt;
 	notifempty&lt;br /&gt;
 	compress&lt;br /&gt;
 	delaycompress&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Blacklist en masse===&lt;br /&gt;
utilisation = un des sed retire les connexion qui ont une patern de regex en nombre de connexion, ceux qui restent sont a bl (ici 60)--&lt;br /&gt;
 netstat -nt | grep &#039;:80&#039; | sed -e &#039;s/.*:80 //&#039; | sed -e &#039;s/:.*//&#039; | sort | uniq -c | grep -v 172.25.8.62 | grep -v 172.25.8.61 | grep  -v 172.25.8.60 | grep -v 10.252.5.74 | grep -v 10.252.5.25 | grep -v 217.174.192.246 | sed &#039;s/^ *[1-9] .*//g&#039; | sed &#039;s/^ *[1-5][0-9] .*//g&#039; | sed &#039;/^$/d&#039; | awk {&#039;print$2&#039;}  | sed &#039;/^[ ]*#\|#\|^$/! s/.*/network-object host &amp;amp;/&#039;&lt;br /&gt;
&lt;br /&gt;
==MAIL==&lt;br /&gt;
Clean mailq&lt;br /&gt;
 mailq | grep -B1 &amp;quot;Connection refused&amp;quot; | cut -d&amp;quot; &amp;quot; -f1 | grep -e &amp;quot;[A-Z][1-9]*&amp;quot; | xargs -L1 postsuper -d&lt;br /&gt;
 sendmail -qSMAILER-DAEMON -v -O Timeout.queuereturn=1s -O Timeout.connect=1s -O Timeout.ident=0s&lt;br /&gt;
relance force des mails :&lt;br /&gt;
 kill -ALRM &amp;lt;qmail-send pid&amp;gt;&lt;br /&gt;
Lire un fichier .db&lt;br /&gt;
 makemap -u hash /etc/mail/virtusertable.db&lt;br /&gt;
Nombre de mails par destinataires&lt;br /&gt;
 mailq|awk &#039;NR=3 {print $1}&#039;|awk -F &amp;quot;&amp;lt;&amp;quot; &#039;length($2)&amp;gt;0 {print $2}&#039;|sed &amp;quot;s/&amp;gt;//g&amp;quot;|sort|uniq -c|sort&lt;br /&gt;
Nombre de mails par domaine&lt;br /&gt;
 mailq|awk &#039;NR=3 {print $1}&#039;|awk -F &amp;quot;&amp;lt;&amp;quot; &#039;length($2)&amp;gt;0 {print tolower($2)}&#039;|sed &amp;quot;s/&amp;gt;//g&amp;quot;|awk -F &amp;quot;@&amp;quot; &#039;{print $2}&#039;|sort|uniq -c|sort&lt;br /&gt;
===SMTP en telnet===&lt;br /&gt;
 telnet serveur.com 25&lt;br /&gt;
 HELO agarik.com&lt;br /&gt;
 MAIL FROM: &amp;lt;sn4ky@sn4ky.net&amp;gt;&lt;br /&gt;
 RCPT TO: &amp;lt;sn4ky@sn4ky.net&amp;gt;&lt;br /&gt;
 DATA&lt;br /&gt;
 Subject: Sujet&lt;br /&gt;
 Message&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
encoder en base64 : http://ostermiller.org/calc/encode.html&lt;br /&gt;
&lt;br /&gt;
===IMAP en telnet===&lt;br /&gt;
&#039;&#039;inbox&#039;&#039; représente le nom du répertoire IMAP dans lequel on souhaite lire le mail&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;1&#039;&#039; représente le numéro du mail, par ordre d&#039;arrivée sur le serveur&lt;br /&gt;
 telnet serveur.com 143&lt;br /&gt;
 . LOGIN username ********&lt;br /&gt;
 . LIST &amp;quot;&amp;quot; &amp;quot;*&amp;quot;&lt;br /&gt;
 . SELECT inbox&lt;br /&gt;
 . FETCH 1 full&lt;br /&gt;
 . FETCH 1 BODY[TEXT]&lt;br /&gt;
 . LOGOUT&lt;br /&gt;
&lt;br /&gt;
source : http://bobpeers.com/technical/telnet_imap&lt;br /&gt;
&lt;br /&gt;
===POP en telnet===&lt;br /&gt;
 telnet serveur.com 110&lt;br /&gt;
 USER username&lt;br /&gt;
 PASS ********&lt;br /&gt;
 LIST&lt;br /&gt;
 TOP 1&lt;br /&gt;
 RETR 1&lt;br /&gt;
 DELE 1&lt;br /&gt;
 QUIT&lt;br /&gt;
&lt;br /&gt;
==APACHE==&lt;br /&gt;
===Rediriger entièrement en SSL===&lt;br /&gt;
 RewriteCond %{HTTPS} off&lt;br /&gt;
 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}&lt;br /&gt;
&lt;br /&gt;
===Interdire la navigation des robots===&lt;br /&gt;
 Header set X-Robots-Tag &amp;quot;noindex, noarchive, nosniff, nofollow&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==SWAP==&lt;br /&gt;
Modifier la manière dont le kernel va utiliser la mémoire SWAP, on va modifier le paramètre système vm.swappiness. Ce paramètre exprime l&#039;agressivité du noyau à utiliser l&#039;espace de pagination (SWAP) pour les processus réalisant peu d&#039;échanges mémoire.&lt;br /&gt;
&lt;br /&gt;
La valeur exprimée est un pourcentage. &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; corresponds à une utilisation la plus faible possible de SWAP (quasi inexistante), tandis que &amp;lt;code&amp;gt;100&amp;lt;/code&amp;gt; corresponds à une utilisation maximale de la SWAP.&lt;br /&gt;
&lt;br /&gt;
Pour connaitre sa valeur actuelle&lt;br /&gt;
 cat /proc/sys/vm/swappiness&lt;br /&gt;
&lt;br /&gt;
Pour modifier à la volée&lt;br /&gt;
 sysctl vm.swappiness=XX&lt;br /&gt;
(Il faut désactiver et réactiver totalement les espaces SWAP pour prendre en compte la valeur)&lt;br /&gt;
 swapoff -av&lt;br /&gt;
 swapon -av &lt;br /&gt;
Pour rendre le paramètre actif dès le boot, rajouter &amp;lt;code&amp;gt;vm.swappiness=XX&amp;lt;/code&amp;gt; dans le fichier &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Script pour connaitre les processus qui swappent :&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # Get current swap usage for all running processes&lt;br /&gt;
 # Erik Ljungstrom 27/05/2011&lt;br /&gt;
 SUM=0&lt;br /&gt;
 OVERALL=0&lt;br /&gt;
 for DIR in `find /proc/ -maxdepth 1 -type d | egrep &amp;quot;^/proc/[0-9]&amp;quot;` ; do&lt;br /&gt;
 PID=`echo $DIR | cut -d / -f 3`&lt;br /&gt;
 PROGNAME=`ps -p $PID -o comm --no-headers`&lt;br /&gt;
 for SWAP in `grep Swap $DIR/smaps 2&amp;gt;/dev/null| awk &#039;{ print $2 }&#039;` ; do&lt;br /&gt;
 let SUM=$SUM+$SWAP&lt;br /&gt;
 done&lt;br /&gt;
 echo &amp;quot;PID=$PID - Swap used: $SUM - ($PROGNAME )&amp;quot;&lt;br /&gt;
 let OVERALL=$OVERALL+$SUM&lt;br /&gt;
 SUM=0&lt;br /&gt;
 done  | grep -v &amp;quot;Swap used: 0 &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Nouveaux Kernels&lt;br /&gt;
Script pour connaitre les processus qui swappent :&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # Get current swap usage for all running processes&lt;br /&gt;
 # Erik Ljungstrom 27/05/2011&lt;br /&gt;
 SUM=0&lt;br /&gt;
 OVERALL=0&lt;br /&gt;
 for DIR in `find /proc/ -maxdepth 1 -type d | egrep &amp;quot;^/proc/[0-9]&amp;quot;` ; do&lt;br /&gt;
 PID=`echo $DIR | cut -d / -f 3`&lt;br /&gt;
 PROGNAME=`ps -p $PID -o comm --no-headers`&lt;br /&gt;
 for SWAP in `grep VmSwap $DIR/status 2&amp;gt;/dev/null| awk &#039;{ print $2 }&#039;` ; do&lt;br /&gt;
 let SUM=$SUM+$SWAP&lt;br /&gt;
 done&lt;br /&gt;
 echo &amp;quot;PID=$PID - Swap used: $SUM - ($PROGNAME )&amp;quot;&lt;br /&gt;
 let OVERALL=$OVERALL+$SUM&lt;br /&gt;
 SUM=0&lt;br /&gt;
 done  | grep -v &amp;quot;Swap used: 0 &amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Limite sur le nombre de fichiers ouverts==&lt;br /&gt;
Sur Linux, il existe un paramètre permettant de limiter le nombre de fichiers ouverts par un utilisateur. Il s&#039;agit du paramètre &amp;lt;code&amp;gt;ulimit&amp;lt;/code&amp;gt;. La valeur par défaut de ce paramètre est usuellement de 1024.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $ ulimit -a #liste les paramètres kernel des limites&lt;br /&gt;
 $ ulimit -n #affiche la limite du nombre de fichiers ouverts&lt;br /&gt;
 # ulimit -n 65535 #augmente la limite du nombre de fichiers à 65535 pour l&#039;utilisateur courant&lt;br /&gt;
&lt;br /&gt;
Modifier ce paramètre ne le modifie qu&#039;en &amp;quot;mou&amp;quot;. il n&#039;est valide que pour la session courante de l&#039;utilisateur en cours.&lt;br /&gt;
&lt;br /&gt;
Pour que cette modification soit permanente, il faut procéder à quelques ajustements :&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier &amp;lt;code&amp;gt;/etc/pam.d/common-session&amp;lt;/code&amp;gt; pour y insérer la ligne :&lt;br /&gt;
 session required pam_limits.so&lt;br /&gt;
Puis éditer le fichier &amp;lt;code&amp;gt;/etc/security/limits.conf&amp;lt;/code&amp;gt; pour procéder aux ajustements :&lt;br /&gt;
 user      soft     nofile     131070&lt;br /&gt;
 user      hard     nofile     262140&lt;br /&gt;
D&#039;autres modification peuvent être effectuées, se référer à &amp;lt;code&amp;gt;man 5 limits.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DUMMY RPM==&lt;br /&gt;
php-5.2.14-1.spec&lt;br /&gt;
 ###############################################################################&lt;br /&gt;
 Summary : Dummy php 5.2.14-1&lt;br /&gt;
 Name: Agarik-php&lt;br /&gt;
 Version: 5.2.14&lt;br /&gt;
 Release: 1&lt;br /&gt;
 License: GPL&lt;br /&gt;
 Group: Services&lt;br /&gt;
 Source: agarik.com&lt;br /&gt;
 URL: http://www.agarik.com&lt;br /&gt;
 BuildArch: noarch&lt;br /&gt;
 Provides: php-5.2.14-1&lt;br /&gt;
 &lt;br /&gt;
 %description&lt;br /&gt;
 Ceci est un dummy package pour le service &amp;lt;service-version&amp;gt; installé par Agarik&lt;br /&gt;
 %files&lt;br /&gt;
 ###############################################################################&lt;br /&gt;
&lt;br /&gt;
 rpmbuild -bb php-5.2.14-1.spec&lt;br /&gt;
 rpm -U /usr/src/redhat/RPMS/noarch/Agarik-php-5.2.14-1.noarch.rpm&lt;br /&gt;
&lt;br /&gt;
==7Zip script==&lt;br /&gt;
===compress tous les fichiers d&#039;un répertoire===&lt;br /&gt;
 @ECHO OFF&lt;br /&gt;
 FOR /F &amp;quot;usebackq delims==&amp;quot; %%y IN (`dir /b *.log`) DO CALL :compress %%~ny&lt;br /&gt;
 GOTO :fin&lt;br /&gt;
 :compress&lt;br /&gt;
 C:\&amp;quot;Program Files&amp;quot;\7-Zip\7z.exe a %1.zip %1.log&lt;br /&gt;
 del %1.log&lt;br /&gt;
 GOTO :eof&lt;br /&gt;
 :fin&lt;br /&gt;
 ECHO tous les fichiers ont ete traites...&lt;br /&gt;
&lt;br /&gt;
==MEGACLI==&lt;br /&gt;
 MegaCli -LDInfo -LALL -aALL ; donne infos essentiels&lt;br /&gt;
 MegaCli -LDSetProp ADRA -LALL -AALL ; passe le cache &amp;quot;Read Policy&amp;quot; en readadaptative&lt;br /&gt;
 MegaCli -LDSetProp WB -LALL -AALL ; passe le cache &amp;quot;Write Policy&amp;quot; en write back&lt;br /&gt;
 MegaCli -LDSetProp cached -LALL -AALL ; passe le cache en cached&lt;br /&gt;
 MegaCli -AdpBbuCmd -BBuLearn -a0 ; lance un relearn de la batterie&lt;br /&gt;
 MegaCli -AdpBbuCmd -GetBbuCapacityInfo  -aALL ; vérifie si la batterie est en charge ou pas&lt;br /&gt;
 MegaCli -AdpAllInfo -aALL ; info general du contolleur&lt;br /&gt;
 MegaCli -PDList -aALL ; info disques&lt;br /&gt;
 MegaCli -CfgDsply -aALL ; info sur la conf array / disques&lt;br /&gt;
 MegaCli -AdpEventLog -GetEvents -f events.log -aALL ; dumpe les logs de la carte dans events.log&lt;br /&gt;
 MegaCli -PdLocate -start -physdrv \[32:0\] -a0 ; faire blink la led du disque 32:0&lt;br /&gt;
Smartctl sur MegaCli :&lt;br /&gt;
 smartctl -a -d megaraid,N  /dev/sda&lt;br /&gt;
N représente le DeviceID sur le contrôlleur, a récupérer avec un PDlist&lt;br /&gt;
&lt;br /&gt;
==Similitudes commandes UNIX/LINUX/AIX==&lt;br /&gt;
http://bhami.com/rosetta.html&lt;br /&gt;
&lt;br /&gt;
== IPMI ==&lt;br /&gt;
A faire lorsque le process kipmi0 prends 100% de CPU et que le load monte en conséquence&lt;br /&gt;
 echo &amp;quot;remove,kcs,i/o,0xca8,rsp=4,rsi=1,rsh=0,irq=0,ipmb=0&amp;quot; &amp;gt; /sys/module/ipmi_si/parameters/hotmod&lt;br /&gt;
 echo &amp;quot;add,kcs,i/o,0xca8,rsp=4,rsi=1,rsh=0,irq=0,ipmb=0&amp;quot; &amp;gt; /sys/module/ipmi_si/parameters/hotmod&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Tips_syst%C3%A8mes&amp;diff=84</id>
		<title>Tips systèmes</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Tips_syst%C3%A8mes&amp;diff=84"/>
		<updated>2024-04-11T09:42:46Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : /* MEGACLI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liens externe ==&lt;br /&gt;
https://jeznet.org/Wiki/CodeSnippets&lt;br /&gt;
==MYSQL==&lt;br /&gt;
Créer compte user :&lt;br /&gt;
 CREATE USER &amp;lt;user&amp;gt; IDENTIFIED BY &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
créer un compte utilisateur + database&lt;br /&gt;
 GRANT ALL PRIVILEGES ON &amp;lt;database&amp;gt;.* TO &#039;&amp;lt;user&amp;gt;&#039;@&#039;&amp;lt;host&amp;gt;&#039; IDENTIFIED BY &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON &amp;lt;database&amp;gt;.* TO &#039;&amp;lt;user&amp;gt;&#039;@&#039;&amp;lt;host&amp;gt;&#039; IDENTIFIED BY PASSWORD &#039;*&amp;lt;password_hash&amp;gt;&#039;;&lt;br /&gt;
voir les comptes utilisateurs&lt;br /&gt;
 select host, user, password from mysql.user;&lt;br /&gt;
dumper une base et la compresser a la volée&lt;br /&gt;
 mysqldump -h $HOST -u $USER -p $DATABASE | gzip &amp;gt; dump_$DATABASE.sql.gz&lt;br /&gt;
importer dans MySQL une base gzippée&lt;br /&gt;
 gunzip -c &amp;lt; dump_$DATABASE.sql.gz | mysql -h $HOST -u $USER -p $DATABASE&lt;br /&gt;
Import MySQL over SSH&lt;br /&gt;
 ssh $HOST &amp;quot;mysqldump -u $USER1 -p$PASS1 $DB1&amp;quot; | mysql -u$USER2 -p$PASS2 $DB2&lt;br /&gt;
Import GZIP MySQL over SSH On the fly&lt;br /&gt;
 ssh $HOST &amp;quot;mysqldump -u $USER1 -p$PASS1 $DB1 | gzip&amp;quot; | gunzip -c | mysql -u$USER2 -p$PASS2 $DB2&lt;br /&gt;
Dump MySQL Database, compress, export, and import - One liner&lt;br /&gt;
 mysqldump -u $USER1 -p$PASS1 $DB1 | pigz | ssh $HOST &amp;quot;gunzip -c | mysql -u$USER2 -p$PASS2 $DB2&amp;quot;&lt;br /&gt;
Obtenir la taille de toutes les bases de données&lt;br /&gt;
 SELECT table_schema &amp;quot;DB Name&amp;quot;, &lt;br /&gt;
 Round(Sum(data_length + index_length) / 1024 / 1024, 1) &amp;quot;DB Size in MB&amp;quot; &lt;br /&gt;
 FROM   information_schema.tables &lt;br /&gt;
 GROUP  BY table_schema;&lt;br /&gt;
Obtenir la taille d&#039;UNE base de données mentionnée&lt;br /&gt;
 SELECT table_schema &amp;quot;DB Name&amp;quot;, &lt;br /&gt;
 Round(Sum(data_length + index_length) / 1024 / 1024, 1) &amp;quot;DB Size in MB&amp;quot; &lt;br /&gt;
 FROM   information_schema.tables&lt;br /&gt;
 WHERE table_schema = &amp;quot;YOUR_DATABASE_NAME&amp;quot;  &lt;br /&gt;
 GROUP  BY table_schema;&lt;br /&gt;
Convertir toutes les tables InnoDB en InnoDB (lors de l&#039;ajout du parametre innodb_file_per_table=1 par exemple)&lt;br /&gt;
 for table in $(mysql --batch information_schema -e &amp;quot;select CONCAT(TABLE_SCHEMA,&#039;.&#039;,TABLE_NAME) FROM TABLES WHERE ENGINE=&#039;InnoDB&#039;;&amp;quot; | grep -v &amp;quot;CONCAT(TABLE_SCHEMA,&#039;.&#039;,TABLE_NAME)&amp;quot;)&lt;br /&gt;
 do&lt;br /&gt;
  mysql --batch -uadmin -p$(cat /etc/psa/.psa.shadow) -e &amp;quot;ALTER TABLE ${table} ENGINE=InnoDB;&amp;quot;&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
==SYSTEME==&lt;br /&gt;
beaucoup de connexions&lt;br /&gt;
 netstat -pant | grep -i esta | awk &#039;{print $5}&#039;| cut -d &amp;quot;:&amp;quot; -f 1| sort |uniq -c&lt;br /&gt;
fait le total d&#039;espace disque utilisé par les vhosts&lt;br /&gt;
 for i in `grep -i documentroot /opt/applis/httpd/conf/httpd.conf | grep -v &amp;quot;#&amp;quot;| awk &#039;{ print $2}&#039;`;do du -sh $i;done&lt;br /&gt;
fouiller un fichier de log entre 2 dates&lt;br /&gt;
 awk &#039;/Apr 1 11:00:00/,/Apr 1 16:15:00/{print}&#039; /var/log/httpd/httpd_access.log&lt;br /&gt;
 awk &#039;$0&amp;gt;=from&amp;amp;&amp;amp;$0&amp;lt;=to&#039; from=&amp;quot;Apr 1 11:00:00&amp;quot; to=&amp;quot;Apr 1 16:15:00&amp;quot; /var/log/httpd/httpd_access.log&lt;br /&gt;
Liste les répertoires et les trie par taille&lt;br /&gt;
 du -h --max-depth=1 | perl -e &#039;sub h{%h=(K=&amp;gt;10,M=&amp;gt;20,G=&amp;gt;30);($n,$u)=shift=~/([0-9.,]+)(\D)/; return $n*2**$h{$u}}print sort{h($b)&amp;lt;=&amp;gt;h($a)}&amp;lt;&amp;gt;;&#039;&lt;br /&gt;
tar over ssh&lt;br /&gt;
 tar zcvf - /path | ssh root@server &amp;quot;cat &amp;gt; /backup/wwwdata.tar.gz&amp;quot;&lt;br /&gt;
tar over ssh untar&lt;br /&gt;
 tar zcvf - /path/to/directory/ | ssh root@inrage.fr &amp;quot;cd /path/to/ &amp;amp;&amp;amp; tar zxvf - &amp;quot;&lt;br /&gt;
vitesse d&#039;un pipe&lt;br /&gt;
 command1 | cpipe -vt | command2&lt;br /&gt;
Linux force reboot (magical way)&lt;br /&gt;
 echo 1 &amp;gt; /proc/sys/kernel/sysrq&lt;br /&gt;
 echo b &amp;gt; /proc/sysrq-trigger&lt;br /&gt;
&lt;br /&gt;
==CHROOT==&lt;br /&gt;
Créer le nécessaire du chroot&lt;br /&gt;
 mount /dev/&amp;lt;devicepX&amp;gt; /mnt&lt;br /&gt;
 mount --bind /dev /mnt/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/dev/pts&lt;br /&gt;
 mount -t proc /proc /mnt/proc&lt;br /&gt;
 mount --bind /run  /mnt/run&lt;br /&gt;
 mount -t sysfs /sys /mnt/sys&lt;br /&gt;
 chroot /mnt /bin/bash&lt;br /&gt;
&lt;br /&gt;
Démonter le tout&lt;br /&gt;
 umount /mnt/sys&lt;br /&gt;
 umount /mnt/run&lt;br /&gt;
 umount /mnt/proc&lt;br /&gt;
 umount /mnt/dev/pts&lt;br /&gt;
 umount /mnt/dev&lt;br /&gt;
 umount /mnt&lt;br /&gt;
&lt;br /&gt;
==IPTABLES==&lt;br /&gt;
diagramme de flux&lt;br /&gt;
&lt;br /&gt;
http://www.linuxchannel.net/board/board_files/alpha/phpIqSLS2/iptables.gif&lt;br /&gt;
===Base firewall===&lt;br /&gt;
 *filter&lt;br /&gt;
 :INPUT DROP [0:0]&lt;br /&gt;
 :FORWARD DROP [0:0]&lt;br /&gt;
 :OUTPUT DROP [0:0]&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Global Rules&amp;quot;&lt;br /&gt;
 -A INPUT -f -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP&lt;br /&gt;
 -A INPUT -m state --state INVALID -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --dport 25 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 50 --connlimit-mask 32 --connlimit-saddr -j DROP&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT&lt;br /&gt;
 -A INPUT -i lo -j ACCEPT&lt;br /&gt;
 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Public access Rules&amp;quot;&lt;br /&gt;
 -A INPUT -p tcp -m multiport --dports 25,80,110,143,443,465,587,993,995 -j ACCEPT&lt;br /&gt;
 -A INPUT -p udp -m udp --dport 53 -j ACCEPT&lt;br /&gt;
 -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Access Client&amp;quot;&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Dutiko : Admin &amp;amp; Monitoring&amp;quot;&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 62.210.45.142/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p tcp -m multiport --dport 21:22,5666,49152:49252 -m comment --comment &amp;quot;Supervision&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p udp -m udp --dport 161 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 62.210.45.133/32 -p tcp -m multiport --dport 22,9102 -m comment --comment &amp;quot;Backup&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.164/32 -p tcp -m multiport --dport 21:22,10000,49152:49252 -m comment --comment &amp;quot;VPN Dutiko&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.173/32 -p tcp -m multiport --dport 21:22,49152:49252 -m comment --comment &amp;quot;admin Dutiko&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 217.109.151.1/32 -p tcp -m tcp --dport 10000 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -o lo -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p icmp -j ACCEPT&lt;br /&gt;
 -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p tcp -m multiport --dports 21,25,80,443,465,587 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p udp -m multiport --dports 53,123 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p tcp -m tcp --dport 9103 -m comment --comment &amp;quot;Backup filers&amp;quot; -j ACCEPT&lt;br /&gt;
 COMMIT&lt;br /&gt;
&lt;br /&gt;
===Log du firewall===&lt;br /&gt;
 iptables -A INPUT -j LOG --log-prefix &amp;quot;firewall: &amp;quot; --log-level 7&lt;br /&gt;
rsyslogd&lt;br /&gt;
créer un fichier &#039;&#039;/etc/rsyslog.d/firewall.conf&#039;&#039; :&lt;br /&gt;
 :msg, contains, &amp;quot;firewall: &amp;quot; -/var/log/firewall.log&lt;br /&gt;
 &amp;amp; ~&lt;br /&gt;
Depuis rsyslog 7, il faut utiliser :&lt;br /&gt;
 if $msg contains &#039;firewall: &#039; then /var/log/firewall.log&lt;br /&gt;
 &amp;amp; stop&lt;br /&gt;
logrotate&lt;br /&gt;
 /var/log/firewall.log {&lt;br /&gt;
 	rotate 5&lt;br /&gt;
 	weekly&lt;br /&gt;
 	dateext&lt;br /&gt;
 	missingok&lt;br /&gt;
 	notifempty&lt;br /&gt;
 	compress&lt;br /&gt;
 	delaycompress&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Blacklist en masse===&lt;br /&gt;
utilisation = un des sed retire les connexion qui ont une patern de regex en nombre de connexion, ceux qui restent sont a bl (ici 60)--&lt;br /&gt;
 netstat -nt | grep &#039;:80&#039; | sed -e &#039;s/.*:80 //&#039; | sed -e &#039;s/:.*//&#039; | sort | uniq -c | grep -v 172.25.8.62 | grep -v 172.25.8.61 | grep  -v 172.25.8.60 | grep -v 10.252.5.74 | grep -v 10.252.5.25 | grep -v 217.174.192.246 | sed &#039;s/^ *[1-9] .*//g&#039; | sed &#039;s/^ *[1-5][0-9] .*//g&#039; | sed &#039;/^$/d&#039; | awk {&#039;print$2&#039;}  | sed &#039;/^[ ]*#\|#\|^$/! s/.*/network-object host &amp;amp;/&#039;&lt;br /&gt;
&lt;br /&gt;
==MAIL==&lt;br /&gt;
Clean mailq&lt;br /&gt;
 mailq | grep -B1 &amp;quot;Connection refused&amp;quot; | cut -d&amp;quot; &amp;quot; -f1 | grep -e &amp;quot;[A-Z][1-9]*&amp;quot; | xargs -L1 postsuper -d&lt;br /&gt;
 sendmail -qSMAILER-DAEMON -v -O Timeout.queuereturn=1s -O Timeout.connect=1s -O Timeout.ident=0s&lt;br /&gt;
relance force des mails :&lt;br /&gt;
 kill -ALRM &amp;lt;qmail-send pid&amp;gt;&lt;br /&gt;
Lire un fichier .db&lt;br /&gt;
 makemap -u hash /etc/mail/virtusertable.db&lt;br /&gt;
Nombre de mails par destinataires&lt;br /&gt;
 mailq|awk &#039;NR=3 {print $1}&#039;|awk -F &amp;quot;&amp;lt;&amp;quot; &#039;length($2)&amp;gt;0 {print $2}&#039;|sed &amp;quot;s/&amp;gt;//g&amp;quot;|sort|uniq -c|sort&lt;br /&gt;
Nombre de mails par domaine&lt;br /&gt;
 mailq|awk &#039;NR=3 {print $1}&#039;|awk -F &amp;quot;&amp;lt;&amp;quot; &#039;length($2)&amp;gt;0 {print tolower($2)}&#039;|sed &amp;quot;s/&amp;gt;//g&amp;quot;|awk -F &amp;quot;@&amp;quot; &#039;{print $2}&#039;|sort|uniq -c|sort&lt;br /&gt;
===SMTP en telnet===&lt;br /&gt;
 telnet serveur.com 25&lt;br /&gt;
 HELO agarik.com&lt;br /&gt;
 MAIL FROM: &amp;lt;sn4ky@sn4ky.net&amp;gt;&lt;br /&gt;
 RCPT TO: &amp;lt;sn4ky@sn4ky.net&amp;gt;&lt;br /&gt;
 DATA&lt;br /&gt;
 Subject: Sujet&lt;br /&gt;
 Message&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
encoder en base64 : http://ostermiller.org/calc/encode.html&lt;br /&gt;
&lt;br /&gt;
===IMAP en telnet===&lt;br /&gt;
&#039;&#039;inbox&#039;&#039; représente le nom du répertoire IMAP dans lequel on souhaite lire le mail&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;1&#039;&#039; représente le numéro du mail, par ordre d&#039;arrivée sur le serveur&lt;br /&gt;
 telnet serveur.com 143&lt;br /&gt;
 . LOGIN username ********&lt;br /&gt;
 . LIST &amp;quot;&amp;quot; &amp;quot;*&amp;quot;&lt;br /&gt;
 . SELECT inbox&lt;br /&gt;
 . FETCH 1 full&lt;br /&gt;
 . FETCH 1 BODY[TEXT]&lt;br /&gt;
 . LOGOUT&lt;br /&gt;
&lt;br /&gt;
source : http://bobpeers.com/technical/telnet_imap&lt;br /&gt;
&lt;br /&gt;
===POP en telnet===&lt;br /&gt;
 telnet serveur.com 110&lt;br /&gt;
 USER username&lt;br /&gt;
 PASS ********&lt;br /&gt;
 LIST&lt;br /&gt;
 TOP 1&lt;br /&gt;
 RETR 1&lt;br /&gt;
 DELE 1&lt;br /&gt;
 QUIT&lt;br /&gt;
&lt;br /&gt;
==APACHE==&lt;br /&gt;
===Rediriger entièrement en SSL===&lt;br /&gt;
 RewriteCond %{HTTPS} off&lt;br /&gt;
 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}&lt;br /&gt;
&lt;br /&gt;
===Interdire la navigation des robots===&lt;br /&gt;
 Header set X-Robots-Tag &amp;quot;noindex, noarchive, nosniff, nofollow&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==SWAP==&lt;br /&gt;
Modifier la manière dont le kernel va utiliser la mémoire SWAP, on va modifier le paramètre système vm.swappiness. Ce paramètre exprime l&#039;agressivité du noyau à utiliser l&#039;espace de pagination (SWAP) pour les processus réalisant peu d&#039;échanges mémoire.&lt;br /&gt;
&lt;br /&gt;
La valeur exprimée est un pourcentage. &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; corresponds à une utilisation la plus faible possible de SWAP (quasi inexistante), tandis que &amp;lt;code&amp;gt;100&amp;lt;/code&amp;gt; corresponds à une utilisation maximale de la SWAP.&lt;br /&gt;
&lt;br /&gt;
Pour connaitre sa valeur actuelle&lt;br /&gt;
 cat /proc/sys/vm/swappiness&lt;br /&gt;
&lt;br /&gt;
Pour modifier à la volée&lt;br /&gt;
 sysctl vm.swappiness=XX&lt;br /&gt;
(Il faut désactiver et réactiver totalement les espaces SWAP pour prendre en compte la valeur)&lt;br /&gt;
 swapoff -av&lt;br /&gt;
 swapon -av &lt;br /&gt;
Pour rendre le paramètre actif dès le boot, rajouter &amp;lt;code&amp;gt;vm.swappiness=XX&amp;lt;/code&amp;gt; dans le fichier &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Script pour connaitre les processus qui swappent :&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # Get current swap usage for all running processes&lt;br /&gt;
 # Erik Ljungstrom 27/05/2011&lt;br /&gt;
 SUM=0&lt;br /&gt;
 OVERALL=0&lt;br /&gt;
 for DIR in `find /proc/ -maxdepth 1 -type d | egrep &amp;quot;^/proc/[0-9]&amp;quot;` ; do&lt;br /&gt;
 PID=`echo $DIR | cut -d / -f 3`&lt;br /&gt;
 PROGNAME=`ps -p $PID -o comm --no-headers`&lt;br /&gt;
 for SWAP in `grep Swap $DIR/smaps 2&amp;gt;/dev/null| awk &#039;{ print $2 }&#039;` ; do&lt;br /&gt;
 let SUM=$SUM+$SWAP&lt;br /&gt;
 done&lt;br /&gt;
 echo &amp;quot;PID=$PID - Swap used: $SUM - ($PROGNAME )&amp;quot;&lt;br /&gt;
 let OVERALL=$OVERALL+$SUM&lt;br /&gt;
 SUM=0&lt;br /&gt;
 done  | grep -v &amp;quot;Swap used: 0 &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Nouveaux Kernels&lt;br /&gt;
Script pour connaitre les processus qui swappent :&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # Get current swap usage for all running processes&lt;br /&gt;
 # Erik Ljungstrom 27/05/2011&lt;br /&gt;
 SUM=0&lt;br /&gt;
 OVERALL=0&lt;br /&gt;
 for DIR in `find /proc/ -maxdepth 1 -type d | egrep &amp;quot;^/proc/[0-9]&amp;quot;` ; do&lt;br /&gt;
 PID=`echo $DIR | cut -d / -f 3`&lt;br /&gt;
 PROGNAME=`ps -p $PID -o comm --no-headers`&lt;br /&gt;
 for SWAP in `grep VmSwap $DIR/status 2&amp;gt;/dev/null| awk &#039;{ print $2 }&#039;` ; do&lt;br /&gt;
 let SUM=$SUM+$SWAP&lt;br /&gt;
 done&lt;br /&gt;
 echo &amp;quot;PID=$PID - Swap used: $SUM - ($PROGNAME )&amp;quot;&lt;br /&gt;
 let OVERALL=$OVERALL+$SUM&lt;br /&gt;
 SUM=0&lt;br /&gt;
 done  | grep -v &amp;quot;Swap used: 0 &amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Limite sur le nombre de fichiers ouverts==&lt;br /&gt;
Sur Linux, il existe un paramètre permettant de limiter le nombre de fichiers ouverts par un utilisateur. Il s&#039;agit du paramètre &amp;lt;code&amp;gt;ulimit&amp;lt;/code&amp;gt;. La valeur par défaut de ce paramètre est usuellement de 1024.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $ ulimit -a #liste les paramètres kernel des limites&lt;br /&gt;
 $ ulimit -n #affiche la limite du nombre de fichiers ouverts&lt;br /&gt;
 # ulimit -n 65535 #augmente la limite du nombre de fichiers à 65535 pour l&#039;utilisateur courant&lt;br /&gt;
&lt;br /&gt;
Modifier ce paramètre ne le modifie qu&#039;en &amp;quot;mou&amp;quot;. il n&#039;est valide que pour la session courante de l&#039;utilisateur en cours.&lt;br /&gt;
&lt;br /&gt;
Pour que cette modification soit permanente, il faut procéder à quelques ajustements :&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier &amp;lt;code&amp;gt;/etc/pam.d/common-session&amp;lt;/code&amp;gt; pour y insérer la ligne :&lt;br /&gt;
 session required pam_limits.so&lt;br /&gt;
Puis éditer le fichier &amp;lt;code&amp;gt;/etc/security/limits.conf&amp;lt;/code&amp;gt; pour procéder aux ajustements :&lt;br /&gt;
 user      soft     nofile     131070&lt;br /&gt;
 user      hard     nofile     262140&lt;br /&gt;
D&#039;autres modification peuvent être effectuées, se référer à &amp;lt;code&amp;gt;man 5 limits.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DUMMY RPM==&lt;br /&gt;
php-5.2.14-1.spec&lt;br /&gt;
 ###############################################################################&lt;br /&gt;
 Summary : Dummy php 5.2.14-1&lt;br /&gt;
 Name: Agarik-php&lt;br /&gt;
 Version: 5.2.14&lt;br /&gt;
 Release: 1&lt;br /&gt;
 License: GPL&lt;br /&gt;
 Group: Services&lt;br /&gt;
 Source: agarik.com&lt;br /&gt;
 URL: http://www.agarik.com&lt;br /&gt;
 BuildArch: noarch&lt;br /&gt;
 Provides: php-5.2.14-1&lt;br /&gt;
 &lt;br /&gt;
 %description&lt;br /&gt;
 Ceci est un dummy package pour le service &amp;lt;service-version&amp;gt; installé par Agarik&lt;br /&gt;
 %files&lt;br /&gt;
 ###############################################################################&lt;br /&gt;
&lt;br /&gt;
 rpmbuild -bb php-5.2.14-1.spec&lt;br /&gt;
 rpm -U /usr/src/redhat/RPMS/noarch/Agarik-php-5.2.14-1.noarch.rpm&lt;br /&gt;
&lt;br /&gt;
==7Zip script==&lt;br /&gt;
===compress tous les fichiers d&#039;un répertoire===&lt;br /&gt;
 @ECHO OFF&lt;br /&gt;
 FOR /F &amp;quot;usebackq delims==&amp;quot; %%y IN (`dir /b *.log`) DO CALL :compress %%~ny&lt;br /&gt;
 GOTO :fin&lt;br /&gt;
 :compress&lt;br /&gt;
 C:\&amp;quot;Program Files&amp;quot;\7-Zip\7z.exe a %1.zip %1.log&lt;br /&gt;
 del %1.log&lt;br /&gt;
 GOTO :eof&lt;br /&gt;
 :fin&lt;br /&gt;
 ECHO tous les fichiers ont ete traites...&lt;br /&gt;
&lt;br /&gt;
==MEGACLI==&lt;br /&gt;
 MegaCli -LDInfo -LALL -aALL ; donne infos essentiels&lt;br /&gt;
 MegaCli -LDSetProp ADRA -LALL -AALL ; passe le cache &amp;quot;Read Policy&amp;quot; en readadaptative&lt;br /&gt;
 MegaCli -LDSetProp WB -LALL -AALL ; passe le cache &amp;quot;Write Policy&amp;quot; en write back&lt;br /&gt;
 MegaCli -LDSetProp cached -LALL -AALL ; passe le cache en cached&lt;br /&gt;
 MegaCli -AdpBbuCmd -BBuLearn -a0 ; lance un relearn de la batterie&lt;br /&gt;
 MegaCli -AdpBbuCmd -GetBbuCapacityInfo  -aALL ; vérifie si la batterie est en charge ou pas&lt;br /&gt;
 MegaCli -AdpAllInfo -aALL ; info general du contolleur&lt;br /&gt;
 MegaCli -PDList -aALL ; info disques&lt;br /&gt;
 MegaCli -CfgDsply -aALL ; info sur la conf array / disques&lt;br /&gt;
 MegaCli -AdpEventLog -GetEvents -f events.log -aALL ; dumpe les logs de la carte dans events.log&lt;br /&gt;
 MegaCli -PdLocate -start -physdrv \[32:0\] -a0 ; faire blink la led du disque 32:0&lt;br /&gt;
Smartctl sur MegaCli :&lt;br /&gt;
 smartctl -a -d megaraid,N  /dev/sda&lt;br /&gt;
N représente le DeviceID sur le contrôlleur, a récupérer avec un PDlist&lt;br /&gt;
&lt;br /&gt;
==Similitudes commandes UNIX/LINUX/AIX==&lt;br /&gt;
http://bhami.com/rosetta.html&lt;br /&gt;
&lt;br /&gt;
== IPMI ==&lt;br /&gt;
A faire lorsque le process kipmi0 prends 100% de CPU et que le load monte en conséquence&lt;br /&gt;
 echo &amp;quot;remove,kcs,i/o,0xca8,rsp=4,rsi=1,rsh=0,irq=0,ipmb=0&amp;quot; &amp;gt; /sys/module/ipmi_si/parameters/hotmod&lt;br /&gt;
 echo &amp;quot;add,kcs,i/o,0xca8,rsp=4,rsi=1,rsh=0,irq=0,ipmb=0&amp;quot; &amp;gt; /sys/module/ipmi_si/parameters/hotmod&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Tips_syst%C3%A8mes&amp;diff=83</id>
		<title>Tips systèmes</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Tips_syst%C3%A8mes&amp;diff=83"/>
		<updated>2024-03-13T13:41:21Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : /* SYSTEME */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liens externe ==&lt;br /&gt;
https://jeznet.org/Wiki/CodeSnippets&lt;br /&gt;
==MYSQL==&lt;br /&gt;
Créer compte user :&lt;br /&gt;
 CREATE USER &amp;lt;user&amp;gt; IDENTIFIED BY &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
créer un compte utilisateur + database&lt;br /&gt;
 GRANT ALL PRIVILEGES ON &amp;lt;database&amp;gt;.* TO &#039;&amp;lt;user&amp;gt;&#039;@&#039;&amp;lt;host&amp;gt;&#039; IDENTIFIED BY &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON &amp;lt;database&amp;gt;.* TO &#039;&amp;lt;user&amp;gt;&#039;@&#039;&amp;lt;host&amp;gt;&#039; IDENTIFIED BY PASSWORD &#039;*&amp;lt;password_hash&amp;gt;&#039;;&lt;br /&gt;
voir les comptes utilisateurs&lt;br /&gt;
 select host, user, password from mysql.user;&lt;br /&gt;
dumper une base et la compresser a la volée&lt;br /&gt;
 mysqldump -h $HOST -u $USER -p $DATABASE | gzip &amp;gt; dump_$DATABASE.sql.gz&lt;br /&gt;
importer dans MySQL une base gzippée&lt;br /&gt;
 gunzip -c &amp;lt; dump_$DATABASE.sql.gz | mysql -h $HOST -u $USER -p $DATABASE&lt;br /&gt;
Import MySQL over SSH&lt;br /&gt;
 ssh $HOST &amp;quot;mysqldump -u $USER1 -p$PASS1 $DB1&amp;quot; | mysql -u$USER2 -p$PASS2 $DB2&lt;br /&gt;
Import GZIP MySQL over SSH On the fly&lt;br /&gt;
 ssh $HOST &amp;quot;mysqldump -u $USER1 -p$PASS1 $DB1 | gzip&amp;quot; | gunzip -c | mysql -u$USER2 -p$PASS2 $DB2&lt;br /&gt;
Dump MySQL Database, compress, export, and import - One liner&lt;br /&gt;
 mysqldump -u $USER1 -p$PASS1 $DB1 | pigz | ssh $HOST &amp;quot;gunzip -c | mysql -u$USER2 -p$PASS2 $DB2&amp;quot;&lt;br /&gt;
Obtenir la taille de toutes les bases de données&lt;br /&gt;
 SELECT table_schema &amp;quot;DB Name&amp;quot;, &lt;br /&gt;
 Round(Sum(data_length + index_length) / 1024 / 1024, 1) &amp;quot;DB Size in MB&amp;quot; &lt;br /&gt;
 FROM   information_schema.tables &lt;br /&gt;
 GROUP  BY table_schema;&lt;br /&gt;
Obtenir la taille d&#039;UNE base de données mentionnée&lt;br /&gt;
 SELECT table_schema &amp;quot;DB Name&amp;quot;, &lt;br /&gt;
 Round(Sum(data_length + index_length) / 1024 / 1024, 1) &amp;quot;DB Size in MB&amp;quot; &lt;br /&gt;
 FROM   information_schema.tables&lt;br /&gt;
 WHERE table_schema = &amp;quot;YOUR_DATABASE_NAME&amp;quot;  &lt;br /&gt;
 GROUP  BY table_schema;&lt;br /&gt;
Convertir toutes les tables InnoDB en InnoDB (lors de l&#039;ajout du parametre innodb_file_per_table=1 par exemple)&lt;br /&gt;
 for table in $(mysql --batch information_schema -e &amp;quot;select CONCAT(TABLE_SCHEMA,&#039;.&#039;,TABLE_NAME) FROM TABLES WHERE ENGINE=&#039;InnoDB&#039;;&amp;quot; | grep -v &amp;quot;CONCAT(TABLE_SCHEMA,&#039;.&#039;,TABLE_NAME)&amp;quot;)&lt;br /&gt;
 do&lt;br /&gt;
  mysql --batch -uadmin -p$(cat /etc/psa/.psa.shadow) -e &amp;quot;ALTER TABLE ${table} ENGINE=InnoDB;&amp;quot;&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
==SYSTEME==&lt;br /&gt;
beaucoup de connexions&lt;br /&gt;
 netstat -pant | grep -i esta | awk &#039;{print $5}&#039;| cut -d &amp;quot;:&amp;quot; -f 1| sort |uniq -c&lt;br /&gt;
fait le total d&#039;espace disque utilisé par les vhosts&lt;br /&gt;
 for i in `grep -i documentroot /opt/applis/httpd/conf/httpd.conf | grep -v &amp;quot;#&amp;quot;| awk &#039;{ print $2}&#039;`;do du -sh $i;done&lt;br /&gt;
fouiller un fichier de log entre 2 dates&lt;br /&gt;
 awk &#039;/Apr 1 11:00:00/,/Apr 1 16:15:00/{print}&#039; /var/log/httpd/httpd_access.log&lt;br /&gt;
 awk &#039;$0&amp;gt;=from&amp;amp;&amp;amp;$0&amp;lt;=to&#039; from=&amp;quot;Apr 1 11:00:00&amp;quot; to=&amp;quot;Apr 1 16:15:00&amp;quot; /var/log/httpd/httpd_access.log&lt;br /&gt;
Liste les répertoires et les trie par taille&lt;br /&gt;
 du -h --max-depth=1 | perl -e &#039;sub h{%h=(K=&amp;gt;10,M=&amp;gt;20,G=&amp;gt;30);($n,$u)=shift=~/([0-9.,]+)(\D)/; return $n*2**$h{$u}}print sort{h($b)&amp;lt;=&amp;gt;h($a)}&amp;lt;&amp;gt;;&#039;&lt;br /&gt;
tar over ssh&lt;br /&gt;
 tar zcvf - /path | ssh root@server &amp;quot;cat &amp;gt; /backup/wwwdata.tar.gz&amp;quot;&lt;br /&gt;
tar over ssh untar&lt;br /&gt;
 tar zcvf - /path/to/directory/ | ssh root@inrage.fr &amp;quot;cd /path/to/ &amp;amp;&amp;amp; tar zxvf - &amp;quot;&lt;br /&gt;
vitesse d&#039;un pipe&lt;br /&gt;
 command1 | cpipe -vt | command2&lt;br /&gt;
Linux force reboot (magical way)&lt;br /&gt;
 echo 1 &amp;gt; /proc/sys/kernel/sysrq&lt;br /&gt;
 echo b &amp;gt; /proc/sysrq-trigger&lt;br /&gt;
&lt;br /&gt;
==CHROOT==&lt;br /&gt;
Créer le nécessaire du chroot&lt;br /&gt;
 mount /dev/&amp;lt;devicepX&amp;gt; /mnt&lt;br /&gt;
 mount --bind /dev /mnt/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/dev/pts&lt;br /&gt;
 mount -t proc /proc /mnt/proc&lt;br /&gt;
 mount --bind /run  /mnt/run&lt;br /&gt;
 mount -t sysfs /sys /mnt/sys&lt;br /&gt;
 chroot /mnt /bin/bash&lt;br /&gt;
&lt;br /&gt;
Démonter le tout&lt;br /&gt;
 umount /mnt/sys&lt;br /&gt;
 umount /mnt/run&lt;br /&gt;
 umount /mnt/proc&lt;br /&gt;
 umount /mnt/dev/pts&lt;br /&gt;
 umount /mnt/dev&lt;br /&gt;
 umount /mnt&lt;br /&gt;
&lt;br /&gt;
==IPTABLES==&lt;br /&gt;
diagramme de flux&lt;br /&gt;
&lt;br /&gt;
http://www.linuxchannel.net/board/board_files/alpha/phpIqSLS2/iptables.gif&lt;br /&gt;
===Base firewall===&lt;br /&gt;
 *filter&lt;br /&gt;
 :INPUT DROP [0:0]&lt;br /&gt;
 :FORWARD DROP [0:0]&lt;br /&gt;
 :OUTPUT DROP [0:0]&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Global Rules&amp;quot;&lt;br /&gt;
 -A INPUT -f -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP&lt;br /&gt;
 -A INPUT -m state --state INVALID -j DROP&lt;br /&gt;
 -A INPUT -p tcp -m tcp --dport 25 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 50 --connlimit-mask 32 --connlimit-saddr -j DROP&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT&lt;br /&gt;
 -A INPUT -i lo -j ACCEPT&lt;br /&gt;
 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Public access Rules&amp;quot;&lt;br /&gt;
 -A INPUT -p tcp -m multiport --dports 25,80,110,143,443,465,587,993,995 -j ACCEPT&lt;br /&gt;
 -A INPUT -p udp -m udp --dport 53 -j ACCEPT&lt;br /&gt;
 -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Access Client&amp;quot;&lt;br /&gt;
 -A INPUT -m comment --comment &amp;quot;Dutiko : Admin &amp;amp; Monitoring&amp;quot;&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 62.210.45.142/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p tcp -m multiport --dport 21:22,5666,49152:49252 -m comment --comment &amp;quot;Supervision&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.162/32 -p udp -m udp --dport 161 -j ACCEPT&lt;br /&gt;
 -A INPUT -s 62.210.45.133/32 -p tcp -m multiport --dport 22,9102 -m comment --comment &amp;quot;Backup&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.164/32 -p tcp -m multiport --dport 21:22,10000,49152:49252 -m comment --comment &amp;quot;VPN Dutiko&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 176.31.89.173/32 -p tcp -m multiport --dport 21:22,49152:49252 -m comment --comment &amp;quot;admin Dutiko&amp;quot; -j ACCEPT&lt;br /&gt;
 -A INPUT -s 217.109.151.1/32 -p tcp -m tcp --dport 10000 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -o lo -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p icmp -j ACCEPT&lt;br /&gt;
 -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p tcp -m multiport --dports 21,25,80,443,465,587 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p udp -m multiport --dports 53,123 -j ACCEPT&lt;br /&gt;
 -A OUTPUT -p tcp -m tcp --dport 9103 -m comment --comment &amp;quot;Backup filers&amp;quot; -j ACCEPT&lt;br /&gt;
 COMMIT&lt;br /&gt;
&lt;br /&gt;
===Log du firewall===&lt;br /&gt;
 iptables -A INPUT -j LOG --log-prefix &amp;quot;firewall: &amp;quot; --log-level 7&lt;br /&gt;
rsyslogd&lt;br /&gt;
créer un fichier &#039;&#039;/etc/rsyslog.d/firewall.conf&#039;&#039; :&lt;br /&gt;
 :msg, contains, &amp;quot;firewall: &amp;quot; -/var/log/firewall.log&lt;br /&gt;
 &amp;amp; ~&lt;br /&gt;
Depuis rsyslog 7, il faut utiliser :&lt;br /&gt;
 if $msg contains &#039;firewall: &#039; then /var/log/firewall.log&lt;br /&gt;
 &amp;amp; stop&lt;br /&gt;
logrotate&lt;br /&gt;
 /var/log/firewall.log {&lt;br /&gt;
 	rotate 5&lt;br /&gt;
 	weekly&lt;br /&gt;
 	dateext&lt;br /&gt;
 	missingok&lt;br /&gt;
 	notifempty&lt;br /&gt;
 	compress&lt;br /&gt;
 	delaycompress&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Blacklist en masse===&lt;br /&gt;
utilisation = un des sed retire les connexion qui ont une patern de regex en nombre de connexion, ceux qui restent sont a bl (ici 60)--&lt;br /&gt;
 netstat -nt | grep &#039;:80&#039; | sed -e &#039;s/.*:80 //&#039; | sed -e &#039;s/:.*//&#039; | sort | uniq -c | grep -v 172.25.8.62 | grep -v 172.25.8.61 | grep  -v 172.25.8.60 | grep -v 10.252.5.74 | grep -v 10.252.5.25 | grep -v 217.174.192.246 | sed &#039;s/^ *[1-9] .*//g&#039; | sed &#039;s/^ *[1-5][0-9] .*//g&#039; | sed &#039;/^$/d&#039; | awk {&#039;print$2&#039;}  | sed &#039;/^[ ]*#\|#\|^$/! s/.*/network-object host &amp;amp;/&#039;&lt;br /&gt;
&lt;br /&gt;
==MAIL==&lt;br /&gt;
Clean mailq&lt;br /&gt;
 mailq | grep -B1 &amp;quot;Connection refused&amp;quot; | cut -d&amp;quot; &amp;quot; -f1 | grep -e &amp;quot;[A-Z][1-9]*&amp;quot; | xargs -L1 postsuper -d&lt;br /&gt;
 sendmail -qSMAILER-DAEMON -v -O Timeout.queuereturn=1s -O Timeout.connect=1s -O Timeout.ident=0s&lt;br /&gt;
relance force des mails :&lt;br /&gt;
 kill -ALRM &amp;lt;qmail-send pid&amp;gt;&lt;br /&gt;
Lire un fichier .db&lt;br /&gt;
 makemap -u hash /etc/mail/virtusertable.db&lt;br /&gt;
Nombre de mails par destinataires&lt;br /&gt;
 mailq|awk &#039;NR=3 {print $1}&#039;|awk -F &amp;quot;&amp;lt;&amp;quot; &#039;length($2)&amp;gt;0 {print $2}&#039;|sed &amp;quot;s/&amp;gt;//g&amp;quot;|sort|uniq -c|sort&lt;br /&gt;
Nombre de mails par domaine&lt;br /&gt;
 mailq|awk &#039;NR=3 {print $1}&#039;|awk -F &amp;quot;&amp;lt;&amp;quot; &#039;length($2)&amp;gt;0 {print tolower($2)}&#039;|sed &amp;quot;s/&amp;gt;//g&amp;quot;|awk -F &amp;quot;@&amp;quot; &#039;{print $2}&#039;|sort|uniq -c|sort&lt;br /&gt;
===SMTP en telnet===&lt;br /&gt;
 telnet serveur.com 25&lt;br /&gt;
 HELO agarik.com&lt;br /&gt;
 MAIL FROM: &amp;lt;sn4ky@sn4ky.net&amp;gt;&lt;br /&gt;
 RCPT TO: &amp;lt;sn4ky@sn4ky.net&amp;gt;&lt;br /&gt;
 DATA&lt;br /&gt;
 Subject: Sujet&lt;br /&gt;
 Message&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
encoder en base64 : http://ostermiller.org/calc/encode.html&lt;br /&gt;
&lt;br /&gt;
===IMAP en telnet===&lt;br /&gt;
&#039;&#039;inbox&#039;&#039; représente le nom du répertoire IMAP dans lequel on souhaite lire le mail&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;1&#039;&#039; représente le numéro du mail, par ordre d&#039;arrivée sur le serveur&lt;br /&gt;
 telnet serveur.com 143&lt;br /&gt;
 . LOGIN username ********&lt;br /&gt;
 . LIST &amp;quot;&amp;quot; &amp;quot;*&amp;quot;&lt;br /&gt;
 . SELECT inbox&lt;br /&gt;
 . FETCH 1 full&lt;br /&gt;
 . FETCH 1 BODY[TEXT]&lt;br /&gt;
 . LOGOUT&lt;br /&gt;
&lt;br /&gt;
source : http://bobpeers.com/technical/telnet_imap&lt;br /&gt;
&lt;br /&gt;
===POP en telnet===&lt;br /&gt;
 telnet serveur.com 110&lt;br /&gt;
 USER username&lt;br /&gt;
 PASS ********&lt;br /&gt;
 LIST&lt;br /&gt;
 TOP 1&lt;br /&gt;
 RETR 1&lt;br /&gt;
 DELE 1&lt;br /&gt;
 QUIT&lt;br /&gt;
&lt;br /&gt;
==APACHE==&lt;br /&gt;
===Rediriger entièrement en SSL===&lt;br /&gt;
 RewriteCond %{HTTPS} off&lt;br /&gt;
 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}&lt;br /&gt;
&lt;br /&gt;
===Interdire la navigation des robots===&lt;br /&gt;
 Header set X-Robots-Tag &amp;quot;noindex, noarchive, nosniff, nofollow&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==SWAP==&lt;br /&gt;
Modifier la manière dont le kernel va utiliser la mémoire SWAP, on va modifier le paramètre système vm.swappiness. Ce paramètre exprime l&#039;agressivité du noyau à utiliser l&#039;espace de pagination (SWAP) pour les processus réalisant peu d&#039;échanges mémoire.&lt;br /&gt;
&lt;br /&gt;
La valeur exprimée est un pourcentage. &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; corresponds à une utilisation la plus faible possible de SWAP (quasi inexistante), tandis que &amp;lt;code&amp;gt;100&amp;lt;/code&amp;gt; corresponds à une utilisation maximale de la SWAP.&lt;br /&gt;
&lt;br /&gt;
Pour connaitre sa valeur actuelle&lt;br /&gt;
 cat /proc/sys/vm/swappiness&lt;br /&gt;
&lt;br /&gt;
Pour modifier à la volée&lt;br /&gt;
 sysctl vm.swappiness=XX&lt;br /&gt;
(Il faut désactiver et réactiver totalement les espaces SWAP pour prendre en compte la valeur)&lt;br /&gt;
 swapoff -av&lt;br /&gt;
 swapon -av &lt;br /&gt;
Pour rendre le paramètre actif dès le boot, rajouter &amp;lt;code&amp;gt;vm.swappiness=XX&amp;lt;/code&amp;gt; dans le fichier &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Script pour connaitre les processus qui swappent :&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # Get current swap usage for all running processes&lt;br /&gt;
 # Erik Ljungstrom 27/05/2011&lt;br /&gt;
 SUM=0&lt;br /&gt;
 OVERALL=0&lt;br /&gt;
 for DIR in `find /proc/ -maxdepth 1 -type d | egrep &amp;quot;^/proc/[0-9]&amp;quot;` ; do&lt;br /&gt;
 PID=`echo $DIR | cut -d / -f 3`&lt;br /&gt;
 PROGNAME=`ps -p $PID -o comm --no-headers`&lt;br /&gt;
 for SWAP in `grep Swap $DIR/smaps 2&amp;gt;/dev/null| awk &#039;{ print $2 }&#039;` ; do&lt;br /&gt;
 let SUM=$SUM+$SWAP&lt;br /&gt;
 done&lt;br /&gt;
 echo &amp;quot;PID=$PID - Swap used: $SUM - ($PROGNAME )&amp;quot;&lt;br /&gt;
 let OVERALL=$OVERALL+$SUM&lt;br /&gt;
 SUM=0&lt;br /&gt;
 done  | grep -v &amp;quot;Swap used: 0 &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Nouveaux Kernels&lt;br /&gt;
Script pour connaitre les processus qui swappent :&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # Get current swap usage for all running processes&lt;br /&gt;
 # Erik Ljungstrom 27/05/2011&lt;br /&gt;
 SUM=0&lt;br /&gt;
 OVERALL=0&lt;br /&gt;
 for DIR in `find /proc/ -maxdepth 1 -type d | egrep &amp;quot;^/proc/[0-9]&amp;quot;` ; do&lt;br /&gt;
 PID=`echo $DIR | cut -d / -f 3`&lt;br /&gt;
 PROGNAME=`ps -p $PID -o comm --no-headers`&lt;br /&gt;
 for SWAP in `grep VmSwap $DIR/status 2&amp;gt;/dev/null| awk &#039;{ print $2 }&#039;` ; do&lt;br /&gt;
 let SUM=$SUM+$SWAP&lt;br /&gt;
 done&lt;br /&gt;
 echo &amp;quot;PID=$PID - Swap used: $SUM - ($PROGNAME )&amp;quot;&lt;br /&gt;
 let OVERALL=$OVERALL+$SUM&lt;br /&gt;
 SUM=0&lt;br /&gt;
 done  | grep -v &amp;quot;Swap used: 0 &amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Limite sur le nombre de fichiers ouverts==&lt;br /&gt;
Sur Linux, il existe un paramètre permettant de limiter le nombre de fichiers ouverts par un utilisateur. Il s&#039;agit du paramètre &amp;lt;code&amp;gt;ulimit&amp;lt;/code&amp;gt;. La valeur par défaut de ce paramètre est usuellement de 1024.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $ ulimit -a #liste les paramètres kernel des limites&lt;br /&gt;
 $ ulimit -n #affiche la limite du nombre de fichiers ouverts&lt;br /&gt;
 # ulimit -n 65535 #augmente la limite du nombre de fichiers à 65535 pour l&#039;utilisateur courant&lt;br /&gt;
&lt;br /&gt;
Modifier ce paramètre ne le modifie qu&#039;en &amp;quot;mou&amp;quot;. il n&#039;est valide que pour la session courante de l&#039;utilisateur en cours.&lt;br /&gt;
&lt;br /&gt;
Pour que cette modification soit permanente, il faut procéder à quelques ajustements :&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier &amp;lt;code&amp;gt;/etc/pam.d/common-session&amp;lt;/code&amp;gt; pour y insérer la ligne :&lt;br /&gt;
 session required pam_limits.so&lt;br /&gt;
Puis éditer le fichier &amp;lt;code&amp;gt;/etc/security/limits.conf&amp;lt;/code&amp;gt; pour procéder aux ajustements :&lt;br /&gt;
 user      soft     nofile     131070&lt;br /&gt;
 user      hard     nofile     262140&lt;br /&gt;
D&#039;autres modification peuvent être effectuées, se référer à &amp;lt;code&amp;gt;man 5 limits.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DUMMY RPM==&lt;br /&gt;
php-5.2.14-1.spec&lt;br /&gt;
 ###############################################################################&lt;br /&gt;
 Summary : Dummy php 5.2.14-1&lt;br /&gt;
 Name: Agarik-php&lt;br /&gt;
 Version: 5.2.14&lt;br /&gt;
 Release: 1&lt;br /&gt;
 License: GPL&lt;br /&gt;
 Group: Services&lt;br /&gt;
 Source: agarik.com&lt;br /&gt;
 URL: http://www.agarik.com&lt;br /&gt;
 BuildArch: noarch&lt;br /&gt;
 Provides: php-5.2.14-1&lt;br /&gt;
 &lt;br /&gt;
 %description&lt;br /&gt;
 Ceci est un dummy package pour le service &amp;lt;service-version&amp;gt; installé par Agarik&lt;br /&gt;
 %files&lt;br /&gt;
 ###############################################################################&lt;br /&gt;
&lt;br /&gt;
 rpmbuild -bb php-5.2.14-1.spec&lt;br /&gt;
 rpm -U /usr/src/redhat/RPMS/noarch/Agarik-php-5.2.14-1.noarch.rpm&lt;br /&gt;
&lt;br /&gt;
==7Zip script==&lt;br /&gt;
===compress tous les fichiers d&#039;un répertoire===&lt;br /&gt;
 @ECHO OFF&lt;br /&gt;
 FOR /F &amp;quot;usebackq delims==&amp;quot; %%y IN (`dir /b *.log`) DO CALL :compress %%~ny&lt;br /&gt;
 GOTO :fin&lt;br /&gt;
 :compress&lt;br /&gt;
 C:\&amp;quot;Program Files&amp;quot;\7-Zip\7z.exe a %1.zip %1.log&lt;br /&gt;
 del %1.log&lt;br /&gt;
 GOTO :eof&lt;br /&gt;
 :fin&lt;br /&gt;
 ECHO tous les fichiers ont ete traites...&lt;br /&gt;
&lt;br /&gt;
==MEGACLI==&lt;br /&gt;
 MegaCli -LDInfo -LALL -aALL ; donne infos essentiels&lt;br /&gt;
 MegaCli -LDSetProp ADRA -LALL -AALL ; passe le cache en readadaptative&lt;br /&gt;
 MegaCli -LDSetProp WB -LALL -AALL ; passe le cache en write back&lt;br /&gt;
 MegaCli -LDSetProp cached -LALL -AALL ; passe le cache en cached&lt;br /&gt;
 MegaCli -AdpBbuCmd -BBuLearn -a0 ; lance un relearn de la batterie&lt;br /&gt;
 MegaCli -AdpBbuCmd -GetBbuCapacityInfo  -aALL ; vérifie si la batterie est en charge ou pas&lt;br /&gt;
 MegaCli -AdpAllInfo -aALL ; info general du contolleur&lt;br /&gt;
 MegaCli -PDList -aALL ; info disques&lt;br /&gt;
 MegaCli -CfgDsply -aALL ; info sur la conf array / disques&lt;br /&gt;
 MegaCli -AdpEventLog -GetEvents -f events.log -aALL ; dumpe les logs de la carte dans events.log&lt;br /&gt;
 MegaCli -PdLocate -start -physdrv \[32:0\] -a0 ; faire blink la led du disque 32:0&lt;br /&gt;
Smartctl sur MegaCli :&lt;br /&gt;
 smartctl -a -d megaraid,N  /dev/sda&lt;br /&gt;
N représente le DeviceID sur le contrôlleur, a récupérer avec un PDlist&lt;br /&gt;
&lt;br /&gt;
==Similitudes commandes UNIX/LINUX/AIX==&lt;br /&gt;
http://bhami.com/rosetta.html&lt;br /&gt;
&lt;br /&gt;
== IPMI ==&lt;br /&gt;
A faire lorsque le process kipmi0 prends 100% de CPU et que le load monte en conséquence&lt;br /&gt;
 echo &amp;quot;remove,kcs,i/o,0xca8,rsp=4,rsi=1,rsh=0,irq=0,ipmb=0&amp;quot; &amp;gt; /sys/module/ipmi_si/parameters/hotmod&lt;br /&gt;
 echo &amp;quot;add,kcs,i/o,0xca8,rsp=4,rsi=1,rsh=0,irq=0,ipmb=0&amp;quot; &amp;gt; /sys/module/ipmi_si/parameters/hotmod&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Plesk&amp;diff=82</id>
		<title>Plesk</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Plesk&amp;diff=82"/>
		<updated>2024-02-21T08:19:50Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Lister les domaines =&lt;br /&gt;
 plesk bin domain --list&lt;br /&gt;
&lt;br /&gt;
= Lister les redirections emails =&lt;br /&gt;
 mysql -uadmin -p$(cat /etc/psa/.psa.shadow) --batch psa -e &amp;quot;SELECT CONCAT_WS(&#039;@&#039;,mail.mail_name,domains.name) AS adresse ,mail_redir.address AS redirection FROM domains,mail,mail_redir WHERE domains.id=mail.dom_id AND mn_id=mail.id ORDER BY domains.name ASC,mail.mail_name ASC;&amp;quot; | sed &#039;s/\t/\t-&amp;gt;\t/g&#039;&lt;br /&gt;
&lt;br /&gt;
= Lister les domaines par IP =&lt;br /&gt;
 MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -u admin -Dpsa -e&amp;quot;SELECT dom.id, dom.name, ia.ipAddressId, iad.ip_address FROM domains dom LEFT JOIN DomainServices d ON (dom.id = d.dom_id AND d.type = &#039;web&#039;) LEFT JOIN IpAddressesCollections ia ON ia.ipCollectionId = d.ipCollectionId LEFT JOIN IP_Addresses iad ON iad.id = ia.ipAddressId WHERE iad.ip_address=&#039;&amp;lt;THE.IP.ADDRESS.HERE&amp;gt;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Changer l&#039;IP d&#039;un domaine =&lt;br /&gt;
 plesk bin subscription -u &amp;quot;$DOMAIN&amp;quot; -ip &amp;lt;ip_address&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Lister les handlers PHP =&lt;br /&gt;
 plesk bin php_handler --list&lt;br /&gt;
&lt;br /&gt;
= Lister les id de domaines par version/handler PHP =&lt;br /&gt;
 MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -uadmin psa -e &amp;quot;select dom_id,php_handler_id from hosting where php_handler_id LIKE &#039;%5.2%&#039;;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Lister les domaines qui ont une version spécifique de PHP =&lt;br /&gt;
 MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -uadmin psa --batch -e &amp;quot;select name from domains, hosting WHERE domains.id=hosting.dom_id AND hosting.php_handler_id LIKE &#039;%72%&#039;;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Sortir une liste pour fichier hosts des sites hébergés =&lt;br /&gt;
 MYSQL_PWD=$(cat /etc/psa/.psa.shadow) mysql -u admin -Dpsa -e&amp;quot;SELECT dom.id, dom.name, ia.ipAddressId, iad.ip_address FROM domains dom LEFT JOIN DomainServices d ON (dom.id = d.dom_id AND d.type = &#039;web&#039;) LEFT JOIN IpAddressesCollections ia ON ia.ipCollectionId = d.ipCollectionId LEFT JOIN IP_Addresses iad ON iad.id = ia.ipAddressId&amp;quot; | awk {&#039;print $4&amp;quot; www.&amp;quot;$2&amp;quot; &amp;quot;$2&#039;}&lt;br /&gt;
&lt;br /&gt;
= Désactiver DNS pour tous les domaines =&lt;br /&gt;
 for dom in $(plesk bin domain --list) ; do plesk bin dns --off ${dom} ; done&lt;br /&gt;
&lt;br /&gt;
= Désactiver la gestion des mails pour tous les domaines =&lt;br /&gt;
 for dom in $(plesk bin domain --list) ; do plesk bin subscription --update ${dom} -mail_service false ; done&lt;br /&gt;
&lt;br /&gt;
= Voir les mots de passe des boites mail =&lt;br /&gt;
 plesk sbin mail_auth_view&lt;br /&gt;
&lt;br /&gt;
= Lister les date d&#039;expiration des certificats SSL TLS chargés dans postfix =&lt;br /&gt;
 for domain in $(postmap -s /var/spool/postfix/plesk/certs| cut -d$&#039;\t&#039; -f1) ; do echo $domain ; postmap -s /var/spool/postfix/plesk/certs| grep ${domain} | cut -d$&#039;\t&#039; -f2 |  base64 -d | openssl x509 -in -  -noout -enddate ; done&lt;br /&gt;
Afficher EXPIRED ou valid :&lt;br /&gt;
 for domain in $(postmap -s /var/spool/postfix/plesk/certs| cut -d$&#039;\t&#039; -f1) ; do CERTDATE=$(postmap -s /var/spool/postfix/plesk/certs| grep ${domain} | cut -d$&#039;\t&#039; -f2 |  base64 -d | openssl x509 -in -  -noout -enddate |  cut -d&amp;quot;=&amp;quot; -f2) ; CERTDATE_SEC=$(date -d &amp;quot;${CERTDATE}&amp;quot; +%s) ; if (( $CERTDATE_SEC &amp;lt; $(date +%s) )) ; then echo $domain : EXPIRED ; else echo $domain : valid ; fi ; done&lt;br /&gt;
&lt;br /&gt;
= Faire en sorte que le site https et le site http soit le même documentroot (et plus httpsdocs) =&lt;br /&gt;
 plesk bin subscription -u example.com -same_ssl true&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenSSH&amp;diff=81</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenSSH&amp;diff=81"/>
		<updated>2024-02-08T13:15:15Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : /* Calculer un fingerprint */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SFTP ==&lt;br /&gt;
=== Activer un chroot SFTP avec OpenSSH ===&lt;br /&gt;
&lt;br /&gt;
dans &amp;lt;code&amp;gt;/path/to/sshd_config&amp;lt;/code&amp;gt;&lt;br /&gt;
 Subsystem       sftp    internal-sftp&lt;br /&gt;
 Match group sftp&lt;br /&gt;
        ChrootDirectory /home/sftpusers/%u&lt;br /&gt;
        ForceCommand internal-sftp&lt;br /&gt;
        AllowTcpForwarding no&lt;br /&gt;
        GatewayPorts no&lt;br /&gt;
        X11Forwarding no&lt;br /&gt;
&lt;br /&gt;
=== Mettre l&#039;user dans le bon home directory à la connexion ===&lt;br /&gt;
&lt;br /&gt;
 groupadd -g 3000 sftp&lt;br /&gt;
 mkdir /home/sftpusers/&lt;br /&gt;
 mkdir -p /home/sftpusers/sftp-user/sftp-user&lt;br /&gt;
 useradd -g sftp -M -b / -s /sbin/nologin sftp-user&lt;br /&gt;
&lt;br /&gt;
L&#039;idée est d&#039;avoir dans &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; un utilisateur comme ceci :&lt;br /&gt;
 sftp-user:x:500:3000::/sftp-user:/sbin/nologin&lt;br /&gt;
&amp;lt;code&amp;gt;/sbin/nologin&amp;lt;/code&amp;gt; peut être remplacé par &amp;lt;code&amp;gt;/bin/false&amp;lt;/code&amp;gt;, le shell est forcé par le &amp;lt;code&amp;gt;ForceCommand&amp;lt;/code&amp;gt; de la sous section d&#039;OpenSSH&lt;br /&gt;
&lt;br /&gt;
=== Autoriser l&#039;utilisation d&#039;une clé RSA ===&lt;br /&gt;
dans &amp;lt;code&amp;gt;/path/to/sshd_config&amp;lt;/code&amp;gt;&lt;br /&gt;
 AuthorizedKeysFile      /home/sftpusers/%u/.ssh/authorized_keys&lt;br /&gt;
Attention, l&#039;utilisateur &amp;quot;sftp-user&amp;quot; doit impérativement pouvoir lire le fichier authorized_keys (les droits de l&#039;intégralité du path doivent au moins contenir &amp;lt;code&amp;gt;read&amp;lt;/code&amp;gt; pour le groupe &amp;lt;code&amp;gt;sftpusers&amp;lt;/code&amp;gt;, le chroot étant réalisée une fois les credentials obtenus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ajouter du log verbeux ===&lt;br /&gt;
Dans la rubrique &amp;lt;code&amp;gt;Match&amp;lt;/code&amp;gt;, ajouter &amp;lt;code&amp;gt; -f AUTH -l INFO&amp;lt;/code&amp;gt; à la fin de la ligne &amp;lt;code&amp;gt;ForceCommand internal-sftp&amp;lt;/code&amp;gt;.&lt;br /&gt;
Cela va avoir pour effet de forcer l&#039;user à écrire dans son /dev/log, qui n&#039;existe pas, il faut donc créer le répertoire &amp;lt;code&amp;gt;mkdir /home/sftpusers/sftp-user/dev&amp;lt;/code&amp;gt; et demander à rsyslog d&#039;aller y écouter. Dans &amp;lt;code&amp;gt;/etc/rsyslog.d/chroot.conf&amp;lt;/code&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
 $AddUnixListenSocket /home/sftpusers/sftp-user/dev/log&lt;br /&gt;
&lt;br /&gt;
Un restart du tout et c&#039;est OK.&lt;br /&gt;
&lt;br /&gt;
Il est possible de changer le niveau de verbosité (configuré à &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;) et le syslogfacility (&amp;lt;code&amp;gt;AUTH&amp;lt;/code&amp;gt;), mais il faudra également penser à adapter rsyslog pour traiter cette facility.&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
=== Afficher les algo acceptés par ssh sshd ===&lt;br /&gt;
 ssh -Q key&lt;br /&gt;
&lt;br /&gt;
=== Créer une clé SSH ===&lt;br /&gt;
 ssh-keygen -q -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot; -C &amp;quot;$(whoami)@$(hostname)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 ssh-keygen -q -t ed25519 -f ~/.ssh/id_ed25519 -N &amp;quot;&amp;quot; -C &amp;quot;$(whoami)@$(hostname)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Calculer un fingerprint ===&lt;br /&gt;
format sha256 encodé en base64&lt;br /&gt;
 ssh-keygen -lf ~/.ssh/id_rsa.pub&lt;br /&gt;
pour l&#039;avoir en ancien format MD5&lt;br /&gt;
 ssh-keygen -lf ~/.ssh/id_rsa.pub -E md5&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Nettoyage_de_sites_hack%C3%A9s&amp;diff=80</id>
		<title>Nettoyage de sites hackés</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Nettoyage_de_sites_hack%C3%A9s&amp;diff=80"/>
		<updated>2023-12-20T14:15:48Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nettoyage prestashop&lt;br /&gt;
 https://devcustom.net/public/scripts/cleaner.zip&lt;br /&gt;
Quelques commandes utiles pour trouver rapidement des fichiers d&#039;un site web qui contiennent du code malicieux (frauduleux, toussa toussa)&lt;br /&gt;
&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$auth_pass = &amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$_passssword&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | sort --uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;preg_replace(\&amp;quot;\/\.\*\/e\&amp;quot;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;@preg_replace&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$____=&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;eval(.*(\$.*, \$.*));?&amp;gt;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.*=\&amp;quot;stop_\&amp;quot;;\$.*=strtoupper(&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.*=\&amp;quot;stop_\&amp;quot;;\$.*=strtolower(&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;$.*=&amp;quot;.*_&amp;quot;;$.*=strtoupper(&#039; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;$.*=&amp;quot;.*_&amp;quot;;$.*=strtolower(&#039; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;echo &#039;You are forbidden\!&#039;;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$.*=&amp;quot;.*&amp;quot;;@eval(&#039; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;global\$&#039; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;&amp;lt;\?php *\$GLOBALS\[&#039; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$GLOBALS\[\$GLOBALS.*\.\$GLOBALS&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$_COOKIE\[.*\$_COOKIE\[.*\$_COOKIE&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;if(isset(\$_GET\[&#039;.*&#039;\])){if(isset(\$_FILES\[&#039;.*&#039;\]))&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$. = .*; assert(\$.(&#039;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.*=\$_COOKIE;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;@setcookie&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;@move_uploaded_file&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$.*=&amp;quot;base64_decode&amp;quot;;return \$&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;eval.*base64_decode&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;create_function.*base64_decode&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;php eval(\$_POST\[.*\]&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;&amp;lt;?php *\$.*?&amp;gt;&amp;lt;?php&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -iE &amp;quot;@system\(.*\.sh&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$s_.*shell&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;$GLOBALS.*packer.*shell.*;&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$b64 = \&amp;quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\&amp;quot;;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.* = fwrite(\$.*, \$.*); fclose(\$.*); echo \$.*; exit()&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;&amp;lt;script&amp;gt;var.*&#039;?key=b64&#039;&amp;quot; | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.* = \$.*{.*} \. \$.*{.*} \. \$.*{.*}&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.*=.*;.*function .*\(\$.*, \$.*\){\$.*&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;&amp;lt;\?php \$.* = \&amp;quot;.*\&amp;quot;;\$.* = \&amp;quot;.*\&amp;quot;;\$.* = \&amp;quot;.*\&amp;quot;;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;&amp;lt;\?php \$.*=\$.*\[.*\];.*eval(\$i&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;$.*=urldecode(\&amp;quot;.*\&amp;quot;);\$.*=\$.*{.*}\.\$.*&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;&amp;lt;?php  preg_replace(\&amp;quot;.*\&amp;quot;, \&amp;quot;.*&amp;quot;\.&amp;quot;.*(&#039;\&amp;quot;.\$_REQUEST\[&#039;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;preg_match(\&amp;quot;/(bing|googlebot|bingbot|google|yahoo)/\&amp;quot;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;@include &amp;quot;\\x&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;if(!empty($this-&amp;gt;.*))return $this-&amp;gt;.*;&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;if(move_uploaded_file($temp,$file)&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;if (move_uploaded_file(\$_FILES&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;IndoXploit&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;if(md5(\$_GET\[&#039;pwd&#039;\]&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;cPanel Cracker&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;Gassrini&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;define(&#039;__SEC_VALUE__&#039;&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;base64_decode(\$_POST\[&#039;.*&#039;\]); @eval&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;\$.*=base64_decode(&#039;.*&#039;).\$_GET&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;payload_file&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -iP &#039;eval\(&amp;quot;\\x.*\\x.*\\x.*\\x.*\\x.*\\x.*\\x.*\\x.*&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;eval (\$_POST\[&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$.*=.*str_replace(&amp;quot;.*&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;.*s.*t.*r.*_.*r.*e.*p.*l.*a.*c.*e.*&amp;quot;);&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$.*=urldecode(.*);\$GLOBALS\[.*\]=\$.*{.*}\.\$&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;if(\$password!=\$config_password)&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &#039;\$rn=array_shift(\$.*);\$.*=array();foreach(\$.* as $.*){array_push(\$.*,(\$.*-\$.*));}\$.*=\$.*;&#039; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -li &#039;\$.* = stripslashes(base64_decode(\$_POST\[&#039;.*&#039;\]));&#039;&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -li &#039;gzinflate.*\\x&#039;&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -li &#039;gzinflate(str_rot13(base64_decode&#039;&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -l &#039;GIF89a&#039;&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -li &#039;b374k&#039;&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -Pli &#039;Web Shell by oRb|WSO_VERSION&#039;&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -li &#039;FoxAutoV4&#039;&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -li &#039;&amp;lt;title&amp;gt;MARIJUANA&amp;lt;/title&amp;gt;&#039;&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -i &amp;quot;encode(base64_decode&amp;quot; | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -li &#039;.\{1000\}&#039; $i | cut -d&amp;quot;:&amp;quot; -f1 | uniq&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -li &#039;error_reporting(0)&#039;&lt;br /&gt;
 find . -name &amp;quot;*.php&amp;quot; -print0 | xargs -0 grep -li &#039;leafmailer&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 old_IFS=$IFS     # sauvegarde du searateur de champ&lt;br /&gt;
 IFS=$&#039;\n&#039;     # nouveau separateur de champ, le caractere fin de ligne&lt;br /&gt;
 for line in $(find . -type f -name &amp;quot;*.php&amp;quot; | xargs wc -l | egrep -v &amp;quot;*.total$&amp;quot;)&lt;br /&gt;
 do&lt;br /&gt;
 	FILE=$(echo ${line} | awk {&#039;print $2&#039;})&lt;br /&gt;
 	NBR=$(echo ${line} | awk {&#039;print $1&#039;})&lt;br /&gt;
 	if [ $(ls -l $FILE | awk {&#039;print $5&#039;}) -gt 33 ]&lt;br /&gt;
 	then&lt;br /&gt;
 		if [ ${NBR} = 0 ]&lt;br /&gt;
 		then&lt;br /&gt;
 			if [ $(grep -c &amp;quot;You don&#039;t belong here&amp;quot; $FILE) = 0 ]&lt;br /&gt;
 			then&lt;br /&gt;
 				echo &amp;quot;$FILE&amp;quot;&lt;br /&gt;
 			fi&lt;br /&gt;
 		elif [ ${NBR} = 1 ]&lt;br /&gt;
 		then&lt;br /&gt;
 			echo &amp;quot;$FILE&amp;quot;&lt;br /&gt;
 		elif [ ${NBR} = 2 ]&lt;br /&gt;
 		then&lt;br /&gt;
 			echo &amp;quot;$FILE&amp;quot;&lt;br /&gt;
 		fi&lt;br /&gt;
 	fi&lt;br /&gt;
 done&lt;br /&gt;
 IFS=$old_IFS&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenSSH&amp;diff=79</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenSSH&amp;diff=79"/>
		<updated>2023-12-19T13:18:40Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : /* Tips */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SFTP ==&lt;br /&gt;
=== Activer un chroot SFTP avec OpenSSH ===&lt;br /&gt;
&lt;br /&gt;
dans &amp;lt;code&amp;gt;/path/to/sshd_config&amp;lt;/code&amp;gt;&lt;br /&gt;
 Subsystem       sftp    internal-sftp&lt;br /&gt;
 Match group sftp&lt;br /&gt;
        ChrootDirectory /home/sftpusers/%u&lt;br /&gt;
        ForceCommand internal-sftp&lt;br /&gt;
        AllowTcpForwarding no&lt;br /&gt;
        GatewayPorts no&lt;br /&gt;
        X11Forwarding no&lt;br /&gt;
&lt;br /&gt;
=== Mettre l&#039;user dans le bon home directory à la connexion ===&lt;br /&gt;
&lt;br /&gt;
 groupadd -g 3000 sftp&lt;br /&gt;
 mkdir /home/sftpusers/&lt;br /&gt;
 mkdir -p /home/sftpusers/sftp-user/sftp-user&lt;br /&gt;
 useradd -g sftp -M -b / -s /sbin/nologin sftp-user&lt;br /&gt;
&lt;br /&gt;
L&#039;idée est d&#039;avoir dans &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; un utilisateur comme ceci :&lt;br /&gt;
 sftp-user:x:500:3000::/sftp-user:/sbin/nologin&lt;br /&gt;
&amp;lt;code&amp;gt;/sbin/nologin&amp;lt;/code&amp;gt; peut être remplacé par &amp;lt;code&amp;gt;/bin/false&amp;lt;/code&amp;gt;, le shell est forcé par le &amp;lt;code&amp;gt;ForceCommand&amp;lt;/code&amp;gt; de la sous section d&#039;OpenSSH&lt;br /&gt;
&lt;br /&gt;
=== Autoriser l&#039;utilisation d&#039;une clé RSA ===&lt;br /&gt;
dans &amp;lt;code&amp;gt;/path/to/sshd_config&amp;lt;/code&amp;gt;&lt;br /&gt;
 AuthorizedKeysFile      /home/sftpusers/%u/.ssh/authorized_keys&lt;br /&gt;
Attention, l&#039;utilisateur &amp;quot;sftp-user&amp;quot; doit impérativement pouvoir lire le fichier authorized_keys (les droits de l&#039;intégralité du path doivent au moins contenir &amp;lt;code&amp;gt;read&amp;lt;/code&amp;gt; pour le groupe &amp;lt;code&amp;gt;sftpusers&amp;lt;/code&amp;gt;, le chroot étant réalisée une fois les credentials obtenus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ajouter du log verbeux ===&lt;br /&gt;
Dans la rubrique &amp;lt;code&amp;gt;Match&amp;lt;/code&amp;gt;, ajouter &amp;lt;code&amp;gt; -f AUTH -l INFO&amp;lt;/code&amp;gt; à la fin de la ligne &amp;lt;code&amp;gt;ForceCommand internal-sftp&amp;lt;/code&amp;gt;.&lt;br /&gt;
Cela va avoir pour effet de forcer l&#039;user à écrire dans son /dev/log, qui n&#039;existe pas, il faut donc créer le répertoire &amp;lt;code&amp;gt;mkdir /home/sftpusers/sftp-user/dev&amp;lt;/code&amp;gt; et demander à rsyslog d&#039;aller y écouter. Dans &amp;lt;code&amp;gt;/etc/rsyslog.d/chroot.conf&amp;lt;/code&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
 $AddUnixListenSocket /home/sftpusers/sftp-user/dev/log&lt;br /&gt;
&lt;br /&gt;
Un restart du tout et c&#039;est OK.&lt;br /&gt;
&lt;br /&gt;
Il est possible de changer le niveau de verbosité (configuré à &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;) et le syslogfacility (&amp;lt;code&amp;gt;AUTH&amp;lt;/code&amp;gt;), mais il faudra également penser à adapter rsyslog pour traiter cette facility.&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
=== Afficher les algo acceptés par ssh sshd ===&lt;br /&gt;
 ssh -Q key&lt;br /&gt;
&lt;br /&gt;
=== Créer une clé SSH ===&lt;br /&gt;
 ssh-keygen -q -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot; -C &amp;quot;$(whoami)@$(hostname)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 ssh-keygen -q -t ed25519 -f ~/.ssh/id_ed25519 -N &amp;quot;&amp;quot; -C &amp;quot;$(whoami)@$(hostname)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Calculer un fingerprint ===&lt;br /&gt;
 ssh-keygen -lf ~/.ssh/id_rsa.pub&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=OpenSSH&amp;diff=78</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=OpenSSH&amp;diff=78"/>
		<updated>2023-09-28T09:39:10Z</updated>

		<summary type="html">&lt;p&gt;Sn4kY : /* Créer une clé SSH */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SFTP ==&lt;br /&gt;
=== Activer un chroot SFTP avec OpenSSH ===&lt;br /&gt;
&lt;br /&gt;
dans &amp;lt;code&amp;gt;/path/to/sshd_config&amp;lt;/code&amp;gt;&lt;br /&gt;
 Subsystem       sftp    internal-sftp&lt;br /&gt;
 Match group sftp&lt;br /&gt;
        ChrootDirectory /home/sftpusers/%u&lt;br /&gt;
        ForceCommand internal-sftp&lt;br /&gt;
        AllowTcpForwarding no&lt;br /&gt;
        GatewayPorts no&lt;br /&gt;
        X11Forwarding no&lt;br /&gt;
&lt;br /&gt;
=== Mettre l&#039;user dans le bon home directory à la connexion ===&lt;br /&gt;
&lt;br /&gt;
 groupadd -g 3000 sftp&lt;br /&gt;
 mkdir /home/sftpusers/&lt;br /&gt;
 mkdir -p /home/sftpusers/sftp-user/sftp-user&lt;br /&gt;
 useradd -g sftp -M -b / -s /sbin/nologin sftp-user&lt;br /&gt;
&lt;br /&gt;
L&#039;idée est d&#039;avoir dans &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; un utilisateur comme ceci :&lt;br /&gt;
 sftp-user:x:500:3000::/sftp-user:/sbin/nologin&lt;br /&gt;
&amp;lt;code&amp;gt;/sbin/nologin&amp;lt;/code&amp;gt; peut être remplacé par &amp;lt;code&amp;gt;/bin/false&amp;lt;/code&amp;gt;, le shell est forcé par le &amp;lt;code&amp;gt;ForceCommand&amp;lt;/code&amp;gt; de la sous section d&#039;OpenSSH&lt;br /&gt;
&lt;br /&gt;
=== Autoriser l&#039;utilisation d&#039;une clé RSA ===&lt;br /&gt;
dans &amp;lt;code&amp;gt;/path/to/sshd_config&amp;lt;/code&amp;gt;&lt;br /&gt;
 AuthorizedKeysFile      /home/sftpusers/%u/.ssh/authorized_keys&lt;br /&gt;
Attention, l&#039;utilisateur &amp;quot;sftp-user&amp;quot; doit impérativement pouvoir lire le fichier authorized_keys (les droits de l&#039;intégralité du path doivent au moins contenir &amp;lt;code&amp;gt;read&amp;lt;/code&amp;gt; pour le groupe &amp;lt;code&amp;gt;sftpusers&amp;lt;/code&amp;gt;, le chroot étant réalisée une fois les credentials obtenus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ajouter du log verbeux ===&lt;br /&gt;
Dans la rubrique &amp;lt;code&amp;gt;Match&amp;lt;/code&amp;gt;, ajouter &amp;lt;code&amp;gt; -f AUTH -l INFO&amp;lt;/code&amp;gt; à la fin de la ligne &amp;lt;code&amp;gt;ForceCommand internal-sftp&amp;lt;/code&amp;gt;.&lt;br /&gt;
Cela va avoir pour effet de forcer l&#039;user à écrire dans son /dev/log, qui n&#039;existe pas, il faut donc créer le répertoire &amp;lt;code&amp;gt;mkdir /home/sftpusers/sftp-user/dev&amp;lt;/code&amp;gt; et demander à rsyslog d&#039;aller y écouter. Dans &amp;lt;code&amp;gt;/etc/rsyslog.d/chroot.conf&amp;lt;/code&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
 $AddUnixListenSocket /home/sftpusers/sftp-user/dev/log&lt;br /&gt;
&lt;br /&gt;
Un restart du tout et c&#039;est OK.&lt;br /&gt;
&lt;br /&gt;
Il est possible de changer le niveau de verbosité (configuré à &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;) et le syslogfacility (&amp;lt;code&amp;gt;AUTH&amp;lt;/code&amp;gt;), mais il faudra également penser à adapter rsyslog pour traiter cette facility.&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
=== Afficher les algo acceptés par ssh sshd ===&lt;br /&gt;
 ssh -Q key&lt;br /&gt;
&lt;br /&gt;
=== Créer une clé SSH ===&lt;br /&gt;
 ssh-keygen -q -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot; -C &amp;quot;$(whoami)@$(hostname)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 ssh-keygen -q -t ed25519 -f ~/.ssh/id_ed25519 -N &amp;quot;&amp;quot; -C &amp;quot;$(whoami)@$(hostname)&amp;quot;&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
</feed>