Dedibox

Bon, ça y est, j’ai reçu ma Dedibox et je dois dire que j’en suis plutôt content. Le seul petit hic, c’est que Linux et moi, ça fait un moment qu’on ne s’est plus parlé et j’éprouve quelques difficultés à lui faire entendre raison sur certains trucs.

Bon, je suis sur une Ubuntu 6.06 LTS (la config “recommandée”) et j’ai installé un LAMP qui va bien, tout marche nickel, j’ai uploadé quelques trucs via le FTP, testé ça via des pages web dynamiques, tout roule. Le seul truc c’est que j’ai un peu l’impression d’avoir fait ça à la porc.

Donc, voilà mes questions…

1° Apache2, c’est nouveau pour moi, j’ai de vagues souvenirs d’Apache1. Quelle est la marche à suivre pour dire au bestiau d’aller chercher ses pages web où je veux en fonction du domaine ? (genre www.faskil.com pointe vers /home/faskil/www, blog.faskil.com vers /home/faskil/blog, etc.). Pour le moment, tout est dans var/www avec un simlink dans home/faskil qui pointe dessus. Bof, quoi.

2° J’aimerais que quand je me connecte en FTP (via Proftpd), chaque user aille directement dans son folder perso et y ait automatiquement tous les droits (ce qui ne semblait pas être le cas par défaut, ou alors j’ai loupé un truc).

3° Une fois tout ça fait, j’aimerais sécuriser un minimum la machine. Vous me conseillez quoi ? Sachant que je fais du web, du ftp, du stream Icecast (port 8000) et que je vais probablement à terme y migrer mon serveur mail aussi.

Merci !
B)

  1. http://httpd.apache.org/docs/2.0/vhosts/name-based.html
  2. Tu as quoi comme utilisateurs actuellement? Normalement, des que tu fais un user, il a un compte ftp dans son repertoire perso.
  3. Avoir un systeme a jour est un minimum
    _Virer les services qui sont actifs mais dont tu n’as pas besoin
    _le ftp anonyme peut etre vire aussi (je crois qu’il n’est pas actif par defaut)

Sinon j’ai vu un unreal dans le coin, il va t’expliquer aussi B)

LoneWolf
Linux, c’est trop facile en fait

Je vais essayer de répondre un peu large, tu demanderas des precisions sur les points qui t’interessent B)

1/ Il faut utiliser ce qu’on appelle des Virtual Hosts Ouvre ton httpd.conf, et regarde en bas, tu dois voir quelque chose qui ressemble a ceci :

[code]NameVirtualHost *:80

<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www/default
CustomLog /var/log/apache/default.log combined

<VirtualHost *:80>
ServerName www.slashorg.net
ServerAlias slashorg.net
DocumentRoot /var/www/www.slashorg.net
CustomLog /var/log/apache/www.slashorg.net.log combined

…[/code]

Tu fais un bloc comme ca, pour chaque site.

2/ Je te conseille plutot PureFTPd qui offre plusieurs fonctionnalites que ProFTPd n’a pas : utilisateurs virtuels, quotas, restrictions plus flexibles… Tu peux preciser ce que tu entends par « droits » ? Le probleme classique c’est que Apache tourne avec son utilisateur, qui n’est pas le meme qu’utilise le ftp pour uploader des fichiers. Ceci peut avoir 2 consequences :

  • Apache ne pourra pas ecrire dans un dossier cree par ftp avec des droits classiques
  • l’utilisateur ftp ne pourra pas supprimer des dossiers et fichiers ecrits par le site a cause des droits

C’est de ca dont tu parles ?

3/ Oui, tu fais bien de penser a la securite des le depart B) Donc, je fais pas une liste exhaustive, mais les points qui me paraissents importants :

  • utiliser des strong passwords (partout : logins unix, sql…)
  • garder son systeme a jour est clairement super important (pareil que sous win finalement :smiley: )
  • securiser un peu son sshd (le login shell), je donne quelques astuces sur mon site
  • le PHP peut vite devenir un reel soucis de securite. En effet, par defaut, il permet a des scripts de lancer des commandes shell. Et comme beaucoup de developpeurs PHP codent sans reflechir a la securite, il arrive souvent qu’un « hacker » puisse inserer son code dans le site (et lancer du shell, du coup). Il existe plusieurs solutions pour securiser PHP :

→ si tes sites Web n’ont pas besoin de lancer du shell, active le safe mode dans php.ini
→ la config php permet aussi de « bloquer » un script chez lui pour c’est lectures/ecritures de fichiers, et ca marche par virtual host. Exemple : un site kikoo.fr qui se trouve dans /home/kikoo/www, peut avoir une configuration VH qui ressemble a ceci :

<VirtualHost *:80> ServerName www.kikoo.fr ServerAlias kikoo.fr DocumentRoot /home/kikoo/www CustomLog /var/log/apache/www.kikoo.fr.log combined php_admin_value open_basedir /home/kikoo </VirtualHost>

Le combo safemode + bloquage du script chez lui est efficace contre les mechants pas bo de l’Internet.

  • faire des backups (sql + fichiers) automatiques toutes les nuits. Pour cela, crontab + bash sont tes amis.
  • garder des logs (apache + ftp…) longtemps. Ca peut servir pour voir comment le vilain pas beau est rentre si le pire arrive.
  • il existe un soft d’audit qui s’appelle Tiger. Il te notifie si des fichiers sont modifies, si des ports inhabituels sont ouverts, ainsi de suite. Ca permet de garder un oeil sur le serveur sans passer sa vie dedans :smiley:

Voili voila

Autrement si tu peux utiliser vsftpd, il y a un très bon tuto sur andesi.org (et très simple)
http://andesi.org/index.php?node=121
(testé et approuvé B) )

Merci à tous pour vos réponses ! Je vais dépatouiller un peu tout ça et je reviens vers vous si j’ai besoin de précisions. B)

pour tes password utilise un caractere a la noix devant tous perso moi j’utilise le $ (ou pas B)) mais met toujours un caractere special.
Et apres tu as des moyens de securiser ton ssh d’acces a ton nux par clef pgp :
http://www.ulg.ac.be/segi/unix-doc/ssh.html

http://www.lea-linux.org/cached/index/Reseau-secu-ssh.html

http://coding.romainl.com/modules.php?name…cle&sid=111

sinon le petit serveur est un bon endroit la preuve :
http://www.lepetitserveur.fr/index.php/topic,50.0.html

L’identification ssh par certificat c’est clairement super super sécurisé, mais cela impose d’avoir ses certificats sur soi si on veut pouvoir se connecter. Impossible donc de se connecter depuis le pc d’un pote (sans installer les certificats chez lui), et c’est grave pas pratique quand on a un serveur utilisé par plusieurs personnes. Perso, je pense qu’un mot de passe de 8 caracteres avec lettres/chiffres et desactivation du compte root en login direct suffisent.

les clefs usb ou tu te les mailes.

Ca je veux bien par contre si tu as de la doc dessus ou un lien
(desactivation du compte root au login ne donne rien sous google).

edit :
si en fait tiens faskil :
comment rendre son linux plus secure
http://www.lea-linux.org/cached/index/Admi…plus-secur.html

edit bis :
par contre moi je me permet un leger deviage de thread quelqu’un connait un moyen d’automatiser le premier de chaque mois le apt-get update && apt-get upgrade && apt-get dist-upgrade ?

Bussiere

[quote=“unreal, post:3, topic: 32347”]2/ Je te conseille plutot PureFTPd qui offre plusieurs fonctionnalites que ProFTPd n’a pas : utilisateurs virtuels, quotas, restrictions plus flexibles… Tu peux preciser ce que tu entends par “droits” ? Le probleme classique c’est que Apache tourne avec son utilisateur, qui n’est pas le meme qu’utilise le ftp pour uploader des fichiers. Ceci peut avoir 2 consequences :

  • Apache ne pourra pas ecrire dans un dossier cree par ftp avec des droits classiques
  • l’utilisateur ftp ne pourra pas supprimer des dossiers et fichiers ecrits par le site a cause des droits

C’est de ca dont tu parles ?[/quote]

En fait, ce que je voudrais, c’est que chaque utilisateur puisse avoir tous les droits dans son répertoire propre (par exemple, moi dans /home/faskil/) via FTP (pour pouvoir upper des fichiers, en supprimer, bref gérer mes sites) sans que ça pose de problème à Apache derrière pour faire son taf. Est-ce qu’il y a moyen par exemple de leur donner à tous les deux (Apache + utilisateur) les mêmes droits sur ce folder ? Et sinon, comment procéder ?

C’est ce que je pensais B)

En fait, il existe plusieurs méthodes.

1/ La methode crade (utilisée sur les serveurs pages persos free :smiley: ) : tu fais du ftp virtuel pour tes comptes ftp et tu configures pureftpd pour le meme utilisateur qu’Apache pour les droits. Tu te retrouves donc avec apache et le serveur ftp sous le meme utilisateur.

2/ La methode compliquée (celle utilisée sur les serveurs 1and1). Tu fais du PHP en CGI (tu dois deja etre paume normalement B) ) avec du Mod SuExec, ce qui permet d’avoir les processus Apache qui se lancent sous le bon utilisateur. C’est techniquement compliqué a mettre en place, mais c’est probablement la meilleure solution niveau securité (parce que chaque site peut avoir son utilisateur Apache en fait).

3/ La solution que je te conseille du coup :smiley:

  • tu fais un chown/chmod sur tes dossiers www, par exemple :

chown -R kikoo:www-data www chmod -R 770 www chmod g+s www

Note : le chmod g+s c’est pour le heritage du groupe.

  • tu configures pureftpd pour utiliser un mask different par defaut. Si Ubuntu marche comme Debian, tu crees un fichier « Umask » dans /etc/pure-ftpd/conf avec le umask selon le format umask_fichier:umask_dossier, par exemple :
113 002

Donc maintenant, quand tu crees un fichier/dossier dans le dossier « www », il aura comme utilisateur, l’utilisateur classique, mais comme groupe le meme qu’Apache. Et il aura un mask qui autorise l’ecriture au groupe, donc apache pourra ecrire dedans.

Il reste tjs le soucis qu’Apache pourra creer un fichier que le ftp ne pourra pas supprimer, la solution est d’ajouter l’utilisateur ftp dans le groupe Apache, par exemple :

usermod -G www-data kikoo

Et apres, dans la config des scripts PHP, tu choisis le umask qui va bien, 002 par exemple.

Bonne chance, tu en auras besoin :stuck_out_tongue:

[quote=“unreal, post:10, topic: 32347”]3/ La solution que je te conseille du coup B)

  • tu fais un chown/chmod sur tes dossiers www, par exemple :

chown -R kikoo:www-data www chmod -R 770 www

  • tu configures pureftpd pour utiliser un mask different par defaut. Si Ubuntu marche comme Debian, tu crees un fichier “Umask” dans /etc/pure-ftpd/conf avec le umask selon le format umask_fichier:umask_dossier, par exemple :

Donc maintenant, quand tu crees un fichier/dossier dans le dossier “www”, il aura comme utilisateur, l’utilisateur classique, mais comme groupe le meme qu’Apache. Et il aura un mask qui autorise l’ecriture au groupe, donc apache pourra ecrire dedans.

Il reste tjs le soucis qu’Apache pourra creer un fichier que le ftp ne pourra pas supprimer, la solution est d’ajouter l’utilisateur ftp dans le groupe Apache, par exemple :

Et apres, dans la config des scripts PHP, tu choisis le umask qui va bien, 002 par exemple.
Bonne chance, tu en auras besoin B)[/quote]
Mouais. Je dis peut etre une connerie mais j’aime pas cette methode.
Tu donnes les droits rwx au groupe apache, donc s’il y a un trou de secu dans apache qui permet au pirate d’obtenir un acces avec les droits de l’utilisateur/groupe “apache”, le pirate pourra:
_defacer le site (ca c’est sur: les fichiers auront comme groupe apache donc PAF possible)
_effacer tout le site (je sais plus si l’autorisation de RM necessite que ca soit l’utilisateur pour l’effacement, je crois pas mais bon)

Je prefere avoir tout mon site avec comme proprio “faskil” et mettre des repertoire (genre upload) avec le droit 777. Le pirate pourra (cas de l’exemple precedent) effacer le contenu du repertoire upload mais pas le repertoire en lui meme, ce qui n’affectera pas le fonctionnement global du site.

J’aime bien le concept du repertoire perso /home/faskil avec un repertoire www pour le web, ca permet d’avoir le HOME du user invisible de l’exterieur via apache.

C’est clair mon truc la?

Bref par defaut, pour proftpd en tout cas, je vois pas le soucis pour ta config faskil, ca devrait fonctionner “out of the box”

LoneWolf
Bon, Y a un bowl a la tele

Bon, ok, je vais tenter ça, unreal. Mais j’avoue que j’ai un peu de mal avec la notion de “droits” dans nunux. Moi ce que je voudrais, c’est pouvoir travailler sur mes fichiers via le FTP sans qu’Apache se sente mal à l’aise. Y’a pas simplement moyen de partager les droits entre 2 users sur un folder précis, www en l’occurence ? Sinon, j’ai un truc bizarre avec Pure.

[codebox]
faskil@sd-6495:~$ sudo pure-pw show faskil

Login : faskil
Password : …
UID : 1001 (ftpuser)
GID : 1001 (ftpgroup)
Directory : /home/faskil/./
Full name :
Download bandwidth : 0 Kb (unlimited)
Upload bandwidth : 0 Kb (unlimited)
Max files : 0 (unlimited)
Max size : 0 Mb (unlimited)
Ratio : 0:0 (unlimited:unlimited)
Allowed local IPs :
Denied local IPs :
Allowed client IPs :
Denied client IPs :
Time restrictions : 0000-0000 (unlimited)
Max sim sessions : 0 (unlimited)
[/codebox]

Si j’en crois la doc, normalement le /./ indique que le user “faskil” ne pourra pas remonter au delà de son folder (donc dans home). Pourtant, quand je me connecte en FTP, je me ballade dans toute l’arborescence de la machine sans aucun souci. J’ai loupé un truc ?

Non. B)

Ben c’est pas le cas. Je peux me connecter en ftp sans problème, browser mon folder perso, mais je peux absolument rien uploader. Permission denied qu’il me dit.

Edit : ok ok je crois que j’ai pigé, mon user « faskil » dans pure, c’est un utilisateur virtuel en fait. Aucun rapport avec le user « faskil » de l’OS. Y’a une option pour convertir un user système en user pure dans le bidule, je tente ça ? Marche pas non plus.

Non, le /./ c’est le dossier par defaut ou on arrive en se connectant. Pour ce que tu veux, faut un truc genre « ChrootEveryone ».

[edit]
Ah ben tiens, vu que tu as l’air de t’amuser avec les users virtuels, autant mettre « www-data » comme groupe Unix a utiliser…

Ok. J’imagine que ça se trouve dans le fichier de conf, sauf que si j’en crois les docs, le fichier devrait être dans /etc/pure-ftpd/ mais y’a keud. Oukilé le fichier conf ? (Non pas là, j’ai regardé).

Edit : bon, j’ai créé un fichier « ChrootEveryone » dans /etc/pure-ftpd/conf/ avec « yes » dedans. Sauf que maintenant, quand je me connected en ftp, je débarque dans « / » et je ne peux aller nulle part. B) Si je remets « no », je me log bien dans « home/faskil/ » mais je peux de nouveau me ballader partout.

(et IRC, nan ? )

Bah je me dis que ça peut servir à d’autres qui voudraient se lancer, nan ?

En fait, je cherchais une config qui allait marcher sans avoir a bidouiller les droits « par dossier ». Comme le font les hebergeurs pro qui n’ont pas envie d’avoir 40 000 appels pour des soucis de droits.

Fask : ça servira si tu fais un recap en premier post, sinon oublie le merdier. B) (note que je m’en cogne hein, c’est pour vous que ça serait plus facile.)

Bon, ben file moi ton MSN en PM unreal, comme ça, on fera nos petites affaires discretos. B)