Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

systeme:freeradius [2017/10/07] (Version actuelle)
admin créée
Ligne 1: Ligne 1:
 +===== Installation de freeRADIUS v3 =====
 +
 +//​**prérequis:​ installation minimal de Debian Jessie fonctionnel.** //
 +
 +[[https://​wiki.freeradius.org/​building/​Debian-and-Ubuntu|https://​wiki.freeradius.org/​building/​Debian-and-Ubuntu]]
 +
 +<​code>​
 +wget https://​github.com/​FreeRADIUS/​freeradius-server/​archive/​v3.0.13.zip
 +unzip v3.0.13.zip
 +cd freeradius-server-3.0.13/​
 +</​code>​
 +
 +<​code>​
 +sudo apt-get install devscripts quilt
 +fakeroot debian/​rules clean
 +sudo mk-build-deps -ir debian/​control
 +dpkg-buildpackage -rfakeroot -b -uc
 +</​code>​
 +
 +<​code>​
 +dpkg -i *
 +</​code>​
 +
 +Si pb de dépendance,​ apt-get -f install (ou les installer puis relancer dpkg -i)
 +
 +===== Configuration de base de freeRADIUS =====
 +
 +fichier "​radius.conf"​ principal de configuration de free radius.
 +fichier "​users"​ pour la configuration des utilisateurs autorisés (via le fichier)
 +fichier "​sql"​ pour la connection à la bse de donnée (et utilisation des utilisateurs via la BD)
 +fichier "​eap"​ pour la configuration de EAP et des certificats
 +fichier "​clients.conf"​ pour la configuration des NAS (bornes Wifi) autorités à contacter le Radius.
 +
 +[[https://​wiki.freeradius.org/​guide/​Basic-configuration-HOWTO|https://​wiki.freeradius.org/​guide/​Basic-configuration-HOWTO]]
 +
 +==== Test basique (sans base de donné) ====
 +
 +(Ne pas en tenir compte si on utilise la base de donnée.) Dans /​etc/​freeradius/​users __**ET**__ ​ /​etc/​freeradius/​mods-config/​files/​authorize,​ ajouter sur la 1ere ligne du fichier
 +<​code>​
 +userToto Cleartext-Password := "​P@ssword"​
 +</​code>​
 +
 +Arreter freeRADIUS
 +
 +<​code>​
 +service freeradius stop
 +</​code>​
 +
 +dans une autre session SSH relancer en mode debug
 +
 +<​code>​
 +freeradius -X
 +</​code>​
 +
 +dans la session principale lancer
 +
 +<​code>​
 +radtest userToto P@ssword localhost 0 testing123
 +</​code>​
 +
 +=== En cas d'​erreur vec le DNS ===
 +
 +Pour le test avec '​radtest',​ il faut que dans le fichier hosts on ait pour 127.0.0.1 le nom DNS qui apparait dans la console (en plus de localhost)
 +
 +exemple
 +
 +<​code>​
 +127.0.0.1 localhost iut1r-t37b-rad
 +</​code>​
 +
 +<​code>​
 +si on a dans la console
 +root@iut1r-t37b-rad:​~#​
 +</​code>​
 +
 +===== freeRADIUS avec MySQL =====
 +
 +[[https://​wiki.freeradius.org/​guide/​SQL-HOWTO-for-freeradius-3.x-on-Debian-Ubuntu|https://​wiki.freeradius.org/​guide/​SQL-HOWTO-for-freeradius-3.x-on-Debian-Ubuntu]]
 +
 +==== Installation de MySQL (base d'​authentification) ====
 +
 +apt-get install mysql-server mysql-client
 +
 +<​code>​
 +mysql -u root -p
 +CREATE DATABASE radius;
 +exit
 +</​code>​
 +
 +<​code>​
 +mysql -u root -p radius </​etc/​freeradius/​mods-config/​sql/​main/​mysql/​schema.sql
 +</​code>​
 +
 +éditer /​etc/​freeradius/​mods-config/​sql/​main/​mysql/​setup.sql et modifier les informations nécessaires:​ PASSWORD('​radpass'​)
 +
 +puis
 +
 +<​code>​
 +mysql -uroot -p radius </​etc/​freeradius/​mods-config/​sql/​main/​mysql/​setup.sql
 +</​code>​
 +
 +La base de donnée est prête. Il faut maintenant configurer freeRADIUS pour l'​utiliser.
 +
 +==== Configurer freeRADIUS avec MySQL ====
 +
 +Editer /​etc/​freeradius/​mods-available/​sql pour modifier
 +
 +<​code>​
 +driver = "​rlm_sql_mysql"​
 +...
 +dialect = "​mysql"​
 +
 +# Connection info:
 +    #
 +    server = "​localhost"​
 +    port = 3306
 +    login = "​radius"​
 +    password = "​_P@ssword_"​
 +</​code>​
 +
 +le password est celui qui a été mis dans /​etc/​freeradius/​mods-config/​sql/​main/​mysql/​setup.sql
 +
 +Pour activer le mode sql, il faut créer un lien symbolic
 +
 +<​code>​
 +cd /​etc/​freeradius/​mods-enabled
 +ln -s ../​mods-available/​sql sql
 +</​code>​
 +
 +Dans la version 3 de freeRADIUS il est inutile de modifier le fchier /​etc/​freeradius/​sites-available/​default
 +pour décommenter la ligne contenant ‘sql’ dans les sections
 +authorize {}
 +accounting {}
 +session {}
 +
 +le signe " - " verifie si sql est dans mods-enabled pour e charger sinon il ne fait rien.
 +
 +==== Test basique (avec la base de donnée) ====
 +
 +Pour le test il faut au moins un utilisateur dans la base
 +
 +<​code>​
 +mysql> insert into radcheck Value('​3','​userTestBD','​Cleartext-Password',':​=','​P@ssword'​);​
 +
 +mysql> select * from radcheck;
 ++----+------------+--------------------+----+----------+
 +| id | username ​  | attribute ​         | op | value    |
 ++----+------------+--------------------+----+----------+
 +|  3 | userTestBD | Cleartext-Password | := | P@ssword |
 ++----+------------+--------------------+----+----------+
 +1 rows in set (0.00 sec)
 +</​code>​
 +
 +vi /​etc/​freeradius/​radiusd.conf
 +rechercher et décommenter "​$INCLUDE sql.conf"​
 +
 +===== Ajouter un client NAS (Network Access Server). =====
 +
 +Un client NAS est une machine, un réseau ou tout équipement qui ont besoin d'​utiliser freeRADIUS. Pour faire un test nous allons juste ajouter une machine. (__ON NE PASSE PAS par ce fichier si on utilise daloRadius qui le gère via la base de donnée__)
 +
 +Le NAS client est en général le controleur WiFi. C'est l'​équipement qui demande la vérification de l'​identité d'un utilisateur au serveur Radius.
 +
 +vi /​etc/​freeradius/​clients.conf
 +
 +client nom_clientNAS {
 +ipaddr = ip_ou_réseau
 +secret = mdppour ce NAS
 +nastype = other
 +
 +}
 +
 +Pour '​nastype'​ on peut avoir par exemple "​cisco"​ pour un controller cisco ou "​other"​ pour une machine, voir la liste complète dans le fichier clients.conf
 +
 +<​code>​
 +client wifiZeus {
 +ipaddr = 192.168.56.0/​24
 +secret = zeus@2017
 +nastype = other
 +}
 +</​code>​
 +
 +remarque:
 +Si on veut gérer les NAS via la base de donnée sans daloRadius, il faut modifier le fichier /​etc/​freeradius/​mods-available/​sql et activer "​read_clients = yes"
 +
 +Il existe beaucoup plus d'​option (voir la section localhost de clients.conf)
 +
 +==== Test avec un NAS ====
 +
 +Pour tester la connexion avecWindows on peut utiliser "​[[https://​www.novell.com/​coolsolutions/​tools/​downloads/​ntradping.zip|ntradping]]",​ il faut changer le port et passer sur le "​1812"​ par défaut et etre sure que la machine Windows accède bien au serveur (contrôler le pare-feu).
 +
 +Il est préférable de se mettre en mod débug (freeradius -X) sur le serveur pour le controle.
 +
 +plus d'​infos:​ [[http://​reseaux85.fr/​index.php?​title=FreeRADIUS_-_Serveur_RADIUS_Libre|http://​reseaux85.fr/​index.php?​title=FreeRADIUS_-_Serveur_RADIUS_Libre]]
 +
 +===== freeRADIUS avec certificat =====
 +
 +FreeRadius et TLS1.2
 +
 +[[http://​freeradius.org/​version3.html|FreeRADIUS 3]] is the current supported stable release and you should be thinking about upgrading to it if you have not already. SSLv2 and SSLv3 are not supported by FreeRADIUS 3, only TLS 1.0, TLS 1.1, and TLS 1.2.
 +
 +For FreeRADIUS to require stronger cipher suites, add this to the EAP-TLS configuration in the “eap” configuration file. Alternatively,​ specify a colon-separated list of specific cipher suites.
 +
 +<​code>​
 +cipher_list = "​HIGH"​
 +</​code>​
 +
 +/​etc/​freeradius//​mods-available/////​eap Thank you. That steered me in the right direction. Here are the entries to
 +make in the TLS section of eap: //
 +
 +//​disable_tlsv1_0 = no
 +disable_tlsv1_1 = yes
 +disable_tlsv1_2 = yes //
 +
 +==== Paramétrage de freeRADIUS ====
 +
 +[[http://​wiki.freeradius.org/​guide/​WPA%20HOWTO#​step-2-configure-freeradius|http://​wiki.freeradius.org/​guide/​WPA%20HOWTO#​step-2-configure-freeradius]]
 +
 +Le certificat SSL est utilisé généralement pour les authentifications WPA en Wifi. Les fichiers nécessaires pour générer les certificats SSL pour freeRADIUS sont dans /​etc/​freeradius/​certs.
 +
 +Pour la configuration on va modifier 3 fichiers: /​etc/​freeradius/​mods-available/​eap,​ /​etc/​freeradius/​clients et /​etc/​freeradius/​users
 +
 +Le fichier "​clients"​ permet de déclarer un NAS donc le controleur Wifi, déjà vu plus haut.
 +
 +Le fichier "​users"​ permet d'​ajouter les utilisateurs,​ déjà vu plus haut aussi. INUTILE de le modifier car on utilise les certificats,​ sauf si on veut faire les 2.
 +
 +Il reste donc à modifie le fichier eap. Ce qui nous intéresse est la partie TLS qu'il faut ajuster à notre besoin. Il va servir à déchiffrer les certificats que le serveur aura signé.
 +
 +<​code>​
 +tls-config tls-common {
 +                #​private_key_password = whatever
 +                private_key_password = radiusZeus@2017
 +</​code>​
 +
 +==== Génération des certificats SSL. ====
 +
 +freeRADIUS (v2 et +) fournit les outils pour générer les certificats [[http://​wiki.freeradius.org/​config/​Certificates|http://​wiki.freeradius.org/​config/​Certificates]]
 +
 +Pour repartir à zéro avec les certificats il faut supprimer les existants dans /​etc/​freeradius/​certs avec
 +
 +<​code>​
 +rm -f *.pem *.der *.csr *.crt *.key *.p12 serial* index.txt*
 +</​code>​
 +
 +OpenSSL sert de générateur de certificat, donc l'​installer (apt-get install openssl) !!! Pour générer un certificat il faut un fichier de configuration pour openSSL, qui est openssl.cnf (/​etc/​ssl/​openssl.cnf).
 +
 +Si on utilise les outils de freeRADIUS, il fournit un fichier de configuration qui reprend la meme chose: ca.cnf
 +
 +exemple de contenu
 +
 +<​code>​
 +[ req_distinguished_name ]
 +countryName ​                    = Country Name (2 letter code)
 +countryName_default ​            = FR
 +countryName_min ​                = 2
 +countryName_max ​                = 2
 +
 +stateOrProvinceName ​            = State or Province Name (full name)
 +stateOrProvinceName_default ​    = Rhone-Alpes
 +
 +localityName ​                   = Locality Name (eg, city)
 +localityName_default ​           = Grenoble
 +
 +0.organizationName ​             = Organization Name (eg, company)
 +0.organizationName_default ​     = IUT1 Grenoble
 +
 +# we can do this but it is not needed normally :-)
 +#​1.organizationName ​            = Second Organization Name (eg, company)
 +#​1.organizationName_default ​    = World Wide Web Pty Ltd
 +
 +organizationalUnitName ​         = Organizational Unit Name (eg, section)
 +organizationalUnitName_default ​ = Dept. RT
 +
 +commonName ​                     = Common Name (e.g. server FQDN or YOUR name)
 +commonName_max ​                 = 64
 +
 +emailAddress ​                   = Email Address
 +emailAddress_default ​           = olivier.brizard@univ-grenoble-alpes.fr
 +emailAddress_max ​               = 64
 +</​code>​
 +
 +Pour lire un certificat
 +
 +<​code>​
 +openssl x509 -text -noout -in ca.pem
 +</​code>​
 +
 +ATTENTION bien mettre le bon password dans /​etc/​freeradius/​mods-enabled/​eap pour déchiffrer le certif CA root
 +
 +==== Paramétrage du contrôleur Wifi/AP ====
 +
 +Là cela ne concerne plus le serveur freeRADIUS mais directement le matériel concerné. Les informations à donner seront
 +
 +  * **RADIUS Server IP Address:​** ​ adresse IP du serveur RADIUS
 +  * **RADIUS Port:​** ​ le port est le 1812.
 +  * **RADIUS Key:​** ​ le secret mis dans la section du fichier clients.conf de FreeRADIUS.
 +===== Memo pour les certificats =====
 +
 +[[http://​wiki.frozenkiwi.net/​index.php/​Certificats_OpenSSL|http://​wiki.frozenkiwi.net/​index.php/​Certificats_OpenSSL]]
 +
 +[[http://​www.batard.eu/​2010/​11/​maitriser-les-certificats-avec-openssl/​|http://​www.batard.eu/​2010/​11/​maitriser-les-certificats-avec-openssl/​]]
 +
 +[[http://​jeyg.info/​des-certificats-signes-par-votre-autorite-de-certification-avec-openssl/​|http://​jeyg.info/​des-certificats-signes-par-votre-autorite-de-certification-avec-openssl/​]]
 +
 +CA Root ou certificat racine: c'est le certificat qui identifie une autorité de certification,​ on peut les récupérer par exemple ici [[https://​www.kinamo.fr/​fr/​support/​faq/​telecharger-les-certificats-ssl-root-et-intermediaires|https://​www.kinamo.fr/​fr/​support/​faq/​telecharger-les-certificats-ssl-root-et-intermediaires]] \\
 +certificat utilisateur ou machine: c'est le certificat qui identifie une machine (cliente ou serveur) signé avec la clé privée du CA.
 +
 +chaque machine possède une clé privé et une clé publique, c'est un fichier *.key et *.pub
 +
 +le certificat, en plus des informations d'​identification (nom, organisme, mail,…), contient la clé publique de la machine à qui appartient le certificat. \\ le certificat est signé,​authentifié par l'​autorité CA avec sa clé privé.
 +
 +Pour avoir un certificat il faut fournit au CA: \\ - des informations d'​identification \\ - une clé publique \\  \\ Ces informations sont rassemblés dans un fichier CSR (Certificate Signing Request) qui sera utilisé pour généré le certificat.
 +
 +La clé publique contenue dans le certificat servira à crypter les données qu'on souhaite transmettre au propriétaire du certificat. \\ Ces données cryptées ne peuvent être lue/​décryptée qu'​avec la clé privée du proprétaire du certificat.
 +
 +le propriétaire du certificat peut crypter des données avec sa clé privée. Les données ainsi cryptées peuvent etre décryptées pas la clé publique. Donc par tout le monde!
 +
 +Un message crypté avec une clé privée PEUT être décrypté qu'​avec la clé publique. On sait de qui cela vient. \\ Un message crypté avec une clé publique NE PEUT être décrypté qu'​avec la clé privée. On garantie l'​intégité du contenu, pas de modification ou lecture entre la transmission.
 +
 +PEM et DER c'est la même chose SAUF l'​encodage. Le DER est pour les Windows et navigateurs web.
 +
 +P12 est la version binaire avec la clé privé et certificat publique.
 +
 +Un certificat racine ou root CA permet de certifié l'​entité (organisme) qui délivre les certificats.
 +
 +Pour un serveur auto-signé,​ il aura un certificat root CA (fichier ca.pem) en tant qu'​entité délivreur de certificat et un certificat en tant que client (fichier server.pem)
 +
 +Pour une machine client, il aura un certificat client (fichier client.pem et client.der pour les Windows)
 +
 +Le certificat du serveur devra être présent sur toutes les machines clients qui utilisera des certificats signés par cette entités. Il permet d'​authentifier le serveur sur lequel on se connecte.
 +
 +Si on signe les certificats (c'est le cas pour nous) le certificat racine (ca.pem) devra aussi être sur le client.
 +
 +==== 1- Créer un certificat racine (root CA) ====
 +
 +qui devra etre installé sur chaque machine cliente utilisant EAP-TLS, PEAP, ou EAP-TTLS. Le script de freeRadius ('​bootstrap'​) intègrera "​xpentensions"​ et tout ce qui va-bien. ATTENTION de na pas générer plusieurs fois le root CA. Par défaut TOUS les certificats freeRADIUS sont dans /​etc/​freeradius/​certs
 +
 +Si freeRADIUS est configure pour fonctionner avec OpenSSL la commande "​freeradius -X" générera automatiquement le root CA mais qu'une seule fois (il y a un controle dans le script)
 +
 +éditer le ca.cnf pour modifier les informations spécifiques
 +
 +faire un "make ca" cela va créer un certificat PEM et les clés publiques et privées avec les informations de paramétrage.
 +
 +==== 2- Créer un certificat Serveur, ====
 +
 +exactement pareil que pour le certificat racine!
 +
 +vi server.cnf
 +
 +faire make server cela va créer un certificat PEM et les clés publiques et privées avec les informations de paramétrage.
 +
 +==== 3- Créer un certificat pour chaque client, ====
 +
 +exactement pareil que pour le certificat serveur!
 +
 +vi client.cnf
 +
 +faire make client cela va créer un certificat PEM et les clés publiques et privées avec les informations de paramétrage. Un fichier "​ca.der"​ sera créé et devra être installé sur toutes les machines client Windows.
 +
 +note:
 +
 +Le fichier [[https://​www.tbs-certificats.com/​FAQ/​fr/​5.html#​volet|CSR (Certificate Signing Request)]] est une demande de certificat qui devra etre fournir à l'​autorité de certification pour que ce dernier nous renvoie un certificat PEM.
 +
 +[[http://​reseaux85.fr/​index.php?​title=FreeRADIUS_-_Serveur_RADIUS_Libre#​Certificats_SSL|http://​reseaux85.fr/​index.php?​title=FreeRADIUS_-_Serveur_RADIUS_Libre#​Certificats_SSL]]
 +
 +([[:​rt:​procedure:​certificatperdu|Pour récupérer un certificat perdu]])
 +
 +==== Pour un création manuel ====
 +
 +vi /​etc/​ssl/​openssl.cnf
 +
 +=== Génération du certificat Racine/Root ===
 +
 +On génère dans un premier temps le certificat racine du serveur à l'aide du fichier complété précédemment
 +
 +openssl req -new -x509 -newkey rsa:4096 -days 3650 -keyout ./​private/​cakey.pem -out cacert.pem -config /​etc/​ssl/​openssl.cnf
 +
 +Conversion du certificat pour Windows PEAP/MSCHAP
 +
 +Pour notre utilisation il faut convertir le certificat dans un format intelligible pour Microsoft Windows
 +
 +openssl x509 -in cacert.pem -inform PEM -out cacert.der -outform DER
 +
 +=== Création du certificat pour le serveur RADIUS ===
 +
 +<​code>​
 +On génère maintenant le certificat pour le serveur RADIUS, on répond aux questions par Entrée puisque renseignés dans le fichier openssl.cnf openssl req -new -nodes -out reqserver.pem -keyout private/​server.key -config /​etc/​ssl/​openssl.cnf
 +</​code>​
 +
 +Signature du certificat par l’autorité de certification
 +
 +<​code>​
 +openssl ca -out server.pem -config /​etc/​ssl/​openssl.cnf -infiles reqserver.pem
 +</​code>​
 +
 +Recreation des liens dans le dossier certs de RADIUS
 +
 +<​code>​
 +cd /​etc/​freeradius/​certs/​
 +rm server.pem rm server.key rm ca.pem
 +ln -s /​etc/​ssl/​server.pem server.pem
 +ln -s /​etc/​ssl/​private/​server.key server.key
 +ln -s /​etc/​ssl/​cacert.pem ca.pem
 +</​code>​
 +
 +Modification dans /​etc/​freeradius/​eap.conf
 +
 +Ligne 11 dans le fichier /​etc/​freeradius/​eap.conf** :
 +
 +<​code>​
 +private_key_password = Password1234
 +</​code>​
 +
 +Fin de la configuration SSL et test de connexion
 +
 +On arrête FreeRADIUS et on voit si on obtient une connexion correcte en mode debug
 +
 +<​code>​
 +service freeradius stop
 +freeradius -X
 +</​code>​
 +
 +===== daloRadius =====
 +
 +[[https://​poltakjefferson.wordpress.com/​2014/​01/​07/​install-freeradius-with-web-based-management-daloradius-on-centosrhel-debian-ubuntu/​|https://​poltakjefferson.wordpress.com/​2014/​01/​07/​install-freeradius-with-web-based-management-daloradius-on-centosrhel-debian-ubuntu/​]]
 +
 +apt-get update \\ apt-get upgrade
 +
 +apt-get install apache2
 +
 +apt-get install php5-common libapache2-mod-php5 php5-mysql \\ apt-get install php-pear php5-gd php-db
 +
 +DaloRadius \\ wget [[https://​downloads.sourceforge.net/​project/​daloradius/​daloradius/​daloradius0.9-9/​daloradius-0.9-9.tar.gz?​r=&​ts=1488971812&​use_mirror=netcologne|https://​downloads.sourceforge.net/​project/​daloradius/​daloradius/​daloradius0.9-9/​daloradius-0.9-9.tar.gz?​r=&​ts=1488971812&​use_mirror=netcologne]]
 +
 +mv daloradius-0.9-9.tar.gz?​r= daloradius-0.9-9.tar.gz \\ tar zxvf daloradius-0.9-9.tar.gz \\ rm -f daloradius-0.9-9.tar.gz
 +
 +mysql -u radius -p radius < daloradius-0.9-9/​contrib/​db/​fr2-mysql-daloradius-and-freeradius.sql \\ (ATTENTION ici le pwd est celui du user radius)
 +
 +vi daloradius-0.9-9/​library/​daloradius.conf.php
 +
 +Modifier username, password et db name.
 +
 +$configValues['​DALORADIUS_VERSION'​] = '​0.9-9';​ \\ • $configValues['​FREERADIUS_VERSION'​] = '​2';​ \\ • $configValues['​CONFIG_DB_ENGINE'​] = '​mysql';​ \\ • $configValues['​CONFIG_DB_HOST'​] = '​localhost';​ \\ • $configValues['​CONFIG_DB_USER'​] = '​radius';​ \\ • $configValues['​CONFIG_DB_PASS'​] = '​radius_pwd';​ \\ • $configValues['​CONFIG_DB_NAME'​] = '​radius';​
 +
 +déplacer daloradius dans le répertoire www \\ mv daloradius-0.9-9 /​var/​www/​daloradius \\ chown -R www-data:​www-data /​var/​www/​daloradius
 +
 +modifier le /​etc/​apache/​sites-enabled/​000-default pour DocumentRoot
 +
 +service apache2 stop \\ service apache2 start
 +
 +avec votre navigateur web pointer sur [[http://​ip-address-or-hostname/​daloradius|http://​ip-address-or-hostname/​daloradius]] \\
 +Username: administrator \\
 +Password: radius
 +
 +Pour les log \\ usermod -a -G adm www-data \\ touch /​var/​log/​daloradius.log \\ chmod 755 /​var/​log/​freeradius \\ chown www-data:​www-data /​var/​log/​daloradius.log \\  \\ chmod 666 /​var/​log/​syslog \\ chmod 644 /​var/​log/​dmesg
 +
 +Pour activer la gestion des NAS via la base de donnée (via daloRadius)
 +
 +il faut décommenter dans /​etc/​freeradius/​mods-available/​sql
 +
 +read_clients = yes
 +
 +relancer freeradius.
 +
 +===== Problèmes rencontrés =====
 +
 +Suite à plusieurs tests, il est possible qu'on ne puisse plus réinstaller freeRadius par quelque moyen que ce soit !!!! C'est du à la présence même après un apt-get remove des fichiers liés à freeRadius!!!
 +
  
Dernière modification: le 2017/10/07