L'ethernet c'est bien mais ...

Ayant marre des noeuds quand je vais dans mon lit avec mon laptop, je me suis fait du wifi. Bon bien sûr ce n'est qu'un prétexte, la vraie raison c'est que j'adore apprendre, donc je lis des bouquins comme A No-Nonsense Guide to the OpenBSD Firewall. Le problème avec ce genre de bouquins, c'est qu'ils décrivent un certain nombre de setups et ce, suffisamment bien pour me donner envie de les reproduire même si j'en ai pas besoin. Mais bon c'est fun, je m'amuse donc je le fais.

Le setup

Possédant une clé wifi D-Link DWA-110 (avant mon desktop étant loin de la box, j'utilisais du wifi) ne servant à rien je me suis dit que j'allais la réutiliser.

Hahaha ... hum. OpenBSD a vraiment des drivers pour les clés wifi ?

Oui OpenBSD supporte des clés wifi. En lisant les manpages des drivers on a la liste des models supportés. Dans rum(4) on voit D-Link DWA-110.

Et ensuite ?

Une fois branchée sur l'alix on devrait la voir dans ifconfig.

Pour créer l'AP wifi, on crée un fichier /etc/hostname.rum0

up mediaopt hostap mode 11g chan 1 nwid ILovePuffy
inet 10.19.19.1/24

Ici on crée un AP sur le canal 1, en mode 11g et avec comme nom "ILovePuffy" (j'avais la flemme de réfléchir à nom, du coup j'ai pris celui du noeud Tor).

Ensuite on ajoute dans /etc/dhcpd.conf

subnet 10.19.19.0 netmask 255.255.255.0 {
        option routers 10.19.19.1;

        range 10.19.19.101 10.19.19.221;
        host laptopwifi {
                hardware ethernet 00:11:22:33:44:55;
                fixed-address 10.19.19.40;
        }
}

Mais tu ne vas pas laisser tout le monde se connecter, si ?

Je ne crois pas en la sécurité des wifi tels que WEP (:p). Par contre j'ai confiance en SSH. Oui SSH, je te vois hausser les sourcils, mais oui avec OpenBSD on peut.

Du coup ça se fait avec /etc/pf.conf. J'ai pas mal galéré à vouloir faire quelque chose de compliqué. Je suis revenu à quelque chose de plus KISS.

Quand un user se connecte, son ip va automatiquement dans la table <authpf_users>.

match out on $ext_if inet from <authpf_users> nat-to $ip_publique
pass in on $wifi_if proto tcp from !<authpf_users> to any rdr-to $server port 9050
pass in on $wifi_if proto tcp from !<authpf_users> to any port { 80, 443 } rdr-to (self) port 80
pass in on $wifi_if proto tcp to 10.19.19.1 port ssh
pass in on $wifi_if proto { tcp, udp } to $server port domain
pass on $wifi_if from <authpf_users>

Je pense que pf est assez clair pour ne pas expliquer les règles. Vous devez vous demander pourquoi je redirige tout le traffic qui n'est pas web vers mon serveur sur le port 9050 et le traffic web vers l'alix sur le port 80.

Fournir (temporairement) un accès internet, oui, assumer les conneries des autres non.

Du coup, le traffic web je le redirige vers une page web sur l'alix qui explique que l'user n'aura pas accès à Internet sans passer par Tor que pour se faire il doit configurer son navigateur pour utiliser un proxy socks 4a ou 5 sur l'ip de mon serveur et le port 9050. Étant confiant dans le fait que les gens n'y arriveront pas j'ai aussi expliqué comment me contacter.

Du coup on edit /etc/tor/torrc pour que Tor sur mon serveur accepte de faire passer le traffic venant du wifi.

SocksPort 9050 
SocksPort 10.19.18.17:9050 
SocksPolicy accept 10.19.18.0/23

Pour finir, on crée les users

Pour que l'authentification par SSH fonctionne, il faut que l'user soit dans une classe de login particulière authpf

Quand on crée un user via adduser(8) on a

Login class authpf bgpd daemon default staff [default]:

Il suffit de choisir authpf et c'est bon. On peut personnalisser la classe comme je vous en ai parlé rapidement

On peut personnaliser le MOTD par exemple, je me suis crée un user wifi pour mon laptop :

$ cat /etc/authpf/users/wifi/authpf.message  
Attention au cresson !!

(C'est une petite private joke, à propos d'une pseudo-expérience sur la nocivité du wifi).

Et finalement

On se connecte au wifi qui n'a pas de mot de passe puis sur le laptop :

$ ssh wifi@10.19.19.1
Last login: Sun Jul 14 18:04:07 2013 from 10.19.19.40

Hello wifi. You are authenticated from host "10.19.19.40"
Attention au cresson !!

Ce qu'il reste à faire

Changer l'antenne, la portée de la clé est désastreuse. La vitesse est limitée à 100 ko/s je ne sais pas pourquoi et quand la limite est atteinte, c'est du First In First Out pas du tout efficace (et je ne me vois pas mettre de la QoS sur mon LAN).

Rajouter des warnings pour les éventuels users sur ce qu'est Tor et les problèmes qu'il peut causer. Mais bon vu la portée je ne crois pas qu'il y a vraiment des gens qui puissent se connecter à mon AP wifi, pour l'instant.