Previous: 3 Routage
Up: Nullix 107
Next: 5 Uniformisation des menus
  Contents
Subsections
Cette section est destinée à être re-ventilée dans les autres sections
- Les fichiers *.conf sont là où ils se trouvent. Les nouveaux fichiers
sont à placer en : /etc/apache2/conf.d/
- Server-info /etc/apache2/extra/httpd-info.conf: localhost.
Valider le chargement du module dans /etc/sysconfig/apache2.
- Fichier /etc/apache2/conf.d/htdig.conf :
.Alias /htdig "/srv/www/htdig"
<Directory "/srv/www/htdig">
AllowOverride None
Order allow,deny
Allow from all
</Directory>
- Gestion des fichiers error.log.bz2 : root recopie ces fichiers et
les attribue à logger
- Déziper tout cela. Faire attention : cela peut être volumineux...
- grep "File does not exist" error.log-200711*
| sed -e "s¶.*File does not exist: ¶¶g" | sort
-u
- Les fichiers dans les répertoires personnels : créer un fichier .htaccess
(au plus près des fichiers manquants), contenant
## both addresses MUST be full-qualified
Redirect 301 /~douillet/toto-old http://www.douillet.info/~douillet/toto-new
Bien entendu, tout cela est sous le contrôle de /etc/apache2/extra/httpd-userdir.conf.
- Pour les fichiers dans le répertoire serveur : le même mécanisme présuppose
l'ouverture des droits adéquats (la racine est mieux protégée que
les individus). Cela se trouve dans /etc/apache2/default-server.conf.
Prise en compte par /etc/init.d/apache2 reload .
.Apache (2007)
- Une arborescence html est destinée à être consultée. Et cette consultation
ne peut avoir lieu sans une intrusion de l'extérieur vers la machine
qui exécute cette arborescence. Il s'agit de garder le contrôle de
cette intrusion... et de ne pas ouvrir plus de portes que nécessaire.
La règle de base est d'interdire en général et de n'autoriser qu'en
particulier.
- Les autorisations Unix sont évidemment prioritaires. Pour que la chose
puisse fonctionner, il faut que chacun des répertoires emboîtés depuis
la racine soit exécutable worldwide (même s'il n'est pas lisible et
encore moins inscriptible) et que chaque fichier utilisé soit lisible
worldwide (sans être ni inscriptible ni exécutable).
- Par dessus ces autorisations Unix, il y a les autorisations Apache.
Le coeur du mécanisme est constitué par le fichier /etc/httpd/httpd.conf. Pour
la
le répertoire attribué au serveur est /srv/www
(au lieu de /usr/local/httpd/) et le répertoire exporté comme
racine du site web est /srv/www/htdocs (au lieu de /usr/local/httpd/htdocs).
- Avec la
il faut fournir la page d'accueil racine. Dans
tous les cas, cette page est cruciale pour le référencement du site.
- Un mécanisme de mascarade (cf le paragraphe correspondant) permet
de monter différents répertoires à un endroit ou un autre du site.
Bien comprendre qu'il y a des autorisations dépendant de l'adresse
réelle (directory) et d'autres de l'adresse de montage (location).
- Bien entendu, il faut mettre le serveur à jour après modification
des scripts de configuration. On en profite pour vérifier certaines
attributions de droits et de propriété. Le batch qsa_syns_apache
fait cela.
- Modifier le fichier
/etc/sysconfig/apache pour :
- indiquer le type de serveur (slim/mid/thick/enterprise)
- indiquer DOC_SERVER="no" (utilisé aussi par la
page racine)
- Modifier le fichier de configuration /etc/httpd/httpd.conf
sur les points suivants :
- STARTSERVERS=50 MAXSPARESERVERS=20 MINSPARESERVERS=10 MAXCLIENTS=150.
- fichiers log : acces.log et error.log.
- Type de log : complet, avec appel dns. Pour cela, il faut :
HostnameLookups On
CustomLog /var/log/httpd/access.log combined
- Vérifier le chargement des modules php et perl.
- Le lancement ou non du serveur est contrôlé par le mécanisme des run-level.
- Le lancement effectif est contrôlé par le batch /etc/init.d/apache start,
qui transforme un certain nombre de drapeaux de configuration en variables
d'aiguillages qui contrôleront le fonctionnement de /etc/httpd/httpd.conf
(tests IfDefined).
- Pour la
, les drapeaux de configuration sont stockés dans
les fichiers /etc/rc.config et /etc/rc.config.d/apache.rc.config.
Pour la
, ces fichiers sont dans /etc/sysconfig/.
L'idée sous-jacente est que les drapeaux sont plutôt sous le contrôle
du webmaster, et la config plutôt sous le contrôle de YaST.
- Certains comportements sont conditionnés au chargement d'un module
particulier.
- Être attentif à l'environnement existant lors du lancement du serveur.
Il n'est pas indifférent d'être root ou seulement su root (en particulier
le PATH n'est pas le même).
- Les fichiers de configuration s'appellent les uns les autres. Dans
l'ordre
- /etc/httpd/httpd.conf. A la fin, appelle suse_include.
- /etc/httpd/suse_include.conf. Ne contient qu'un appel aux fichiers
mod_php4, suse_public_html, pldx_docs.
- /etc/httpd/mod_php4.conf : cf Subsection 4.9.
- /etc/httpd/suse_public_html.conf : cf §§ 5.
- /etc/httpd/pldx_docs.conf qui contrôle le montage des fichiers
documentation dans l'arborescence du serveur (cf. §§ 6).
- Le montage des répertoires personnels,
à l'adresse //site_name/ user_name/, est contrôlé par le fichier
/etc/httpd/suse_public_html.conf (appelé depuis le fichier
de configuration principal par un include). Par défaut, le répertoire
monté est /home/user_name/public_html/.
- Fichiers de documentation
- /docs/
- /usr/share/doc/
- /gimp/
- /usr/share/gimp/1.2/help/C/
- /susehelp/
- /usr/share/susehelp/docserver/
- /var/lib/susehelp/pac
- /var/lib/susehelp/pac
- /usr/share/susehelp/img/
- /usr/share/susehelp/img/
- ne pas oublier de placer des fichiers index.html aux bons endroits
(redirection ou bien envoi sur un fichier d'accueil).
- ne pas oublier de tenir à jour la page racine
- AllowOverride
None, All, or any combination of Options, FileInfo,
AuthConfig, and Limit.
They control which options the .htaccess files in directories
can override.
- Options
None, All, or any combination of Indexes,
Includes, IncludesNoExec, FollowSymLinks,
SymLinksIfOwnerMatch ExecCGI or MultiViews
Note that MultiViews must be named explicitly
: Options All doesn't give it to you.
- Allow, Deny :
- Order allow, deny
Allow from all
- Order deny, allow
Deny from all
Allow from localhost xxx.xxx.xxx.xxx
They control who can get stuff from this server.
- Racine du système de fichiers LOCAL
-
- <Directory />
AuthUserFile /etc/httpd/passwd
AuthGroupFile /etc/httpd/group
Options -FollowSymLinks
AllowOverride None
</Directory>
- Racine EXPORTÉE par le serveur
-
- DocumentRoot "/usr/local/httpd/htdocs"
<Directory "/usr/local/httpd/htdocs">
Options Indexes -FollowSymLinks +Includes MultiViews
AllowOverride None
Order allow,deny
Allow from all
<IfDefine DAV> DAV On </IfDefine>
</Directory>
En particulier, il faut que le fichier de base du serveur s'appelle
explicitement index.html, puisque les liens symboliques ne sont pas
autorisés.
- Configuration locale à travers les fichiers .htaccess
-
- AccessFileName .htaccess
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
-
- UserDir public_html
<Directory /*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Order deny,allow
Deny from all
</Limit>
</Directory>
-
- Alias /icons/ /usr/local/httpd/icons/
<Directory "/usr/local/httpd/icons">
Options Indexes MultiViews
AllowOverride None
Allow from all
</Directory>
-
- Alias /hilfe/ /usr/doc/susehilf/
Alias /apache/ /usr/doc/packages/apache/manual/
Alias /doc/ /usr/doc/
Alias /sdb/ /usr/doc/sdb/
Alias /howto/ /usr/doc/howto/
En l'état actuel des choses, il faut constituer une page d'accueil
pour le répertoire howto car le "bon" répertoire
est situé en howto/en/html. On ne s'en tire pas avec un simple
renommage, car des liens existent déjà dans le système d'aide.
Par ailleurs, renommer hilfe/index.html pour que l'on tombe
sur la version "english" et non "deutsch".
-
- Alias /cgi-bin-sdb/ /usr/local/httpd/cgi-bin/
ScriptAlias /cgi-bin/ /usr/local/httpd/cgi-bin/
<Directory "/usr/local/httpd/cgi-bin">
Options None
AllowOverride None
Allow from all
</Directory>
<Directory /usr/lib/sdb/cgi-bin>
Options +ExecCGI -Includes
AllowOverride None
SetHandler cgi-script
</Directory>
- AddHandler : allows you to map certain file extensions to "handlers",
actions unrelated to filetype. These can be either built into the
server or added with the Action command
To use server side includes outside ScriptAliased directories:
To use CGI scripts outside ScriptAliased directories : "AddHandler
cgi-script .cgi"
-
- <Location /cgi-bin>
AddHandler perl-script .pl
PerlHandler Apache::Registry
PerlSendHeader On
Options +ExecCGI
</Location>
AddType text/html .shtml
AddHandler server-parsed .shtml
AddHandler cgi-script .cgi
4.9 Exécutables php
- /etc/httpd/mod_php4.conf contient
-
- AddType application/x-httpd-php4 .php
AddType application/x-httpd-php4 .php4
AddType application/x-httpd-php3-source .phps
- La doc php se trouve en http://localhost/docs/packages/phpdoc/manual/
- Sécurité : le répertoire /srv/www/htdocs/phpMyAdmin doit être
sécurité.
- plain text
-
- ErrorDocument 500 "The server made a boo boo.
# n.b. the (") marks it as text, it does not get output
- local redirects
-
- ErrorDocument 404 /missing.html
# to redirect to local URL /missing.html
ErrorDocument 405 /cgi-bin/missing_handler.pl
# redirecting to a script or a ssi-doc
- external redirects
-
- ErrorDocument 402
http://some.other_server.com/subscription_info.html
# N.B.: Many of the environment variables associated with
the original request will *not* be available to such a script.
4.11 Webalizer
- Ce programme exploite les fichiers /var/log/httpd/access.log...
qui doivent donc exister et être maintenus à une taille raisonnable
(cf Section 1.4).
- Il est particulièrement intéressant d'avoir trace des Referrers, c'est
à dire des liens qui ont amené à entrer dans le site. Il est donc
nécessaire de configurer /etc/httpd/httpd.conf pour en garder
trace :
CustomLog /var/log/httpd/access.log combined
- Drapeaux à positionner dans le fichier webalizer.conf
- Incremental
- yes
- DNSChildren
- 30 (permet d'accélérer le traitement)
- AllReferrers
- yes (page spéciale avec tous les Referrers du mois)
- GroupReferrer
- www.google google
- IgnoreURL
- /cgi-bin/Count.cgi
- Le batch de lancement doit sélectionner les fichiers à prendre en
compte :
newer=$site/index.html
for qui in `find $logdir/access.log* -newer $newer` ;
do ...
- Prétraiter les fichiers logs de façon à attribuer à Google les urls
216.239.xx.xx
s¶http://216.239\.[0-9]*\.[0-9]*/search¶http://www.google.xx.xx/search¶g
- Un post-traitement du fichier de statistiques permet de le mettre
au look général du site (couleurs, boutons, etc).
- Une installation par copie des répertoires ne convient pas.
- Se connecter au site http://www.muquit.com/muquit/software/Count/Count.html
et télécharger wwwcount2.5.tar.gz. Il n'est pas nécessaire
d'imprimer la documentation depuis le site, car elle est incluse dans
le fichier archive. Nous choisissons de placer cette archive dans
/opt/cgi_scr/. Décompacter par gunzip * puis tar
-extract -file=wwwcount2.5.tar.
- Se placer dans le répertoire /opt/cgi_scr/wwwcount2.5 qui vient d'être
créé. Suivre la doc, c'est à dire lancer successivement make
config.h, make all, make cfg, et enfin make
install. La configuration consiste en particulier à choisir les répertoires.
- Le premier batch : make config.h donne à choisir certaines options.
Nous retenons :
CgiBinDir=/srv/www/cgi-bin
BaseDir= /srv/www/Counter
ConfDir= /srv/www/Counter/conf
ConfFile=count.cfg
DataDir=/srv/www/Counter/data
DigitDir=/srv/www/Counter/digits
LogDir=/var/log/counter
LogFile=Count2_5.log
- Puis make all. Cela crée diverses choses, attribuées à user 500/ group
500.
- Puis make cfg. Cela crée un fichier count.cfg. Automatic files création
=y, strict mode =n. Laisser l'affichage des messages d'erreur dans
la phase de tests, puis la supprimer (pour ne pas publier les répertoires
effectifs).
- Laisser l'affichage des messages d'erreur dans la phase de tests,
puis la supprimer (pour ne pas publier les répertoires effectifs).
- La page de tests issue de testcount-sh peut être reprise pour en faire
une page active. La nouvelle version figure dans les pages de test
du site.
- Configuration : le répertoire ~Counter/data doit appartenir
à l'utilisateur wwwrun. Les images à incruster doivent être dans les
répertoires ~Counter/digits/xx. Et bien entendu :
recopier les valeurs des compteurs qui sont dans DataDir
- Utilisation effective : décrire le compteur comme un bouton de la
barre de titre.
- Tout le barnum htdig se retrouve en /opt/www/htdig. Ce n'est
pas génial, car cela mélange des fichiers de configuration, des exécutables
destinés aux créateurs des pages web, des bases de données et des
exécutables au vol (cgi-bin).
- Créer des liens sur les exécutables depuis /opt/www/htdig/bin
vers /usr/bin (de façon à les rendre accessibles sans surcharger
le path).
- Les fichiers de configuration servent à la fois à la création et à
l'exploitation. Ils doivent se trouver dans le répertoire /opt/www/htdig/conf/htdig.conf
(fixé une fois pour toutes à la compilation de /cgi-bin/htsearch).
Mais il est raisonnable que les utilisateurs puissent les modifier.
Compromis : placer ces fichiers dans ~/qublic_bin/htdig/conf/
et les lier vers /opt/www/htdig/conf/
- Créer des fichiers de configuration. En particulier déclarer un "nom
de base". Exclure les fichiers *.css et *.mws
- htdig -isv -c /opt/www/htdig/conf/nullix.conf
- La documentation est toujours à l'adresse /usr/share/doc/packages/htdig.
Tout le reste à changé de place (ancienne localisation : /opt/www/htdig).
- bindir
- /usr/bin : exécutables destinés aux créateurs des
pages web. En particulier htdig, htmerge. Anciennement /opt/www/htdig/bin .
- confdir
- Ce répertoire des fichiers de configuration est fixé
à la compilation du fichier /cgi-bin/htsearch. Mais il est
raisonnable que les utilisateurs puissent les modifier. Compromis
: placer ces fichiers dans /qublic_bin/htdig/conf/ et les
lier vers $confdir. Actuellement /srv/www/htdig/conf/.
- commondir
- Contient les fichiers utiles pour la fabrication au
vol des pages de recherche. En particulier header, footer, long, short.
- /htdig/
- Contient les images utilisées pour les pages de recherche.
Ce répertoire doit être déclaré par un alias dans httpd.conf. En principe
/srv/www/htdig/images/.
- dbdir
- bases de données. Les placer dans un répertoire où l'utilisateur
peut écrire !
- Exemple de commande : htdig -isv -c $1 ; htmerge -sv -c $1
- La syntaxe est devenue plus stricte. L'affectation d'une variable
se fait par "nom de variable", pas d'espace, deux
points, espace, "valeur de la variable".
- Le nombre d'items par page est "matchesperpage"
et pas "matches_per_page".
- ??? décrire le mécanisme d'utilisation (questionnaire)
4.15 Exploitation de httpd/error.log
La toute première chose est de ventiler les différents messages par
sortes. Le batch httpdian (user digger) fait cela. Au passage standardisation
des adresses ip (trois chiffres par blocs) et réduction des redondances.
- err_autres
- Résidu de traitement des erreurs.
- err_cgi-bin
- Liste datée des problèmes de script. En gros : manquants
ou placés dans un répertoire non exécutable. Il n'y a pas mention
de la page appelante.
- err_conf_deny
- Liste datée des refus d'accès causés par la configuration
du serveur.
Concerne par exemple les fichiers /usr/share/doc/
- err_counter
- Liste triée des fichiers manquants (non autorisés)
pour le compteur
/usr/local/httpd/Counter/digits/A/{button_count.gif, button_count2.gif}
- err_DB2
- Messages non datés, issus de la compilation htdig.
missing files like .../htdig/common/{synonyms.db, word2root.db}.
- err_file_deny
- Liste datée des refus d'accès causés par la configuration
unix des fichiers (en particulier fichiers qui ne sont pas world-readable).
- err_link
- Utilisation de liens dans un répertoire non autorisé.
Remplacer cela par des pages de redirection tant que l'on reste dans
la partie exportée de l'arborescence.
<meta http-equiv="refresh" content="1;url=http:xxx">
- err_missing
- Liste datée des pages manquantes. En principe, les
mauvais liens sont repérés lors de l'indexation, et donc les pages
manquantes sont liées à une exploration volontaire du site par des
personnes extérieures...
- err_ssl
- "Child could not open SSLMutex lockfile /var/run/ssl_mutex.989
(System error follows) : No such file or directory (errno: 2)... 200Mo
de logs en quelques heures.
- err_variant
- no acceptable variant: (= c'est quoi ??? )
/usr/local/httpd/htdocs/index.html
/opt/www/htdocs
- err_virus
- voir paragraphe "attaque contre système32".
- list_cgi-bin
- Liste triée des scripts manquants
/usr/local/httpd/cgi-bin/{Count.cgi, cgi_test.cgi, perl_test.pl,
visitor.exe}
- list_file_deny
- Liste triée des pages dont l'accès est unix-interdit.
- list_missing
- Liste triée des pages manquantes, extraite de err_missing.
- msg_notice
- Messages datés signalement le lancement ou l'arrêt
de httpd.
- Le lien automatisé de ~/2001/Cours2001/cours01 vers
l'arrière ne devrait pas exister. De même le lien avance du cours
28.
- Au passage : le grand blanc au début des fichiers cours, et autres
(les macros a_tex ???)
- Vérifier quels devoirs ont un devxx/devxx.dvi.gz ou un *.ps.gz et
modifier le menu devoir en conséquence.
- Au passage : il faudrait un avertissement dans tous les fichiers codés
avec T2H concernant la façon de configurer le navigateur.
- Les fichiers webweb/gif manquaient. Un certain nombre de pictogrammes
sont maintenant disponibles dans ~/gifs/. Créé le
batch bin/Gif qui permet de créer une page avec ces pictogrammes.
Placer cette page dans ~/webweb et aussi dans ~/gifs/
pour garder le contrôle du répertoire.
- Il restait à la racine une vieille page count.html
- Serveur de fichiers d'aide : contrôlé par la valeur de "DOC_SERVER="
dans /etc/rc.config. Si le drapeau vaut "yes",
la valeur de DOC_ALLOW est prise en compte (localhost est une bonne
valeur). On obtient les équivalences :
- En fait, le mécanisme de sécurité n'est pas appliqué d'origine au
manuel apache, puisqu'il n'est pas situé dans /usr/share/doc/. Il
convient donc de déplacer ce répertoire. Il faut ensuite modifier
les alias dans la configuration de apache.
- Serveur de ressources web. Il faut être attentif à ce que l'on publie.
Examiner l'utilité d'un accès différentiel, avec contrôle explicite
(password) ou un contrôle implicite (adresse du requérant par exemple).
Constaté la présence de paquets d'environ une dizaine de requêtes
venant de 140 sites, constituant 40 commandes en tout (taux de coïncidence
extraordinaire).
Le principe est la recherche d'une adresse commençant par
MSADC/ PBServer/ Rpc/ _mem_bin/ _vti_bin/ _vti_cnf/
adsamples/ c/ d/ iisadmpwd/ msadc/
samples/ scripts/
et se continuant par un nombre variable de ..\
pour se terminer par winnt/system32/cmd.exe.
Un certain nombre de \ sont masqués en %2f. L'objectif
semble être un trou de sécurité dans un serveur, permettant d'accéder
au système d'exploitation. Une exploration concernant les sites émetteurs
est en cours. Il semble s'agir de sites ayant beaucoup de scripts
java... et qui peuvent donc être eux-mêmes infectés.
Previous: 3 Routage
Up: Nullix 107
Next: 5 Uniformisation des menus
  Contents
douillet@ensait.fr
2007-12-07