Retour portail Captif

En cours d'ecriture …

Mise en place d'un portail captif avec Kanet

But de la mise en place

L'intérêt de la mise en place d'une telle solution , c'est de permettre à tout utilisateur disposant d'un compte sur l'ENT ou sur le réseau local de l'établissement , ou sur une base externe de pouvoir se connecter depuis un poste de travail sur internet .

Mise en place

Le principe, le serveur dispose de deux cartes réseaux:

  1. l'une pointant vers internet (ou tout simplement un réseau donnant accès à internet: carte 1
  2. l'autre pointant sur une salle de cours (un sous réseau): carte 2

* pour l'exemple traité ici, le serveur kanet aura sa carte 1 en dhcp, tout simplement.

Sur le serveur:

Comme il dispose de deux cartes, on ouvre une console et on affiche les log ainsi :

tail -f /var/log/mesages

Feb 22 08:48:36 squeeze-test kernel: [ 5803.994016] eth0: link up, 100Mbps, full-duplex, lpa 0x45E1

CTRL + C pour fermer les logs On voit instantanément quelle est la carte que l'on branche. Pour notre exemple, la carte 1 du schéma sera eth0, la carte 2 sera eth1.

La numérotation des cartes réseaux est faîte dans le fichier /etc/udev/rules.d/70-persistent-net.rules C'est intéressant à signaler, dans la mesure ou quand on fait une image d'une station linux avec clone-zilla par exemple, la carte est renommée en eth1, c'est ivi que l'on peut intervenir

root@squeeze-test:~# cat /etc/udev/rules.d/70-persistent-net.rules # This file was automatically generated by the /lib/udev/write_net_rules # program, run by the persistent-net-generator.rules rules file. # # You can modify it, as long as you keep each rule on a single # line, and change only the value of the NAME= key.

# PCI device 0x1106:0x3106 (via-rhine) SUBSYSTEM==“net”, ACTION==“add”, DRIVERS==“?*”, ATTR{address}==“00:15:e9:ac:69:19”, ATTR{dev_id}==“0x0”, ATTR{type}==“1”, KERNEL==“eth*”, NAME=“eth0”

# PCI device 0x10de:0x03ef (forcedeth) SUBSYSTEM==“net”, ACTION==“add”, DRIVERS==“?*”, ATTR{address}==“00:1a:4d:f3:4b:81”, ATTR{dev_id}==“0x0”, ATTR{type}==“1”, KERNEL==“eth*”, NAME=“eth1” root@squeeze-test:~#

Maintenant que notre serveur est connecté à internet, regardons sont ip public et installons un serveur dhcp, toujours utile.

eth0      Link encap:Ethernet  HWaddr 00:15:e9:ac:69:19  
          inet adr:192.168.1.17  Bcast:192.168.1.255  Masque:255.255.255.0
          adr inet6: fe80::215:e9ff:feac:6919/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:527 errors:0 dropped:0 overruns:0 frame:0
          TX packets:327 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000 
          RX bytes:366072 (357.4 KiB)  TX bytes:35933 (35.0 KiB)
          Interruption:16 Adresse de base:0xb000 

L'adresse côté internet est donc 192.168.1.17 (sur un réseau d'établisesment, ce sera tout simplement une adresse sur le lan.

Pour la carte côté portail captif (salle de cours, carte2), on utilise le fichier /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

iface eth1 inet static
        address 192.168.0.254
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
auto eth1

La carte côté portail captif sera: 192.168.0.254

apt-get install openssh-server

Quand le serveur est prêt, il faut préparer une station de test. On placera cette station sur un réseau alimenté par la carte 2 de notre serveur Kanet.

Quand le client est physiquement connecté, on repasse sur le serveur, on doit proposer plusieurs services

<notes> pour télécharger kanet (version 32bits uniquement) wget http://kanet.googlecode.com/files/kanet_0.2-3_i386_squeeze.deb

les sources wget http://kanet.googlecode.com/files/kanet-0.2.3.tar.bz2

</notes>

Pour gagner du temps, on peut trouver ici les sources au simple format tar

wget http://linuxedu.tetaneutral.net/kanet-0.2.3.tar

apt-get install flex bison make

ln -s /usr/local/lib/libvala-0.12.so.0.0.0 /usr/lib/libvala-0.12.so.0

dns

Le serveur kanet doit faire serveur dns, on installe dnsmasq aptitude install dnsmasq

apache

Maintenant, on installe apache

aptitude install apache2

a2enmod rewrite a2enmod proxy a2enmod proxy_http a2enmod ssl

service apache2 restart

on telecharge le script kanet-rules (adapter l'ip)

chmod +x /etc/init.d/kanet-rules /etc/init.d/kanet-rules start update-rc.d kanet-rules defaults

la configuration du serveur kanet

vim /usr/local/etc/kanet/kanet.conf

/*
	Configuration file for kanet
*/

{
	/*
		Server configuration
		SERVER_MODE="STANDALONE" (default) or "PROXY"
	*/
	"SERVER_MODE" : "PROXY",
	"SERVER_URL" : "https://192.168.0.254",
	"SERVER_PORT" : "8181",
	"SERVER_IP" : "",
	"REDIRECT_SERVER_PORT" : "8080",
	"QUEUE_NUM" : "0",
	"SSL_CERT_FILE" : "/etc/apache2/ssl/mycert.crt",
	"SSL_KEY_FILE" : "/etc/apache2/ssl/mykey.key",
	"DEBUG" : "1",
	/*
		Persistent data,
		only sqlite is available.
	*/
	"database" : "sqlite",
	"sqlite_connection_string" : "/var/lib/kanet/kanet.sqlite",
	"mysql_connection_string" : "Server=xxx; Port=3306; Database=xxx; uid=xxx; pwd=xxx;",
	/*
		Server behavior
	*/
	"login_page" : "https://192.168.0.254/www/login.html",
	"captive_portal_page" : "https://192.168.0.254/www/update.html",
	"cas_url" : "https://cas.entmip.fr/",
	"www_path" : "/usr/share/kanet/",
	"module_path" : "/usr/lib",
	"auth_module_name" : "kanet-radiusclient",
	
	
	/*
		blacklist acls
		always rejected.
	*/
	"KANET_ACL_TYPE_BLACKLIST": [
		{ "address" : "127.0.0.1", "port" : 9090 },
		{ "port" : 8089 }
	],
	/*
		open acls
		always open
	*/
	"KANET_ACL_TYPE_OPEN": [
		{"address" : "fr.archive.ubuntu.com"},
		{"address" : "www.paraschool.com"}, 
		{"address" : "archive.canonical.com"},
		{"address" : "extras.ubuntu.com"},
                {"address" : "security.ubuntu.com"},
		{"address" : "cas.entmip.fr"} ,
		{"address" : "pool.ntp.org"} ,
		{"address" : "10.255.5.215"},
		{ "port" : 60 },
		{ "port" : 135 },
		{ "port" : 137 },
		{ "port" : 138 },
		{ "port" : 139 },
		{ "port" : 123 },
		{ "port" : 445 }
	],
	/*
		default acls
		open to authenticated users.
	*/
	"KANET_ACL_TYPE_DEFAULT": [
		{ "port" : 8089 },
		{ "port" : 443 },
		{ "port" : 80 }
	],

	/* Admins : comma separated login list */
	"admins": "colin,colin@upvm",
	/* 
		blacklist_part
	*/
	"blacklist_users" : [
		{ "login" : "colin", "message" : "hi foo ! you're login have been locked .." },
		{ "login" : "johndoe", "message" : "hi john doe ! this account is locked .." }
	],
	"default_blacklist_message" : "Your account have been locked",
	
	/* 
		auto_blacklist_acl
		used to inform user they are probably infected, if a user try to join
		one of this address, the user is automatically blacklisted and the message
		display on is login window
	*/
	"auto_blacklist_acls": [
		{ "address" : "192.168.1.45", "message" : "You're account have been temporarily locked <br/> because you're probably infected by a virus" },
		{ "port" : 45678, "message" : "You're account have been temporarily locked <br/> because you're probably infected by a virus" }
	],
	/*
		quota, in bytes or seconds. 0 is unlimited.
	*/
	"bytes_quota" : "0",
	"time_quota" : "0",
	/*
		message
		variables : $upbytes $downbytes $duration
	*/
	"update_msg" : "Up : $upbytes, Down: $downbytes, Time: $duration",
	"over_quota_msg" : "Sorry you exceed your quota",
	"blacklist_msg" : "Sorry, you're account have been locked",
    	"update_error_msg" : "An error occured during authentication process, please restart your browser",

}

Pour apache : le fichier /etc/apache2/ports.conf est déjà configuré pour écouter les ports 80 et 443 (ssl). En rélaite, on n'utilisera pas le port 80

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz
#NameVirtualHost 192.168.200.1:443
#Listen 443
NameVirtualHost *:8080
Listen 8080
NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to <VirtualHost *:443>
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

On edite un nouveau fichier kanet dans /etc/apache2/sites-availables/kanet on desactive le vhost par default et on acitve kanet a2ensite kanet a2dissite default

on genere les clefs

openssl genrsa -out mykey.key 1024 openssl req -new -x509 -days 2000 -key mykey.key -out mycert.crt

mkdir /etc/apache2/ssl/ mv mycert.crt /etc/apache2/ssl/ service apache2 restart

la racine du serveur est située sur /etc/usr/share/kanet

le site site

ln -s /usr/local/lib/libkanet-radiusclient.so /usr/lib

Liens

 
reseaux/station_non_integree_au_domaine_kanet.txt · Dernière modification: 2014/10/23 08:30 (modification externe)
 
Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : GNU Free Documentation License 1.3
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki