La caméra IP Wanscam est conçue pour être installée en intérieur. Elle peut être reliée via un câble réseau Ethernet RJ45 ou sans fil en WiFi B/G/N.
La caméra IP Wanscam JW0008
Ne jamais tourner la caméra à la main, cela pourrait endommager son mécanisme.
La caméra est utilisable et administrable à partir d’un navigateur web.
Suivant les modèles, le port par défaut de la caméra est 99 (ou 81).
L’accès se fait via http://ip-de-la-camera:99/
avec le compte admin
sans mot de passe.
En naviguant, on peut accéder à la page d’administration :
Puis à la configuration FTP :
Le CGI get_params.cgi
fournit des informations sur la configuration de la caméra Wanscam JW0008 :
http://ip-de-la-camera:99/get_params.cgi?user=admin&pwd=
var now1=1439042914;
var tz=-28800;
var ntp_enable=1;
var ntp_svr="time.nist.gov";
var dhcpen=1;
var ip="192.168.52.14";
var mask="255.255.255.0";
var gateway="192.168.52.1";
var dns1="8.8.8.8";
var dns2="192.168.52.1";
var port=99;
var dev2_host="192.168.1.111";
var dev2_alias="IPCAM";
var dev2_user="ipc";
var dev2_pwd="";
var dev2_port=99;
...
var user1_name="";
var user1_pwd="";
...
var ftp_svr="";
var ftp_user="";
var ftp_pwd="";
var ftp_dir="";
var ftp_port=0;
var ftp_mode=0;
var ftp_upload_interval=0;
var ftp_filename=7383708;
var alarm_motion_armed=0;
var alarm_motion_sensitivity=0;
var alarm_input_armed=0;
var alarm_ioin_level=0;
var alarm_mail=0;
var alarm_iolinkage=0;
var alarm_ioout_level=0;
var alarm_upload_interval=0;
var alarm_presetsit=0;
var alarm_snapshot=0;
var alarm_record=0;
var alarm_schedule_enable=0;
var alarm_http=0;
var alarm_http_url="";
var alarm_schedule_sun_0=0;
var alarm_schedule_sun_1=0;
var alarm_schedule_sun_2=0;
var alarm_schedule_mon_0=0;
var alarm_schedule_mon_1=0;
var alarm_schedule_mon_2=0;
var alarm_schedule_tue_0=0;
var alarm_schedule_tue_1=0;
var alarm_schedule_tue_2=0;
var alarm_schedule_wed_0=0;
var alarm_schedule_wed_1=0;
var alarm_schedule_wed_2=0;
var alarm_schedule_thu_0=0;
var alarm_schedule_thu_1=0;
var alarm_schedule_thu_2=0;
var alarm_schedule_fri_0=0;
var alarm_schedule_fri_1=0;
var alarm_schedule_fri_2=0;
var alarm_schedule_sat_0=0;
var alarm_schedule_sat_1=0;
var alarm_schedule_sat_2=0;
Le protocole FTP (File Transfer Protocol) est un protocole de transfert de fichier (RFC959) de la couche Application. Le protocole FTP s’utilise de façon standard sur le port 21 du serveur en mode TCP. Par contre, FTP ne fonctionne que sur du TCP. Il existe un protocole TFTP (Trivial FTP) qui est lui basé sur UDP.
Lors d’une connexion FTP, deux canaux de transmission sont ouverts :
L’échange de données fonctionnant suivant le modèle client/serveur, il existe donc deux possibilités : le mode actif et le mode passif (qui est le plus utilisé).
Dans le mode actif, le client FTP (en utilisant la commande PORT
) détermine le port d’écoute et joue le rôle de serveur pour le canal de données :
Dans le mode passif, le client FTP (en utilisant la commande PASV
) choisit le mode passif et c’est le serveur FTP qui détermine le port d’écoute et joue le rôle de serveur pour le canal de données :
Les commandes PORT
et PASV
permettent donc de déterminer l’adresse IP et le numéro de port de la machine qui jouera le rôle de serveur pour le canal de données. L’échange de ces deux informations aura le format suivant : une chaîne de caractère du type “xxx … … (IP1,IP2,IP3,IP4,PORT1,PORT2)”
Il faudra donc :
La notion de mode actif et passif est extrêmement importante pour l’utilisation de FTP avec des pare-feux (firewall) :
Si le client a un firewall (généralement celui-ci bloque toutes les demandes entrantes), le mode actif ne fonctionnera probablement pas car le serveur n’arrivera jamais à se connecter au client pour transférer les données (même la commande LIST
a besoin d’un canal de données).
Si le serveur a un firewall, il faut configurer celui ci pour qu’il laisse passer le port du serveur (21) et une plage de ports pour les transferts si le serveur accepte le mode passif.
Remarque : Le serveur doit avoir une plage de ports (entre X et Y) pour les transferts même s’il n’a qu’un seul client, car chaque commande LIST
utilise un port de données, et un port de données ne peut plus être utilisé pendant presque une minute dans certains cas. Donc pour éviter tout problème à chaque fois que le client ou le serveur se mettent en attente, ils changent de port sans essayer de réutiliser le port précédent.
De nombreux serveurs FTP sont disponibles sous Linux (ftpd, proftpd, wu-ftpd, pure-ftpd, …).
vsFTPd (Very Secure FTP Daemon), créé en 2000, est un serveur FTP qui mise beaucoup sur la sécurité, ce qui n’a rien d’étonnant puisqu’il est développé par Chris Evans chargé de la sécurité de Google Chrome. Il est distribué selon les termes de la licence Licence publique générale GNU.
Site officiel : https://security.appspot.com/vsftpd.html
Il suffit d’installer le paquet vsftpd :
$ sudo apt-get install vsftpd
...
$ sudo service vsftpd status
vsftpd start/running, process 1805
Recherche du fichier de configuration de vsftpd :
$ find /etc -name "vsftpd.conf"
/etc/vsftpd.conf
/etc/init/vsftpd.conf
L’installation du paquet entraîne la création d’un utilisateur système ftp
. Ce compte est systématiquement employé pour gérer les connexions FTP anonymes, et son répertoire personnel (/srv/ftp/
) est la racine de l’arborescence mise à disposition des utilisateurs se connectant sur le service.
$ cat /etc/passwd | grep ftp
ftp:x:107:115:ftp daemon,,,:/srv/ftp:/bin/false
$ cat /etc/group | grep ftp
ftp:x:115:
$ ls -l /srv/ | grep ftp
drwxr-xr-x 2 root ftp 4096 mars 25 07:47 ftp/
La configuration de vsFTPd est réalisée à partir du fichier vsftpd.conf
.
Le fichier vsftpd.conf
propose un grand nombre d’options dont les plus importantes sont :
La documentation en ligne : https://security.appspot.com/vsftpd/vsftpd_conf.html
chroot (change root) est une commande UNIX/Linux permettant de changer le répertoire racine d'un processus de la machine hôte. Cette commande permet d'isoler l'exécution d'un programme et d'éviter ainsi la compromission complète d'un système lors de l'exploitation d'une faille. Si un pirate utilise une faille présente sur l'application chrootée, il n'aura accès qu'à l'environnement isolé et non pas à l'ensemble du système d'exploitation. Cela permet donc de limiter les dégâts qu'il pourrait causer.
La configuration par défaut de vsFTPd est très restrictive :
$ cat /etc/vsftpd.conf | grep -e "^\(listen\|anonymous\|local\|write\|chroot\)"
listen=YES
anonymous_enable=NO
local_enable=YES
Test : On peut utiliser le client ftp
en ligne de commande.
$ ftp 192.168.52.9
Connected to 192.168.52.9.
220 (vsFTPd 2.3.5)
Name (192.168.52.9:tv): tv
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> help
Commands may be abbreviated. Commands are:
...
ftp> dir
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
...
ftp> bye
221 Goodbye.
On peut aussi utiliser un client graphique comme FileZilla.
On peut alors vérifier les restrictions d’accès :
// Envoi d'un fichier
Commande : STOR test.txt
Réponse : 550 Permission denied.
// Création d'un répertoire
Commande : MKD /home/tv/test
Réponse : 550 Permission denied.
// Renommage d'un fichier
Commande : RNFR fichier.txt
Réponse : 550 Permission denied
Liste des commandes ftp : http://fr.wikipedia.org/wiki/Liste_des_commandes_ftp
La version 2.3.5 livrée en standard avec Ubuntu est boguée. L'utilisation du mode chrooté provoque une erreur : 500 OOPS: vsftpd: refusing to run with writable root inside chroot(). L'utilisateur ne peut pas accéder à son répertoire personnel. Pour contourner ce bug, quelqu'un a réalisé un backport de l'option allow_writeable_chroot depuis vsftpd 3 en attendant que celle-ci soit présente dans les dépôts.
// vérification de la version installée
$ vsftpd -v
vsftpd: version 2.3.5
$ wget http://ppa.launchpad.net/thefrontiergroup/vsftpd/ubuntu/pool/main/v/vsftpd/vsftpd_2.3.5-1ubuntu2ppa1_amd64.deb
$ sudo dpkg --install vsftpd_2.3.5-1ubuntu2ppa1_amd64.deb
Maintenant, l’option allow_writeable_chroot=YES est utilisable dans vsftpd.conf
.
/var/log/vsftpd.log
.Paramétrer la caméra pour une sauvergarde toutes les 30 s sur le serveur FTP préalablement installé.