Diantre, faut que j'aille dire ça à plein de monde alors, ils vont en faire une tête en sachant que leur site en prod sous Rails ne marche pas où n'est pas utilisable
Là c'est toi qui marche dedant.
C'était juste un moyen trollesque de faire remarquer qu'il y a un écosystème java qui n'existe pas encore avec rails.
J'aurais bien signé la pétition. Mais je ne suis pas d'accord avec le texte.
Qu'ils virent VSC Technologie ou pas, je m'en fout.
Ce qu'on veut le moyen efficace de consulter les horaires et d'acheter le billet en ligne?
Je suis désolé de te dire ça mais le texte de ta pétition fait excité en colère et enlève toute crédibilité à ton propos.
Tu met les répertoires en 750 ou 755 et les fichiers en 640 ou 644.
find /home/moi -type d -exec chmod 750 {} \;
find /home/moi -type f -exec chmod 640 {} \;
Il restera les exécutables. Tu peux travailler avec des patterns :
for i in pl sh py rb
do
find /home/moi -type f -name "*.$i" -exec chmod +x {} \;
done
Sous FreeBSD, ça se fait avec limits/ulimit et login.conf . Il faut aussi régler le securelevel a au moins 1 et utiliser sysctl.conf pour limiter quelques valeurs [1][2].
Sous Net/OpenBSD, il y a aussi systrace[3] qui permet de faire de grandes choses.
Sous Linux comme dit plus haut, il y a ulimit et bien sur selinux et grsecurity que je connais moins bien.
Dans tout les cas il te faut :
- un moyen simple d'identifier les processus (par exemple avec un uid distincte par tâche : pour le serveur web, pour php, pour la compil en C, pour l'execution ... Les ACL permettent de bien gérer celà.
- des quotas disques (pour éviter les écritures de fichier récursives ou les cat /dev/zero ... ).
- un firewalling sur le sortant pour éviter l'ouverture de socket illégitimes.
Il ne faut pas négliger les outils simples avec par exemple un cron qui fait :
- si un processus de tel utilisateur dure + de n minutes ou prends plus de n ressouces cpu (man ps) alors kill $p ; sleep 5; kill -9 $p
T'es pas fou ? Tu ne peux pas en faire un mutualisé :
- un serveur sur lequel dotclear2, joomla, gallery ... sont inutilisables sans un travail poussé d'installation et de personnalisation.
- un serveur qu'il faut rebooter pour faire des mises à jour de sécurité ou un fsck et donc avec un downtime *relativement" important.
C'est plutôt la config grand comptes avec audit de sécurité tout les 6 mois :)
Je ne vois pas ce qu'il y a de délicat à ça.
Il faut réduire le path, les ressources, et le temps maximal d'exécution.
Si tu as une machine avec des comptes en ssh. Chacun peut compiler et exécuter ce qu'il veut. Ca ne pose pas de problème particulier de sécurité. Il suffit de limiter les ressources de chaque utilisateurs. Cela se fait au niveau de l'OS.
Tu vérifie périodiquement qu'un process ne soit pas en train de dépasser les bornes et de le tuer via un cron ou autre.
Mais là, il s'agit d'utilisateurs identifiés dont tu peux surveiller l'activité et suspendre les comptes.
Ce qui est critique, c'est l'aspect web. Parce que justement tu ouvres ta machine et donne la possibilité a quelqu'un d'accéder aux ressources sans être identifié au sens unix du terme ou en usurpant une identité.
Après il y en a toujours pour croire que d'afficher /etc/passwd, faire des uname -a pose un problème de sécurité.
Moi ce que je crois c'est que tu vas avoir deux types de problèmes :
- les erreurs de code type fork bomb
- les tentatives d'intrusions et d'installation de daemons.
Pour le premier aspect l'os bien configuré sait bien géré ça tout seul.
Pour le second aspect, la réponse doit être globale au niveau de ton code, de l'os et du serveur web et c'est ce que je proposais tout à l'heure.
En fait n'importe quel serveur Apache/Php, permet d'uploader son code et de le compiler. Surtout quand ils sont bien développer friendly :) Mais c'est un autre débat.
Pour sécuriser un serveur, il y a de nombreux outils. Le chroot en est un, mais il ne faut pas croire que c'est magique.
Déjà dans php, il y a un certain nombre de mécanismes de sécurité intéressants :
- openbasedir
- safe-mode
- limitation des ressources (memory_limit, max_execution_time)...
- interdiction de certaines fonctions (fsockopen pfsockopen..)
Pour apache :
- il faut des Timeout courts
- il faut qu'il soit exécuté par un utilisateur sans shell.
- il faut installer et paramétrer mod_security.
Au niveau réseau.
- Il faut tout interdire en entrée et en sortie. Puis juste autoriser le minimum pour que son appli fonctionne.
- Il faut détecter les paquets pourris et éventuellement bannir les IP en cause (quoique).
- Il faut surtout utiliser des ports atypiques pour les services annexes (ssh entre autre)
Au niveau système de fichier :
- il faut que / et /usr soient en lecture seule.
- il faut que tous les utilisateurs aient des quotas sur les partitions sur lesquelles ils sont susceptibles d'écrire.
- il faut que toutes les partitions (/tmp /var /home) ou rien ne doit être executé soient montées en noexec
Au niveau des utilisateurs:
- il ne faut pas que les utilisateurs qui n'en ont pas besoin aient un shell valide et que les autres aient un shell le plus limité possible.
- il faut définir (si le système le permet ) des limites en ressources basses pour chaque utilisateurs (man limits).
Au niveau de L'OS,
Il faut interdire :
- les changements de règles de firewalling
- les passages de root vers noyau (chargement de modules ...)
Puis il faut surveiller. Traquer les process au comportement anormal, débusquer les finteux, les spammeurs, les spammés. Bref administrer la bête. ..
Je pense surtout qu'ils veulent utiliser les traductions pour faire des moulinettes automatiques à traduire les phrases types, ou proposer des traductions types ...
Du coup la licence bsd s'impose.
Bon c'est pure spéculation. Je dis ça, j'ai rien dit :
We've chosen the BSD license because it’s universally compatible with projects that use other licenses.
Il me semble bien quand même qu'ils suggèrent que les traductions pourraient être utilisées pour un projet autre que l'original.
Si apache ne sert pas l'index qui est dans /var/www/html
C'est que :
_ il n'y en a pas (d'ou le 404)
_ il ne va pas le chercher là (un include dans ta conf ?)
_ il n'est pas reconnu comme un index (Directive DriectoryIndex)
_ L'acces est interdit (droit unix, Deny From All dans un .htaccess ou un fichier include dans ta conf)
Donc que donne :
ls -la /var/www/html/ est la premiere des choses à voir.
La seconde est de tout commenter dans ta conf pour voir quand ça marche et dans ça ne marche pas.
cp /my/procmailrc.template ~$user/.procmailrc
sed -i '' -E s/box1/$user/g ~$user/.procmailrc ou encore avec perl :
perl -i -pe 's/box1/$user/g' ~$user/.procmailrc
A mon sens la meilleure solution est d'utiliser ~ dans ton .procmailrc
Pouvoir déployer des belles applications basée sur un framework ultra sympa comme Rails aussi simplement qu'une banale appli PHP, saykewl :). Aucune raison de pas switcher.
C'est trop gros, je peux pas laisser passer ça.
Mais quand tu veux gérer finement des droits sur des dizaines de répertoires avec autant d'utilisateurs, que tu as par dessus des impératifs sécurité (du style pas de shell pour apache), qu'il faut envoyer des mails qui n'arrivent pas directement dans les boîtes spam et que tu travailles avec des devs qui sont outré parce que tu refuse qu'ils fassent des exec à tout va et que de toute façon leur appli elle marche bien sur leur easyphp. Quand tu t'encaisse 18 millions de requêtes par jours, que tu est réveillé la nuit parce qu'un abruti à réussie à coder une redirection 301 récursive ou qu'Apche 2.2 (ah t'avais dit qu'il fallait la 1.3.41) c'est vautré parce qu'un cron a fait un graceful alors qu'arrivait un trop gros post ... ben figure toi que même php c'est pas simple.
L'avantage de de montgrel / BDD / frontal web, c'est que c'est un modèle 3 tiers propre et scalable. Qui t'évite justement les affres d'un mod_php tout en un.
[^] # Re: Bah c'est simple...
Posté par Joris Dedieu (site web personnel) . En réponse au journal OVH: "Mais on vous répète qu'un serveur loué ne vous appartient pas !". Évalué à 1.
En totale contradiction avec les règles du RIPE
[^] # Re: Toujours le même :-)
Posté par Joris Dedieu (site web personnel) . En réponse au message Règles différentes pour les mêmes pages sous apache2. Évalué à -1.
<VirtualHost *:80>
DocumentRoot /var/www/monsite.com
ServerName www.monsite.com
ServerAlias monsite.com
<Directory /var/www/monsite.com>
Options -Indexes
<//Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/monsite.com
ServerName admin.monsite.com
<Directory /var/www/monsite.com>
Options -Indexes
IndexOptions FancyIndexing FoldersFirst IgnoreCase IgnoreClient
<//Directory>
</VirtualHost>
[^] # Re: Je marche dedant
Posté par Joris Dedieu (site web personnel) . En réponse à la dépêche Play!, un autre framework web Java. Évalué à 4.
Là c'est toi qui marche dedant.
C'était juste un moyen trollesque de faire remarquer qu'il y a un écosystème java qui n'existe pas encore avec rails.
# J'aurais bien signé la pétition
Posté par Joris Dedieu (site web personnel) . En réponse au journal Pétition voyage-sncf. Évalué à 10.
Qu'ils virent VSC Technologie ou pas, je m'en fout.
Ce qu'on veut le moyen efficace de consulter les horaires et d'acheter le billet en ligne?
Je suis désolé de te dire ça mais le texte de ta pétition fait excité en colère et enlève toute crédibilité à ton propos.
Mes deux cents
Joris
# crontab -e
Posté par Joris Dedieu (site web personnel) . En réponse au message Programmation crontab.. Évalué à 1.
http://fr.wikipedia.org/wiki/Crontab
[^] # Je marche dedant
Posté par Joris Dedieu (site web personnel) . En réponse à la dépêche Play!, un autre framework web Java. Évalué à 2.
Sauf que java est déjà utilisé/utilisable en production. Rails pas encore.
[^] # Re: tar
Posté par Joris Dedieu (site web personnel) . En réponse au message Récupérer droits sur fichiers. Évalué à 1.
# Pourquoi faire si compliqué ?
Posté par Joris Dedieu (site web personnel) . En réponse au message Récupérer droits sur fichiers. Évalué à 2.
Pourquoi faire si compliqué ?
Tu met les répertoires en 750 ou 755 et les fichiers en 640 ou 644.
find /home/moi -type d -exec chmod 750 {} \;
find /home/moi -type f -exec chmod 640 {} \;
Il restera les exécutables. Tu peux travailler avec des patterns :
for i in pl sh py rb
do
find /home/moi -type f -name "*.$i" -exec chmod +x {} \;
done
# Sortie
Posté par Joris Dedieu (site web personnel) . En réponse au message Problème d'initialisation de variables dans Bash lorsque cron lance le script. Évalué à 1.
[^] # Re: Sans commentaire ...
Posté par Joris Dedieu (site web personnel) . En réponse au journal Comment tuer un développeur de LL*. Évalué à 0.
[^] # Re: Changement d'utilisateur
Posté par Joris Dedieu (site web personnel) . En réponse au message Application sensible. Évalué à 1.
Sous Net/OpenBSD, il y a aussi systrace[3] qui permet de faire de grandes choses.
Sous Linux comme dit plus haut, il y a ulimit et bien sur selinux et grsecurity que je connais moins bien.
Dans tout les cas il te faut :
- un moyen simple d'identifier les processus (par exemple avec un uid distincte par tâche : pour le serveur web, pour php, pour la compil en C, pour l'execution ... Les ACL permettent de bien gérer celà.
- des quotas disques (pour éviter les écritures de fichier récursives ou les cat /dev/zero ... ).
- un firewalling sur le sortant pour éviter l'ouverture de socket illégitimes.
Il ne faut pas négliger les outils simples avec par exemple un cron qui fait :
- si un processus de tel utilisateur dure + de n minutes ou prends plus de n ressouces cpu (man ps) alors kill $p ; sleep 5; kill -9 $p
[1]http://www.freebsd.org/doc/en/books/handbook/users-limiting.(...)
[2]http://wiki.gcu.info/doku.php?id=freebsd:sysctl_avance&s(...)
[3]http://www.unixgarden.com/index.php/securite/systracesysjail
[^] # Re: Changement d'utilisateur
Posté par Joris Dedieu (site web personnel) . En réponse au message Application sensible. Évalué à 1.
- un serveur sur lequel dotclear2, joomla, gallery ... sont inutilisables sans un travail poussé d'installation et de personnalisation.
- un serveur qu'il faut rebooter pour faire des mises à jour de sécurité ou un fsck et donc avec un downtime *relativement" important.
C'est plutôt la config grand comptes avec audit de sécurité tout les 6 mois :)
[^] # Re: Changement d'utilisateur
Posté par Joris Dedieu (site web personnel) . En réponse au message Application sensible. Évalué à 0.
Il faut réduire le path, les ressources, et le temps maximal d'exécution.
Si tu as une machine avec des comptes en ssh. Chacun peut compiler et exécuter ce qu'il veut. Ca ne pose pas de problème particulier de sécurité. Il suffit de limiter les ressources de chaque utilisateurs. Cela se fait au niveau de l'OS.
Tu vérifie périodiquement qu'un process ne soit pas en train de dépasser les bornes et de le tuer via un cron ou autre.
Mais là, il s'agit d'utilisateurs identifiés dont tu peux surveiller l'activité et suspendre les comptes.
Ce qui est critique, c'est l'aspect web. Parce que justement tu ouvres ta machine et donne la possibilité a quelqu'un d'accéder aux ressources sans être identifié au sens unix du terme ou en usurpant une identité.
Après il y en a toujours pour croire que d'afficher /etc/passwd, faire des uname -a pose un problème de sécurité.
Moi ce que je crois c'est que tu vas avoir deux types de problèmes :
- les erreurs de code type fork bomb
- les tentatives d'intrusions et d'installation de daemons.
Pour le premier aspect l'os bien configuré sait bien géré ça tout seul.
Pour le second aspect, la réponse doit être globale au niveau de ton code, de l'os et du serveur web et c'est ce que je proposais tout à l'heure.
Mes deux cents
[^] # Re: Changement d'utilisateur
Posté par Joris Dedieu (site web personnel) . En réponse au message Application sensible. Évalué à 1.
pour php :
- allow_url_fopen off
- register_globals off
pour apache :
_ AllowOverwrite None
L'installation d'un ids (snort) est également indispensable.
Tout cela n'est bien sûr qu'un aperçu de ce qu'il y a a faire pour sécuriser une environnement.
[^] # Re: Changement d'utilisateur
Posté par Joris Dedieu (site web personnel) . En réponse au message Application sensible. Évalué à 2.
Pour sécuriser un serveur, il y a de nombreux outils. Le chroot en est un, mais il ne faut pas croire que c'est magique.
Déjà dans php, il y a un certain nombre de mécanismes de sécurité intéressants :
- openbasedir
- safe-mode
- limitation des ressources (memory_limit, max_execution_time)...
- interdiction de certaines fonctions (fsockopen pfsockopen..)
Pour apache :
- il faut des Timeout courts
- il faut qu'il soit exécuté par un utilisateur sans shell.
- il faut installer et paramétrer mod_security.
Au niveau réseau.
- Il faut tout interdire en entrée et en sortie. Puis juste autoriser le minimum pour que son appli fonctionne.
- Il faut détecter les paquets pourris et éventuellement bannir les IP en cause (quoique).
- Il faut surtout utiliser des ports atypiques pour les services annexes (ssh entre autre)
Au niveau système de fichier :
- il faut que / et /usr soient en lecture seule.
- il faut que tous les utilisateurs aient des quotas sur les partitions sur lesquelles ils sont susceptibles d'écrire.
- il faut que toutes les partitions (/tmp /var /home) ou rien ne doit être executé soient montées en noexec
Au niveau des utilisateurs:
- il ne faut pas que les utilisateurs qui n'en ont pas besoin aient un shell valide et que les autres aient un shell le plus limité possible.
- il faut définir (si le système le permet ) des limites en ressources basses pour chaque utilisateurs (man limits).
Au niveau de L'OS,
Il faut interdire :
- les changements de règles de firewalling
- les passages de root vers noyau (chargement de modules ...)
Puis il faut surveiller. Traquer les process au comportement anormal, débusquer les finteux, les spammeurs, les spammés. Bref administrer la bête. ..
# Moulinette
Posté par Joris Dedieu (site web personnel) . En réponse au journal Coup de gueule contre Canonical. Évalué à 6.
Du coup la licence bsd s'impose.
Bon c'est pure spéculation. Je dis ça, j'ai rien dit :
We've chosen the BSD license because it’s universally compatible with projects that use other licenses.
Il me semble bien quand même qu'ils suggèrent que les traductions pourraient être utilisées pour un projet autre que l'original.
# Je vois pas le rapport avec sed
Posté par Joris Dedieu (site web personnel) . En réponse au journal Sed quis custodiet ipsos custodes? (OOXML aka IS0/IEC DIS 29500). Évalué à 5.
# Résultats plustôt bon
Posté par Joris Dedieu (site web personnel) . En réponse au journal Résultats du deuxième trimestre 2008 Mandriva. Évalué à 1.
Et c'est plutôt encourageant
http://www.mandriva.com/enterprise/fr/actualite-financiere/r(...)
Maintenant, c'est vrai qu'il manque toujours ce buzz avec les entreprises qui ferait décoller.
Pourtant avec mds et pulse, y a vraiment de quoi.
# Config d'apache
Posté par Joris Dedieu (site web personnel) . En réponse au message Utiliser WSGI avec Apache. Évalué à 1.
C'est que :
_ il n'y en a pas (d'ou le 404)
_ il ne va pas le chercher là (un include dans ta conf ?)
_ il n'est pas reconnu comme un index (Directive DriectoryIndex)
_ L'acces est interdit (droit unix, Deny From All dans un .htaccess ou un fichier include dans ta conf)
Donc que donne :
ls -la /var/www/html/ est la premiere des choses à voir.
La seconde est de tout commenter dans ta conf pour voir quand ça marche et dans ça ne marche pas.
[^] # Re: Firefox en entreprise
Posté par Joris Dedieu (site web personnel) . En réponse au journal Enquête: n'importe quoi, comme d'habitude. Évalué à 4.
La subtilité, c'est qu'il ne faut pas en parler aux informaticiens, mais aux commerciaux.
[^] # Re: non disponibilité du Asus 90x ?
Posté par Joris Dedieu (site web personnel) . En réponse au journal Aspire Aspire One - Premières impressions. Évalué à 2.
# Trafic soutenu, petite config
Posté par Joris Dedieu (site web personnel) . En réponse au message Suse 10 SP2 : laquelle choisir ?. Évalué à 1.
->
Mes deux cents
# sed
Posté par Joris Dedieu (site web personnel) . En réponse au message procmail avec shell. Évalué à 2.
sed -i '' -E s/box1/$user/g ~$user/.procmailrc ou encore avec perl :
perl -i -pe 's/box1/$user/g' ~$user/.procmailrc
A mon sens la meilleure solution est d'utiliser ~ dans ton .procmailrc
SHELL=/bin/sh
PATH=/usr/bin
DEFAULT=~/mail/
MAILDIR=~
LOGFILE=$MAILDIR/.procmail.log
INCLUDEDIR=~/.procmailrc
MAILCOPY=~/copymail/
[^] # Re: Blocage du port 25
Posté par Joris Dedieu (site web personnel) . En réponse au journal Le spam et les BotNets MS. Évalué à 1.
[^] # Re: Et du côté des perfs ?
Posté par Joris Dedieu (site web personnel) . En réponse à la dépêche Ruby on Rails 2.1 disponible. Évalué à 8.
C'est trop gros, je peux pas laisser passer ça.
Mais quand tu veux gérer finement des droits sur des dizaines de répertoires avec autant d'utilisateurs, que tu as par dessus des impératifs sécurité (du style pas de shell pour apache), qu'il faut envoyer des mails qui n'arrivent pas directement dans les boîtes spam et que tu travailles avec des devs qui sont outré parce que tu refuse qu'ils fassent des exec à tout va et que de toute façon leur appli elle marche bien sur leur easyphp. Quand tu t'encaisse 18 millions de requêtes par jours, que tu est réveillé la nuit parce qu'un abruti à réussie à coder une redirection 301 récursive ou qu'Apche 2.2 (ah t'avais dit qu'il fallait la 1.3.41) c'est vautré parce qu'un cron a fait un graceful alors qu'arrivait un trop gros post ... ben figure toi que même php c'est pas simple.
L'avantage de de montgrel / BDD / frontal web, c'est que c'est un modèle 3 tiers propre et scalable. Qui t'évite justement les affres d'un mod_php tout en un.
Mes deux cents