<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://www.paradoxal.org/blog/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Blog Blog - Balise - Sécurité</title>
  <link>http://www.paradoxal.org/blog/</link>
  <atom:link href="http://www.paradoxal.org/blog/feed/tag/S%C3%A9curit%C3%A9/rss2" rel="self" type="application/rss+xml"/>
  <description>Blogblog vous propose  un aide mémoire d'un développeur PHP / Mysql passionné par l'administration Linux. Seza - son autheur - vous met donc à disposition ses astuces, les mauvais moments et difficultés rencontrées mais aussi ses connaissances.
Même si ce blog s'oriente très clairement vers les lignes de code illisibles pour nombreux d'entre vous, actualité, coup de gueule et information sur les technos du moment ne seront pas absentes. Bonne visite !</description>
  <language>fr</language>
  <pubDate>Thu, 21 Aug 2008 19:06:04 +0200</pubDate>
  <copyright>licence creative commons</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Serveur Debian - Antispam email</title>
    <link>http://www.paradoxal.org/blog/post/2007/08/05/Serveur-Debian-Antispam-email</link>
    <guid isPermaLink="false">urn:md5:29461e8f6f9628573bac2a8869aace16</guid>
    <pubDate>Sat, 25 Aug 2007 13:19:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Serveur Debian</category>
        <category>Dspam</category><category>Linux</category><category>Mysql</category><category>SMTP</category><category>Spam</category><category>Sécurité</category><category>Utilisateurs virtuels</category>    
    <description>&lt;p&gt;&lt;strong&gt;CHAPITRE 8&amp;nbsp;: DSPAM&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Maintenant que nous possédons un très bel outil qui nous permet d'envoyer et de recevoir des e-mails, il ne saurait tarder à ce que vous receviez quelques spams.
Nous allons donc installer un antispam.&lt;/p&gt;


&lt;p&gt;Pour commencer installons déjà un antispam. Etant un habitué de Spamassassin et en cherchant sur la toile de quoi aller plus loin avec SA j'ai découvert Dspam. Alors j'ai choisi d'utiliser du coup ce dernier pour mon tutorial. Je préfère la démarche de mise en place autour de Dspam, malgré que je le connaisse peu, je me sens plus à l'aise qu'avec SA.
Dspam offre aussi un atout performance par rapport à SA ce qui n'est pas négligeable surtout si vous hébergez beaucoup de boites plus ou moins spammées.
Puisque nous hébergeons des utilisateurs virtuels sur notre Postfix et Dspam offre la possibilité d'être couplé à Mysql et d'être configurable utilisateur par utilisateur, nous allons par conséquent exploiter cette possibilité.&lt;/p&gt;


&lt;p&gt;Dspam à la particularité de devoir tout apprendre, c'est à dire qu'au début aucun spam ne sera recensés. Nous allons configurer deux boites e-mails &lt;q&gt;« spam@bebenet.local »&lt;/q&gt; et &lt;q&gt;« ham@bebenet.local »&lt;/q&gt; auxquelles nous transférerons respectivement les faux négatifs et les faux positifs afin que Dspam apprenne à reconnaître les bons des mauvais e-mails.&lt;/p&gt;


&lt;p&gt;Maintenant que le décor est planté, cette configuration aura le démérite que chaque utilisateur devra commencer de zéro avec Dspam mais Dspam aura la finesse de filtrer la boite e-mail de l'utilisateur tout comme ce dernier lui aura appris. Un véritable filtre personnalisé.
Néanmoins il existe des méthodes pour que Dspam apprenne plus vite à partir d'une base de spam préétablie. Je n'utiliserai pas cette fonctionnalité pour deux raisons.
La première est du fait que les bases de spams vieillissent très vite et les spams appris ne seront plus d'actualité ce qui ne servira en rien à Dspam.
La deuxième provient de mon expérience personnelle avec Dspam. Recevant une centaine de spam par jour Dspam n'a pas mis plus de deux heures pour commencer à attraper les premiers spams en trois jours il filtrait tout. Après les quelques semaines qui se sont passées entre la rédaction de se tuto et sa publication. Voici les statistique de mon Dspam.&lt;/p&gt;


&lt;p&gt;2 883 spam détecté dont 7 faux positifs et sur les 758 e-mail détecté comme valide seulement 53 faux négatif. Bien entendu ces résultats peuvent fortement varier en fonction de la typologie et de la variabilité des e-mails reçus.&lt;/p&gt;


&lt;p&gt;Dspam à son installation cherchera à se connecter en &lt;q&gt;« root »&lt;/q&gt; sur notre base de données. Etant donné que nous avions renommer l'utilisateur &lt;q&gt;« root »&lt;/q&gt; en &lt;q&gt;« bebeserv »&lt;/q&gt;, nous ferons machine arrière le temps de l'installation.&lt;/p&gt;


&lt;p&gt;Il est temps d'installer Dspam maintenant – place à l'action&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo -i
Password:
bebeserv:/etc/mysql# mysql -u bebeserv -p
Enter password:
[...]

mysql&amp;gt; rename user bebeserv@localhost to root@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql&amp;gt; flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql&amp;gt; exit
Bye
bebeserv:~# apt-get update
[...]
bebeserv:~# apt-get install dspam dspam-drv-mysql dspam-doc
[...]
&lt;/pre&gt;


&lt;p&gt;Lors de l'installation, répondez oui à &lt;q&gt;« dbconfig-common »&lt;/q&gt;, entrez le mot de passe &lt;q&gt;« root »&lt;/q&gt; (enfin &lt;q&gt;« bebeserv »&lt;/q&gt;) de Mysql puis le mot de passe de l'utilisateur Dspam qui sera créé et confirmer ce mot de passe.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/mysql# mysql -u root -p
Enter password:
[...]

mysql&amp;gt; rename user root@localhost to bebeserv@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql&amp;gt; flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql&amp;gt; exit
Bye
&lt;/pre&gt;


&lt;p&gt;Je vous passe ici l'exploration de la base de données créée qui doit normalement se prénomée par un nom un peu barbare dixit&amp;nbsp;: &lt;q&gt;« libdspam7drvmysql »&lt;/q&gt; et l'utilisateur attribué sera nommé &lt;q&gt;« libdspam7-drv-my »&lt;/q&gt;.&lt;/p&gt;


&lt;p&gt;Place à la configuration&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# nano /etc/dspam/dspam.conf

StorageDriver /usr/lib/dspam/libmysql_drv.so

DeliveryHost        127.0.0.1
DeliveryPort        10026
DeliveryIdent       localhost
DeliveryProto       SMTP

Preference &amp;quot;signatureLocation=message&amp;quot;  # 'message' or 'headers'
Preference &amp;quot;showFactors=on&amp;quot;
Preference &amp;quot;spamAction=tag&amp;quot;
Preference &amp;quot;spamSubject=***SPAM***&amp;quot;

#
# Purge configuration: Set dspam_clean purge default options, if not otherwise
# specified on the commandline
#
#PurgeSignatures 14          # Stale signatures
#PurgeNeutral    90          # Tokens with neutralish probabilities
#PurgeUnused     90          # Unused tokens
#PurgeHapaxes    30          # Tokens with less than 5 hits (hapaxes)
#PurgeHits1S    15          # Tokens with only 1 spam hit
#PurgeHits1I    15          # Tokens with only 1 innocent hit

#
# Purge configuration for SQL-based installations using purge.sql
#
PurgeSignature  off # Specified in purge.sql
PurgeNeutral   90
PurgeUnused    off # Specified in purge.sql
PurgeHapaxes   off # Specified in purge.sql
PurgeHits1S    off # Specified in purge.sql
PurgeHits1I    off # Specified in purge.sql

Opt out

ServerPort              10027
ServerQueueSize 32
ServerPID              /var/run/dspam/dspam.pid

ServerMode standard

ServerParameters        &amp;quot;--deliver=innocent -d %u&amp;quot;
ServerIdent             &amp;quot;localhost.localdomain&amp;quot;
	
DeliveryHost 127.0.0.1
DeliveryPort 10026
DeliveryIdent localhost
DeliveryProto SMTP
&lt;/pre&gt;


&lt;p&gt;Enregistrer et quitter.
Maintenant enregistrons les préférences des utilisateurs par défaut&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# nano /etc/dspam/default.prefs

trainingMode=TEFT
spamAction=tag
spamSubject=***SPAM***
signatureLocation=message
showFactors=on
optIn=off
optOut=on
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Activons Dspam&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# nano /etc/default/dspam
&lt;/pre&gt;


&lt;p&gt;START=yes&lt;/p&gt;


&lt;p&gt;Enregistrez et quittez.
Maintenant faisons les même réglages dans la base de données de Dspam&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# dspam_admin ch pref default trainingMode TEFT
[...]
bebeserv:~# dspam_admin ch pref default spamAction tag
[...]
bebeserv:~# dspam_admin ch pref default spamSubject &amp;quot;***SPAM***&amp;quot;
[...]
bebeserv:~# dspam_admin ch pref default enableBNR on
[...]
bebeserv:~# dspam_admin ch pref default enableWhitelist on
[...]
bebeserv:~# dspam_admin ch pref default statisticalSedation 5
[...]
bebeserv:~# dspam_admin ch pref default  signatureLocation headers
[...]
bebeserv:~# dspam_admin ch pref default whitelistThreshold 10
[...]
bebeserv:~# dspam_admin ch pref default showFactors on
[...]
&lt;/pre&gt;


&lt;p&gt;C'est terminer pour Dspam nous pouvons démarrer le démon&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# /etc/init.d/dspam start
[...]
&lt;/pre&gt;


&lt;p&gt;Il nous reste à coupler Dspam à Postfix.&lt;/p&gt;


&lt;p&gt;Commencez par préparer nos deux boites e-mail &lt;q&gt;« spam@bebenet.local »&lt;/q&gt; et &lt;q&gt;« ham@bebenet.local »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# cd /etc/postfix/conf.d/
bebeserv:/etc/postfix/conf.d# nano virtual_mailbox

spam@bebenet.local      bebenet.local/spam/
ham@bebenet.local       bebenet.local/ham/
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Rechargeons la base&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/conf.d# postmap virtual_mailbox
&lt;/pre&gt;


&lt;p&gt;C'est deux boîtes e-mail sont fictive en fait et ne recevront jamais de messages. Elles seront couplé à Dspam et nous allons préparer ce couplage grâce à ce fichier&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/conf.d# nano transport

spam@paradoxal.org      dspam-spam:
ham@paradoxal.org       dspam-ham:
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.&lt;/p&gt;


&lt;p&gt;Ce fichier va rediriger nos deux boites e-mail non pas vers le transport classique &lt;q&gt;« virtual »&lt;/q&gt; mais vers deux nouveaux transports que nous allons définir un peu plus loin.
Ces deux boites e-mail ne devrons pas être scannées par Dspam (logique) et nous allons aussi préparer un fichier qui va nous permettre de définir les boites à scanner et celle à ne pas scanner.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/conf.d# nano dspam_filter_access

#les 2 boites à ne pas filtrer (celles où sont envoyé les emails pour l'apprentissage de Dspam)
/^(spam|ham)@.*$/ OK
#puis domaines qui n'ont que la vérification antivirus, dans notre cas, tous les autres domaines :
/^.*$/ FILTER dspam-filter:127.0.0.1:10027
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Voilà comme vous pouvez le voir ce dernier fichier utilise les expressions régulières, pour que Postfix puisse les comprendre nous allons devoir lui installer un complément&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/conf.d# apt-get install postfix-pcre
[...]
&lt;/pre&gt;


&lt;p&gt;Voilà nos fichiers de configuration sont prêt, il faut maintenant définir les nouveaux transports dans Postfix&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/conf.d# cd ..
bebeserv:/etc/postfix# nano master.cf
&lt;/pre&gt;


&lt;p&gt;A la fin du fichier rentrez ceci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
dspam-spam   unix    -       n       n       -       10      pipe
	flags=Rhq user=dspam argv=/usr/bin/dspam --user $sender --class=spam --source=error

dspam-ham   unix    -       n       n       -       10      pipe
	flags=Rhq user=dspam argv=/usr/bin/dspam --user $sender --class=innocent --source=error

dspam-filter unix - - n - 10 lmtp
	-o smtp_send_xforward_command=yes
	-o disable_mime_output_conversion=yes
	-o smtp_generic_maps=

localhost:10026 inet n - n - - smtpd
	-o content_filter=
	-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
	-o smtpd_helo_restrictions=
	-o smtpd_client_restrictions=
	-o smtpd_sender_restrictions=
	-o smtpd_recipient_restrictions=permit_mynetworks,reject
	-o mynetworks=127.0.0.0/8
	-o smtpd_authorized_xforward_hosts=127.0.0.0/8
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.&lt;/p&gt;


&lt;p&gt;Il nous reste plus qu'à dire à Postfix d'utiliser tout ceci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix# nano main.cf
&lt;/pre&gt;


&lt;p&gt;Rajoutez cette ligne&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
transport_maps = hash:/etc/postfix/conf.d/transport
&lt;/pre&gt;


&lt;p&gt;et modifiez celle-ci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
smtpd_recipient_restrictions =
	permit_mynetworks,
	permit_sasl_authenticated,
	reject_invalid_hostname,
	reject_unauth_destination,
	reject_unknown_sender_domain,
	reject_unknown_recipient_domain,
	reject_unauth_destination,
	check_recipient_access pcre:/etc/postfix/conf.d/dspam_filter_access
&lt;/pre&gt;



&lt;p&gt;Enregistrez et quittez.
Rechargeons la configuration de Postfix pour terminer le travail&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix# /etc/init.d/postfix reload
[...]
&lt;/pre&gt;


&lt;p&gt;Voilà c'est terminé, vous possédez maintenant un antispam, bien sûr il faudra lui apprendre à reconnaître les spams mais je ne doute pas que vous en serez très vite satisfait.&lt;/p&gt;


&lt;p&gt;Votre antispam est paramétrable par utilisateur ne l'oubliez pas&amp;nbsp;! Si l'un d'entre eux demande un tag différent c'est possible. Vous pouvez aussi voir les statistiques de Dspam par utilisateur pour voir son travail. Pour ceci regarder les commandes &lt;q&gt;« dspam_admin »&lt;/q&gt;, &lt;q&gt;« dspam_stats »&lt;/q&gt;.&lt;/p&gt;


&lt;p&gt;Pour voir les préférences par défaut&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix# dspam_admin list preference default
[...]
&lt;/pre&gt;


&lt;p&gt;Pour voir les statistiques d'un utilisateur&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix# dspam_stats -H user@bebenet.local
[...]
&lt;/pre&gt;


&lt;p&gt;Bientôt je ferais le tuto pour installer un antivirus email. Si aujourd'hui la majorité des emails reçu sont des virus (donc faire d'abord le tuto d'un antivirus aurais été mieux) et bien je pense que non. Dspam consomme tellement peu et reconnaît (pour l'instant) tellement bien les spams qu'il fait très bien le ménage que le besoin d'un antivirus ne se fait pas vraiment sentir.&lt;/p&gt;


&lt;p&gt;Une fois que vous aurez confiance en votre Dspam. Vous pourrez lui demander de ne pas vous transmettre les spams et ainsi à ce moment là branchez un antivirus sur votre Postfix. La consommation de ressources en sera bien moindre.&lt;/p&gt;


&lt;p&gt;A très bientôt&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix# exit
logout
ALBAN@bebeserv:~$
&lt;/pre&gt;</description>
    
          <enclosure url="http://www.paradoxal.org/blog/public/tuto_debian/chapitre_8.pdf"
      length="99198" type="application/pdf" />
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/08/05/Serveur-Debian-Antispam-email#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/08/05/Serveur-Debian-Antispam-email#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/52</wfw:commentRss>
      </item>
    
  <item>
    <title>Contourné la restriction orange du port 25 !</title>
    <link>http://www.paradoxal.org/blog/post/2007/08/05/Contourne-la-restriction-orange-du-port-25</link>
    <guid isPermaLink="false">urn:md5:81ca75f7ebfda55725976703f386849b</guid>
    <pubDate>Fri, 10 Aug 2007 08:14:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Astuces</category>
        <category>Posfix</category><category>SASL</category><category>SMTP</category><category>Spam</category><category>Sécurité</category>    
    <description>&lt;p&gt;Si comme moi vous aviez sur votre réseau perso votre propre serveur mail et que vous êtes abonné orange, vous avez été confronter à la nouvelle restriction du port 25. C'est à dire l'obligation de passer par le smtp orange pour envoyé de l'email.&lt;/p&gt;    &lt;p&gt;Tant qu'on est dans la configuration type serveur local, il suffisait de lui demander de passer par orange pour transférer les email.&lt;/p&gt;


&lt;p&gt;Avec un postfix il suffisait d'ajouter dans le main.cf&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
relayhost = smtp.orange.fr
&lt;/pre&gt;


&lt;p&gt;Ce qui fonctionnait très bien.&lt;/p&gt;


&lt;p&gt;Maintenant que se passe t'il si son postfix est sur un serveur distant. Impossibilité de le contacter. étant donné que j'utilisais sur mon serveur perso l'authentification (sasl) pour l'envoie je n'ai pas eu grand chose à changé finalement.&lt;/p&gt;


&lt;p&gt;il a suffit de (comme orange l'indique) utiliser le port 583. Et dans postfix ceci se traduit ainsi (en décommentant ces lignes)&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
submission inet n       -       -       -       -       smtpd
  -o smtpd_enforce_tls=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
&lt;/pre&gt;


&lt;p&gt;Voilà, pensez aussi à recharger votre configuration. Ceci à pour effet de déporter l'authentification smtp  ou autrement dit la soumission d'email sur le port 583. Vous recevrez toujours vos email correctement par le port 25 ne vous inquiété pas.&lt;/p&gt;


&lt;p&gt;Il suffit maintenant d'indiquer à sont logiciel favoris d'utiliser le port 583 au lieu du 25 pour le smtp.&lt;/p&gt;


&lt;p&gt;C'est terminé. Pourvu que ça vous soit utile.&lt;/p&gt;


&lt;p&gt;PS&amp;nbsp;: pour paramétrer l'authentification smtp je vous renvoie à mon tuto debian correspondant&amp;nbsp;:&lt;/p&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/08/05/Contourne-la-restriction-orange-du-port-25#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/08/05/Contourne-la-restriction-orange-du-port-25#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/50</wfw:commentRss>
      </item>
    
  <item>
    <title>Ma wishliste pour la rentrée</title>
    <link>http://www.paradoxal.org/blog/post/2007/07/10/Ma-wishliste-pour-la-rentree</link>
    <guid isPermaLink="false">urn:md5:982d54761f56e590c8630b10e3a493d8</guid>
    <pubDate>Tue, 10 Jul 2007 13:24:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Actualité</category>
        <category>2007</category><category>Accessibilite</category><category>CSS</category><category>Eclipse</category><category>Javascript</category><category>Linux</category><category>Navigateur</category><category>OS</category><category>PHP</category><category>Sécurité</category><category>Windows</category><category>XHTML</category>    
    <description>&lt;p&gt;Comme l'avant Noël, on pourrait faire l'avant rentrée. Je trouve que la rentrée est toujours un moment ou l'actualité prend beaucoup d'importance, autant en terme de communication qu'en terme de nouveauté. La rentrée c'est toujours le moment de sortir sont nouveau site, logiciel ou crie de guerre afin que tout le monde - sur le guet - ne puisse pas vous louper.&lt;/p&gt;    &lt;p&gt;C'est bien là, la raison qui me donne envie d'écrire une wishliste de la rentrée avec ce que j'attends pour ce futur mois de septembre.&lt;/p&gt;


&lt;p&gt;L'été c'est souvent le moment ou les esprits - sensé être au repos - foisonnent d'idées sous un soleil qui devrait se montré un peu plus en ce moment. Les esprits bulles sous la chaleur et les concepteurs s'imaginent déjà maître de la prochaine révolution.&lt;/p&gt;


&lt;p&gt;Personnellement j'ai envie&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Que l'accessibilité devienne accessible.&lt;/strong&gt;
Les discussions autour de l'accessibilité se font nombreuses dernièrement et nombre de définitions autour de balises, de mode de conception sont en cours. Pour l'instant je trouve que - même si l'intérêt est énorme - lire les spécifications du RGAA ou enfin son actualité et ses début de réponses sont lourdes, compliquées à suivre et ont réellement tendance à embrouiller les esprits pour un spectateur comme moi.  &lt;br /&gt;
Aujourd'hui donc vouloir créer un site  en suivant scrupuleusement le WCAG, RGAA, WAI, les 92 critères d'accessiweb et j'en passe... Aujourd'hui donc je reprends, ceci relève du parcours du combattant. Loin est le temps ou il suffisait de lire la documentation HTML 4 du W3C pour faire un site propre.
En fait, moi qui suis plutôt un fervent supportaire de l'accessibilité, aujourd'hui ce foisonnement de règles et directives ont tendance à me décourager, à me pousser à les ignorer.  &lt;br /&gt;
Pourquoi&amp;nbsp;? Parce qu'aujourd'hui ou les outils de conception et d'aide à la création foisonne, CMS, éditeur Wisiwyg et compagnie et ces éditeurs ne peuvent aujourd'hui se tenir à jour – car tout change constamment – Et de part ce fait, dois-je oublier tout mes outils et reprendre mon bon vieux bloc note&amp;nbsp;? Sachant qu'avec ces efforts demain une nouvelle règles pourrait venir détruire des heures d'observation de mon code frais écrit et m'obliger à reprendre la conception de mon site dans ses bases. &lt;br /&gt;
Il est clair que si ce portrait aujourd'hui de l'accessibilité est plutôt négatif, il en reste de reflet de beaucoup de développeurs avec qui je discute. Ces derniers ont plutôt tendance pour la peine à se rétracter dans leur propre conception de l'accessibilité et de faire leurs propres règles en attendant d'avoir mieux.
Je me souviens d'une époque ou l'on doublait nos sites, l'une était en flash et l'autre en HTML pour que tout le monde puisse avoir accès au contenu. Doit-on en arriver à créer un site pur texte , noir et blanc, spécial accessibilité construit dans ce cadre, une version pour chaque handicap existant, et laisser la partie créative qui nous emplie vraiment s'exprimer dans l'autre version&amp;nbsp;? Peut-on en fait réellement compilé en une seule version tous les documents web de sorte qu'il soit visionnable pour tout le monde. &lt;br /&gt;
Il est clair que cette vision de l'avenir ne m'enchante guère, que doit devenir l'accessibilité dans le web, encore plus dans le web 2.0 ou les contenus change dynamiquement qui font souvent appel à des service distant qu'on ne contrôle pas et encore encore plus dans le web 3.0 qui imaginons le assez facilement s'orienterait vers une navigation en 3 dimensions. Comment la 3D serait-elle traduite en braille, comment quelqu'un qui n'arrive à percevoir la profondeur (la simple perte d'un oeil par exemple) fera-t-il dans un environnement 3D. Comment un déficient visuel pourra-t-il appliqué sa propre feuille de style à la 3D. Comment l'accessibilité pourra-t-elle s'inviter dans un monde ou seul le mouvement de souris fera foie et tout ne sera qu'images&amp;nbsp;? L'accessibilité - à l'instar de certain paranoïaque de la sécurité - deviendra-t-elle seulement l'acte de quelque aficionados ou pourra-t-elle vraiment s'immiscer dans les concepts de création et faire foie de qualité et d'assurance pour l'avenir de son site. &lt;br /&gt;
Je pense qu'il faut rendre l'accessibilité accessible au plus grand nombre, commencé par l'éducation avec des règles simples. A la manière dont beaucoup on pu découvrir l'XHTML. C'est à dire quelques règles, facilement applicable comme bien préciser son DTD, ne plus chevaucher ses balises, limité l'utilisation de certaines balises puis proposé d'aller plus loin au fur et à mesure ou les gens s'y préparent et apprennent. Le web semble se fermé de plus en plus, cerner les fondements de l'ajax est bien difficile, manier parfaitement l'XHTML et le CSS n'est pas chose forcément aisée pour tout le monde déjà, les environnements riches comme Flash ou Silverlight ne sont pas simple à appréhender, la simplification du web en framework directement utilisable sont dans un sens contraire à l'accessibilité car cette dernière est aujourd'hui à traiter au cas par cas et il n'existe pas encore de solution globale pour y remédier. S'en va-t-on vers un régression du web où certains – la plus part des créateurs de site amateur – resteront sur le bas côté faute de compétences en la matière et seront totalement dépassés face à la masse de travail pour y parvenir. Les éditeurs professionnels auront–ils la volonté de vouloir se lancé dans ce grand sujet&amp;nbsp;? J'aimerai entendre un discours simple et convainquant sur le sujet. J'espère donc que la rentrée apportera des solutions en ce sens.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;J'ai aussi envie de trouver des logiciels vraiment adéquat&lt;/strong&gt;, notemment en matière d'EDI de programmation. Si les logiciels prolifèrent eux aussi beaucoup trop sont insatisfaisant ou incomplet. Chacun apporte sa fonctionnalité miracle pour en laisser beaucoup de côté. J'attends avec impatience la version 1,0 d'Eclipse PDT. Même si éclipse est très lourd pour les petit développement, c'est encore le meilleur environnement que j'ai trouvé jusqu'à maintenant mais je garde des petits outils ça et là pour telles ou telles utilisations bien spécifique. Pour moi éclipse reste trop pauvre pour ce qui est du CSS et du Javascript. J'aimerai donc à la rentée voir l'offre autour d'éclipse se compléter.  &lt;br /&gt;
J'attends les sorties des prochains Mysql WorkBench qui chez moi actuellement est vraiment inutilisable. Dbdesigner reste bien meilleur encore aujourd'hui.
Qu'un Windows XP SP3 sorte&amp;nbsp;?  &lt;br /&gt;
Que Debian passe au dernier Gnome, qu'un trouve enfin des belles typos sous Linux car même si c'est un plaisir de travailler sous Linux, les écritures dégueulasse gâche vraiment tout malgré tous les efforts fait pour obtenir un résultat correct. Et que aussi les touchpads soit mieux géré et il y aurait tellement à demander...&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Que j'obtienne la certification PHP.&lt;/strong&gt;  Petit plaisir que j'ai envie de m'offrir très prochaiement.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Voir PHP 6 sortir, idem pour HTML 5 et XHML 2. Que devient CSS 3 ?&lt;/strong&gt; On craignait pour CSS3 que les navigateur mette trop de temps à y passer déjà que CSS2 n'était pas complètement implémenter. Les navigateurs sont entrer depuis dans une nouvelle bataille et ont repris de leur vigueur. Il serait peut être intéressant d'en profiter pour sortir CSS3 et voir les première implémentation sortir – rêvons par exemple pour Firefox 3 et IE8.&lt;/p&gt;


&lt;p&gt;Bref comme on peu le voir j'attends et je rêve beaucoup pour cette rentrée. J'espère comme j'en ai longtemps parlé précédemment au niveau de l'accessibililité que les grands acteurs du web retrouve le bon chemin car je considère aujourd'hui comme une certaine perdition face à l'ampleur que prend internet aujourd'hui. HTML 5 et XHTML 2 l'avenir&amp;nbsp;? CSS 3 l'avenir&amp;nbsp;? Accessibilité l'avenir&amp;nbsp;? Environnement riche L'avenir&amp;nbsp;? Ajax L'avenir&amp;nbsp;?&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Oui l'avenir ?&lt;/strong&gt; J'entends par cette question, n'essaie pas t-il de faire trop complet et du coup compliqué pour certains. N'essaie-t-il pas de se focalisé sur des détails alors que la globalité est incomplète comme certain texte de loi que vote nos députés qui sont fortement complexe et précise sur bien des point mais qui finissent par contenir des gros contresens et d'énormes trou dans la réglementation voir être hors sujet ou à côté des attentes au final. Dans le monde libre il est nécesaire d'introduire des lignes de conduites, des protocoles à suivre. Aujourd'hui ce monde ne passe-t-il pas de l'autre côté de la barrière avec des tentatives d'autorité de plus en plus cinglante et contraignante. Le libre n'en ressort que moins libre. &lt;br /&gt;
Je souhaite aussi que cette mode de version Beta s'arrete. Beta deviendrai-t-il un label de qualité&amp;nbsp;? Un moyen marketing surtout. Il est fou sur le net de trouver des version beta de logiciel à vendre. Encore plus de trouver des site e-commerce en version beta. Que cela signifie-t-il&amp;nbsp;? « Nous risquons de débiter votre carte mais de ne pas envoyer vos produits, le logiciel n'étant pas encore au point... »&lt;/p&gt;


&lt;p&gt;Hier orange, comme Free, bloque le port 25 afin de &lt;strong&gt;limiter le spam&lt;/strong&gt;. Bonne ou mauvaise solution&amp;nbsp;? Les fai agissent-ils sur le bon vecteurs pour limité le spam. Le font-ils faute d'incapacité à utiliser d'autre moyen de protection&amp;nbsp;? Serait-il temps de rénover certains protocoles&amp;nbsp;?&lt;/p&gt;


&lt;p&gt;Après ce bilan plutôt négatif, car volontairement négatif. Oui je souhaitait mettre l'accent sur ces points qui me dérangent de plus en plus. J'en oublie beaucoup et j'arrête ici car ce billet prend trop de longueur.  &lt;br /&gt;
Je n'oublie pas non plus que le web aujourd'hui prend une nouvelle dimension, que de formidable révolution ont eu lieu et sont en cours. Mes questions et craintes sont elles le simple d'une étape difficile qu'on pourrait appelée la transition&amp;nbsp;?&lt;/p&gt;


&lt;p&gt;A vos plumes, je souhaite sincèrement avoir vos avis sur l'avenir de ce qui est aujourd'hui le centre d'intérêt de beaucoup d'entre nous.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/07/10/Ma-wishliste-pour-la-rentree#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/07/10/Ma-wishliste-pour-la-rentree#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/47</wfw:commentRss>
      </item>
    
  <item>
    <title>Serveur Debian - php et dotclear 2</title>
    <link>http://www.paradoxal.org/blog/post/2007/06/15/Serveur-Debian-php-et-dotclear-2</link>
    <guid isPermaLink="false">urn:md5:f5fc6443b860e16e0be85728355dcf23</guid>
    <pubDate>Fri, 15 Jun 2007 20:29:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Serveur Debian</category>
        <category>Apache</category><category>Dotclear</category><category>Linux</category><category>Mysql</category><category>PHP</category><category>Sécurité</category>    
    <description>&lt;p&gt;&lt;strong&gt;CHAPITRE 6&amp;nbsp;: PHP + DOCLEAR 2&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Maintenant que notre serveur web est installé, il serait bon de lui fournir un peu de dynamisme et rien de tel pour cela que d'installer PHP que je ne présenterai pas =).&lt;/p&gt;


&lt;p&gt;Commençons par installer &lt;q&gt;« php5 »&lt;/q&gt; et ce qu'il faut pour l'allier à &lt;q&gt;« apache2 »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo -i
Password:
bebeserv:~# apt-get update
[...]
bebeserv:~# apt-get install apache2-mpm-prefork libapache2-mod-php5 php5-common php5 php5-cli php5-mysql
[...]
&lt;/pre&gt;


&lt;p&gt;Maintenant comme à l'habitude coupons Apache le temps de le reconfigurer. Comme vous avez pu l'observer, nous avons changer la manière dont &lt;q&gt;« apache2 »&lt;/q&gt; gère ses processus. Nous sommes passé de &lt;q&gt;« apache2-mpm-worker »&lt;/q&gt; à &lt;q&gt;« apach2-mpm-prefork »&lt;/q&gt;. Bien que &lt;q&gt;« worker »&lt;/q&gt; soit plus rapide et offre une meilleure méthode de travail à &lt;q&gt;« apache2 »&lt;/q&gt;, &lt;q&gt;« php5 »&lt;/q&gt; requiert que &lt;q&gt;« apache2 »&lt;/q&gt; travail en &lt;q&gt;« prefork »&lt;/q&gt; encore aujourd'hui.
De même nous avons installé le minimum pour faire fonctionner notre configuration, c'est à dire &lt;q&gt;« php5 »&lt;/q&gt; lui même, &lt;q&gt;« php5 »&lt;/q&gt; en ligne de commande&amp;nbsp;: &lt;q&gt;« cli »&lt;/q&gt; et &lt;q&gt;« mysql »&lt;/q&gt; pour &lt;q&gt;« php5 »&lt;/q&gt;, bien que &lt;q&gt;« php5 »&lt;/q&gt; offre une couche d'abstraction totale pour l'accès au SGBD beaucoup de site sont encore construit autour de l'API mysql directement.&lt;/p&gt;


&lt;p&gt;Retournons donc à notre configuration. Configurons &lt;q&gt;« mpm-prefork »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# cd /etc/apache2
bebeserv:/etc/apache2# nano apache2.conf
&lt;/pre&gt;


&lt;p&gt;Changeons notre configuration en ceci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
# prefork MPM
&amp;lt;IfModule mpm_prefork_module&amp;gt;
	StartServers          5
	MinSpareServers       5
	MaxSpareServers      10
	MaxClients          150
	MaxRequestsPerChild 500
&amp;lt;/IfModule&amp;gt;

# worker MPM
#&amp;lt;IfModule mpm_worker_module&amp;gt;
#    StartServers          2
#    MaxClients          150
#    MinSpareThreads      25
#    MaxSpareThreads      75
#    ThreadsPerChild      25
#    MaxRequestsPerChild 500
#&amp;lt;/IfModule&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Les commentaires sont facultatifs, ils me servent à me rappeler que mon apache tourne en &lt;q&gt;« prefork »&lt;/q&gt;, comme je l'avais fais dans le chapitre précédent.
Enregistrez et quittez.
Maintenant mettons à jour quelques points comme la configuration de &lt;q&gt;« mod_dir »&lt;/q&gt;.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2# nano mods-avalable/dir.conf
&lt;/pre&gt;


&lt;p&gt;Modifier la configuration comme suit&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;IfModule mod_dir.c&amp;gt;
	DirectoryIndex index.php index.html index.cgi index.pl index.php index.xhtml
&amp;lt;/IfModule&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Maintenant configurons &lt;q&gt;« php5 »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2# cd /etc/php5/apache2
bebeserv:/etc/php5/apache2# nano php.ini
&lt;/pre&gt;


&lt;p&gt;Modifier comme suit&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
;;;;;;;;;;;;;;;;;;;;
; Language Options ;
;;;;;;;;;;;;;;;;;;;;

short_open_tag = Off
allow_call_time_pass_reference = Off
open_basedir = /home/nobody/default_apache
ignore_user_abort = On
realpath_cache_size=16k
realpath_cache_ttl=120
expose_php = Off

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

max_execution_time = 10
max_input_time = 10
	
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

error_reporting = E_ALL | E_STRICT
display_errors = On			; A passé à Off quand vous rendez votre site web public
log_errors = On
ignore_repeated_errors = On
error_log = /var/log/php5.log

;;;;;;;;;;;;;;;;;
; Data Handling ;
;;;;;;;;;;;;;;;;;

arg_separator.output = &amp;quot;&amp;amp;amp;&amp;quot;
register_long_arrays = Off
register_argc_argv = Off
magic_quotes_gpc = Off
default_mimetype = &amp;quot;text/html&amp;quot;
default_charset = &amp;quot;iso-8859-15&amp;quot;

;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;

allow_url_fopen = Off
default_socket_timeout = 10

;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

[date]
date.timezone = Europe/Paris

[mail function]
;SMTP = localhost
;smtp_port = 25
;sendmail_from = me@example.com
sendmail_path = sendmail -t -f apache2@bebeserv.local

[mysql]
mysql.connect_timeout = 10

[session]
session.use_only_cookies = 1
session.name = SESSID
session.cache_limiter =
session.hash_function = 1
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez. Maintenant PHP est configuré pour travailler avec Apache mais pas pour  fonctionner en ligne de commande.
Refaites donc la même chose pour le CLI&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2# cd ../cli
bebeserv:/etc/php5/cli# nano php.ini
&lt;/pre&gt;


&lt;p&gt;Mettez exactement les même paramètre à la différence de ceux-ci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
;open_basedir =
; ignore_user_abort = On
max_execution_time = 60
max_input_time = 10
memory_limit = 32M
log_errors = Off
file_uploads = Off
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Il nous reste à créer le fichier de log de PHP et de lui créer sa rotation&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# cd /var/log
bebeserv:/var/log# touch php5.log
bebeserv:/var/log# cd /etc/logrotate.d/
bebeserv:/etc/logrotate.d# nano php5
&lt;/pre&gt;


&lt;p&gt;Créez le fichier suivant&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
/var/log/php5.log {
		weekly
		missingok
		rotate 4
		compress
		delaycompress
		notifempty
		create 640 root root
}
&lt;/pre&gt;


&lt;p&gt;Voilà c'est terminer pour la configuration de PHP.
A l'heure actuelle avec la directive &lt;q&gt;« open_basedir »&lt;/q&gt;, PHP est enfermé dans &lt;q&gt;« /home/nobody/default_apache »&lt;/q&gt; pour chaque site que nous mettrons en place (et donc chaque virtual host) nous mettrons une directive &lt;q&gt;« open_basedir »&lt;/q&gt; dans le virtual host afin que PHP soit ouvert uniquement pour ce site. Ainsi nous mettrons d'autre élément de configuration PHP dans la configuration des vhosts. Cette méthode offre le grand avantage d'offrir au dessus de la configuration générale de PHP beaucoup de finesse pour ajuster certain paramètre notamment de sécurité.&lt;/p&gt;


&lt;p&gt;C'est ce que nous allons voir tout de suite en installant Dotclear 2. Un exemple simple et facile afin d'illustrer ce que nous venons de mettre en place durant les 4 derniers chapitres.&lt;/p&gt;


&lt;p&gt;Mais avant de nous lancer, vérifions le bon fonctionnement de PHP et pour ceci dans notre vhost &lt;q&gt;« default_apache »&lt;/q&gt; créons un fichier &lt;q&gt;« php.php »&lt;/q&gt; qui nous donnera le phpinfo.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/logrotate.d# cd /home/nobody/default_apache
bebeserv:/home/nobody/default_apache# nano php.php
&lt;/pre&gt;


&lt;p&gt;Mettez ceci dans votre fichier&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;?php
phpinfo();
?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Donnez les bons droits à votre fichier&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# chown nobody php.php
&lt;/pre&gt;


&lt;p&gt;Rechargeons la configuration &lt;q&gt;« apache2 »&lt;/q&gt; ainsi que &lt;q&gt;« php5 »&lt;/q&gt;.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# apace2ctl graceful
[...]
&lt;/pre&gt;


&lt;p&gt;Maintenant observons notre phpinfo&amp;nbsp;:
Depuis un poste du réseau local allez à cette adresse&amp;nbsp;: &lt;q&gt;« http://10.0.0.2/php.php »&lt;/q&gt;.&lt;/p&gt;


&lt;p&gt;Passons à la partie facultative de ce chapitre&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;L'installation de Dotclear 2&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Sachant que vous avez votre propre nom de domaine ici nous ferons une installation pour le réseau locale. il faut savoir que Dotclear ne requiert pas mais serait mieux avec la librairie GD2. !Nous allons donc l'installer.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# apt-get install php5-gd
[...]
&lt;/pre&gt;


&lt;p&gt;Rechargeons la configuration de PHP pour intégré GD&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# apace2ctl graceful
[...]
&lt;/pre&gt;


&lt;p&gt;Vous pouvez à nouveau regarder le phpinfo pour observer que GD est bien intégré dans sa version 2.&lt;/p&gt;


&lt;p&gt;Maintenant nous allons préparer l'arborescence pour notre futur site.
Afin de ne pas refaire la même manipulation à chaque fois, nous allons généré un squelette qu'il suffira de recopier&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# cd ..
bebeserv:/home/nobody# mkdir skeleton
bebeserv:/home/nobody# cd skeleton
bebeserv:/home/nobody/skeleton# mkdir backup html includes logs sessions tmp
bebeserv:/home/nobody/skeleton# cd logs
bebeserv:/home/nobody/skeleton/logs# touch apache2.log php5.log
bebeserv:/home/nobody/skeleton/logs# cd ../../
bebeserv:/home/nobody# chown -R nobody skeleton
&lt;/pre&gt;


&lt;p&gt;Voilà une bonne chose de faite, maintenant créons la véritable arborescence de notre site que j'appellerai ici &lt;q&gt;« www.bebeserv.local »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody# cp -ra skeleton www.bebeserv.local
&lt;/pre&gt;


&lt;p&gt;Nous devons dorénavant nous créer un vhost pour pouvoir exploiter tout ceci.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody# cd /etc/apache2/site-available
bebeserv:/etc/apache2/site-available# nano www.bebeserv.local
&lt;/pre&gt;


&lt;p&gt;Créez le fichier suivant&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;VirtualHost *&amp;gt;
		ServerSignature Off
		ServerAdmin webmaster@bebeserv.local
		ServerName www.bebeserv.local
		ServerAlias bebeserv.local
		ServerAlias 10.0.0.2

		DocumentRoot /home/nobody/www.bebeserv.local/html/

		&amp;lt;Directory /home/nobody/www.bebeserv.local/html/&amp;gt;
				AllowOverride All
				Order allow,deny
				allow from all
		&amp;lt;/Directory&amp;gt;

		&amp;lt;IfModule mod_php5.c&amp;gt;
				php_admin_value open_basedir /home/nobody/www.bebeserv.local
				php_admin_value error_log /home/nobody/www.bebeserv.local/logs/php5.log
				php_admin_value upload_tmp_dir /home/nobody/www.paradoxal.org/tmp
				php_admin_value include_path .:/home/nobody/www.bebeserv.local/includes
				php_admin_value session.save_path /home/nobody/www.bebeserv.local/sessions
				php_admin_value sendmail_path &amp;quot;sendmail -t -f www@bebeserv.local&amp;quot;
		&amp;lt;/IfModule&amp;gt;

		CustomLog /home/nobody/www.bebeserv.local/logs/apache2.log combined
&amp;lt;/VirtualHost&amp;gt;
&lt;/pre&gt;



&lt;p&gt;Enregistrez et quittez.
J'ai mis en alias de serveur l'adresse IP de la machine afin qu'on puisse accéder au site localement pour le tester.
Autorisons ce vhost&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2/site-available# cd ../site-enabled
bebeserv:/etc/apache2/site-enabled# ln -s ../site-available/www.bebeserv.local 100-www.bebeserv.local
&lt;/pre&gt;


&lt;p&gt;Je garde une numérotation devant les nom des vhosts afin de définir l'ordre de chargement de ces derniers et ainsi leur priorité dans apache.&lt;/p&gt;


&lt;p&gt;Puisque nous y sommes, ouvrons nous un compte FTP afin de compléter l'ouverture de notre futur blog&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2/site-enabled# cd /etc/vsftpd/user_conf
bebeserv:/etc/vsftpd/user_conf# cp example www.bebeserv.local
&lt;/pre&gt;


&lt;p&gt;Dans le fichier &lt;q&gt;« www.bebeserv.local »&lt;/q&gt; mettez les options qui vous plaisent et surtout&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
local_root=/home/nobody/www.bebeserv.local
&lt;/pre&gt;


&lt;p&gt;Nous pouvons ajouter notre utilisateur &lt;q&gt;« www.bebeserv.local »&lt;/q&gt; à la base de donnée de &lt;q&gt;« vsftpd »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/vsftpd/user_conf# cd ..
bebeserv:/etc/vsftpd# nano userdb
&lt;/pre&gt;


&lt;p&gt;Entrez les lignes&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
www.bebeserv.local
votre-mot-de-passe
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez puis recharger la base de donner de &lt;q&gt;« vsftpd »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/vsftpd# vsftpd-makedb
&lt;/pre&gt;


&lt;p&gt;Tout est OK, rechargeons aussi la configuration de apache&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/vsftpd# apache2ctl graceful
&lt;/pre&gt;


&lt;p&gt;Maintenant téléchargeons Dotclear 2&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/vsftpd# cd /home/nobody/www.bebeserv.local/html
bebeserv:/home/nobody/www.bebeserv.local/html# wget	http://download.dotclear.net/latest-2.0.tar.gz
[...]
&lt;/pre&gt;


&lt;p&gt;Décompressez l'archive&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/www.bebeserv.local/html# tar -xvzf dotclear-2.0-beta6.tar.gz
[...]
&lt;/pre&gt;


&lt;p&gt;Un dossier &lt;q&gt;« dotclear »&lt;/q&gt; est créé, donnons lui les bons droits (ainsi qu'à tout ce qu'il contient)&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/www.bebeserv.local/html# chown -R nobody.nogroup dotclear
&lt;/pre&gt;


&lt;p&gt;Supprimons le tarball&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/www.bebeserv.local/html# rm dotclear-2.0-beta6.tar.gz
&lt;/pre&gt;


&lt;p&gt;Nous pouvons changer le nom du répertoire &lt;q&gt;« dotclear »&lt;/q&gt; par &lt;q&gt;« blog »&lt;/q&gt; par exemple&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/www.bebeserv.local/html# mv dotclear blog
&lt;/pre&gt;


&lt;p&gt;Voilà c'est presque fini. Dotclear aura besoin d'une base de données, créons donc un utilisateur et une base pour Dotclear.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/www.bebeserv.local/html# mysql -u bebeserv -p
Entre password: 
[...]

mysql&amp;gt; create database bebeserv_dc2;
Query OK, 1 row affected (0.00 sec)

mysql&amp;gt; grant create, delete, insert, update, select, index, lock tables, alter, drop on bebeserv_dc2.* to 'dotclear2'@'localhost' identified by 'un-mot-de-passe';
Query OK, 0 rows affected (0.01 sec)

mysql&amp;gt; flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql&amp;gt; quit
Bye
bebeserv:/home/nobody/www.bebeserv.local/html#
&lt;/pre&gt;


&lt;p&gt;Voilà c'est terminé, rendez vous sur la page &lt;q&gt;« http://10.0.0.2/blog/admin/install/ »&lt;/q&gt; pour terminer l'installation.
Pour le wizard de configuration Dotclear voici ce que vous aurez à entrer&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
hote de la base : localhost
base de donnée bebeserv_dc2
utilisateurs de la base de donnée : dotclear2
&lt;/pre&gt;


&lt;p&gt;Mémorisez bien le mot de passe qui vous sera fourni&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Voilà c'est terminé pour ce chapitre, vous avez intérêt à produire de bon billet maintenant&amp;nbsp;!&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/www.bebeserv.local/html# exit
logout
ALBAN@bebeserv:~$
&lt;/pre&gt;</description>
    
          <enclosure url="http://www.paradoxal.org/blog/public/tuto_debian/chapitre_6.pdf"
      length="102096" type="application/pdf" />
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/06/15/Serveur-Debian-php-et-dotclear-2#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/06/15/Serveur-Debian-php-et-dotclear-2#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/44</wfw:commentRss>
      </item>
    
  <item>
    <title>Serveur Debian - apache</title>
    <link>http://www.paradoxal.org/blog/post/2007/06/13/Serveur-Debian-apache</link>
    <guid isPermaLink="false">urn:md5:8660a745dfe197a1994401405cf06b18</guid>
    <pubDate>Wed, 13 Jun 2007 09:01:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Serveur Debian</category>
        <category>Apache</category><category>Linux</category><category>PHP</category><category>Sécurité</category>    
    <description>&lt;p&gt;&lt;strong&gt;CHAPITRE 5&amp;nbsp;: &lt;a href=&quot;http://www.paradoxal.org/blog/tag/Apache&quot;&gt;APACHE&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Maintenant que nous disposons d'un serveur FTP et d'un serveur de base de données, il est grand temps que nous installions notre serveur web.&lt;/p&gt;


&lt;p&gt;Commençons par installer &lt;q&gt;« &lt;a href=&quot;http://www.paradoxal.org/blog/tag/Apache&quot;&gt;Apache&lt;/a&gt; »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo -i
Password:
bebeserv:~# apt-get update
[...]
bebeserv:~# apt-get install apache2 apache2-doc apache2-utils apache2.2-common
[...]
&lt;/pre&gt;


&lt;p&gt;Maintenant comme à l'habitude coupons le serveur fraîchement installé.&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# /etc/init.d/apache2 stop
&lt;/pre&gt;


&lt;p&gt;Allons directement éditer la configuration de notre serveur&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# cd /etc/apache2
bebeserv:/etc/apache2# nano apache2.conf
&lt;/pre&gt;


&lt;p&gt;Changez les lignes suivantes&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
Timeout 60
MaxKeepAliveRequests 75
KeepAliveTimeout 10
&lt;/pre&gt;


&lt;p&gt;Par défaut aujourd'hui &lt;q&gt;« apache2 »&lt;/q&gt; est installé avec le module worker MPM. Commentez donc les lignes&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
#&amp;lt;IfModule mpm_prefork_module&amp;gt;
#    StartServers          5
#    MinSpareServers       5
#    MaxSpareServers      10
#    MaxClients          150
#    MaxRequestsPerChild   0
#&amp;lt;/IfModule&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Pour le module worker je garde les réglages par défaut qui sont bien pour une configuration  moyenne. Je change uniquement la valeur du &lt;q&gt;« MaxRequetsPerChild »&lt;/q&gt; sur une valeur assez courte. Pourquoi&amp;nbsp;? Etant donné que nous allons plus tard installer et travailler avec PHP, PHP requiert (surtout dans sa version 5) beaucoup de mémoire. Les fils apache augmenterons leur mémoire alloué de manière conséquente. Ainsi pour servir une image un fils s'allouera disons 30 Ko de mémoire, ensuite s'il reçoit une requête pour un script PHP il agrandira sa mémoire disons à 4 Mo. S'il ressert la même image que précédemment il gardera les 4 Mo de mémoire allouée. C'est pourquoi il est fort intéressant (même si c'est consommateur en CPU) de renouveler les fils apache assez régulière de manière à ne pas surconsommer de RAM.&lt;/p&gt;

&lt;pre&gt;
MaxRequestsPerChild 500
&lt;/pre&gt;


&lt;p&gt;Maintenant en relation directe avec le chapitre sur l'installation du serveur FTP, configurez l'utilisateur et le groupe apache&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
User nobody
Group nogroup
&lt;/pre&gt;


&lt;p&gt;Utilisez ces  utilisateurs permet de mettre en relation FTP, Apache, (et plus tard PHP) en limitant les problèmes d'utilisateur et de droits d'exécution. Tout le monde aura pour UID et GID &lt;q&gt;« nobody »&lt;/q&gt; et &lt;q&gt;« nogroup »&lt;/q&gt; ce qui évitera les problèmes du genre (je ne peux pas supprimé les fichier créer par PHP dans mon FTP... ou d'installer des plugins supplémentaire comme &lt;q&gt;« suphp »&lt;/q&gt; pour apache).
Pour une question de sécurité et de commodité par rapport au fichier UNIX caché, j'empêche aux utilisateurs d'accéder à tous les fichier commençant par un &lt;q&gt;« . »&lt;/q&gt; et pas uniquement les fichiers commençant par &lt;q&gt;« .ht »&lt;/q&gt;&lt;/p&gt;

&lt;pre&gt;
&amp;lt;Files ~ &amp;quot;^\.&amp;quot;&amp;gt;
	Order allow,deny
	Deny from all
&amp;lt;/Files&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Toujours pour la sécurité, donnons un minimum d'information&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ServerTokens Prod
ServerSignature Off
&lt;/pre&gt;


&lt;p&gt;Ensuite la configuration des différents modules&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
DefaultLanguage fr
LanguagePriority fr en ca ...
AddDefaultCharset ISO-8859-15
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Supprimez le fichier de configuration du charset dans &lt;q&gt;« conf.d »&lt;/q&gt; puisque nous venons de le préciser dans la configuration générale.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2# rm conf.d/charset
&lt;/pre&gt;


&lt;p&gt;Pour moi le fichier &lt;q&gt;« ports.conf »&lt;/q&gt; est correctement configuré puisque notre serveur sera ouvert sur l'extérieur.
Maintenant supprimons les modules qui ne nous servirons pas.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2# cd mods-enabled/
bebeserv:/etc/apache2/mods-enabled# rm autoindex* cgi* env* negociation* setenvif* status*
&lt;/pre&gt;


&lt;p&gt;Voici les seuls modules que j'ai a présent &lt;q&gt;« alias »&lt;/q&gt;, &lt;q&gt;« auth_* »&lt;/q&gt;, &lt;q&gt;« dir »&lt;/q&gt;, &lt;q&gt;« mime »&lt;/q&gt;.
Maintenant ajoutons les modules que nous souhaitons et qui n'étaient pas présent&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/deflate.conf deflate.conf
bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/deflate.load deflate.load
bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/expires.load expires.load
bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/headers.load headers.load
bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/rewrite.load rewrite.load
bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/ssl.conf ssl.conf
bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/ssl.load ssl.load
&lt;/pre&gt;


&lt;p&gt;Voilà nous en avons terminé avec les modules.
Maintenant pour éviter de divulguer notre configuration à tout le monde. Configurons notre virtualhost et créons une petite page d'accueil en attendant que notre site soit installé.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2/mods-enabled# cd ../site-available
bebeserv:/etc/apache2/site-available# cp default mydefault
bebeserv:/etc/apache2/site-available# nano mydefault
&lt;/pre&gt;


&lt;p&gt;Entrez les modifications comme suit&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
NameVirtualHost *

&amp;lt;VirtualHost *&amp;gt;
	ServerAdmin webmaster@localhost

	DocumentRoot /home/nobody/default_apache/

	&amp;lt;Directory /&amp;gt;
		AllowOverride None
	&amp;lt;/Directory&amp;gt;
	&amp;lt;Directory /home/nobody/default_apache/&amp;gt;
		AllowOverride None
		Order allow,deny
		allow from all
	&amp;lt;/Directory&amp;gt;

	CustomLog /var/log/apache2/access.log combined
&amp;lt;/VirtualHost&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Activons ce site par défaut plutôt que celui proposé par apache&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2/site-available# cd ../site-enabled
bebeserv:/etc/apache2/site-enabled# rm 000-default
bebeserv:/etc/apache2/site-enabled# ln -s ../site-available/mydefault 000-default
&lt;/pre&gt;


&lt;p&gt;Maintenant créons le dossier hébergeant ce virtuelhost et une petite page d'accueil&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2/site-enabled# cd /home/nobody
bebeserv:/home/nobody# mkdir default_apache
bebeserv:/home/nobody# chown nobody default_apache/
bebeserv:/home/nobody# cd default_apache/
bebeserv:/home/nobody/default_apache# nano index.html
&lt;/pre&gt;


&lt;p&gt;Voici un petit html horrible mais qui suffira&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;html&amp;gt;
		&amp;lt;head&amp;gt;
				&amp;lt;title&amp;gt;Bienvenue sur bebeserv.bebenet.local&amp;lt;/title&amp;gt;
		&amp;lt;/head&amp;gt;
		&amp;lt;body&amp;gt;
				&amp;lt;h1&amp;gt;Bienvenue sur bebeserv.bebenet.local&amp;lt;/h1&amp;gt;
		&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# chown nobody index.html
&lt;/pre&gt;


&lt;p&gt;Voilà c'est terminé.
Nous allons pouvoir redémarrer apache et regarder si notre page d'accueil s'affiche bien.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# /etc/init.d/apache2 start
&lt;/pre&gt;


&lt;p&gt;Essayez cette adresse depuis votre navigateur sur un pc connecter au réseau local&amp;nbsp;: &lt;q&gt;« http://10.0.0.151/ »&lt;/q&gt; et observez le résultat&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Un dernier petit rappel nous n'avons pas configurer &lt;q&gt;« iptables »&lt;/q&gt; dans cette section car nous avions déjà ouvert le port 80 pour &lt;q&gt;« apt »&lt;/q&gt;.&lt;/p&gt;


&lt;p&gt;Le chapitre est maintenant terminé.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# exit
logout
ALBAN@bebeserv:~$
&lt;/pre&gt;</description>
    
          <enclosure url="http://www.paradoxal.org/blog/public/tuto_debian/chapitre_5.pdf"
      length="90207" type="application/pdf" />
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/06/13/Serveur-Debian-apache#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/06/13/Serveur-Debian-apache#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/43</wfw:commentRss>
      </item>
    
  <item>
    <title>Serveur Debian - mysql</title>
    <link>http://www.paradoxal.org/blog/post/2007/06/09/Serveur-Debian-mysql</link>
    <guid isPermaLink="false">urn:md5:accec290a9c19e675de2958569e34599</guid>
    <pubDate>Sat, 09 Jun 2007 15:03:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Serveur Debian</category>
        <category>Innodb</category><category>Linux</category><category>Mysql</category><category>Mysqldump</category><category>Sécurité</category>    
    <description>&lt;p&gt;&lt;strong&gt;CHAPITRE 4&amp;nbsp;: &lt;a href=&quot;http://www.paradoxal.org/blog/tag/mysql&quot;&gt;MYSQL&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Pour nos futurs sites internet, nous allons avoir besoin de certain élément, nous possédons déjà le FTP pour créer des utilisateurs à notre guise, nous allons aussi avoir besoin d'une base de données. Aujourd'hui nous allons donc nous occuper de Mysql.&lt;/p&gt;


&lt;p&gt;Commençons par installer les paquets nécessaires&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo -i
Password:
bebeserv:~# apt-get update
[...]
bebeserv:~# apt-get install mysql-client-5.0 mysql-server-5.0 mysql-common
[...]
&lt;/pre&gt;


&lt;p&gt;Ceci fait comme pour le FTP commencer par couper le serveur tout frais installer.&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# /etc/init.d/mysql stop
[...]
&lt;/pre&gt;


&lt;p&gt;Éditons la configuration&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# cd /etc/mysql
bebeserv:/etc/mysql# nano my.cnf
[...]
&lt;/pre&gt;


&lt;p&gt;Dans &lt;q&gt;« [mysqld] »&lt;/q&gt;
D'abord la langue&amp;nbsp;! ( très important :) )&lt;/p&gt;

&lt;pre&gt;
language        = /usr/share/mysql/french
&lt;/pre&gt;


&lt;p&gt;Puis puisque dans mon cas je n'ouvrirai pas Mysql à l'extérieur je laisse le&lt;/p&gt;

&lt;pre&gt;
skip-networking
bind-address à 127.0.0.1
&lt;/pre&gt;


&lt;p&gt;Pour enregistrer les mauvaises requêtes (coûteuses en performance).&lt;/p&gt;

&lt;pre&gt;
log_slow_queries        = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes
&lt;/pre&gt;


&lt;p&gt;Commentez les lignes suivantes, elles sont inutiles car nous ne feront pas de réplication Mysql.&lt;/p&gt;

&lt;pre&gt;
#log_bin                        = /var/log/mysql/mysql-bin.log
#expire_logs_days       = 10
#max_binlog_size         = 100M
&lt;/pre&gt;


&lt;p&gt;Puisque je compte utiliser Dotclear 2 qui nécessite le moteur &lt;q&gt;« &lt;a href=&quot;http://www.paradoxal.org/blog/tag/innodb&quot;&gt;innodb&lt;/a&gt; »&lt;/q&gt;, je ne décommenterai pas la ligne suivante&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
#skip-innodb
&lt;/pre&gt;


&lt;p&gt;Dans la section &lt;q&gt;« [&lt;a href=&quot;http://www.paradoxal.org/blog/tag/mysqldump&quot;&gt;mysqldump&lt;/a&gt;] »&lt;/q&gt; je rajoute ces options&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
skip-opt
add-drop-table
add-locks
create-options
set-charset
disable-keys
complete-insert
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Maintenant vous pouvez relancer Mysql.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/mysql# /etc/init.d/mysql start
[...]
&lt;/pre&gt;


&lt;p&gt;Maintenant il va falloir sécuriser Mysql car sont installation d'origine est plein de trou.
Entrez dans la console Mysql&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.0.32-Debian_7etch1-log Debian etch distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql&amp;gt;

Maintenant que vous êtes dans la console, tapez les commandes suivantes :

mysql&amp;gt; use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql&amp;gt; select User,Host,Password from user;
+------------------+-----------+-------------------------------------------+
| User             | Host      | Password                                  |
+------------------+-----------+-------------------------------------------+
| root             | localhost |                                           |
| root             | bebeserv  |                                           |
| debian-sys-maint | localhost | *23C6BA678DB0427E1A213D86DF1819114D2A80FD |
+------------------+-----------+-------------------------------------------+
&lt;/pre&gt;


&lt;p&gt;Nous observons un compte &lt;q&gt;« root »&lt;/q&gt; sous le nom &lt;q&gt;« bebeserv »&lt;/q&gt; qui ne servira pas puisque nous utiliserons uniquement Mysql en local. Nous allons donc le supprimé.&lt;/p&gt;

&lt;pre&gt;
mysql&amp;gt; delete from user where Host &amp;lt;&amp;gt; &amp;quot;localhost&amp;quot;;
Query OK, 1 row affected (0.00 sec)

mysql&amp;gt; select User,Host,Password from user;
+------------------+-----------+-------------------------------------------+
| User             | Host      | Password                                  |
+------------------+-----------+-------------------------------------------+
| root             | localhost |                                           |
| debian-sys-maint | localhost | *23C6BA678DB0427E1A213D86DF1819114D2A80FD |
+------------------+-----------+-------------------------------------------+
2 rows in set (0.00 sec)
&lt;/pre&gt;


&lt;p&gt;Maintenant modifions le compte &lt;q&gt;« root »&lt;/q&gt; pour plus de sécurité et renommons le au passage (remplacé **** par votre mot de passe dans la seconde commande):&lt;/p&gt;

&lt;pre&gt;
mysql&amp;gt; rename user root@localhost to bebeserv@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql&amp;gt; update user set password=password('****') where user = &amp;quot;bebeserv&amp;quot;;
Query OK, 1 row affected (0.00 sec)
Enregistrements correspondants: 1  Modifiés: 1  Warnings: 0

mysql&amp;gt; select User,Host,Password from user;
+------------------+-----------+-------------------------------------------+
| User             | Host      | Password                                  |
+------------------+-----------+-------------------------------------------+
| bebeserv         | localhost | *A7581E9CC269EDA8C16D974E1032E393B33DC199 |
| debian-sys-maint | localhost | *23C6BA678DB0427E1A213D86DF1819114D2A80FD |
+------------------+-----------+-------------------------------------------+
2 rows in set (0.00 sec)
&lt;/pre&gt;


&lt;p&gt;Parfait&amp;nbsp;! Appliquons tout ça&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
mysql&amp;gt; flush privileges;
Query OK, 0 rows affected (0.00 sec)
&lt;/pre&gt;


&lt;p&gt;Maintenant vérifions les bases présentes&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
mysql&amp;gt; show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
+--------------------+
2 rows in set (0.00 sec)
&lt;/pre&gt;


&lt;p&gt;Parfait encore&amp;nbsp;! Par défaut Mysql créer un utilisateur vide et une base test que nous aurions du supprimer car inutile voir dangereux pour l'utilisateur sans nom. Mais l'installation dans Debian était déjà propre.&lt;/p&gt;


&lt;p&gt;Maintenant quittons la console et tentons de nous loguer en &lt;q&gt;« root »&lt;/q&gt; (&lt;q&gt;« bebeserv »&lt;/q&gt; excuser moi !).&lt;/p&gt;

&lt;pre&gt;
mysql&amp;gt; exit
Bye

bebeserv:/etc/mysql# mysql -u bebeserv -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.0.32-Debian_7etch1-log Debian etch distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Parfait&amp;nbsp;! nous pouvons quitter sachant que tout fonctionne bien&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
mysql&amp;gt; exit
Bye
&lt;/pre&gt;


&lt;p&gt;Voilà ce chapitre est terminé.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/mysql# exit
logout
ALBAN@bebeserv:~$
&lt;/pre&gt;</description>
    
          <enclosure url="http://www.paradoxal.org/blog/public/tuto_debian/chapitre_4.pdf"
      length="86938" type="application/pdf" />
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/06/09/Serveur-Debian-mysql#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/06/09/Serveur-Debian-mysql#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/42</wfw:commentRss>
      </item>
    
  <item>
    <title>Serveur Debian - vsftpd</title>
    <link>http://www.paradoxal.org/blog/post/2007/06/02/Serveur-Debian-vsftpd</link>
    <guid isPermaLink="false">urn:md5:0c76c9467f5d4106be38c8186df6326b</guid>
    <pubDate>Sat, 02 Jun 2007 18:28:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Serveur Debian</category>
        <category>Fail2ban</category><category>FTP</category><category>FTPS</category><category>Iptables</category><category>Linux</category><category>Openssl</category><category>PAM</category><category>SFTP</category><category>SSH</category><category>SSL</category><category>Sécurité</category><category>Userdb</category><category>Utilisateurs virtuels</category><category>Vsftpd</category>    
    <description>&lt;p&gt;&lt;strong&gt;CHAPITRE 3&amp;nbsp;: &lt;a href=&quot;http://www.paradoxal.org/blog/tag/FTP&quot;&gt;FTP&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Commençons par installer le serveur FTP&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo -i
Password:
bebeserv:~# apt-get update
[...]
bebeserv:~# apt-get install vsftpd libdb3-util ftp
[...]
&lt;/pre&gt;


&lt;p&gt;L'installateur créé automatiquement un utilisateur &lt;q&gt;« ftp »&lt;/q&gt; qui à le groupe &lt;q&gt;« nogroup »&lt;/q&gt; et le dossier &lt;q&gt;« /home/ftp »&lt;/q&gt; pour cet utilisateur.
Nous allons changer tout ça, et de plus vu que de base &lt;q&gt;« &lt;a href=&quot;http://www.paradoxal.org/blog/tag/vsftp&quot;&gt;vsftp&lt;/a&gt; »&lt;/q&gt; autorise les connexions anonymes par défaut, même si &lt;q&gt;« &lt;a href=&quot;http://www.paradoxal.org/blog/tag/iptables&quot;&gt;iptables&lt;/a&gt; »&lt;/q&gt; ne laissera rien passer, c'est un bon reflex de couper le serveur en attendant sa configuration finale.&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# /etc/init.d/vsftpd stop
[...]
&lt;/pre&gt;


&lt;p&gt;Nous allons d'abord nettoyer un peu ce que &lt;q&gt;« vsftpd »&lt;/q&gt; à créer automatiquement&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# userdel ftp
bebeserv:~# rmdir /home/ftp
&lt;/pre&gt;


&lt;p&gt;Je vais conserver le groupe &lt;q&gt;« nogroup »&lt;/q&gt; et utiliser l'utilisateur &lt;q&gt;« nobody »&lt;/q&gt; qui existe déjà. Nous devons juste accorder cet utilisateur pour ce que nous voulons en faire. Ici j'anticipe un peu sachant que je vais créer des utilisateurs FTP virtuels pour mes sites internet.&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# usermod -g nogroup -d /home/nobody -s /usr/sbin/nologin nobody
bebeserv:~# useradd -g nogroup -d /home/nobody -s /usr/sbin/nologin anonymous
bebeserv:~# mkdir /home/nobody
bebeserv:~# chgrp nogroup /home/nobody
bebeserv:~# chmod 2770 /home/nobody
&lt;/pre&gt;


&lt;p&gt;Créons aussi le dossier de notre premier utilisateur virtuel&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# mkdir /home/nobody/test/
bebeserv:~# chown nobody /home/nobody/test/
&lt;/pre&gt;


&lt;p&gt;Une petite explication s'impose, nous donnons d'abord au dossier le bon groupe et nous le mettons un &lt;q&gt;« setgid »&lt;/q&gt; dessus afin que tous fichiers et dossiers créés dans ce dossier appartiennent au groupe &lt;q&gt;« nogroup »&lt;/q&gt;, ensuite nous ne donnons aucun droit d'écriture sur le dossier sauf au propriétaire &lt;q&gt;« root »&lt;/q&gt; car &lt;q&gt;« vsftpd »&lt;/q&gt; accorde automatiquement les droits d'écriture dans le dossier en fonction de ces droits et nous ne souhaitons pas forcément que tous les utilisateurs puisse écrire dedans. Nous gérerons ces droits dans &lt;q&gt;« vsftpd »&lt;/q&gt;. &lt;/p&gt;


&lt;p&gt;Maintenant nous allons configurer notre serveur FTP.&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# nano /etc/vsftpd.conf
&lt;/pre&gt;


&lt;p&gt;Je change les lignes suivantes&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
anonymous_enable=NO
local_enable=YES
write_enable=NO
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=NO
chown_uploads=NO
chown_username=nobody
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=300
data_connection_timeout=60
nopriv_user=anonymous
ftpd_banner=Welcome to bebeserv.bebenet.local FTP service.
chroot_local_user=YES
&lt;/pre&gt;


&lt;p&gt;Et je rajoute celles-ci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
guest_enable=YES
guest_username=nobody
max_clients=20
max_per_ip=5
force_dot_files=YES
hide_ids=YES
use_localtime=YES
user_config_dir=/etc/vsftpd/user_conf

# Connection sécurisée
#ssl_enable=YES
#allow_anon_ssl=YES
#force_local_data_ssl=YES
#force_local_logins_ssl=YES
#ssl_sslv2=YES
#ssl_sslv3=YES
#ssl_tlsv1=YES
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Maintenant configurons le fichier d'authentification &lt;a href=&quot;http://www.paradoxal.org/blog/tag/PAM&quot;&gt;PAM&lt;/a&gt; de &lt;q&gt;« vsftpd »&lt;/q&gt; afin d'utiliser des &lt;a href=&quot;http://www.paradoxal.org/blog/tag/utilisateurs%20virtuels&quot;&gt;utilisateurs virtuels&lt;/a&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# nano /etc/pam.d/vsftpd
&lt;/pre&gt;


&lt;p&gt;Commentez toutes les lignes et mettez ceci à la fin du fichier&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
auth	required	/lib/security/pam_userdb.so db=/etc/vsftpd/login
account	required	/lib/security/pam_userdb.so db=/etc/vsftpd/login
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Maintenant allons créer notre base d'utilisateurs virtuels&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# mkdir /etc/vsftpd
bebeserv:~# nano /etc/vsftpd/userdb
&lt;/pre&gt;


&lt;p&gt;Créez l'utilisateur &lt;q&gt;« test »&lt;/q&gt; correspondant au dossier que nous avons fait plus haut&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
test
toto

&lt;/pre&gt;


&lt;p&gt;Vérifiez toujours de bien mettre une ligne vide en fin de fichier&amp;nbsp;!
La seconde ligne est le mot de passe de l'utilisateur ici donc &lt;q&gt;« toto »&lt;/q&gt;. Le fichier doit être écrit strictement de la sorte (avec toujours une ligne vide à la fin)&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
user1
pass1
user2
pass2
user3
pass3
...

&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Maintenant formatons notre base de données au format &lt;q&gt;« &lt;a href=&quot;http://www.paradoxal.org/blog/tag/userdb&quot;&gt;userdb&lt;/a&gt; »&lt;/q&gt;. pour ceci plutôt que de taper une ligne de commande fastidieuse et dont on ne se rappellera jamais, nous allons créer un petit script qui le fera pour nous.&lt;/p&gt;


&lt;p&gt;Créons notre script&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# nano /etc/vsftpd/vsftpd-makedb
&lt;/pre&gt;


&lt;p&gt;Écrivez les lignes suivantes&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
#!/bin/sh
db3_load -T -t hash -f /etc/vsftpd/userdb /etc/vsftpd/login.db
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Maintenant donnons les bons droits à notre script&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# chmod 500 /etc/vsftpd/vsftpd-makedb
&lt;/pre&gt;


&lt;p&gt;Ajoutons un lien symbolique afin d'avoir accès directement à cette nouvelle commande, comme  toutes les autres commandes.&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# ln -s /etc/vsftpd/vsftpd-makedb /usr/local/bin/
&lt;/pre&gt;


&lt;p&gt;Maintenant et après chaque modification de la table &lt;q&gt;« userdb »&lt;/q&gt; il faudra faire&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# vsftpd-makedb
&lt;/pre&gt;


&lt;p&gt;Dorénavant notre utilisateur &lt;q&gt;« test »&lt;/q&gt; existe pour &lt;q&gt;« vsftpd »&lt;/q&gt; donnons lui des droits afin que &lt;q&gt;« vsftp »&lt;/q&gt; sache ce qui lui est autorisé. Mais pour ceci, afin de nous rappeler des options en permanence, nous allons créer d'abord un fichier d'exemple&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# mkdir /etc/vsftpd/user_conf
bebeserv:~# cd /etc/vsftpd/user_conf
bebeserv:/etc/vsftpd/user_conf# nano example
&lt;/pre&gt;


&lt;p&gt;Écrivez&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
# donne les droits de lecture
download_enable=YES
anon_world_readable_only=NO

# donne les droits d'écriture
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES

# donne le droit de renommer de supprimer
anon_other_write_enable=YES

#donne le droit de faire des chmod
chmod_enable=YES
virtual_use_local_privs=YES

#affiche les fichier cachés
force_dot_files=YES

# donne un home dans /home/nobody 
# exemple : local_root=test le home de l'utilisateur sera :
# /home/nobody/test
local_root=test

# droits des fichiers créés
anon_umask=002
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Maintenant que nous avons un fichier d'exemple, créez celui de l'utilisateur &lt;q&gt;« test »&lt;/q&gt; et modifiez les options si vous le souhaiter&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/vsftpd/user_conf# cp example test
&lt;/pre&gt;


&lt;p&gt;Si ce n'est déjà fait ajoutez les lignes suivantes à votre fichier &lt;q&gt;« /etc/network/iptables »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
iptables -t filter -A INPUT -i eth0 -p tcp --dport 21 -d $MYIP -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp --sport 20 -d $MYIP -j ACCEPT

iptables -t filter -A OUTPUT -o eth0 -p tcp --dport 21 -s $MYIP -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -p tcp --sport 20 -s $MYIP -j ACCEPT
&lt;/pre&gt;


&lt;p&gt;Et à la fin du fichier rajoutez&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
modprobe ip_conntrack_ftp ports=21
&lt;/pre&gt;


&lt;p&gt;Configurons &lt;q&gt;« &lt;a href=&quot;http://www.paradoxal.org/blog/tag/fail2ban&quot;&gt;fail2ban&lt;/a&gt; »&lt;/q&gt; pour qu'il scanne les connexions FTP&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/vsftpd/user_conf# nano /etc/fail2ban/jail.conf
&lt;/pre&gt;


&lt;p&gt;Modifiez cette ligne&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
vsftpd]
enabled  = true
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Maintenant que tout est prêt, redémarrez &lt;q&gt;« iptables »&lt;/q&gt; et &lt;q&gt;« vsftpd »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/vsftpd/user_conf# /etc/init.d/vsftpd start
[...]
bebeserv:/etc/vsftpd/user_conf# /etc/init.d/iptables-conf restart
[...]
&lt;/pre&gt;


&lt;p&gt;Faisons un petit test de connexion&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/vsftpd/user_conf# ftp localhost 21
Connected to localhost.
220 Welcome to bebeserv.bebenet.local FTP service.
Name : 
&lt;/pre&gt;


&lt;p&gt;Loguez vous avec l'utilisateur &lt;q&gt;« test »&lt;/q&gt; avec le mot de passe &lt;q&gt;« toto »&lt;/q&gt;.
La connexion réussi votre serveur ftp fonctionne.&lt;/p&gt;


&lt;p&gt;Quittez&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ftp&amp;gt; quit
221 Goodbye.
bebeserv:/etc/vsftpd/user_conf# 
&lt;/pre&gt;


&lt;p&gt;Dans cette configuration néanmoins les utilisateurs locaux ne peuvent pas se connecter en FTP classique. ce qui est en même temps un bonne chose car le FTP classique peut être remplacer par du &lt;a href=&quot;http://www.paradoxal.org/blog/tag/SFTP&quot;&gt;SFTP&lt;/a&gt; (FTP par &lt;a href=&quot;http://www.paradoxal.org/blog/tag/SSH&quot;&gt;SSH&lt;/a&gt;) vous n'avez rien à changer pour que ceci fonctionne.
ATTENTION ne confondez pas SFTP ET &lt;a href=&quot;http://www.paradoxal.org/blog/tag/FTPS&quot;&gt;FTPS&lt;/a&gt; (FTP par &lt;a href=&quot;http://www.paradoxal.org/blog/tag/SSL&quot;&gt;SSL&lt;/a&gt;).&lt;/p&gt;


&lt;p&gt;Afin de sécurisé aussi nos comptes virtuels nous allons faire en sorte qu'ils puisse se connecter en FTPS.
Pour ceci nous allons avoir besoin de &lt;q&gt;« &lt;a href=&quot;http://www.paradoxal.org/blog/tag/open-ssl&quot;&gt;open-ssl&lt;/a&gt; »&lt;/q&gt; pour générer les certificats adéquats et la connexion SSL.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/vsftpd/user_conf# apt-get install openssl
[...]
&lt;/pre&gt;


&lt;p&gt;Maintenant générons un certificat pour &lt;q&gt;« vsftpd »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/vsftpd/user_conf# cd /etc/ssl/certs
bebeserv:/etc/ssl/certs# openssl req -x509 -nodes -days 730 -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem
&lt;/pre&gt;


&lt;p&gt;Aux questions répondez comme ceci par exemple; le plus important étant le &lt;q&gt;« Common Name »&lt;/q&gt; qui doit être l'adresse IP exact ou le nom de domaine exact du service), sachant que nous configurerons plus tard un sous domaine nommé &lt;q&gt;« ftp »&lt;/q&gt; sur notre domaine &lt;q&gt;« bebenet.local »&lt;/q&gt; j'utiliserai celui çi&amp;nbsp;: &lt;q&gt;« ftp.bebenet.local »&lt;/q&gt;.&lt;/p&gt;


&lt;p&gt;Voici ce que j'ai répondu&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:France
Locality Name (eg, city) []:Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:bebenet.local
Organizational Unit Name (eg, section) []:bebenet.local
Common Name (eg, YOUR name) []:ftp.bebenet.local
Email Address []:alban@bebenet.local
&lt;/pre&gt;


&lt;p&gt;Vous venez de créer un certificat valide pendant deux ans.
Maintenant sécurisez votre certificat avec des droits correct&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/ssl/certs# chmod 0600 vsftpd.pem
&lt;/pre&gt;


&lt;p&gt;Maintenant décommentez les lignes suivantes dans &lt;q&gt;« /etc/vsftpd.conf »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
# Connection sécurisée
ssl_enable=YES
allow_anon_ssl=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_sslv2=YES
ssl_sslv3=YES
ssl_tlsv1=YES
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Rechargez la configuration de &lt;q&gt;« vsftpd »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/ssl/certs# /etc/init.d/vsftpd reload
[...]
&lt;/pre&gt;


&lt;p&gt;Vous pouvez régler le client de votre utilisateur virtuel pour se connecter en FTPS (FTP with SSL auth SSL explicit) ou (FTP with SSL auth TLS explicit).&lt;/p&gt;


&lt;p&gt;Pensez à régler votre client en mode actif sans quoi il n'ira pas plus loin que la connexion. En effet sans SSL le serveur est régler pour géré le mode actif comme passif sans problème, seulement SSL empêche la gestion du mode passif. Pour contrer ceci nous pourrions limité la plage de ports passif sous &lt;q&gt;« vsftpd »&lt;/q&gt; et ouvrir dans &lt;q&gt;« iptables »&lt;/q&gt; ces ports mais cette idée je ne l'implémenterai pas ici.
Un petit rappel, une fois le SSL activer, les clients ne pourront plus se connecter sans mode SSL. pour les utilisateurs locaux SFTP (SSH) fonctionne toujours correctement.&lt;/p&gt;


&lt;p&gt;Voilà pour ce chapitre.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/ssl/certs# exit
logout
ALBAN@bebeserv:~$
&lt;/pre&gt;</description>
    
          <enclosure url="http://www.paradoxal.org/blog/public/tuto_debian/chapitre_3.pdf"
      length="95369" type="application/pdf" />
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/06/02/Serveur-Debian-vsftpd#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/06/02/Serveur-Debian-vsftpd#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/41</wfw:commentRss>
      </item>
    
  <item>
    <title>Serveur Debian - openssh</title>
    <link>http://www.paradoxal.org/blog/post/2007/05/27/Serveur-Debian-openssh</link>
    <guid isPermaLink="false">urn:md5:60ba4b1be6b36600e35082147e97a5c3</guid>
    <pubDate>Sun, 27 May 2007 13:58:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Serveur Debian</category>
        <category>Fail2ban</category><category>Iptables</category><category>Linux</category><category>Openssh</category><category>Putty</category><category>SSH</category><category>Sécurité</category>    
    <description>&lt;p&gt;&lt;strong&gt;CHAPITRE 2&amp;nbsp;: &lt;a href=&quot;http://www.paradoxal.org/blog/tag/SSH&quot;&gt;SSH&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Puisque qu'ici nous allons faire pas mal de chose nous allons passez en &lt;q&gt;« root »&lt;/q&gt; permanent&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo -i
bebeserv:~# 
&lt;/pre&gt;


&lt;p&gt;Installons le client et le serveur SSH. Seul le serveur devrait nous servir mais il est toujours très pratique d'avoir un client à porter de main.&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# apt-get update
[...]
bebeserv:~# apt-get install openssh-client openssh-server
[...]
&lt;/pre&gt;


&lt;p&gt;Commencez par couper &lt;q&gt;« sshd »&lt;/q&gt; tant qu'il n'est pas configuré correctement&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# /etc/init.d/ssh stop
[...]
&lt;/pre&gt;


&lt;p&gt;Maintenant allons configurer tout ceci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# cd /etc/ssh
bebeserv:/etc/ssh# 
&lt;/pre&gt;


&lt;p&gt;Tout d'abord le client ssh&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/ssh# nano ssh_config
&lt;/pre&gt;


&lt;p&gt;Mettez les options suivantes&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
CheckHostIP yes
EnableSSHKeysign yes
GSSAPIAuthentification yes
GSSAPIDelegateCredentials no
Protocol 2
ServerAliveCountMax 5
ServerAliveInterval 20
SetupTimeOut 30
TCPKeepAlive no
VerifyHostKeyDNS yes
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Maintenant passons au serveur&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/ssh# nano sshd_config
&lt;/pre&gt;


&lt;p&gt;Mettez les options suivantes&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
X11Forwarding
MaxAuthTries 3
MaxStartups 1
AllowUsers ALBAN
LoginGraceTime 60
PermitRootLogin no
AuthorizedKeysFile %h/.ssh/authorized_keys
X11Forwarding no
TCPKeepAlive no
Banner /etc/ssh/banner
ClientAliveCountMax 5
ClientAliveInterval 20
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Créons notre bannière&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/ssh# nano banner
&lt;/pre&gt;


&lt;p&gt;Entrez le texte de votre choix&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ATTENTION les connexions sur ce serveur sont surveillées et tracées.

Tout acte malveillant, usurpation d'identité, vol de données pourra amener des poursuites judiciaires importantes !
&lt;/pre&gt;


&lt;p&gt;Nous allons maintenant redémarrer notre serveur.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/ssh# /etc/init.d/ssh start
[...]
&lt;/pre&gt;


&lt;p&gt;Maintenant nous allons créer les clés RSA et DSA de notre utilisateur qui lui permettra d'assurer ses futures connexions.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/ssh# ssh-keygen -t dsa -b 1024 
[...]
&lt;/pre&gt;


&lt;p&gt;Des questions vous seront posées, faîtes &lt;q&gt;« [Entrée] »&lt;/q&gt; partout sans répondre.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/ssh# ssh-keygen -t rsa -b 1024 
[...]
&lt;/pre&gt;


&lt;p&gt;Même démarche.
Maintenant que tout est beau et propre nous allons devoir autoriser SSH à sortir de notre réseau.
Éditez le fichier &lt;q&gt;« /etc/network/&lt;a href=&quot;http://www.paradoxal.org/blog/tag/iptables&quot;&gt;iptables&lt;/a&gt; »&lt;/q&gt; et ajoutez les lignes suivantes.&lt;/p&gt;


&lt;p&gt;Autorisons le client SSH&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
iptables -t filter -A INPUT -p tcp --sport 22 -i eth0 -d $MYIP -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 22 -o eth0 -s $MYIP -j ACCEPT
&lt;/pre&gt;


&lt;p&gt;Autorisons le serveur SSH&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
iptables -t filter -A INPUT -p tcp --dport 22 -i eth0 -d $MYIP -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --sport 22 -o eth0 -s $MYIP -j ACCEPT
&lt;/pre&gt;



&lt;p&gt;Maintenant SSH est ouvert à l'extérieur.
Vous pouvez vous logguer depuis votre serveur vers un autre serveur en utilisant&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ssh user@server.com
&lt;/pre&gt;


&lt;p&gt;Si vous souhaitez vous connecter à un serveur depuis le votre sans voir à y rentrer la clé en permanence&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ssh-copy-id -i ~/.ssh/id_dsa.pub user@server.com
&lt;/pre&gt;


&lt;p&gt;Rentrez le mot de passe pour la dernière fois.
Après &lt;q&gt;« ssh user@server.com »&lt;/q&gt; se connectera automatiquement.&lt;/p&gt;


&lt;p&gt;Notre configuration est faite de sorte que seul l'utilisateur &lt;q&gt;« ALBAN »&lt;/q&gt; puisse utiliser SSH pour une connexion distante.
Ainsi avec &lt;a href=&quot;http://www.paradoxal.org/blog/tag/Putty&quot;&gt;Putty&lt;/a&gt;.exe sous un poste Windows par exemple vous pouvez vous connecter et administrer votre serveur à distance.&lt;/p&gt;


&lt;p&gt;Allons un peu plus loin et &lt;a href=&quot;http://www.paradoxal.org/blog/tag/s%C3%A9curit%C3%A9&quot;&gt;protégeons-nous&lt;/a&gt; des attaques SSH, nous allons installer le paquet &lt;q&gt;« &lt;a href=&quot;http://www.paradoxal.org/blog/tag/fail2ban&quot;&gt;fail2ban&lt;/a&gt; »&lt;/q&gt; qui nous protégera de ceci et qui part la suite nous protégera aussi de ce même type d'attaque pour les protocoles HTTP, POP etc.
Le principe de &lt;q&gt;« fail2ban »&lt;/q&gt; est très simple, il scan les fichiers de log &lt;q&gt;« /var/log/auth.log »&lt;/q&gt;, &lt;q&gt;« /var/log/apache/access.log »&lt;/q&gt; etc ... à la recherche de tentative d'authentification qui sont en échec. Au bout de 3 tentatives échouées par exemple il ajoutera une règle dans &lt;q&gt;« iptables »&lt;/q&gt; afin de bannir pendant un certain temps l'adresse IP qui tente de se connecter sans y arriver. Ainsi les attaques brute force sont compromises.
Vous l'aurez compris &lt;q&gt;« fail2ban »&lt;/q&gt; joue avec &lt;q&gt;« iptables »&lt;/q&gt; nous allons donc revenir sur les fichiers du chapitre 1 pour arranger tout ça.&lt;/p&gt;


&lt;p&gt;Première chose, installons &lt;q&gt;« fail2ban »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/ssh# apt-get install fail2ban
[...]
&lt;/pre&gt;


&lt;p&gt;Une fois fais, &lt;q&gt;« fail2ban »&lt;/q&gt; est déjà en action, voyez les modifications apporter sur notre &lt;q&gt;« iptables »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/ssh# iptables -L -v -n
&lt;/pre&gt;


&lt;p&gt;Afin de que notre script &lt;q&gt;« iptables-conf »&lt;/q&gt; et celui de &lt;q&gt;« fail2ban »&lt;/q&gt; ne s'embête pas au démarrage, sachant que les deux vont de paire nous allons supprimer le démarrage de &lt;q&gt;« fail2ban »&lt;/q&gt; tout en gardant son script de démarrage de la manière suivante&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/ssh# /etc/init.d/fail2ban stop
bebeserv:/etc/ssh# update-rc.d -f fail2ban remove
&lt;/pre&gt;


&lt;p&gt;Maintenant nous allons améliorer &lt;q&gt;« iptables-conf »&lt;/q&gt; pour y inclure &lt;q&gt;« fail2ban »&lt;/q&gt;&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/ssh# nano /etc/init.d/iptables-conf
&lt;/pre&gt;


&lt;p&gt;Modifiez les fonctions &lt;q&gt;« start »&lt;/q&gt; et &lt;q&gt;« stop »&lt;/q&gt; de la manière suivante&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
iptables_start() {
		if [ -f /etc/network/iptables ]; then
				. /etc/network/iptables
		fi
		/etc/init.d/fail2ban start
}

iptables_stop() {
		/etc/init.d/fail2ban stop
		iptables -t filter -F INPUT
		iptables -t filter -P INPUT ACCEPT
		iptables -t filter -F OUTPUT
		iptables -t filter -P OUTPUT ACCEPT
}
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Maintenant allons paramétrer &lt;q&gt;« fail2ban »&lt;/q&gt;&amp;nbsp;:
Rendez vous dans &lt;q&gt;« /etc/fail2ban/ »&lt;/q&gt;&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/ssh# cd /etc/fail2ban
bebeserv:/etc/fail2ban# nano fail2ban.conf
&lt;/pre&gt;


&lt;p&gt;Personnellement ici je change la dernière ligne du fichier de configuration&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
socket = /var/run/fail2ban.sock
&lt;/pre&gt;


&lt;p&gt;Je trouve ceci plus propre que de le mettre dans &lt;q&gt;« /tmp »&lt;/q&gt;, autant l'enregistrer avec ses collègues.
Maintenant réglons la manière dont &lt;q&gt;« fail2ban »&lt;/q&gt; travail&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/fail2ban# nano jail.conf
&lt;/pre&gt;


&lt;p&gt;&lt;q&gt;« bantime = 600 »&lt;/q&gt; et &lt;q&gt;« maxretry = 3 »&lt;/q&gt; me semble être des bonnes valeurs (pour 3 mauvaises tentatives le host est banni 10 minutes)
Je ne rajoute pas mon propres réseau car je préfère ne pas faire confiance à mon réseau (question de sécurité, un cheval de troie sur un de mes PCs pourrait faire des dégâts)
Plus bas vous voyez des sections dont une pour SSH activée. Nous laissons tel quel pour l'instant, nous activerons les autres services au fur et à mesure ou nous les monterons.
Quittez et enregistrez si vous avez fait des modifications.&lt;/p&gt;


&lt;p&gt;Redémarrez le tout&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/fail2ban# /etc/init.d/iptables-conf restart
&lt;/pre&gt;


&lt;p&gt;Voilà c'est terminer pour SSH.&lt;/p&gt;


&lt;p&gt;Une dernière chose avant de clore le sujet.
Vous avez sûrement remarquer qu'un nouveau fichier de log sera présent dans &lt;q&gt;« /var/log »&lt;/q&gt;&amp;nbsp;: &lt;q&gt;« fail2ban.log »&lt;/q&gt;.&lt;/p&gt;


&lt;p&gt;Il est de bon ton d'aller vérifier si le &lt;q&gt;« logrotate »&lt;/q&gt; fera tourner ce fichier de log avant qu'il ne devienne trop gros et génère quelque défaillance du système. (il faut toujours avoir ce reflex).
Allons donc dans &lt;q&gt;« /etc/logrotate.d/ »&lt;/q&gt;&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/fail2ban# cd /etc/logrotate.d/
bebeserv:/etc/logrotate.d# ls 
&lt;/pre&gt;


&lt;p&gt;Il y a bien un fichier visiblement dédié à &lt;q&gt;« fail2ban »&lt;/q&gt;
Affichons le&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/fail2ban# cat fail2ban
&lt;/pre&gt;


&lt;p&gt;De ce que l'on peut en lire, ce fichier sera tourné toutes les semaines avec 4 fichiers conservés et compressés. Pour moi c'est bon =)&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/fail2ban# exit
logout
ALBAN@bebeserv:~$
&lt;/pre&gt;</description>
    
          <enclosure url="http://www.paradoxal.org/blog/public/tuto_debian/chapitre_2.pdf"
      length="94206" type="application/pdf" />
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/05/27/Serveur-Debian-openssh#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/05/27/Serveur-Debian-openssh#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/40</wfw:commentRss>
      </item>
    
  <item>
    <title>Serveur Debian - Iptables</title>
    <link>http://www.paradoxal.org/blog/post/2007/05/23/Serveur-Debian-Iptables</link>
    <guid isPermaLink="false">urn:md5:b93766c578d9c6b3d53fbb3211349406</guid>
    <pubDate>Wed, 23 May 2007 10:54:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Serveur Debian</category>
        <category>Firewall</category><category>Iptables</category><category>Linux</category><category>Sécurité</category>    
    <description>&lt;p&gt;&lt;strong&gt;CHAPITRE 1&amp;nbsp;: IPTABLES&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Si vous ne connaissez pas encore &lt;q&gt;«&lt;a href=&quot;http://www.paradoxal.org/blog/tag/iptables&quot;&gt; iptables&lt;/a&gt; »&lt;/q&gt;, c'est LA commande pour gérer les connexions réseau, faire des redirections de port, blacklister une adresse IP ou tout simplement ouvrir ou fermer des ports. C'est ce que l'on appelle un pare-feu ou &lt;a href=&quot;http://www.paradoxal.org/blog/tag/firewall&quot;&gt;firewall&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Par défaut &lt;q&gt;« iptables »&lt;/q&gt; laisse tout ouvert et ne filtre rien. Notre but c'est de fermer un peu tout ça et de garder le minimum ouvert.
Je ne rentrerai pas dans le détails de l'utilisation de &lt;q&gt;« iptables »&lt;/q&gt; car bien trop de choses sont à voir mais nous allons l'utiliser d'une manière simple et efficace ce qui vous donnera les bases minimales pour commencer à appréhender &lt;q&gt;« iptables »&lt;/q&gt;.&lt;/p&gt;


&lt;p&gt;Nous allons paramétrer &lt;q&gt;« iptables »&lt;/q&gt; de manière à l'utiliser que pour nos besoins. A l'heure actuelle, seul &lt;q&gt;« apt »&lt;/q&gt; (la gestion des paquets Debian) et &lt;q&gt;« ntpdate »&lt;/q&gt; (synchronisation de l'heure) font des connexions réseau. Nous allons donc tout bloquer puis ouvrir un passage à &lt;q&gt;« apt »&lt;/q&gt; et &lt;q&gt;« ntpdate »&lt;/q&gt;.&lt;/p&gt;


&lt;p&gt;D'abord on supprime toutes les règles existante (des fois qu'ils y en aurait de rentrées)&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo iptables -t filter -F INPUT
ALBAN@bebeserv:~$ sudo iptables -t filter -F OUTPUT
&lt;/pre&gt;


&lt;p&gt;Maintenant on ferme les portes&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo iptables -t filter -P INPUT DROP
ALBAN@bebeserv:~$ sudo iptables -t filter -P OUTPUT DROP
&lt;/pre&gt;


&lt;p&gt;Un reflex qu'il faut avoir c'est de toujours autoriser la boucle locale (et ceci doit être toujours la première règle)&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo iptables -t filter -A INPUT -i lo -j ACCEPT
ALBAN@bebeserv:~$ sudo iptables -t filter -A OUTPUT -o lo -j ACCEPT
&lt;/pre&gt;


&lt;p&gt;Dorénavant nous sommes totalement fermé de l'extérieur. Configurons &lt;q&gt;« iptables »&lt;/q&gt; pour laisser &lt;q&gt;« apt »&lt;/q&gt;.
&lt;q&gt;« apt »&lt;/q&gt; aura déjà besoin de faire des requêtes DNS (port 53 en UDP et TCP) pour résoudre les noms tel que &lt;q&gt;« ftp.debian.fr »&lt;/q&gt; afin de pouvoir récupérer les listes et les paquets.
Normalement un client DNS n'a besoin que du protocole UDP mais ce dernier est laxiste sur sa spécification et autorise aussi le TCP (qui est normalement réservé au transfert de zone DNS)
Ouvrons le port DNS en TCP et UDP pour l'entrée et la sortie&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo iptables -t filter -A INPUT -i eth0 -d 10.0.0.2 -p tcp --sport 53 -j ACCEPT
ALBAN@bebeserv:~$ sudo iptables -t filter -A INPUT -i eth0 -d 10.0.0.2 -p udp --sport 53 -j ACCEPT
ALBAN@bebeserv:~$ sudo iptables -t filter -A OUTPUT -o eth0 -s 10.0.0.2 -p tcp --dport 53 -j ACCEPT
ALBAN@bebeserv:~$ sudo iptables -t filter -A OUTPUT -o eth0 -s 10.0.0.2 -p udp --dport 53 -j ACCEPT
&lt;/pre&gt;


&lt;p&gt;Si vous posséder un serveur DNS ouvrez vous aurez besoin d'ouvrir les ports dans l'autre sens&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo iptables -t filter -A INPUT -i eth0 -d 10.0.0.2 -p tcp --dport 53 -j ACCEPT
ALBAN@bebeserv:~$ sudo iptables -t filter -A INPUT -i eth0 -d 10.0.0.2 -p udp --dport 53 -j ACCEPT
ALBAN@bebeserv:~$ sudo iptables -t filter -A OUTPUT -o eth0 -s 10.0.0.2 -p tcp --sport 53 -j ACCEPT
ALBAN@bebeserv:~$ sudo iptables -t filter -A OUTPUT -o eth0 -s 10.0.0.2 -p udp --sport 53 -j ACCEPT
&lt;/pre&gt;


&lt;p&gt;De même ouvrons le port 80 en TCP pour que &lt;q&gt;« apt »&lt;/q&gt; puisse télécharger les paquets&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo iptables -t filter -A INPUT -i eth0 -d 10.0.0.2 -p tcp --sport 80 -j ACCEPT
ALBAN@bebeserv:~$ sudo iptables -t filter -A OUTPUT -o eth0 -s 10.0.0.2 -p tcp --dport 80 -j ACCEPT
&lt;/pre&gt;


&lt;p&gt;De même pour un serveur web ouvrez les ports dans l'autre sens&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo iptables -t filter -A INPUT -i eth0 -d 10.0.0.2 -p tcp --dport 80 -j ACCEPT
ALBAN@bebeserv:~$ sudo iptables -t filter -A OUTPUT -o eth0 -s 10.0.0.2 -p tcp --sport 80 -j ACCEPT
&lt;/pre&gt;


&lt;p&gt;Maintenant autorisons &lt;q&gt;« ntpdate »&lt;/q&gt; qui lui utilise le port 123 en UDP&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo iptables -t filter -A INPUT -i eth0 -d 10.0.0.2 -p udp --sport 123 -j ACCEPT
ALBAN@bebeserv:~$ sudo iptables -t filter -A OUTPUT -o eth0 -s 10.0.0.2 -p udp --dport 123 -j ACCEPT
&lt;/pre&gt;


&lt;p&gt;A ce stade nous pourrions nous arrêter là tout es fonctionnel. Mais allons plus loin.
Maintenant ajoutons une règle qui dira que toute connexion déjà établie avec le serveur donc déjà autoriser par &lt;q&gt;« iptables »&lt;/q&gt; sera elle aussi autorisée (même sur un port fermé par exemple). Cette règle est facultative mais bien utile quand vous tester votre configuration vous permettant de tester avec la règle de log (voir ci-dessous) les paquets qui sont rejetés qui devrait être acceptés.&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo iptables -t filter -A INPUT -i eth0 -d 10.0.0.2 -m state --state RELATED,ESTABLISHED -j ACCEPT
ALBAN@bebeserv:~$ sudo iptables -t filter -A OUTPUT -o eth0 -s 10.0.0.2 -m state --state RELATED,ESTABLISHED -j ACCEPT
&lt;/pre&gt;


&lt;p&gt;Dernière ces règles nous allons loguer dans le fichier &lt;q&gt;« /var/log/debug »&lt;/q&gt; tout les paquets que nous allons bloquer avant de les bloquer&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo iptables -t filter -A INPUT -i eth0 -d 10.0.0.2 -j LOG --log-prefix &amp;quot;Iptables INPUT dropped : &amp;quot; --log-level debug
ALBAN@bebeserv:~$ sudo iptables -t filter -A OUTPUT -o eth0 -s 10.0.0.2 -j LOG --log-prefix &amp;quot;Iptables OUPUT dropped : &amp;quot; --log-level debug
&lt;/pre&gt;


&lt;p&gt;Il est est terminer des règles.
Maintenant voyons quelques commandes utiles.
Sauver votre configuration&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo iptables-save &amp;gt; ~/iptables-sauvegarde
&lt;/pre&gt;


&lt;p&gt;Restaurer votre configuration&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo iptables-restore ~/iptables-sauvergade
&lt;/pre&gt;


&lt;p&gt;Voir votre configuration complète&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo iptables -L -v --line-numbers
&lt;/pre&gt;


&lt;p&gt;Vérifier le log en temps réel (paquets rejetés)&amp;nbsp;: (tapez &lt;q&gt;« [CTRL + C] »&lt;/q&gt; pour sortir)&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo tail -f /var/log/debug 
&lt;/pre&gt;


&lt;p&gt;Quand le serveur redémarre vos règles &lt;q&gt;« iptables »&lt;/q&gt; seront perdues, il faut donc automatiser la mise en place de ces règles.
Allez dans &lt;q&gt;« /etc/network »&lt;/q&gt;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ cd /etc/network
ALBAN@bebeserv:/etc/network$ 
&lt;/pre&gt;


&lt;p&gt;Créez le fichier &lt;q&gt;« iptables »&lt;/q&gt; à côté du fichier &lt;q&gt;« interface »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:/etc/network$ sudo nano iptables
&lt;/pre&gt;


&lt;p&gt;Entrez les mêmes lignes que nous avons du taper pour configurer &lt;q&gt;« iptables »&lt;/q&gt; (attention aux fautes de frappes !)&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
# A modifier en fonction de votre adresse IP
MYIP=10.0.0.2

iptables -t filter -F INPUT
iptables -t filter -F OUTPUT

iptables -t filter -Z INPUT
iptables -t filter -Z OUTPUT

iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP

iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A INPUT -i eth0 -d $MYIP -p tcp --sport 53 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -d $MYIP -p udp --sport 53 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -d $MYIP -p tcp --sport 80 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -d $MYIP -p udp --sport 123 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -d $MYIP -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A INPUT -i eth0 -d $MYIP -j LOG --log-prefix &amp;quot;Iptables INPUT dropped : &amp;quot; --log-level debug

iptables -t filter -A OUTPUT -o lo -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -s $MYIP -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -s $MYIP -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -s $MYIP -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -s $MYIP -p udp --dport 123 -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -s $MYIP -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -s $MYIP -j LOG --log-prefix &amp;quot;Iptables OUPUT dropped : &amp;quot; --log-level debug
&lt;/pre&gt;


&lt;p&gt;Enregistrez le fichier &lt;q&gt;« [CTRL + O] »&lt;/q&gt; et quittez &lt;q&gt;« [CTRL + X] »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;Créez le fichier de démarrage,&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:/etc/network$ cd /etc/init.d/
ALBAN@bebeserv:/etc/init.d$ sudo nano iptables-conf
&lt;/pre&gt;


&lt;p&gt;Entrez ceci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
#! /bin/sh
set -e

iptables_start() {
		if [ -f /etc/network/iptables ]; then
				. /etc/network/iptables
		fi
}

iptables_stop() {
		iptables -t filter -F INPUT
		iptables -t filter -F OUTPUT
		iptables -t filter -P INPUT ACCEPT
		iptables -t filter -P OUTPUT ACCEPT
}

case &amp;quot;$1&amp;quot; in
  start)
		echo -n &amp;quot;Apply Iptables configuration&amp;quot;
		iptables_start
		echo &amp;quot;.&amp;quot;
		;;
  stop)
		echo -n &amp;quot;Clear Iptables configuration&amp;quot;
		iptables_stop
		echo &amp;quot;.&amp;quot;
		;;

  restart)
		echo -n &amp;quot;Reloading Iptables configuration&amp;quot;
		iptables_stop
		iptables_start
		echo &amp;quot;.&amp;quot;
		;;

  *)
		echo &amp;quot;Usage: /etc/init.d/iptables-conf {start|stop|restart}&amp;quot;
		exit 1
esac

exit 0
&lt;/pre&gt;


&lt;p&gt;Donnons les bons droits à notre fichier&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:/etc/init.d$ sudo chmod +x iptables-conf
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Rajoutez le script de démarrage dans le mode voulu avec la priorité voulue&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:/etc/init.d$ sudo update-rc.d iptables-conf start 99 2 3 4 5 . stop 20 0 1 6 .
[...]
&lt;/pre&gt;


&lt;p&gt;Testons le tout, affichons la configuration actuelle&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:/etc/init.d$ sudo iptables -L -v --line-numbers
[...]
&lt;/pre&gt;


&lt;p&gt;Stoppez le firewall&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:/etc/init.d$ sudo /etc/init.d/iptables-conf stop
[...]
&lt;/pre&gt;


&lt;p&gt;Vérifiez que tout est vide et autorisé&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:/etc/init.d$ sudo iptables -L -v --line-numbers
[...]
&lt;/pre&gt;


&lt;p&gt;Démarrons le firewall&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:/etc/init.d$ sudo /etc/init.d/iptables-conf start
[...]
&lt;/pre&gt;


&lt;p&gt;Vérifions que toutes les règles sont bien présentes&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:/etc/init.d$ sudo iptables -L -v --line-numbers
[...]
&lt;/pre&gt;


&lt;p&gt;Modifions nous même la configuration actuelle&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:/etc/init.d$ sudo iptables -F INPUT
[...]
ALBAN@bebeserv:/etc/init.d$ sudo iptables -L -v --line-numbers
[...]
&lt;/pre&gt;


&lt;p&gt;Redémarrons le firewall pour vérifier que tout revient comme nous l'avions configuré&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:/etc/init.d$ sudo /etc/init.d/iptables-conf restart
[...]
ALBAN@bebeserv:/etc/init.d$ sudo iptables -L -v --line-numbers
[...]
&lt;/pre&gt;


&lt;p&gt;Voilà c'est terminé pour ce chapitre&amp;nbsp;!&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:/etc/init.d$ cd ~
ALBAN@bebeserv:~$
&lt;/pre&gt;</description>
    
          <enclosure url="http://www.paradoxal.org/blog/public/tuto_debian/chapitre_1.pdf"
      length="92237" type="application/pdf" />
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/05/23/Serveur-Debian-Iptables#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/05/23/Serveur-Debian-Iptables#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/39</wfw:commentRss>
      </item>
    
  <item>
    <title>Backup de votre site internet (Correction)</title>
    <link>http://www.paradoxal.org/blog/post/2007/02/24/27-backup-de-votre-site-internet-correction</link>
    <guid isPermaLink="false">urn:md5:b3e20d6833f8cf28269a404d245c534a</guid>
    <pubDate>Sat, 24 Feb 2007 16:03:00 +0000</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Bug</category>
        <category>Linux</category><category>Mysql</category><category>Sécurité</category>    
    <description>&lt;p&gt;Je tiens à corriger une erreur qui s'est glissée dans mon article &lt;a title=&quot;Accédez à l'article backup de votre site internet&quot; href=&quot;http://www.paradoxal.org/blog/seza/2007/01/13/18-backup-de-votre-site-internet&quot; hreflang=&quot;fr&quot;&gt;Backup de votre site internet&lt;/a&gt; suite à la découverte d'un bug dans &lt;q&gt;mysqldump&lt;/q&gt;&lt;/p&gt;    &lt;p&gt;En effet je me suis rendu compte dans le backup de la base de donnée que l'option &lt;q&gt;--compatible=mysql40&lt;/q&gt; du &lt;q&gt;mysqldump&lt;/q&gt; faisait disparaitre l'attribut &lt;q&gt;autoincrément&lt;/q&gt; des clé primaires autoincrémentées. C'est un bug connu de MySql et jusqu'à maintenant non corrigé semble t-il.&lt;/p&gt;
&lt;p&gt;Je vous conseille donc vivement de retirer cette option de vos backup sous peine lors d'une restauration d'être rapidement embêter à moins que vous ne pensiez à tous les remettre à la main.&lt;/p&gt;
&lt;p&gt;Comment faire si vous souhaitez dumper des données de MySql 5 vers MySql 4 et qu'un simple dump ne permet pas la réinsertion de vos data&amp;nbsp;? Sans avoir testé je pense que la solution serait de générer deux dumps différents. un premier classique contenant uniquement la structure de vos bases et tables sans donnée et un second avec l'option &lt;q&gt;--compatible=mysql40&lt;/q&gt; avec uniquement des &lt;q&gt;insert&lt;/q&gt; sans &lt;q&gt;create table&lt;/q&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/02/24/27-backup-de-votre-site-internet-correction#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/02/24/27-backup-de-votre-site-internet-correction#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/24</wfw:commentRss>
      </item>
    
</channel>
</rss>