<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Nginx on iMil.net</title>
    <link>http://imil.net/blog/tags/nginx/</link>
    <description>Recent content in Nginx on iMil.net</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 21 Mar 2020 07:01:41 +0100</lastBuildDate>
    <atom:link href="http://imil.net/blog/tags/nginx/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>HTTP flood drop with nginx</title>
      <link>http://imil.net/blog/posts/2020/http-flood-drop-with-nginx/</link>
      <pubDate>Sat, 21 Mar 2020 07:01:41 +0100</pubDate>
      <guid>http://imil.net/blog/posts/2020/http-flood-drop-with-nginx/</guid>
      <description>&lt;p&gt;The other day at &lt;code&gt;${DAYWORK}&lt;/code&gt; we got hit by a simple yet efficient &lt;em&gt;DDoS&lt;/em&gt; attack, basically, there were lots of regular &lt;code&gt;HTTP&lt;/code&gt; queries with a specific query parameter but using either &lt;code&gt;GET&lt;/code&gt;, &lt;code&gt;POST&lt;/code&gt; or &lt;code&gt;HEAD&lt;/code&gt; methods:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;www.customer.com:443:80 174.76.48.233 - - [19/Mar/2020:17:26:11 +0000] &amp;#34;POST /?=Best_HTTP_Flooder_For_FREE_by_PassDDoS&amp;amp;9716 HTTP/1.0&amp;#34; 200 62861 &amp;#34;http://validator.w3.org/feed/check.cgi?url=https://www.customer.com&amp;#34; &#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Fortunately, the parameter was always the same, and as we use an &lt;a href=&#34;https://nginx.org&#34;&gt;nginx&lt;/a&gt; reverse proxy farm in front of our customer&amp;rsquo;s websites, we could deploy this simple trick in order to get rid of the attack:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Let&#39;s Encrypt certificates using LEGO</title>
      <link>http://imil.net/blog/posts/2020/let-s-encrypt-certificates-using-lego/</link>
      <pubDate>Mon, 02 Mar 2020 08:28:40 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2020/let-s-encrypt-certificates-using-lego/</guid>
      <description>&lt;p&gt;This post is more like a self-reminder on how I setup automatic SSL/TLS certificate renewal on my servers.&lt;/p&gt;&#xA;&lt;p&gt;I chose &lt;a href=&#34;https://go-acme.github.io/lego&#34;&gt;LEGO&lt;/a&gt; to handle my certificates renewal with &lt;a href=&#34;https://letsencrypt.org/&#34;&gt;Let&amp;rsquo;s Encrypt&lt;/a&gt; because it&amp;rsquo;s simple to use, has no dependency, great documentation and is worked on at a constant pace.&lt;/p&gt;&#xA;&lt;p&gt;I found &lt;a href=&#34;https://code.kuederle.com/letsencrypt/&#34;&gt;this&lt;/a&gt; and &lt;a href=&#34;https://dddpaul.github.io/blog/2016/10/20/lego-nginx/&#34;&gt;this&lt;/a&gt; articles very useful, but they are outdated in their use of the &lt;code&gt;tls&lt;/code&gt; and &lt;code&gt;http&lt;/code&gt; parameters. So here are my notes.&lt;/p&gt;&#xA;&lt;p&gt;This procedure is &lt;em&gt;Debian GNU/Linux&lt;/em&gt; based but I also used it pretty much as-is on &lt;em&gt;NetBSD&lt;/em&gt; and &lt;em&gt;FreeBSD&lt;/em&gt;, only &lt;code&gt;nginx&lt;/code&gt; related &lt;code&gt;PATH&lt;/code&gt;s changed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>date over HTTP</title>
      <link>http://imil.net/blog/posts/2018/date-over-http/</link>
      <pubDate>Sat, 05 May 2018 19:03:11 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2018/date-over-http/</guid>
      <description>&lt;p&gt;I always manage to get myself into weird issues&amp;hellip; I have this (pretty old) &lt;a href=&#34;https://en.wikipedia.org/wiki/Linksys_WRT54G_series&#34;&gt;wrt54g&lt;/a&gt; router that works well with &lt;a href=&#34;http://www.dd-wrt.com/&#34;&gt;dd-wrt&lt;/a&gt; &lt;em&gt;v3.0-r34311 vpn&lt;/em&gt; release. This router is installed in an apartment intended for rental where I happen to crash every now and then. It connects to an &lt;a href=&#34;https://openvpn.net/&#34;&gt;OpenVPN&lt;/a&gt; hub of mine so I can &lt;a href=&#34;https://mmonit.com/monit/&#34;&gt;monit&lt;/a&gt; it and be sure guests renting the apartment have working Internet access.&lt;/p&gt;&#xA;&lt;p&gt;The apartment is located on a small mountain and electricity is not exactly stable, from times to times power goes down and comes back up. And I noticed the &lt;em&gt;openvpn&lt;/em&gt; link sometimes fails to reconnect.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Letsencrypt friendly nginx configuration</title>
      <link>http://imil.net/blog/posts/2016/letsencrypt-friendly-nginx-configuration/</link>
      <pubDate>Sat, 12 Mar 2016 09:19:25 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2016/letsencrypt-friendly-nginx-configuration/</guid>
      <description>&lt;p&gt;So I use &lt;a href=&#34;https://gist.github.com/xrstf/581981008b6be0d2224f&#34;&gt;this great cheat sheet&lt;/a&gt; in order to use &lt;a href=&#34;https://letsencrypt.org/&#34;&gt;letsencrypt&lt;/a&gt; free Certificate authority on my own servers, but while this small doc is very straightforward it doesn&amp;rsquo;t explain much about &lt;a href=&#34;http://nginx.org&#34;&gt;nginx&lt;/a&gt;&amp;rsquo;s configuration. So I&amp;rsquo;ll drop my own right here so your journey through TLS is even simpler:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;$ cat /usr/pkg/etc/nginx/nginx.conf&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# this nginx installation comes from pkgsrc for both Linux and NetBSD&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# you might have to adapt paths to suit your needs... or switch to pkgsrc ;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;user   nginx  nginx;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;worker_processes  2;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;events {&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;worker_connections  1024;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;http {&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;include       /usr/pkg/etc/nginx/mime.types;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;default_type  application/octet-stream;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;sendfile        on;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;keepalive_timeout  65;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# a little bit of browser leverage doesn&amp;#39;t hurt :)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;gzip  on;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;gzip_vary on;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;gzip_proxied any;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;server {&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# serve boths IPv4 and IPv6 FWIW&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;listen       [::]:80;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;listen       80;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;server_name  localhost example.com *.example.com;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# this is where letsencrypt will drop the callenge&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;location /.well-known/acme-challenge {&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#a6e22e&#34;&gt;default_type &amp;#34;text/plain&amp;#34;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#a6e22e&#34;&gt;root /var/www/letsencrypt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# redirect everything else to HTTPS&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;location / { return 302 https://$host$request_uri; }&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;server {&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;listen       [::]:443 ssl;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;listen       443 ssl;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# you&amp;#39;ll have to declare those domains accordingly in letsencrypt conf&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;server_name  localhost example.com *.example.com;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# here lies letsencrypt PEM files&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;ssl_certificate      /etc/letsencrypt/live/example.com/fullchain.pem;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;ssl_certificate_key  /etc/letsencrypt/live/example.com/privkey.pem;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# harden used protocols a little&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;ssl_session_cache    shared:SSL:1m;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;ssl_session_timeout  5m;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;ssl_ciphers &amp;#39;EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH&amp;#39;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;ssl_prefer_server_ciphers  on;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# and then include actual locations&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;include sites/*;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A very basic &lt;code&gt;proxy_pass&lt;/code&gt; location would be:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Start pkgsrc&#39;s nginx with systemd</title>
      <link>http://imil.net/blog/posts/2016/start-pkgsrc-s-nginx-with-systemd/</link>
      <pubDate>Sun, 28 Feb 2016 08:17:20 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2016/start-pkgsrc-s-nginx-with-systemd/</guid>
      <description>&lt;p&gt;Not so long ago, I wrote about &lt;a href=&#34;https://imil.net/blog/2015/07/05/using-pkgsrc-on-debian-gnulinux/&#34;&gt;using pkgsrc on Debian GNU/Linux&lt;/a&gt;, and assumed you&amp;rsquo;d start an installed service using &lt;a href=&#34;https://www.netbsd.org/docs/guide/en/chap-rc.html&#34;&gt;rc.d&lt;/a&gt;. When I setup the new &lt;a href=&#34;//iMil.net&#34;&gt;iMil.net&lt;/a&gt; server, I decided to give a try to &lt;a href=&#34;http://www.linux-kvm.org/page/Main_Page&#34;&gt;kvm&lt;/a&gt; as it is easier to maintain, has good performances (&lt;a href=&#34;https://major.io/2014/06/22/performance-benchmarks-kvm-vs-xen/&#34;&gt;sometimes better than Xen&lt;/a&gt;), nice administration tools, plus &lt;a href=&#34;http://netbsd.gw.com/cgi-bin/man-cgi?virtio+4+NetBSD-7.0&#34;&gt;NetBSD now has a good VirtIO driver&lt;/a&gt; but no &lt;a href=&#34;http://wiki.xen.org/wiki/Xen_Linux_PV_on_HVM_drivers&#34;&gt;PVHVM&lt;/a&gt; support yet.&lt;/p&gt;&#xA;&lt;p&gt;The first thing I do when setting up a &lt;em&gt;Debian Jessie&lt;/em&gt; server is getting rid of &lt;code&gt;systemd&lt;/code&gt;, whose philosophy and quality don&amp;rsquo;t match my personnal taste; but in that case, I wanted to use &lt;code&gt;libvirtd&lt;/code&gt; so I could manage my virtual machines with &lt;code&gt;virt-manager&lt;/code&gt;, and as a matter of fact, &lt;code&gt;libvirtd&lt;/code&gt; has a hard dependency on &lt;code&gt;systemd&lt;/code&gt;. There was no escape this time, I had to learn and use it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bypass neufbox 6 avec NetBSD (update 07/2015 NB6-MAIN-R3.4.5)</title>
      <link>http://imil.net/blog/posts/2013/bypass-neufbox-6-avec-netbsd/</link>
      <pubDate>Sat, 28 Dec 2013 15:56:34 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2013/bypass-neufbox-6-avec-netbsd/</guid>
      <description>&lt;p&gt;Comme je l&amp;rsquo;expliquais dans le post précédent, je suis passé chez &lt;em&gt;SFR/neuf&lt;/em&gt; avec un forfait fibre. La box de l&amp;rsquo;opérateur, la &lt;em&gt;neufbox&lt;/em&gt; donc, ne supportant pas de mode &lt;em&gt;bridgé&lt;/em&gt;, quelques opérations sont nécessaires à une intégration cohérente dans votre réseau domestique.&lt;/p&gt;&#xA;&lt;p&gt;Je me suis grandement inspiré de &lt;a href=&#34;http://www.neufbox4.org/wiki/index.php?title=Bypasser_sa_neufbox&#34; title=&#34;Bypasser_sa_neufbox&#34;&gt;cette excellente documentation&lt;/a&gt; pour réaliser le &lt;em&gt;bypass&lt;/em&gt; de la &lt;em&gt;neufbox&lt;/em&gt;, cependant plusieurs éléments du tutoriel ne sont plus d&amp;rsquo;actualité. Je ne rentrerai donc pas dans le détail théorique puisque l&amp;rsquo;article de &lt;a href=&#34;http://www.neufbox4.org&#34;&gt;neufbox4.org&lt;/a&gt; est parfaitement explicite, mais focaliserai sur les méthodes à mettre en œuvre pour faire rentrer votre &lt;em&gt;neufbox&lt;/em&gt; dans votre réseau local.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SaltStack: dynamic sls (updated for 0.15.3)</title>
      <link>http://imil.net/blog/posts/2013/saltstack-dynamic-sls/</link>
      <pubDate>Thu, 06 Jun 2013 21:26:39 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2013/saltstack-dynamic-sls/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been learning and diving into &lt;a href=&#34;http://saltstack.com/community.html&#34;&gt;SaltStack&lt;/a&gt; for about a month now, for both work and personal interest, that thing simply rocks. In the meantime, I&amp;rsquo;ve contributed a couple of modules, like &lt;a href=&#34;https://github.com/saltstack/salt/blob/develop/salt/modules/bridge.py&#34;&gt;bridging&lt;/a&gt; and &lt;a href=&#34;https://github.com/saltstack/salt/blob/develop/salt/modules/xapi.py&#34;&gt;Xen&lt;/a&gt; support, plus a couple of &lt;a href=&#34;http://docs.saltstack.com/topics/targeting/grains.html&#34;&gt;grains&lt;/a&gt; improvements for NetBSD.&lt;/p&gt;&#xA;&lt;p&gt;But most of all, I&amp;rsquo;ve been preparing my &lt;em&gt;${DAYJOB}&lt;/em&gt; infrastructure for &lt;em&gt;Salt&lt;/em&gt;, and I must say this has been much easier than I thought, thanks to this beautifully designed piece of code.&#xA;One aspect I&amp;rsquo;d like to share is the simple way I found to make a &lt;a href=&#34;http://docs.saltstack.com/ref/configuration/minion.html&#34;&gt;minion&lt;/a&gt; dynamically configured, through custom-made grains.&lt;/p&gt;</description>
    </item>
    <item>
      <title>auto-FQDN logging</title>
      <link>http://imil.net/blog/posts/2013/auto-fqdn-logging/</link>
      <pubDate>Mon, 18 Feb 2013 21:45:33 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2013/auto-fqdn-logging/</guid>
      <description>&lt;p&gt;While migrating the &lt;a href=&#34;http://www.gcu-squad.org&#34;&gt;GCU-Squad!&lt;/a&gt; website to &lt;a href=&#34;http://wiki.nginx.org/Main&#34;&gt;nginx&lt;/a&gt;, I wanted to keep the configuration as small as possible. In order to keep sites configuration files thin, I used this trick to automatically create log files using site&amp;rsquo;s FQDN:&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;But I quickly noticed that some unwanted FQDN&amp;rsquo;s where appearing on the log directory. In order to keep control on the created files, I figured out a simple way to ensure unwanted domains to be logged in the general &lt;code&gt;access.log&lt;/code&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wordpress 3.5 and Naxsi (update 7, now in production)</title>
      <link>http://imil.net/blog/posts/2012/wordpress-3-5-and-naxsi/</link>
      <pubDate>Sun, 30 Dec 2012 23:17:33 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2012/wordpress-3-5-and-naxsi/</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Update&lt;/strong&gt;: This setup is now in production, you are actually reading this blog through a Naxsi protected WordPress !&lt;/em&gt;&#xA;&lt;em&gt;&lt;strong&gt;Update 2&lt;/strong&gt;: This setup is also in production on &lt;a href=&#34;http://www.gcu-squad.org/2013/02/come-at-me-bro/&#34;&gt;GCU-Squad&lt;/a&gt;&amp;rsquo;s Website.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;!-- raw HTML omitted --&gt;I&amp;rsquo;m slowly preparing iMil.net migration to a new server. Yeah, it&amp;rsquo;s a bit confusing to be the CTO of a hosting company and having my personnal website elsewhere, but you know, time and stuff&amp;hellip; anyway, it&amp;rsquo;s coming.&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ça va pas être possible avec vos baskets</title>
      <link>http://imil.net/blog/posts/2012/ca-va-pas-etre-possible-avec-vos-baskets/</link>
      <pubDate>Sun, 22 Apr 2012 10:42:57 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2012/ca-va-pas-etre-possible-avec-vos-baskets/</guid>
      <description>&lt;p&gt;Dans &lt;a href=&#34;http://www.nbs-system.com&#34;&gt;ma boîte&lt;/a&gt;, l&amp;rsquo;équipe sécurité a publié voila quelques mois de cela un module pour &lt;a href=&#34;http://wiki.nginx.org/Main&#34;&gt;nginx&lt;/a&gt;: un firewall applicatif du nom de &lt;a href=&#34;http://code.google.com/p/naxsi/&#34;&gt;naxsi&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Ce module, sous licence GPLv2, je viens de le publier dans &lt;em&gt;pkgsrc current&lt;/em&gt; sous la forme d&amp;rsquo;une option de &lt;code&gt;www/nginx&lt;/code&gt;. Je me propose de vous montrer ici comment sécuriser simplement votre serveur web / proxy inverse &lt;em&gt;nginx&lt;/em&gt; grâce à &lt;em&gt;naxsi&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Premièrement, si comme moi (et comme il se doit) vous utilisez une branche stable de &lt;em&gt;pkgsrc&lt;/em&gt;, mettez simplement à jour &lt;code&gt;www/nginx&lt;/code&gt; comme ceci:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Is &amp;quot;if&amp;quot; really evil ?</title>
      <link>http://imil.net/blog/posts/2011/is-if-really-evil/</link>
      <pubDate>Wed, 14 Dec 2011 13:52:20 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2011/is-if-really-evil/</guid>
      <description>&lt;p&gt;Hier, &lt;a href=&#34;http://weblog.frlinux.net/&#34;&gt;FRLinux&lt;/a&gt; me demande innocemment d&amp;rsquo;ajouter le module &lt;a href=&#34;http://wordpress.org/extend/plugins/wptouch/&#34;&gt;WPtouch&lt;/a&gt;, un chouette &lt;em&gt;plugin&lt;/em&gt; pour &lt;a href=&#34;http://fr.wordpress.org/&#34;&gt;WordPress&lt;/a&gt;, qui permet aux mobiles de visualiser le site sous forme d&amp;rsquo;application, bien plus lisible que le blog dans sa forme classique.&#xA;Ni une ni deux je m&amp;rsquo;execute&amp;hellip; et m&amp;rsquo;aperçois que l&amp;rsquo;affichage d&amp;rsquo;&lt;em&gt;iMil.net&lt;/em&gt; ne change pas d&amp;rsquo;un iota sur mes &lt;em&gt;devices mobiles&lt;/em&gt;. Je me rappelle alors que le &lt;a href=&#34;http://wiki.nginx.org/Main&#34;&gt;nginx&lt;/a&gt; placé devant l&amp;rsquo;&lt;a href=&#34;http://httpd.apache.org/&#34;&gt;Apache&lt;/a&gt; qui sert ce site cache la &lt;em&gt;homepage&lt;/em&gt; pendant 10 minutes. Ceci explique cela.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rapid&#39;CGI PHP, nginx et NetBSD</title>
      <link>http://imil.net/blog/posts/2011/rapidcgi-php-nginx-et-netbsd/</link>
      <pubDate>Sun, 24 Jul 2011 18:29:29 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2011/rapidcgi-php-nginx-et-netbsd/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Le post ci-dessous est à considérer &amp;ldquo;historique&amp;rdquo;, car depuis &lt;em&gt;pkgsrc-2012Q2&lt;/em&gt;, &lt;code&gt;php-fpm&lt;/code&gt; est disponible en standard et se configure le plus aisemment du monde.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;Il y a une foultitude de documentations sur la façon de faire tourner PHP via &lt;a href=&#34;http://www.fastcgi.com/devkit/doc/fcgi-spec.html&#34;&gt;fastCGI&lt;/a&gt; sur un &lt;a href=&#34;http://nginx.org/&#34;&gt;nginx&lt;/a&gt;, et à chaque fois, j&amp;rsquo;ai l&amp;rsquo;impression de lire des tambouilles copiées/collées de ci et de là. Ça cause de scripts (non portables la plupart du temps), de wrappers, et autres solutions capillotractées, et ça me plaît pas. En dépilant un peu, j&amp;rsquo;ai abouti à une solution que je trouve élégante&amp;hellip; sous NetBSD evidemment :)&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
