Serveur d'impression

Tutoriel sur la configuration du serveur Web Linux et du domaine – Bien choisir son serveur d impression

Le 2 mai 2019 - 77 minutes de lecture

Prérequis du site Web:

Ce tutoriel suppose que Linux est installé et fonctionne sur un ordinateur.
Voir Installation de RedHat
pour les bases. Une connexion à Internet est également supposée.
Une connexion de 128 Mbits / s ou plus donnera les meilleurs résultats.
ISDN, DSL, modem câble ou mieux sont tous appropriés.
Un modem 56k fonctionnera mais les résultats seront au mieux médiocres.
Les tâches doivent également être effectuées avec le nom d'utilisateur et le mot de passe de l'utilisateur root.

Aucune distribution ne semble avoir un avantage. Une distribution Ubuntu, SuSe, Fedora, Red Hat ou CentOS inclura tous les logiciels dont vous aurez besoin pour configurer un serveur Web.
Si vous utilisez Red Hat Enterprise Linux, l'édition Workstation ou Server répondra à vos besoins, à l'exception du fait que l'édition Workstation n'inclura pas le package vsFTP. Il devra être compilé à partir de la source ou utiliser sftp.

Prérequis logiciels: Le serveur Web Apache (httpd),
FTP (nécessite xinetd ou inetd)
et Bind (nommé)
les progiciels avec leurs dépendances sont tous nécessaires.
On peut utiliser le rpm commande pour vérifier l'installation:

  • Fedora Core 1+, Red Hat Enterprise 4/5, CentOS 4/5:
       rpm -q httpd bind bind-chroot bind-utils system-config-bind xinetd vsftpd
        

    RPM ajoutés FC2 +: system-config-httpd

    RPM ajoutés FC3 +: httpd-suexec

  • Chapeau rouge 9.0
       rpm -q httpd lier xinetd vsftpd

    Un RPM wu-ftpd Red Hat 8.0 peut être installé (version plus récente, version 2.6.2 ou ultérieure, avec correctif de sécurité). wu-ftpd-2.6.2-11) ou installer à partir de la source (rev 14).

  • Red Hat 8.0
       rpm -q httpd lie xinetd wu-ftpd
  • Red Hat 7.x:
       rpm -q apache bind inetd wu-ftpd

    Utilisez wu-ftpd version 2.6.2 ou ultérieure pour éviter les problèmes de sécurité.

  • SuSE 9.3:
       rpm -ivh apache2 apache2-prefork lier lier-chrootenv lier-utils vsftpd

    Remarque: apache2-MPM est un terme générique désignant les options d'installation d'Apache.
    pour "Modules de traitement multiple (MPM)", "prefork" ou "worker". Si vous essayez
    et installez uniquement apache2, vous obtiendrez l’erreur suivante:

       apache2-MPM est nécessaire pour apache2-2.0.53-9

    Voir aussi Apache.org: MPMs

  • Ubuntu (natty 11.04 / 14.04) / Debian:
       apt-get install apache2
       apt-get install bind9
       apt-get install vsftpd 
  • Ubuntu (dapper 6.06 / hardy 8.04) / Debian:
       apt-get install apache2 apache2 commun apache2-mpm-prefork apache2-utils
       apt-get install bind9
       apt-get install vsftpd 

Vous devez également avoir une connaissance pratique du processus init Linux afin que ces services soient lancés au démarrage du système.
Consultez le tutoriel sur le processus d'initialisation YoLinux pour plus d'informations.

Configuration du serveur Web HTTP Apache:

Le fichier de configuration du serveur Web Apache est: /etc/httpd/conf/httpd.conf

Les pages Web sont servies à partir de l'annuaire tel que configuré par le
DocumentRoot directif. L'emplacement du répertoire par défaut est:

Distribution Linux Serveur Web Apache "DocumentRoot"
Red Hat 7.x-9, Fedora Core, Red Hat Enterprise 4/5/6, CentOS 4/5/6 / var / www / html /
Red Hat 6.x et plus / home / httpd / html /
Suse 9.x / srv / www / htdocs /
Ubuntu (dapper 6.06) / Debian / var / www / html
Ubuntu (hardy 8.04 / natty 11.04 / fidèle 14.04) / Debian / var / www

La page d'accueil par défaut pour la configuration par défaut est index.html.
Notez que les pages ne doivent pas appartenir à l'utilisateur apache comme c'est le
propriétaire du processus du démon du serveur Web httpd. Si le processus du serveur Web est
compromis, il ne devrait pas être autorisé à modifier les fichiers. Les fichiers
devrait bien sûr être lisible par l'utilisateur apache.

Apache peut être configuré pour s'exécuter de cette manière en tant qu'hôte pour un site Web.
ou il peut être configuré pour servir pour plusieurs domaines. Servir pour plusieurs
Les domaines peuvent être atteints de deux manières:

  • Hôtes virtuels: Une adresse IP mais plusieurs domaines – Hébergement virtuel "basé sur le nom".
  • Plusieurs hôtes virtuels basés sur IP: Une adresse IP pour chaque domaine – Hébergement virtuel "basé sur IP".

La configuration par défaut permettra à l'un d'avoir plusieurs comptes d'utilisateurs
sous un domaine en utilisant une référence au compte d'utilisateur:
http: // www.domain.com/ ~ utilisateur1 /.
Si aucun domaine n'est enregistré ou configuré, l'adresse IP peut également être utilisée:
http: //XXX.XXX.XXX.XXX/ ~ utilisateur1 /.

[Potential Pitfall]

Le umask par défaut pour la création de répertoire est correct par défaut mais s'il ne l'est pas, utilisez:
chmod 755 / home /utilisateur1/ public_html

[Potential Pitfall] Lors de la création de "Annuaire"
directives de configuration,
J'ai trouvé que les placer par l'existant "Annuaire"directives
être une mauvaise idée.
Il n'utiliserait pas le .htaccess fichier. C'était parce que la déclaration
définir l'utilisation de la .htaccess le fichier était après la
"Annuaire"déclaration. Précédemment dans RH 6.x
les fichiers ont été séparés et l'ordre a été défini un peu différent.
Je place maintenant de nouveaux "Annuaire"déclarations vers la fin du fichier juste
avant le "VirtualHost"déclarations.

Pour les utilisateurs de Red Hat 7.1, l'outil de configuration de l'interface graphique apacheconf
a été introduit pour la foule qui aime utiliser de jolis outils de pointer et cliquer.

Fichiers utilisés par Apache:

  • Script de démarrage / arrêt / redémarrage:
    • Red Hat / Fedora / CentOS: /etc/rc.d/init.d/httpd
    • SuSE 9.3: /etc/init.d/apache2
    • Ubuntu (dapper 6.06 / hardy 8.04 / natty 11.04 / trusty 14.04) / Debian: /etc/init.d/apache2
  • Fichier de configuration principal Apache:
    • Red Hat / Fedora / CentOS: /etc/httpd/conf/httpd.conf
    • SuSE: /etc/apache2/httpd.conf

      (Nécessité d'ajouter une directive: Nom du serveur nom d'hôte)
    • Ubuntu (dapper 6.06 / hardy 8.04 / natty 11.04 / trusty 14.04) / Debian: /etc/apache2/apache2.conf
  • Fichiers de configuration supplémentaires Apache:
    • Red Hat / Fedora / CentOS: /etc/httpd/conf.d/composant.conf
    • SuSE: /etc/apache2/conf.d/composant.conf
    • Ubuntu (dapper 6.06 / hardy 8.04 / natty 11.04 / trusty 14.04) / Debian:
      • Domaines virtuels: / etc / apache2 / sites-enabled /domaine

        (Créer un lien symbolique à partir de / etc / apache2 / sites-enabled /domaine à / etc / apache2 / sites-available /domaine pour allumer. Utiliser la commande a2ensite)
      • Directives de configuration supplémentaires: /etc/apache2/conf.d/
      • Modules à charger: / etc / apache2 / mods-available /

        (Lien symbolique vers / etc / apache2 / mods-enabled / pour allumer)
      • Ports à écouter: /etc/apache2/ports.conf
  • / var / log / httpd / access_log et error_log
        Fichiers journaux Apache Red Hat / Fedora Core

    (Suse: / var / log / apache2 /)

Démarrer / Arrêter / Redémarrer les scripts:
Le script doit être exécuté avec les qualificatifs début, Arrêtez,
redémarrer ou statut.

c'est à dire.
/etc/rc.d/init.d/httpd restart. Un redémarrage permet au serveur Web
pour redémarrer et lire les fichiers de configuration pour prendre en compte les modifications.
Pour que ce script soit appelé au démarrage du système, lancez la commande
chkconfig --add httpd.
Voir le tutoriel sur le processus Linux Init pour
une discussion plus complète.

Aussi outil de contrôle Apache: / usr / sbin / apachectl start

Apache Control Command: apachectl:

Red Hat / Fedora Core / CentOS: apachectl directif

Ubuntu dapper 6.06 / hardy 8.04 / natty 11.04 / trusty 14.04 / Debian: apachectl (lien logiciel vers apache2ctl) ou apache2ctl directif

Directif La description
début Démarrez le démon Apache httpd. Donne une erreur s'il est déjà en cours d'exécution.
Arrêtez Arrête le démon Apache httpd.
gracieux Redémarre gracieusement le démon Apache httpd. Si la
le démon n'est pas en cours d'exécution, il est démarré. Cela diffère d'une normale
redémarrer en ce que les connexions actuellement ouvertes ne sont pas abandonnées.
gracieux-stop Arrête gracieusement le démon Apache httpd. Cela diffère d'une normale
redémarrer en ce que les connexions actuellement ouvertes ne sont pas abandonnées.
redémarrer Redémarre le démon httpd Apache. Si le démon est
ne marche pas, c'est commencé. Cette commande vérifie automatiquement la
fichiers de configuration comme dans configtest avant de lancer le redémarrage
assurez-vous que le démon ne meurt pas.
statut Affiche un bref rapport de statut.
statut complet Affiche un rapport d'état complet de
état_modal. Requiert l'activation de mod_status sur votre serveur et une base de données textuelle
navigateur tel que Lynx disponible sur votre système. L'URL utilisée pour accéder
le rapport d'état peut être défini en modifiant la variable STATUSURL dans le
scénario.
configtest
-t
Exécutez un test de syntaxe du fichier de configuration.

Outil de contrôle Apache: apachectl – page de manuel

Fichiers de configuration Apache:

  • /etc/httpd/conf/httpd.conf: est utilisé pour configurer Apache.
    Dans le passé, il était divisé en trois fichiers. Ceux-ci peuvent maintenant être tous
    concaténés dans un fichier.
    Voir la documentation en ligne Apache
    pour le manuel complet.
  • /etc/httpd/conf.d/application.conf: Tous les fichiers de configuration
        dans ce répertoire sont inclus lors du démarrage d’Apache. Utilisé pour stocker des configurations spécifiques à une application.
  • / etc / sysconfig / httpd: Contient les variables d'environnement utilisées lors du démarrage d'Apache.

Paramètres de base: Changer la valeur par défaut pour NomServeur www. <votre-domaine.com>

Autoriser Apache à accéder au système de fichiers: Il est prudent de limiter Apache
vue du système de fichiers uniquement aux répertoires nécessaires. Ceci est fait avec
la déclaration de répertoire.
Commencez par refuser l'accès à tout, puis accordez l'accès aux ressources nécessaires.
des répertoires.

Refuser complètement l'accès à la racine du système de fichiers ("/") par défaut:

Commencez par refuser, puis accordez les autorisations:


   
   
   
   Options Aucune
   AllowOverride None

Définissez l'emplacement par défaut des pages Web du système et autorisez l'accès: (Red Hat / Fedora / CentOS)



DocumentRoot "/ var / www / html"


   Index des options FollowSymLinks
   AllowOverride None
   Ordre permettre, refuser
   Autoriser de tous
   Exiger tout accordé - Ceci est requis pour Apache 2.4+

Note: la directive "Exiger tout accordé"est nouveau depuis Apache httpd 2.4.3.

Le comportement hérité peut être obtenu avec la commande: sudo a2enmod access_compat

Accorder l'accès au répertoire Web d'un utilisateur: public_html

  • Activation de Red Hat / Fedora Linux, Apache public_html accès au répertoire utilisateur:

    Cela permettra aux utilisateurs de servir le contenu de leurs répertoires personnels dans le sous-répertoire "/maison/identifiant d'utilisateur/ public_html /"en accédant à l'URL http: //nom d'hôte/ ~ userid /

    Fichier: /etc/httpd/conf/httpd.conf

    
    
    LoadModule userdir_module modules / mod_userdir.so
    
    ...
    ...
    
    
        #UserDir disable - Ajoute un commentaire à cette ligne
        #
        # Pour permettre aux requêtes à / ~ utilisateur / de servir le public_html de l'utilisateur
        # répertoire, supprimez la ligne "UserDir disable" ci-dessus et supprimez le commentaire
        # la ligne suivante à la place:
        UserDir public_html # Décommenter cette ligne
    
    
    
    
    
    
    
    
    ...
    ...
    
    
        AllowOverride FileInfo AuthConfig Limit
        Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
        
            Ordre permettre, refuser
            Autoriser de tous
        
        
            
            
            
            Ordre nier, permettre
            Refuser à tous
        
    
    

    Passer à un commentaire (ajouter "#" au début de la ligne) à partir de Fedora Core par défaut UserDir désactiver et assigner le répertoire public_html en tant que répertoire accessible du serveur Web.

    OU

    Attribuez à un seul utilisateur la possibilité spécifique de partager son répertoire:

    
       
       
       
       Les index des options incluent FollowSymLinks
       AllowOverride None
       ordre autoriser, refuser
       permettre à tous
       Exiger tout accordé - Ceci est requis pour Apache 2.4+
    
    

    Permet à l'utilisateur spécifique, "utilisateur1"seulement, la possibilité de servir le répertoire /maison/utilisateur1/ public_html /

    Utilisez également la commande SELinux pour définir le contexte de sécurité: setsebool httpd_enable_homedirs true

    Autorisations de répertoire: Le démon du serveur Web Apache doit pouvoir lire votre site Web.
    pages afin d’alimenter leur contenu sur le réseau. Utilisez un approprié
    umask et protection de fichiers. Autoriser l'accès au répertoire Web: chmod ugo + rx -R public_html.

    Notez que le répertoire de l'utilisateur doit également avoir les autorisations appropriées car il est le parent de public_html.

    Autorisations par défaut sur le répertoire de l'utilisateur: ls -l / home

    drwx ------ 20 utilisateur1 utilisateur1 4096 5 mars 12:16 utilisateur1

    Autorisez l’accès au serveur Web à exploiter le répertoire parent: chmod ugo + x / home / user1

    d-wx - x - x 20 utilisateur1 utilisateur1 4096 5 mars 12:16 utilisateur1

    On peut également utiliser des groupes pour contrôler les autorisations.
    Voir le tutoriel YoLinux sur la gestion des groupes.

  • Activer Apache d'Ubuntu public_html accès au répertoire utilisateur:

    Ubuntu a découpé les directives du module chargeable Apache dans le répertoire
    / etc / apache2 / mods-available /.
    Pour activer un module Apache, générez des liens symboliques vers le répertoire / etc / apache2 / sites-enabled / en utilisant les commandes a2enmod/a2dismod activer / désactiver les modules Apache.

    Exemple:

    • [[email protected]]# a2enmod

      Une liste des modules disponibles est affichée. Entrez "userdir" comme module à activer.
    • Redémarrez Apache avec la commande suivante: /etc/init.d/apache2 force-reload

    Remarque: Cela revient à générer manuellement les deux liens symboliques suivants:

    • ln -s /etc/apache2/mods-available/userdir.conf /etc/apache2/mods-enabled/userdir.conf
    • ln -s /etc/apache2/mods-available/userdir.load /etc/apache2/mods-enabled/userdir.load

    Page de manuel: a2enmod / a2dismod

    [Potential Pitfall]: Si le serveur Web Apache ne peut pas accéder au fichier, vous obtiendrez le message d'erreur "403 interdit" "Vous n'avez pas la permission d'accéder nom de fichier sur ce serveur. "
    Notez que les autorisations par défaut sur un répertoire utilisateur lors de sa création avec "useradd" sont les suivantes:

    drwx ------ 3 userx userx

    Vous devez autoriser le serveur Web exécuté en tant qu'utilisateur "apache" à accéder au répertoire s'il doit afficher les pages qu'il contient.

    Correction avec la commande: chmod ugo + rx / home / userx

    drwxr-xr-x 3 userx userx

Ordre de fonctionnement du fichier de configuration:

Les directives de configuration sont affectées dans l'ordre dans lequel elles sont lues.
Ceci est important sinon un comportement inattendu peut en résulter.

Les fichiers de configuration Red Hat / CentOS / Fedora / AWS sont lus dans l'ordre suivant:

  1. /etc/httpd/conf/httpd.conf

    lit les fichiers d'inclusion "Inclure conf.modules.d / *. Conf" et "IncludeOptional conf.d / *. Conf"
  2. /etc/httpd/conf.modules/*.conf
  3. /etc/httpd/conf.d/*.conf (généralement des définitions de domaine virtuel pour divers sites Web)

    Les fichiers de configuration sont lus dans l'ordre alphabétique.

Les fichiers de configuration Ubuntu / Debian sont lus dans l'ordre suivant:

  1. /etc/apache2/apache2.conf

    lit les fichiers d'inclusion
  2. /etc/apache2/mods-enabled/*.load
  3. /etc/apache2/mods-enabled/*.conf
  4. /etc/apache2/conf-enabled/*.conf
  5. /etc/apache2/sites-enabled/*.conf (généralement des définitions de domaine virtuel pour divers sites Web)

    Les fichiers de configuration sont lus dans l'ordre alphabétique.

La valeur par défaut du serveur pour l'accès à l'aide de l'adresse IP est généralement le premier domaine défini dans "conf.d / *. conf"tel que défini par l'ordre alphabétique.
C'est également ce que voient les pirates sur le site lors de l'analyse du réseau via des adresses IP.
C'est souvent une malédiction d'avoir un domaine commençant par la lettre "a" car des serveurs mal configurés dirigeront tout le trafic des hackers vers ce site.
Par conséquent, il est recommandé de générer une configuration par défaut pour l’accès aux adresses IP.

Fichier: /etc/httpd/conf.d/1st.conf (Ubuntu: /etc/apache2/sites-enabled/1st.conf)

DirectoryIndex index.html

    NomServeur www4.defaultdomain.com
    DocumentRoot / srv / www / default / html
    ErrorLog /var/log/httpd/1st-error.log
    TransferLog /var/log/httpd/1st-access.log
    
        Options FollowSymLinks
        AllowOverride None
    
    
        
        
        
        Options FollowSymLinks MultiViews Inclut
        IndexOptions SuppressLastModified SuppressDescription
        AllowOverride All
        Ordre permettre, refuser
        permettre à tous
    

Page Web par défaut: /srv/www/default/html/index.html devrait être une simple page statique sans accès à la base de données ou au CMS.
Après tout, les seuls qui se retrouvent ici sont les pirates.

Contextes de sécurité SELinux:

Fedora Core 3 et Red Hat Enterprise Linux 4 ont introduit les règles de sécurité et les étiquettes de contexte SELinux (Security Enhanced Linux).

Pour afficher les étiquettes de contexte de sécurité appliquées à vos fichiers de page Web, utilisez la commande
commander: ls -Z

Le système active / désactive les politiques SELinux dans le fichier. / etc / selinux / config

SELinux peut être désactivé en définissant la directive SELINUX. (Ensuite, redémarrez le système):



SELINUX = désactivé

ou en utilisant la commande setenforce 0 désactiver temporairement SELinux jusqu'au prochain redémarrage.

Lorsque vous utilisez les fonctions de sécurité de SELinux,
les étiquettes de contexte de sécurité doivent être ajoutées pour qu'Apache puisse lire vos fichiers.
L'étiquette de contexte de sécurité par défaut utilisée est héritée du répertoire des fichiers nouvellement créés. Donc une copie (cp) doit être utilisé et non un mouvement (mv)
lors du placement de fichiers dans le répertoire de contenu. Déplacer ne crée pas un nouveau
fichier et donc le fichier ne reçoit pas le contexte de sécurité du répertoire
étiquette.
Les étiquettes de contexte utilisées pour les répertoires Apache par défaut peuvent être
vu
avec la commande: ls -Z / var / www

Les répertoires Web des utilisateurs (c'est-à-dire public_html) devrait
être défini avec l'étiquette de contexte appropriée (httpd_sys_content_t).

Attribuez un contexte de sécurité pour les pages Web: chcon -R -h -t httpd_sys_content_t / home /utilisateur1/ public_html

Options:

  • -R: récursif. Fichiers et répertoires du répertoire en cours et de tous les sous-répertoires.
  • -h: affecte les liens symboliques.
  • -t: spécifie le type de contexte de sécurité.

Utilisez les contextes de sécurité suivants:

Type de contexte La description
httpd_sys_content_t Utilisé pour le contenu Web statique. c'est-à-dire des pages Web HTML.
httpd_sys_script_exec_t Utiliser pour les scripts CGI exécutables ou les exécutables binaires.
httpd_sys_script_rw_t CGI est autorisé à modifier / supprimer des fichiers de ce contexte.
httpd_sys_script_ra_t CGI est autorisé à lire ou à annexer des fichiers de ce contexte.
httpd_sys_script_ro_t CGI est autorisé à lire les fichiers et les répertoires de ce contexte.

Définissez les options suivantes: setsebool httpd-option vrai

(ou réglé sur faux)

Politique La description
httpd_enable_cgi Autoriser le support de httpd cgi.
httpd_enable_homedirs Autoriser httpd à lire les répertoires personnels.
httpd_ssi_exec Autorisez httpd à exécuter les exécutables SSI dans le même domaine que les scripts CGI du système.

Puis redémarrez Apache:

  • Red Hat / Fedora / Suse et tous les systèmes Linux basés sur un script d'initialisation System V: /etc/init.d/httpd restart
  • Red Hat / Fedora: service httpd restart

Les valeurs booléennes SE par défaut sont spécifiées dans le fichier: / etc / selinux / target / booleans

Pour plus d’informations sur SELinux, reportez-vous au tutoriel sur l’administration de systèmes YoLinux.

Hôtes Virtuels:

Le serveur Web Apache permet de configurer un seul ordinateur pour représenter plusieurs sites Web comme s'ils se trouvaient sur des hôtes distincts.
Deux méthodes sont disponibles et nous décrivons la configuration de chacune. Choisissez une méthode pour votre domaine:

  • Nom d'hôte virtuel: (le plus commun)
        Un seul ordinateur avec une seule adresse IP prenant en charge plusieurs domaines Web.
        Le navigateur Web utilisant le protocole http identifie le domaine en cours d’adresse.
  • Hôte virtuel basé sur IP:
        Les hôtes virtuels peuvent être configurés comme un seul ordinateur multi-hébergé avec plusieurs adresses IP sur une seule carte réseau, chaque adresse IP représentant un domaine Web différent.
        Cela a l'apparence d'un domaine Web pris en charge par un ordinateur dédié car il possède une adresse IP dédiée.

Configuration d'un hôte virtuel "basé sur le nom":

Une configuration d'hôte virtuel permet d'héberger plusieurs domaines de site Web sur un serveur.
(Cela n'est pas nécessaire pour un serveur Linux dédié hébergeant un seul site Web.)

NameVirtualHost XXX.XXX.XXX.XXX







<VirtualHost XXX.XXX.XXX.XXX>
Nom du serveur www.votre-domaine.com - CNAME (alias DNS www) spécifié dans (/ var / named / ...) ServerAlias votre-domaine.com - Autorise les requêtes sans le préfixe "www". ServerAdmin utilisateur1@votre-domaine.com DocumentRoot / home /utilisateur1/ public_html
Logs ErrorLog /votre-domaine.com-error_log    Journaux TransferLog /votre-domaine.com-access_log

Remarques:

  • Vous pouvez spécifier plusieurs adresses IP. c'est à dire si web
    serveur est également utilisé comme pare-feu / passerelle et vous avez un
    adresse IP Internet externe ainsi qu’une adresse IP de réseau local.

    NameVirtualHost XXX.XXX.XXX.XXX
    
    
    
    NameVirtualHost 192.168.XXX.XXX
    
    
    
    
    
    
    
    <VirtualHost XXX.XXX.XXX.XXX 192.168.XXX.XXX>
       ...
       ..
    

    Reportez-vous au didacticiel YoLinux pour configurer un routeur / pare-feu réseau avec iptables et NAT.

  • Utilisez votre adresse IP pour XXX.XXX.XXX.XXX, nom de domaine et adresse e-mail actuels.

    On peut utiliser les vues DNS pour fournir différents résultats DNS du réseau local.

  • L'adresse IP de l'hôte peut être référencée de manière générique pour fonctionner sur toutes les cartes réseau:
    <VirtualHost *: 80>
       ...
       ..
    

    Remarque Cette méthode est recommandée pour les hébergements basés sur NAT, tels qu'Amazon Web Services (AWS) EC2.

  • Notez que je configure Apache pour les deux demandes http: // www.nom de domaine.com et http: //nom de domaine.com.
  • Une fois les hôtes virtuels configurés, votre système par défaut
        domaine (/ var / www / html) cessera de fonctionner.
        Votre domaine par défaut doit maintenant être configuré en tant que domaine virtuel.

    
    
       
    
       
    
       
    
       ...  Cette partie reste la même
       
       
       
       ..
    
    
    
    # Valeur par défaut lorsque aucun nom de domaine n’est donné (accès par adresse IP, par exemple)
    
    <VirtualHost *: 80>
       ServerAdmin utilisateur1@votre-domaine.com
       
       
       
       DocumentRoot / var / www / html
       ErrorLog logs / error_log
       TransferLog logs / access_log
    
    
    # Ajoutez une définition VirtualHost pour votre domaine qui était autrefois la valeur par défaut du système.
    
    <VirtualHost XXX.XXX.XXX.XXX>
    Nom du serveur www.votre-domaine.com ServerAlias votre-domaine.com ServerAdmin utilisateur1@votre-domaine.com DocumentRoot / var / www / html    ErrorLog logs / error_log    TransferLog logs / access_log ...    ..
  • Transfert vers une URL primaire. Il est préférable d'éviter l'apparition de contenu Web dupliqué à partir de deux URL telles que http: // www.ton domaine.com et
     http: //ton domaine.com. Fournissez une "redirection" Apache de redirection.

    <VirtualHost XXX.XXX.XXX.XXX>
       Nom du serveur www.votre-domaine.com   - Notez qu'aucun alias n'est répertorié
       
       
       
       ...
       ...
    
    
    # Ajouter une définition VirtualHost à transférer à votre URL principale
    
    <VirtualHost XXX.XXX.XXX.XXX>
       Nom du serveur votre-domaine.com
       
       
       
       ServerAlias autre-domaine.com
       
       
       
       ServerAlias ​​www.autre-domaine.com
       
       
       
       Rediriger permanent / http: // www.votre-domaine.com.com /
    
    
       ...
       ..
        

    Remarque:

  • Plus d'exemples d'hôte virtuel.

Lorsqu’ils spécifient plus de domaines, ils peuvent tous utiliser la même adresse IP ou certains / tous
peuvent utiliser leur propre adresse IP unique.
Spécifiez un "NameVirtualHost" pour chaque adresse IP.

Une fois les fichiers de configuration Apache modifiés, redémarrez le démon httpd:
/etc/rc.d/init.d/httpd restart (Chapeau rouge) ou /etc/init.d/apache2 restart (Ubuntu / Debian)

Configuration du domaine virtuel Apache avec Ubuntu:

Ubuntu sépare chaque domaine virtuel dans un fichier de configuration séparé
tenue dans l'annuaire / etc / apache2 / sites-available /.
Lorsque le domaine du site doit devenir actif, un lien symbolique est créé vers le répertoire. / etc / apache2 / sites-enabled /.

Exemple: / etc / apache2 / sites-available / supercorp


        
        
        
        NomServeur supercorp.com
        ServerAlias ​​www.supercorp.com
        Webmaster ServerAdmin @ localhost

        DocumentRoot / home / supercorp / public_html / home
        
                Options FollowSymLinks
                AllowOverride None
        
        
                
                
                
                Options Index FollowSymLinks MultiViews
                IndexOptions SuppressLastModified SuppressDescription
                AllowOverride All
                Ordre permettre, refuser
                permettre à tous
                Exiger tout accordé - Ceci est requis pour Apache 2.4+
        

        ScriptAlias ​​/ cgi-bin / / home / supercorp / cgi-bin /
        
                AllowOverride None
                Options + ExecCGI -MultiViews + SymLinksIfOwnerMatch
                Ordre permettre, refuser
                Autoriser de tous
        

        ErrorLog /var/log/apache2/supercorp.com-error.log

        # Les valeurs possibles incluent: debug, info, notice, avertir, erreur,
        # crit, alerte, émergent.
        LogLevel avertir
        CustomLog /var/log/apache2/supercorp.com-access.log combinés
        ServerSignature On

Activer le domaine:

  • Créer un lien symbolique:
    • Manuellement: ln -s / etc / apache2 / sites-disponibles / supercorp / etc / apache2 / sites-enabled / supercorp
    • Utiliser les scripts Ubuntu a2ensite/a2dissite. Tapez commande et il vous demandera quel site vous souhaitez activer ou désactiver.
  • Redémarrez Apache:
    • apachectl gracieux

      ou
    • /etc/init.d/apache2 restart

      ou
    • /etc/init.d/apache2 reload

Notez également que les modules Apache peuvent également être activés / désactivés avec des scripts a2enmod / a2dismod.

Pages de manuel:

Configuration d'un hôte virtuel "basé sur IP":

On peut attribuer plusieurs adresses IP à une seule interface réseau.
Voir le tutoriel de mise en réseau YoLinux: Aliasing de réseau.
Chaque adresse IP peut alors être son propre serveur virtuel et son propre domaine.
L’inconvénient de la méthode d’hôte virtuel "basée sur IP" est que vous devez posséder
adresses IP multiples / supplémentaires. Cela coûte généralement plus cher.
La méthode d'hébergement virtuel basée sur le nom standard ci-dessus est plus populaire pour cette raison.

   
   
   
   
NameVirtualHost *              - Indique toutes les adresses IP







<VirtualHost *>
   ServerAdmin utilisateur0@default-domain.com
   
   
   
   DocumentRoot / home /utilisateur0/ public_html


<VirtualHost XXX.XXX.XXX.101>
   ServerAdmin utilisateur1@domain-1.com
   
   
   
   DocumentRoot / home /utilisateur1/ public_html


<VirtualHost XXX.XXX.XXX.102>
   ServerAdmin utilisateur1@domain-2.com
   
   
   
   DocumentRoot / home /utilisateur2/ public_html

Le défaut bloc sera utilisé par défaut
pour toutes les adresses IP non spécifiées explicitement.
Cette adresse IP par défaut (*) peut ne pas fonctionner pour https URL.

CGI: (interface de passerelle commune)

CGI est un programme exécutable qui génère dynamiquement une page Web en écrivant
à stdout. CGI est autorisé par l'une des deux directives de fichier de configuration suivantes:

Les fichiers de programme exécutables doivent avoir les privilèges d’exécution, exécutables par le
propriétaire du processus (Red Hat 7 + / Fedora Core: apache.
Utilisation plus ancienne personne) sous lequel le démon httpd est exécuté.

Configuration de CGI pour une exécution avec des privilèges utilisateur:

La fonctionnalité suEXEC offre aux utilisateurs Apache la possibilité d’exécuter CGI et SSI.
programmes sous des identifiants d'utilisateur différents de ceux de l'appelant
serveur Web. Normalement, lorsqu'un programme CGI ou SSI s'exécute, il s'exécute en tant que
le même utilisateur qui exécute le serveur Web.

NameVirtualHost XXX.XXX.XXX.XXX







<VirtualHost XXX.XXX.XXX.XXX>
   Nom du serveur noeud1.votre-domaine.com                   - Permet les demandes par nom de domaine sans le préfixe "www".
   ServerAlias votre-domaine.com    www.votre-domaine.com   - CNAME (alias www) spécifié dans le fichier de configuration Bind (/ var / named / ...)
   ServerAdmin utilisateur1@votre-domaine.com
   
   
   
   DocumentRoot / home /utilisateur1/ public_html /votre-domaine.com
   
   
   
   Logs ErrorLog /votre-domaine.com-error_log
   Journaux TransferLog /votre-domaine.com-access_log

   SuexecUserGroup utilisateur1 utilisateur1
   
   
   
   <Répertoire / home /utilisateur1/ public_html /votre-domaine.com/>
      Options + ExecCGI + Index
      AddHandler cgi-script .cgi
   

Pages d'erreur:

Vous pouvez spécifier vos propres pages Web au lieu des pages d'erreur Apache par défaut:

ErrorDocument 404 /Error404-missing.html

Créer le fichier Error404-missing.html dans votre répertoire "DocumentRoot".

Traitez toutes les erreurs avec une page de transfert:



ErrorDocument 400 /error.shtml
ErrorDocument 401 /error.shtml
ErrorDocument 403 /error.shtml
ErrorDocument 404 /error.shtml
ErrorDocument 500 /error.shtml

Exemple de fichier error.shtml (dans votre répertoire "DocumentRoot").



Page non trouvée!

PHP:

Si les RPM appropriés php, perl et httpd sont installés,
la configuration et les modules Red Hat Apache par défaut prend en charge PHP
contenu.
Paquets RPM (RHEL):

  • php: langage de script HTML
  • php-pear: PEAR est un framework et un système de distribution de composants PHP réutilisables.
  • php-mysql: support de la base de données MySQL.
  • php-ldap: support du protocole LDAP (Lightweight Directory Access Protocol)

Configuration Apache:

Ajoutez php default page index.php au fichier de configuration apache: /etc/httpd/conf/httpd.conf



...

DirectoryIndex index.html index.htm index.php

...

Fichier de configuration PHP:

  • AWS – PHP 5.6: /etc/php-5.6.d/php.ini
  • RHEL4 – PHP 4.3: /etc/php.ini
  • Ubuntu 18.04: /etc/php/7.2/apache2/php.ini
  • Ubuntu 6.06 / 6.11: /etc/php5/apache2/php.ini
[PHP]



moteur = allumé
...
...
display_errors = Off
include_path = ".: / php / includes"
...
...
memory_limit = 32M; La valeur par défaut est généralement de 8 Mo, ce qui est trop faible.
...
...

[MySQL]
...
...
mysql.default_host = super-serveur                ; Nom d'hôte de l'ordinateur
mysql.default_user = Dbuser



...

Petite partie du fichier montré.

Notez que les modifications ne prendront effet qu'après le redémarrage du démon de serveur Web Apache.

Testez vos capacités PHP avec ce fichier de test: /maison/utilisateur1/public_html/test.php



<? php
phpinfo ();
?>

OU (ancien format)


Tester: http: // localhost / ~utilisateur1/test.php

Pour plus d'informations, consultez la liste des sites Web d'informations PHP de YoLinux.

Exécuter plusieurs instances de httpd:

Le démon du serveur Web Apache (httpd) peut être démarré avec la commande
option de ligne "-f" pour spécifier un fichier de configuration unique pour chaque instance.
Configurez une adresse IP unique pour chaque instance d'Apache.
Reportez-vous au didacticiel de mise en réseau YoLinux pour spécifier plusieurs adresses IP pour une même carte réseau.
Utilisez la directive du fichier de configuration Apache Écoute XXX.XXX.XXX.XXX, où l'adresse IP est unique pour chaque instance d'Apache.

Apache Man Pages:

  • httpd – Apache Hypertext Transfer Protocol Server
  • apachectl – Interface de contrôle du serveur HTTP Apache
  • ab – Outil d'analyse comparative de serveur HTTP Apache
  • htdigest – gère les fichiers utilisateur pour l'authentification Digest
  • htpasswd – Gère les fichiers utilisateur pour l'authentification de base
  • logresolve – Résoudre les adresses IP en noms d'hôte dans les fichiers journaux Apache
  • rotatelogs – Programme de journalisation en pipeline pour faire pivoter les journaux Apache

Consultez également le manuel de configuration Apache en ligne local: http: // localhost / manual /.


Configuration de l'interface graphique Apache Red Hat / Fedora Core:

Outil de configuration de l'interface graphique:

  • Red Hat EL 4/5, Fedora 2-10: / usr / bin / system-config-httpd
  • Red Hat 8/9, Fedora Core 1: / usr / bin / redhat-config-httpd

Outil de configuration http Hat Red Hat Apache


Ajout de la connexion au site Web et de la protection par mot de passe: Consultez le didacticiel YoLinux sur la protection par mot de passe du site Web.

Analyse du fichier journal:

L'analyse des fichiers de journal Web Apache ne fournira pas de statistiques significatives
à moins qu’ils soient représentés graphiquement ou présentés de manière facile à lire. Le suivant
paquets à un bon travail de présentation des statistiques du site.

Services de statistiques de site Web:

Charger en charge votre serveur:

Liens Apache:

  • CgiWrap – Le wrapper setuid qui permet aux utilisateurs d'installer et d'exécuter leurs propres scripts cgi exécutés sous leur propre ID utilisateur
  • WWWThreads.org – Produit commercial – Logiciel avancé de téléconférence Web
  • Configuration de https (mod_ssl):

Analyse du fichier journal avec Analog:

Installation:

  • Red Hat / Fedora: miam installer analogique
  • Ubuntu / Debian: apt-get install analog

Les packages d'installation sont également disponibles sur la page de téléchargements analogiques.

Fichier de configuration: /etc/analog.cfg



LOGFILE / var / log / httpd /votre-domaine.com-access_log * http: // www.votre-domaine.com
UNCOMPRESS * .gz, *. Z "gzip -cd"
SUBTYPE * .gz, *. Z
#
OUTFILE / home /utilisateur1/public_html/analog/Report.html
#
NOM D'HOTE "VotreDomaine.com"
HOSTURL http: // www.votre-domaine.com

....
...
..

Pages REQINCLUDE                  # Demander les statistiques de la page uniquement



TOUT SUR
LANGUE US-ANGLAIS

Vous pouvez afficher les paramètres utilisés avec votre fichier de configuration (également utiles pour le débogage): réglages analogiques

Rendre les images analogiques disponibles pour le rapport des utilisateurs: ln -s / usr / share / analogique / images / * / home /utilisateur1/ public_html / analogique

Emplacement du fichier journal:

  • Red Hat / Fedora: / var / log / httpd /
  • Ubuntu / Debian: / var / log / apache2 /

La directive "TOUT SUR"active tous les éléments suivants:

Directive analogique La description
Tous les mois une ligne par mois
HEBDOMADAIRE SUR une ligne par semaine
DAILYREP ON une ligne par jour
DAILYSUM ON une ligne pour chaque jour de la semaine
HOURLYREP ON une ligne pour chaque heure de la journée
GENERAL ON le résumé général en haut
DEMANDE SUR quels fichiers ont été demandés
ÉCHEC SUR quels fichiers n'ont pas été trouvés
ANNUAIRE SUR Rapport d'annuaire
HÔTE SUR quels ordinateurs ont demandé des fichiers
ORGANISATION SUR de quelles organisations ils venaient
DOMAINE SUR dans quels pays ils étaient
REFERER SUR où les gens ont suivi les liens de
FAILREF ON où les gens ont suivi des liens brisés de
RECHERCHE SUR les phrases et les mots qu'ils ont utilisés …
MOT DE RECHERCHE SUR … pour vous trouver parmi les moteurs de recherche
NAVIGATEUR SUR quels types de navigateurs les gens utilisaient
OSREP ON et quels systèmes d'exploitation
FILETYPE ON types de fichiers demandés
TAILLE SUR taille des fichiers demandés
ÉTAT SUR nombre de chaque type de succès et d'échec

Cron job pour gérer plusieurs domaines: /etc/cron.daily/analog



#! / bin / sh
cp /opt/etc/analog-domain1.com.cfg /etc/analog.cfg
/ usr / bin / analogique
cp /opt/etc/analog-domain2.com.cfg /etc/analog.cfg
/ usr / bin / analogique

...

Liens:

Mesure des performances du serveur Web:

Voir le didacticiel de référence du serveur Web YoLinux.com.

Configuration du compte utilisateur FTPd et FTP:

De nombreux programmes FTP existent. Cet exemple couvre le populaire
      vsftpd (Red Hat default 9.0, Fedora Core, Suse) et
      wu-ftpd (Washington
University) qui est livré en standard avec RedHat (le dernier livré avec
RedHat 8.0 mais peut être installé sur n’importe quel système Linux).
(RPM: wu-ftpd)
Il existe d'autres programmes FTP, y compris proFtpd
(prend en charge l’authentification LDAP, les directives de type Apache, les fonctionnalités complètes
logiciel serveur ftp),
      bftpd, pure-ftpd (BSD libre et en option sur Suse), etc …

Pour les environnements hostiles, configurez un environnement chrooté pour sftp connexion cryptée et la rssh shell restreint pour OpenSSH.
Voir le tutoriel sur la sécurité Internet de YoLinux.com pour Linux sftp et rssh configuration

Voir aussi la configuration sftp chrootée préférée pour OpenSSH 4.9+

FTPd et SELinux: pour autoriser l'accès au démon FTPd et l'accès FTP aux répertoires de base des utilisateurs:

Suivre avec la commande service vsftpd redémarrer

Tutoriels de configuration FTPd:

Configuration du compte utilisateur vsFTPd et FTP:

Le serveur ftp vsFTPd a été mis à disposition pour la première fois dans Red Hat 9.0. Il a également été adopté par Suse et OpenBSD.
C'est actuellement le démon FTP recommandé pour une utilisation sur des serveurs FTP.

Activer vsftpd:

  • Red Hat / Fedora Core / CentOS:
    VsFTPd est un service autonome et par l’installation par défaut de Fedora Core,
    non contrôlé par xinetd comme l’installation par défaut de wu-ftpd.

    Commencez donc le service: service vsftpd start (ou: /etc/init.d/vsftpd start)

    Configurez vsftpd pour qu'il démarre au démarrage du système: chkconfig --add vsftpd

  • SuSE: Par défaut, vsftpd est un service contrôlé par xinetd. Autoriser
    Services de serveur FTP éditer le fichier /etc/xinetd.d/vsftpd et changer:

    désactiver = oui

    à:

    désactiver = non

    Redémarrez le démon xinetd: /etc/init.d/xinetd restart

    Remarque: vsftpd peut également être exécuté en tant que service autonome pour obtenir un résultat plus rapide.
    Temps de réponse.

  • Ubuntu (dapper / hardy / natty) / Debian:
    • Installer: apt-get install vsftpd
    • VsFTPd est un service autonome.
      • Début: /etc/init.d/vsftpd start
      • Arrêtez: /etc/init.d/vsftpd stop
      • Redémarrer: /etc/init.d/vsftpd restart

        (Utilisez cette commande après avoir modifié le fichier de configuration)

Pour plus d’informations sur le démarrage / l’arrêt / la configuration des services Linux, voir la
      Tutoriel YoLinux sur le processus d'initialisation Linux et l'activation du service.

Fichiers de configuration:

  • Fichier de configuration vsFTPd:
    • Fedora Core / Red Hat: /etc/vsftpd/vsftpd.conf
    • S.u.S.e. / Ubuntu (dapper / hardy / natty) / Debian: /etc/vsftpd.conf

    Par défaut pour Fedora Core 3:

    anonymous_enable = OUI            - FTP anonyme autorisé par défaut si vous commentez ceci.
                                      Répertoire par défaut utilisé: / var / ftp
    
    
    
    
    
    
    
    local_enable = YES                - Un-comment this to allow local users to log in with FTP.
                                            Must also set SELinux boolean: setsebool -P ftp_home_dir 1
    
    
    
    
    
    
    
    write_enable=YES                - Un-comment this to enable any form of FTP write or upload command.
    
    
    
    
    
    
    
    local_umask=022                 - Default is 077. Umask 022 is used by most other ftpd's.
    
    
    
    
    
    
    
    #anon_upload_enable=YES         - Un-comment to allow the anonymous FTP user to upload files. 
                                      Requires the above global write enabled. Directory must also be writable by user.
    
    
    
    #anon_mkdir_write_enable=YES    - Un-comment this to allow the anonymous FTP user to be able to create new directories.
    
    
    
    
    
    
    
    dirmessage_enable=YES           - Activate directory messages. 
                                      Messages given to remote users when they enter certain directories
    
    
    
    xferlog_enable=YES              - Activate logging of uploads/downloads.
    
    
    
    
    
    
    
    connect_from_port_20=YES        - PORT transfer connections originate from port 20 (ftp-data)
    
    
    
    
    
    
    
    #chown_uploads=YES              - Uploaded anonymous files set to a specified owner. (not root)
    
    
    
    #chown_username=quiconque
    
    #xferlog_file=/var/log/vsftpd.log - Specify logfile explicitly. Default is /var/log/vsftpd.log
    
    
    
    
    
    
    
    xferlog_std_format=YES          - Output to log file in standard ftpd xferlog format
    
    
    
    
    
    
    
    #idle_session_timeout=600       - Set timing out for an idle session.
    
    
    
    
    
    
    
    #data_connection_timeout=120    - Set timing out for an idle data connection. Port 20
    
    
    
    
    
    
    
    #nopriv_user=ftpsecure          - Run ftp server as an isolated and unprivileged user.
    
    
    
    
    
    
    
    # Enable this and the server will recognize asynchronous ABOR requests. ne pas
    # recommended for security (the code is non-trivial). Not enabling it, may confuse older FTP clients.
    #async_abor_enable=YES
    
    #ascii_upload_enable=YES        - Improve performance by disabling ASCII mode. 
                                      Disables command "ascii" and "SIZE /big/file".
    
    
    
    #ascii_download_enable=YES
    
    #ftpd_banner=Welcome to YoLinux - Customize the login banner string.
    
    
    
    
    
    
    
    #deny_email_enable=YES          - Disallow specified anonymous e-mail addresses. Used to combat certain DDoS attacks.
    
    
    
    #banned_email_file=/etc/vsftpd.banned_emails  (Ubuntu default. Red Hat: /etc/vsftpd/banned_emails)
    
    
    
    
    
    
    
    #chroot_list_enable=YES         - List users chroot()'d to their home directory. If "NO", list users not chroot()'d.
    
    
    
    #chroot_list_file=/etc/vsftpd.chroot_list     (Ubuntu default. Red Hat: /etc/vsftpd/chroot_list)
    
    
    
    
    
    
    
    ls_recurse_enable=YES           - Allow "ls -R" recursive directory list. Default is disabled.
    
    
    
    
    
    
    
    pam_service_name=vsftpd
    
    userlist_enable=YES             - (Ubuntu Default) Deny users specified in file /etc/vsftpd.user_list
                                      If "userlist_enable=NO" then allow specified users.
                                      Red Hat: /etc/vsftpd/user_list
    #deny_email_enable=YES          - Disallow specified anonymous e-mail addresses. Used to combat certain DDoS attacks.
    
    
    
    
    
    
    
    listen=YES                      - Enable for standalone mode as opposed to an xinetd service.
                                            Must set SELinux boolean: setsebool -P ftpd_is_daemon 1
    
    
    
    tcp_wrappers=YES
        

    Restart the FTP service if the config file is changed: service vsftpd restart (or: /etc/init.d/vsftpd restart)

    [Potential Pitfall]: vsftp does NOT support comments on the same line as a directive. i.e.:

    
    
    directive=XXX    # comment
          

    vsftp.conf man page

  • Specify list of local users chrooted to their home directories:
    • Red Hat: /etc/vsftpd/vsftpd/chroot_list
    • Ubuntu: /etc/vsftpd/vsftpd.chroot_list

    (Requires: chroot_list_enable=NO)

        user1
    user2
    ...
    user-n

    Si userlist_enable=YES, then specify users not to be chroot'd..

  • Specify list of users:
    • Red Hat: /etc/vsftpd/user_list
    • Ubuntu: /etc/vsftpd.user_list

    (Deny list of users requires: userlist_enable=YES)

    Also see PAM configuration below.

    racine
    poubelle
    démon
    adm
    lp
    synchroniser
    fermer
    arrêt
    ...

    Si userlist_enable=NO, then specify valid users.

  • PAM configuration file Fedora Core 3: /etc/pam.d/vsftpd
    
    
    #%PAM-1.0
    auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd.ftpusers onerr=succeed
    auth       required     pam_stack.so service=system-auth
    auth       required     pam_shells.so
    account    required     pam_stack.so service=system-auth
    session    required     pam_stack.so service=system-auth
        

    This causes PAM to check /etc/vsftpd.ftpusers for users who are denied.
    This duplicates /etc/vsftpd.user_list. Speciy user in both files as PAM is independent of vsftpd configuration.
        
        PAM authentication configuration file: ftpusers

    • Red Hat: /etc/vsftpd/ftpusers
    • Ubuntu: /etc/vsftpd.ftpusers
    
    
    racine
    poubelle
    démon
    adm
    lp
    synchroniser
    fermer
    arrêt
    ...
    ...
    ...
    user6     - Users to deny
    user8
    
    
    
    ...
    ...
        
  • Logrotate configuration file: /etc/logrotate.d/vsftpd.log
    
    
    /var/log/xferlog 
        # ftpd doesn't handle SIGHUP properly
        nocompress
        missingok
    
        

Sample vsFTPd configurations:

  • Anonymous download FTP server configuration: /etc/vsftpd/vsftpd.conf
    
    
    # Access rights
    anonymous_enable=YES          - Turn on anonymous FTP
    
    
    
    chown_uploads=YES             - Uploaded files owned by an assigned user
    
    
    
    chown_username=ftp            - Uploaded files owned by this assigned user
    
    
    
    local_enable=NO
    write_enable=NO               - No upload of files system changes allowed
    
    
    
    anon_upload_enable=NO
    anon_mkdir_write_enable=NO
    anon_other_write_enable=NO
    # Security
    anon_world_readable_only=YES
    connect_from_port_20=YES
    force_dot_files=NO
    guest_enable=NO
    hide_ids=YES
    pasv_min_port=50000
    pasv_max_port=60000
    # Features
    xferlog_enable=YES
    ls_recurse_enable=NO
    ascii_download_enable=NO
    async_abor_enable=YES
    # Performance
    one_process_model=NO
    idle_session_timeout=120
    data_connection_timeout=300
    accept_timeout=60
    connect_timeout=60
    max_per_ip=4
    anon_max_rate=50000
    
    pam_service_name=vsftpd
    userlist_enable=YES
    #enable for standalone mode
    listen=YES
    tcp_wrappers=YES
    

    Anonymous logins use the login name "anonymous" and then the user supplies their
    email address as a password. Any password will be accepted.
    Used to allow the public to download files from an ftp server.
    Generally, no upload is permitted.

  • Web hosting configuration: /etc/vsftpd/vsftpd.conf
    
    
    # Access rights
    anonymous_enable=NO
    local_enable=YES                              - Allow users to ftp to their home directories
    
    
    
    write_enable=YES                              - Allow users to STOR,  DELE, RNFR, RNTO, MKD, RMD, APPE and SITE
    
    
    
    local_umask=022
    # Security
    connect_from_port_20=YES
    force_dot_files=NO
    guest_enable=NO                               - Don't remap user name
    
    
    
    ftpd_banner=Welcome to Super Duper Hosting    - Customize the login banner string.
    
    
    
    chroot_local_user=YES                         - Limit user to browse their own directory only
    
    
    
    chroot_list_enable=YES                        - Enable list of system / power users
    
    
    
    chroot_list_file=/etc/vsftpd.chroot_list      - Actual list of system / power users
    
    
    
    hide_ids=YES
    pasv_min_port=50000
    pasv_max_port=60000
    # Features
    xferlog_enable=YES
    ls_recurse_enable=NO
    ascii_download_enable=NO
    async_abor_enable=YES
    dirmessage_enable=YES                         - Message greeting held in file .message or specify with message_file=...
    
    
    
    # Performance
    one_process_model=NO
    idle_session_timeout=120
    data_connection_timeout=300
    accept_timeout=60
    connect_timeout=60
    max_per_ip=4
    #
    pam_service_name=vsftpd
    userlist_enable=YES
    #enable for standalone mode
    listen=YES
    tcp_wrappers=YES
    

    Specify list of local users chrooted to their home directories: /etc/vsftpd/vsftpd.chroot_list

    Ubuntu typically: /etc/vsftpd.chroot_list

    (Requires: chroot_list_enable=NO)

    user1
    user2
    ...
    user-n

    Si userlist_enable=YES, then specify users not to be chroot'd..

[Potential Pitfall]:
Misspelling a directive will cause vsftpd to fail with little warning.

Fichier: .message



A NOTE TO USERS UPLOADING FILES:
   File names may consist of letters (a-z, A-Z), numbers (0-9),
   an under score ("_"), dash ("-") or period (".") only.
   The file name may not begin with a period or dash.

Test if vsftp is listening: netstat -a | grep ftp

[root]# netstat -a | grep ftp
tcp 0 0 *:ftp *:* LISTEN

Links:

WU-FTPd and FTP user account configuration:

The wu-ftpd FTP server can be downloaded (binary or source) from
http://wu-ftpd.therockgarden.ca/ (at one time: http://wu-ftpd.org).

There are three kinds of FTP logins that wu-ftpd provides:

  • anonymous FTP – one logs in with the username 'anonymous'
  • real FTP – log in with a real username and password and
    has access to the entire disk structure.
  • guest FTP – one logs in with a real user name and
    password, but the user is chroot'ed to his home directory and cannot
    escape from it.
    They are constrained to their home directory which also means that they don't
    have access to /bin/ls and other commands on the server.
    Thus a local minimalist environment must be set up.

This tutorial covers "guest" FTP configuration.


The file /etc/ftpaccess controls the configuration of ftp.

   
   
   
   # Don't allow system accounts to log in over ftp
   deny-uid %-99 %65534-
   deny-gid %-99 %65534-

   class   all   real,guest  *
   email [email protected]your-domain.com
   
   
   
   loginfails 5

   readme  README*    login
   readme  README*    cwd=*
   message /welcome.msg            login
   message .message                cwd=*

   compress        yes             all
   tar             yes             all
   chmod           no              guest,anonymous
   delete          no              anonymous    # delete files permission?
   overwrite       no              anonymous    # overwrite files permission?
   rename          no              anonymous    # rename files permission?
   delete          yes             guest        # delete files permission?
   overwrite       yes             guest        # overwrite files permission?
   rename          yes             guest        # rename files permission?
   umask           no              guest        # umask permission?

   log transfers anonymous,real inbound,outbound

   shutdown /etc/shutmsg

   passwd-check rfc822 warn

   # Must also create message file /etc/pathmsg of the guest directory.
   # In this case it refers to /home/user1/public_html/etc/pathmsg.
   path-filter  guest /etc/pathmsg  ^[-A-Za-z0-9_.]*$  ^.  ^-
   limit all 2
   noretrieve passwd .htaccess core    - Do not allow users to download files of these names
   
   
   
   limit-time * 20
   byte-limit in 5000                  - Limit file size
   
   
   
   guestuser *    - System user default categorized as a "guest". A "real" user can roam the system. Guestuser is chrooted.
   
   
   
   realgroup regularuserx regularusery - Assign real user privileges to members of groups "regularuserx" and "regularusery". 
                                    Visibility of the whole file system and subject to regular UNIX file permissions
   
   
   
   realuser user4                      - Assign real user privileges to user id "user4". 

   

   

   

   restricted-uid user1 user2 user3    - Restricts FTP to the specified directories
   
   
   
   guest-root /home/user1/public_html user1
   guest-root /home/user2/public_html user2
   guest-root /home/user3/public_html user3

Remarque:

  • user1, user2 et user3 refer to login accounts. Use the appropriate login name.
  • The above configuration disables anonymous FTP which allows anyone to
    perform an FTP login with the id anonyme and an email address as a
    password. To enable anonymous FTP, change the classe directive to:

      class   all   real,guest,anonymous  *
              
  • GUI FTP configuration tools:
    • /usr/bin/kwuftpd
    • /sbin/linuxconf

      (Note: Linuxconf is no longer included with Red Hat 7.3 and later)
  • Red Hat Linux assigns users a user id and group id which is the same.
        This means that it does not matter if you use a realuser ou
    realgroup directive as they will act the same.
  • Red Hat Linux 7.1 and later uses the xinet daemon to manage ftp connections.
        Thus xinetd must be running and configured to support ftp. le
        configuration file is /etc/xinetd.d/wu-ftpd.
        The command chkconfig wu-ftpd on will make the ftp server available.
        See xinet configuration for more info.
  • Allow override of deny-uid et / ou deny-gid:
         allow-uid user-to-allow
         
         
         
         allow-gid group-to-allow
        
  • Optional configuration:
    • Create a group ftpchroot
    • Add users to this group
    • Use directive: guestgroup ftpchroot

[Potential Pitfall]: Flaky ftp behavior,
timeouts, etc?? FTP works best with name resolution of the computer it is
communicating with.
This requires proper /etc/resolv.conf and name server (bind)
configuration, /etc/hosts or NIS/NFS configuration.


Fichier /home/user1/public_html/etc/pathmsg:

   
   
   
   A NOTE TO USERS UPLOADING FILES:
   File names may consist of letters (a-z, A-Z), numbers (0-9),
   an under score ("_"), dash ("-") or period (".") only.
   The file name may not begin with a period or dash.
   You have tried to upload a file with an inappropriate name.

The whole point of the chroot directory is to make the
user's home directory appear to be the root of the
filesystem (/) so one could not wander around the filesystem.
Configuration of /etc/ftpaccess will limit the user to their respective
directories while still offering access to /bin/ls and other system commands
used in FTP operation.

As root:

   
   
   
   cd /home/user1
   mkdir public_html
   chown $1.$1 public_html
   touch .rhosts             - Security protection
   chmod ugo-xrw .rhosts 

Man Pages:

Serveur:

  • ftpd – Internet File Transfer Protocol server

File Formats:

  • /etc/ftpaccess – Configuration file for ftpd
  • /etc/ftpservers – ftpd virtual hosting configuration file. (optionnel)
  • /etc/ftphosts – allow or deny access to certain accounts from various hosts. (optionnel)
  • /etc/ftpconversions – ftpd conversions database (for tar and compression)
  • /var/log/xferlog – FTP server logfile
  • ftp – File Transfer Client program

Configuration files: (RH 8.0+)

  • PAM configuration file: /etc/pam.d/ftp
    
    
    #%PAM-1.0
    auth       required     pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
    auth       required     pam_stack.so service=system-auth
    auth       required     pam_shells.so
    account    required     pam_stack.so service=system-auth
    session    required     pam_stack.so service=system-auth
    
  • Xinetd configuration file: /etc/xinetd.d/wu-ftpd
    
    
    service ftp
    
            disable = no
            socket_type             = stream
            wait                    = no
            user                    = root
            server                  = /usr/sbin/in.ftpd
            server_args             = -l -a
            log_on_success          += DURATION USERID
            log_on_failure          += USERID
            nice                    = 10
    
                 

    Note: wu-FTPd is controlled by xinetd and not a stand alone service like vsFTPd.

  • Logrotate configuration file: /etc/logrotate.d/ftpd
    /var/log/xferlog 
    nocompress

Plus d'information:

Man pages on related FTP commands and files:

  • chroot – Run with a special root directory
  • ftpcount – Show number of concurrent users.
  • ftpshut – close down the ftp servers at a given time
  • ftprestart – Restart previously shutdown ftp servers
  • ftpwho – show current process information for each ftp user
  • privatepw – Change WU-FTPD Group Access File Information (admin command)

Other FTP daemons:

FTP Pitfalls:

If you get the following error:

ftp> ls
227 Entering Passive Mode (208,188,34,109,208,89)
ftp: connect: No route to host

This means you have firewall issues most probably on the FTP server itself.
Start by removing the firewall "iptables" rules: iptables -F
Add rules until you discover what is causing the problem.

Passive mode:

Passive mode can also help one past the rules:

ftp> passive
Passive mode on.

This toggles passive mode on and off.
When on, FTP will be limited to ports specified in the vsftpd configuration file: vsftpd.conf with the parameters pasv_min_port et pasv_max_port

Firewall connection tracking module:

# cat /etc/sysconfig/iptables-config | grep ip_nat_ftp
IPTABLES_MODULES="ip_conntrack_ftp"

NAT firewall modules:

You can also try adding ip_nat_ftp to the list of auto-loaded modules:
(This will also load the dependency: ip_conntrack_ftp.)

# cat /etc/sysconfig/iptables-config | grep ip_nat_ftp
IPTABLES_MODULES="ip_nat_ftp"

Then restart the firewall: /etc/init.d/iptables condrestart

FTP will change ports during use. le ip_conntrack_ftp module will
consider each connection "RELATED". If iptables allows RELATED and ESTABLISHED connections then FTP will work.
i.e. rule: /etc/sysconfig/iptables

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

FTP fails because it can not change to the users home directory:

Erreur:

[[email protected] ~]$ ftp node.domain.com



Connected to XXX.XXX.XXX.XXX.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (XXX.XXX.XXX.XXX:user1):
331 Please specify the password.
Mot de passe:
500 OOPS: cannot change directory:/home/user1
Login failed.
ftp> bye

This is often a result of SELinux preventing the vsftpd process from accessing the user's home directory.
As root, grant access with the following command:

setsebool -P ftp_home_dir 1

Followed by: service vsftpd restart

Test your vsftpd SELinux settings: getsebool -a | grep ftp



allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
allow_tftp_anon_write --> off
ftp_home_dir --> on
ftpd_disable_trans --> off
ftpd_is_daemon --> on
httpd_enable_ftp_server --> off
tftpd_disable_trans --> off

FTPd SELinux man page

FTP Linux clients:

  • gftp: GUI GTK+
    Multi-threaded client. File transfer directory browsing and compare.
    Multiple protocols: FTP, FTPS (control connection only), HTTP, HTTPS,
    SSH and FSP protocols. Proxy support. Comes with Red Hat / Fedora Core.
  • KFTPgrabber: GUI KDE based client.simultaneous FTP sessions in separate tabs. Ability to limit upload and download speed.
  • kbear:
    GUI KDE based client. Connect to multiple servers, transfer files,
    directory browsing, file content browsing. Comes with S.U.S.e. Linux.
  • ftp: (/usr/kerberos/bin/ftp) kerberos enabled console ftp client. (RPM package FC3: krb5-workstation)

Basic user security:

When hosting web sites, there is no need to grant a shell account which only
allows the server to have more potential security holes. Current systems can
specify the user to have only FTP access with no shell by granting them the
"shell" /sbin/nologin provided with the system or the "ftponly"
shell described below. The shell can be specified in the file /etc/passwd of when creating a user with the command adduser -s /sbin/nologin user-id

[Potential Pitfall]: Red Hat 7.3 server with wu-ftp server 2.6.2-5
does not support this configuration to prevent shell access.
It requires users to have a real user shell.
c'est à dire. / bin / bash It works great in older and current Red Hat versions.
If it works for you, use it, as it is more secure to deny the user shell access. You can always deny telnet access.
You should NOT be using this problem ridden version of ftpd. Use the latest
wu-ftpd-2.6.2-11 which supports users with shell /opt/bin/ftponly

[Potential Pitfall]: Ubuntu – Setting the shell to the pre-configured shell /bin/false will NOT allow vsftp access.
One must create the shell "ftponly" as defined below to allow vsftp access with no shell.

  1. Disable remote telnet login access allowing FTP access only:

    Change the shell for the user in /etc/passwd de / bin / bash être /opt/bin/ftponly.

    
    
    ...
    user1:x:502:503::/home/user1:/opt/bin/ftponly
    ...
        

    Create file: /opt/bin/ftponly.

    Protection set to -rwxr-xr-x 1 root root

    with the command: chmod ugo+x /opt/bin/ftponly

    Contents of file:

    
    
    #!/bin/sh
    #
    # ftponly shell
    #
    trap "/bin/echo Sorry; exit 0" 1 2 3 4 5 6 7 10 15
    #
    [email protected]
    #System=`/bin/hostname`@`/bin/domainname`
    #
    /bin/echo
    /bin/echo "********************************************************************"
    /bin/echo "    You are NOT allowed interactive access."
    /bin/echo
    /bin/echo "     User accounts are restricted to ftp and web access."
    /bin/echo
    /bin/echo "  Direct questions concerning this policy to $Admin."
    /bin/echo "********************************************************************"
    /bin/echo
    #
    # C'ya
    #
    exit 0
        

    The last step is to add this to the list of valid shells on the system.

    Add the line /opt/bin/ftponly à /etc/shells.

    Sample file contents: /etc/shells

    
    
    / bin / bash
    /bin/bash1
    /bin/tcsh
    /bin/csh
    /opt/bin/ftponly
        

    See man page on /etc/shells.

    An alternative would be to assign the shell /bin/false ou /sbin/nologin qui est devenu
    available in later releases of Red Hat, Debian and Ubuntu. In this case the shell /bin/false ou /sbin/nologin would have to be added to /etc/shells to allow them to be used as a valid shell for FTP while disabling ssh or telnet access.

  2. Set file quotas to limit user account.

For more on Linux security see the: YoLinux.com Internet web site Linux server security tutorial

Domain Name Server (DNS) configuration using Bind version 8 or 9:

Two of the most popular ways to configure the program Bind
(Berkeley Internet Domain software) to perform DNS
services is in the role of (1) ISP or (2) Web Host.

  1. In an ISP configuration for clients (web surfers) connected to the internet, the DNS server must resolve IP addresses for any
    URL the user wishes to visit. (See DNS caching server)
  2. In a purely web hosting configuration, Bind will only resolve for the
    IP addresses of the domains which are being hosted. This is the configuration
    which will be discussed and is often called an "Authoritative-only Nameserver".

When resolving IP addresses for a domain, Internic is
expecting a "Primary"
and a "Secondary" DNS name server. (Sometimes called Master and Slave)
Each DNS name server requires the file /etc/named.conf and the files it
points to.
This is typically two separate computer systems hosted on two different
IP addresses. It is not necessary that the Linux servers be dedicated to
DNS as they may run a web server, mail server, etc.

Note on Bind versions: Red Hat versions 6.x used Bind version 8.
Release 7.1 of Red Hat began using Bind version 9 and the GUI configuration
outil bindconf was introduced for those of you that like a pretty
point and click interface for configuration.

Installation Packages:

  • Red Hat / Fedora Core / CentOS: bind, bind-chroot, bind-libs, bind-utils, system-config-bind
    • bind-chroot: Security jail for operation of bind.
    • bind-utils: Utility commands like nslookup, host, dig
    • system-config-bind: GUI config tool system-config-bind and related configuration files (/etc/security/console.apps/bindconf).
    • caching-nameserver: We will not be covering this as it is not required for web hosting. This is used by internet providers so their clients can cache the DNS entries of the sites they are visiting.
  • Ubuntu (dapper/hardy/natty) / Debian: bind9

Configuration files:

Red Hat / Fedora / CentOS:

Fichier La description Directory Chrooted Directory
named.conf Primary/Secondary DNS server configuration.
(See default file /usr/share/doc/bind-9.X.X/sample/etc/named.conf)
/etc/ /var/named/chroot/etc/
named.root.hints Configuration for recursive service. Required for all zones.
(See default file /usr/share/doc/bind-9.X.X/sample/etc/named.root.hints)
/etc/ /var/named/chroot/etc/
nommé Red Hat system variables. /etc/sysconfig/ pas de changement
rndc.key Primary/Secondary DNS server configuration. /etc/ /var/named/chroot/etc/
Zone files Configuration files for each domain. Create this file to resolve host name internet queries i.e. define IP address of web (www) and mail servers in the domain. /var/named/ /var/named/chroot/var/named/

Debian / Ubuntu:

Fichier La description Directory Chrooted Directory
named.conf
named.conf.options
named.conf.local
Primary/Secondary DNS server configuration. /etc/bind/ /var/bind/chroot/etc/bind/
rndc.key Primary/Secondary DNS server configuration. /etc/ /var/bind/chroot/etc/
Zone files Configuration files for each domain. /var/bind/data/ /var/bind/chroot/var/bind/data/

Primary server (master):

File: named.conf
Red Hat / Fedora Core / CentOS: /etc/named.conf (chroot dir: /var/named/chroot/etc/named.conf) et /etc/sysconfig/named for system variables.

Ubuntu / Debian: /etc/bind/named.conf Place local definitions in /etc/bind/named.conf.options et /etc/bind/named.conf.local

Simple example: (no views)

options                                      - Ubuntu stores options in /etc/bind/named.conf.options
        
        
        
        version "Bind";                       - Don't disclose real version to hackers
        
        
        
        directory "/var/named";               - Specified so relative path names can be used. Full path names still allowed.
        
        
        
        allow-transfer  XXX.XXX.XXX.XXX; ;  - IP address of secondary DNS
        
        
        
        recursion no;
        auth-nxdomain no;                     - conform to RFC1035. (default)
        fetch-glue no;                  - Bind 8 only! Not used by version 9



;

zone "localhost" 
        type master;
        file "/etc/bind/db.local";
;
zone "0.0.127.in-addr.arpa" 
        type master;
        file "/etc/bind/db.127";
;

zone "your-domain.com"                 - Ubuntu separates the zone definitions into /etc/bind/named.conf.local 
        
        
        
        type master;                    - Specify master, slave, forward or hint
        
        
        
        file "data/named.your-domain.com"; 
        notify yes;                     - slave servers are notified when the zone is updated.
        
        
        
        allow-update  none; ;         - deny updates from other hosts (default: none)
        
        
        
        allow-query  any; ;           - allow clients to query this server (default: any)



;
zone "your-domain-2.com"
        type master;
        file "data/named.your-domain-2.com";
        notify yes;
;

Remarque:

  • The omission of zone ".". Required if providing a recursive service.
  • Ubuntu includes the separated file of zone directives using the directive:

    include "/etc/bind/named.conf.local";

BIND Views:
The BIND naming service can support "views" which allow various sub-networks (i.e. private internal or public external networks) to have a different domain name resolution result.

  • If no views are specified then use the configuration shown above.
  • The match-up between the "view" and the view client which receives the DNS information is specified by the match-clients statement.
  • If even one view is specified, then ALL zones MUST be associated with a "view".
  • Bind 9 allows for views which allow different zones to be served to different types of clients, localhost, private networks and public networks. This maps to the three view names "localhost_resolver", "interne" and "externe":
    • localhost_resolver: Supports name resolution for the system (localhost) using BIND. Support for use of bind also has to be configured in /etc/nsswitch.conf
    • internal: User specified Local Area Network (LAN). If not used to support a local private LAN, remove (or comment out) this view.
    • external: The general public internet defined as client "any".
  • If you are only setting up a caching name server, then only specify the view "localhost_resolver" (delete all other views).
  • In order to support a DNS for internet domains using views, one will have to configure an "external" view

Typical Red Hat Enterprise 5 example: (Bind 9.3.4 with three "views")

options

        directory "/var/named"; // the default
        dump-file               "data/cache_dump.db";
        statistics-file         "data/named_stats.txt";
        memstatistics-file      "data/named_mem_stats.txt";

;
enregistrement

    //  By default, SELinux policy does not allow named to modify the /var/named
    //  directory, so put the default debug log file in data/ :
 
        channel default_debug 
                file "data/named.run";
                severity dynamic;
        ;
;
view "localhost_resolver"

    //  This view sets up named to be a localhost resolver ( caching only nameserver ).
    //  If all you want is a caching-only nameserver, then you need only define this view:
    match-clients            localhost; ;
    ...
;
view "internal"

    // This view will contain zones you want to serve only to "internal" clients
    // that connect via your directly attached LAN interfaces - "localnets" .
    // For local private LAN. Not covered in this tutorial.
    // Delete this view if web hosting with no local LAN.
    match-clients            localnets; ;
    ...
;
key ddns_key

        algorithm hmac-md5;
        secret "use /usr/sbin/dns-keygen to generate TSIG keys";
;
view    "external"

    // This view will contain zones you want to serve only to "external" 
    // public internet clients. This is covered below.
    match-clients            any; ;
    ...
    ..
;
          

Default configuration files: Red Hat may supply the default configuration in: /usr/share/doc/bind-9.X.X/sample/etc/named.conf

  • cp /usr/share/doc/bind-9.X.X/sample/etc/named.conf /var/named/chroot/etc
  • cp /usr/share/doc/bind-9.X.X/sample/etc/named.root.hints /var/named/chroot/etc
  • chcon -u system_u -r object_r -t named_conf_t /var/named/chroot/etc/named.conf /var/named/chroot/etc/named.root.hints

view "localhost_resolver": If supporting a caching DNS server (not required to support a web domain) you will also need the files:

  • cp /usr/share/doc/bind-9.X.X/sample/etc/named.rfc1912.zones /var/named/chroot/etc
  • cp /usr/share/doc/bind-9.X.X/sample/var/named/localdomain.zones /var/named/chroot/var/named

    also from /usr/share/doc/bind-9.X.X/sample/var/named/: localhost.zones, named.local, named.zero, named.broadcast, named.ip6.local, named.root

view "external": (master) – details –

view    "external"

/* This view will contain zones you want to serve only to "external" clients
 * that have addresses that are not on your directly attached LAN interface subnets:
 * /
        match-clients            any; ;
        match-destinations       any; ;
        allow-transfer  XXX.XXX.XXX.XXX; ;  - IP address of secondary DNS

        

        

        

        recursion no;
        // you'd probably want to deny recursion to external clients, so you don't
        // end up providing free DNS service to all takers

        // all views must contain the root hints zone:
        include "/etc/named.root.hints";

        // These are your "authoritative" external zones, and would probably
        // contain entries for just your web and mail servers:

        zone "your-domain.com" 
                type master;
                file "/var/named/data/external/named.your-domain.com";
                notify yes;
                allow-update  none; ;
        ;
 
        // You can also add the zones as a separate file like they do in Ubuntu by adding the following statement
        
        
        
        include "/etc/named.conf.local";      
;

DNS key:

Use the following command /usr/sbin/dns-keygen to create a key.
Add this key to the "secret" statement as follows:

key ddns_key

        algorithm hmac-md5;
        secret "XlYKYLF5Y7YOYFFFY6YiYYXyFFFFBYYYYFfYYYJiYFYFYYLVrnrWrrrqrrrq";
;

Man Pages:

Forward Zone File: /var/named/named.your-domain.com

Red Hat 9 / CentOS 3: /var/named/named.your-domain.com

Red Hat EL4/5, Fedora 3+, CentOS 4/5: [Chrooted] /var/named/chroot/var/named/data/named.your-domain.com

Red Hat EL4/5, Fedora 3+, CentOS 4/5: /var/named/data/named.your-domain.com

Ubuntu / Debian: /etc/bind/data/named.your-domain.com

$TTL 604800         - Bind 9 (and some of the later versions of Bind 8) requires $TTL statement.
                     Measured in seconds. This value is 7 days.
your-domain.com. IN      SOA  ns1.your-domain.com. hostmaster.your-domain.com. (
   2000021600 ; en série     - Many people use year+month+day+integer as a system.
   
   
   
   86400 ; rafraîchir         - How often secondary servers (in seconds) should check in for changes in serial number. (86400 sec = 24 hrs)
   
   
   
   7200 ; réessayez            - How long secondary server should wait for a retry if contact failed.
   
   
   
   1209600 ; expirer        - Secondary server to purge info after this length of time.
   
   
   
   86400 ) ; default_ttl   - How long data is held in cache by remote servers.
       
       
       
       IN A       XXX.XXX.XXX.XXX  - Note that this is the default IP address of the domain. 
                                     I put the web server IP address here so that domain.com points to the same servers as www.domain.com



;
; Name servers for the domain
;
       IN NS         ns1.your-domain.com.
       IN NS         ns2.your-domain.com.
;
; Mail server for domain
;
       IN MX    5    mail               - Identify "mail" as the node handling mail for the domain. Faire NE PAS specify an IP address!



;
; Nodes in domain
;
node1  IN A          XXX.XXX.XXX.XXX    - Note that this is the IP address of node1



ns1    IN A          XXX.XXX.XXX.XXX    - Optional: For hosting your own primary name server. Note that this is the IP address of ns1



ns2    IN A          XXX.XXX.XXX.XXX    - Optional: For hosting your own secondary name server. Note that this is the IP address of ns2



mail   IN A          XXX.XXX.XXX.XXX    - Identify the IP address for node mail.



;
; Aliases to existing nodes in domain
;
www    IN CNAME      node1              - Define the webserver "www" to be node1.



ftp    IN CNAME      node1              - Define the ftp server to be node1.
                

DNS record types and format:

DNS record Description and Format
SOA Start of Authority: Primary domain server and contact info

Note that there is a period following the primary domain server and contact email.

Note that the email address is in the form where the first period represents the "@" symbol of the email address.

your-domain.com in SOA ns1.your-domain.com. webmaster.your-domain.com.

ou

@ in SOA ns1.your-domain.com. webmaster.your-domain.com.

[Potential Pitfall]: Incorrect specification of the primary name server may result in the following message in /var/log/messages:

view localhost_resolver: received notify for zone 'your-domain.com': not authoritative
SOA attribute La description
en série Never use a value greater than 2147483647 for a 32 bit processor.
Increment to a higher value to indicate an update to the slave server.
rafraîchir Time increment (seconds) between update checks of the serial number with the primary server
réessayez Time elapsed before a slave will contact the primary server if a connection failed
expirer Time till primary server information is considered invalid and should be refreshed if there is a new DNS query
le minimum Time for DNS servers should hold domain information in their cache before purging
DANS Indicate Internet.
NS Specify the Authoritative Name servers for the domain.
UNE Specify the IP address associated with the host name.
Format: nom d'hôte IN A XXX.XXX.XXX.XXX
Note that in my example, no hostname is specified for the first record. This will define the default for the domain.
CNAME Specify an alias for the host name.
MX Mail exchange record. Specify a priority number for the primary and back-up mail servers. The lowest number indicates the default mail server for the domain
PTR Used to specify the reverse DNS lookup

MX records for 3rd party off-site mail servers:

your-domain.com.                IN MX  10 mail1.offsitemail.com.
your-domain.com.                IN MX  20 mail2.offsitemail.com.
      

Append to the above example file.

Initial configuration:
Note that Red Hat may supply the default zone configuration in: /usr/share/doc/bind-9.X.X/sample/var/named/

  • cp /usr/share/doc/bind-9.X.X/sample/var/named/localhost.zone /var/named/chroot/var/named/data/
  • cp /usr/share/doc/bind-9.X.X/sample/var/named/localdomain.zone /var/named/chroot/var/named/data/
  • cp /usr/share/doc/bind-9.X.X/sample/var/named/named.broadcast /var/named/chroot/var/named/data/
  • cp /usr/share/doc/bind-9.X.X/sample/var/named/named.ip6.local /var/named/chroot/var/named/data/
  • cp /usr/share/doc/bind-9.X.X/sample/var/named/named.zero /var/named/chroot/var/named/data/
  • cp /usr/share/doc/bind-9.X.X/sample/var/named/named.local /var/named/chroot/var/named/data/
  • cp /usr/share/doc/bind-9.X.X/sample/var/named/named.root /var/named/chroot/var/named/data/
  • cd /var/named/chroot/var/named/data/
  • chcon -u system_u -r object_r -t named_cache_t localhost.zone localdomain.zone named.broadcast named.ip6.local named.zero named.root named.local

A file suffix of "zone" is also common i.e. your-domain.com.zone

Secondary server (slave):

File: named.conf
Red Hat / Fedora Core / CentOS: /etc/named.conf

Ubuntu / Debian: /etc/bind/named.conf

Simple example with no views:

options                                - Ubuntu stores options in /etc/bind/named.conf.options
        
        
        
        version "Bind";                 - Don't disclose real version to hackers
        
        
        
        directory "/var/named";
        allow-transfer  none; ;    - Slave is not transfering updates to anyone else
        
        
        
        recursion no;
        auth-nxdomain no;               - conform to RFC1035. (default)
        fetch-glue no;                - Bind 8 only!    Not used by version 9



;
zone "localhost" 
        type master;
        file "/etc/bind/db.local";       - Ubutu: /etc/bind/db.local, Red Hat: /var/named/named.local



;
zone "0.0.127.in-addr.arpa" 
        type master;
        file "/etc/bind/db.127";
;

zone "your-domain.com"
        type slave;          
        file "named.your-domain.com";   - Specify slaves/named.your-domain.com for RHEL chrooted bind
        masters  XXX.XXX.XXX.XXX; ;   - IP address of primary DNS



;
zone "your-domain-2.com"
        type slave;          
        file "named.your-domain-2.com";
        masters  XXX.XXX.XXX.XXX; ;
;
        

view "external": (slave)

view    "external"

        match-clients            any; ;
        match-destinations       any; ;
        allow-transfer  aucun; ;  - Slave does not transfer to anyone, slave receives
        
        
        
        recursion no;
        include "/etc/named.root.hints";

        zone "your-domain.com" 
                type slave;
                file "/var/named/slaves/external/named.your-domain.com";
                notify no;                  - Slave does not notify, slave is notified by master
                
                
                
                masters  XXX.XXX.XXX.XXX; ; - State IP of master server
        
        
        
        ;
;

Note: RHEL, CentOS, Fedora use chrooted directory structure
permissions which require the use of the slaves sub-directory /var/named/slaves

Slave Zone Files: These are transfered from master to slave and cached by slave. There is no need to generate a zone file on the slave.

Information additionnelle:

[Potential Pitfall]: Ubuntu dapper/hardy/natty – Path names used can not violate Apparmor security rules as defined in /etc/apparmor.d/usr.sbin.named. Note that the slave files are typically named "/var/lib/bind/named.your-domain.com" as permitted by the security configuration.

[Potential Pitfall]: Ubuntu dapper/hardy/natty – Create log file and set ownership and permission for file not created by installation:

  • touch /var/log/bindlog
  • chown root.bind /var/log/bindlog
  • chmod 664 /var/log/bindlog

[Potential Pitfall]: Error in /var/log/messages:



transfer of 'yolinux.com/IN' from XXX.XXX.XXX.XXX#53: failed while receiving responses: permission denied
      

Named needs write permission on the directory containing the file. Ce
condition often occurs for a new "slave" or "secondary" name server
where the zone files
do not yet exist.
The default (RHEL, CentOS, Fedora, …):

  • drwxr-x--- 4 root named 4096 Aug 25 2004 named
  • drwxrwx--- 2 named named 4096 Sep 17 20:37 slaves

Fix: In named.conf specify that the slaves to go to slaves directory /var/named/chroot/var/named/slaves with the directive:

file "slaves/named.your-domain.com";

Bind Defaults:

After the configuration files have been edited, restart the name daemon.

/etc/init.d/named restart

(Note: Ubuntu / Debian restart: /etc/init.d/bind9 restart)

Bind zone transfers work best if the clocks of the two systems are synchronised.
See the YoLinux SysAdmin Tutorial: Time and ntpd

File: /var/named/named.your-domain.com

This is created for you by Bind on the slave (secondary) server when it replicates from Primary server.


DNS GUI configuration:

  • Red Hat EL 4/5, Fedora 2-10: /usr/bin/system-config-bind
  • Red Hat 8/9, Fedora Core 1: /usr/bin/redhat-config-bind

Red Hat bind configuration toolRed Hat bind configuration tool: SOA zone


Test DNS:

Must install packages:

  • Red Hat / Fedora Core / SuSE: bind-utils
  • Ubuntu (dapper/hardy/natty) / Debian: bind9-host

Test the name server with the
          hôte
command in interactive mode:

   hôte  node.domain-to-test.com your-nameserver-to-test.domain.com
          

Note: The name server may also be specified by IP address.

ou

Test the name server with the
          nslookup
command in interactive mode:

            nslookup
> server your-nameserver-to-test.domain.com > node.domain-to-test.com > exit

Test the MX record if appropriate:

            nslookup -querytype=mx domain-to-test.com
   
   OU

   host -t mx domain-to-test.com
          

Test using the dig command:

            dig @name-server domain-to-query

   OU

   dig @IP-address-of-name-server domain-to-query
          

Test your DNS with the following DNS diagnostics web site: DnsStuff.com


Extra logging to monitor Bind:

Add the following to your /etc/named.conf file.

logging 
        channel bindlog 
                           // Keep five old versions of the log-file (rotates logs)
                           
                           
                           
                           file "/var/log/bindlog"  versions 5 size 1m;
                           print-time yes;
                           print-category yes;
                           print-severity yes;
                        ;
/*      If you want to enable debugging, eg. using the 'rndc trace' command,
 *      named will try to write the 'named.run' file in the $directory (/var/named).
 *      By default, SELinux policy does not allow named to modify the /var/named directory,
 *      so put the default debug log file in data/ :
 * /
        channel default_debug 
                file "data/named.run";
                severity dynamic;
        ;
        category xfer-out  bindlog; ;         - Zone transfers
        
        
        
        category xfer-in   bindlog; ;         - Zone transfers
        
        
        
        category security  bindlog; ;         - Approved/unapproved requests







//      The following logging statements, panic, insist and response-checks are 
//      valid for Bind 8 only. Do not user for version 9.
        category panic  bindlog; ;            - System shutdowns
        
        
        
        category insist  bindlog; ;           - Internal consistency check failures
        
        
        
        category response-checks  bindlog; ;  - Messages



;
      

Chroot Bind for extra security:

Note: Most modern Linux distributions default to a "chrooted" installation.
This technique runs the Bind name service with a view of the filesystem
which changes the definition of the root directory "/" to a directory
in which Bind will operate. c'est à dire. /var/named/chroot.

The following example uses the Red Hat RPM bind-8.2.3-0.6.x.i386.rpm. Applies to Bind version 9 as well.

The latest RedHat bind updates run the named as user "named" to avoid a lot of
earlier hacker exploits. To chroot the process is to create an even more
secure environment by limiting the view of the system that the process
can access. The process is limited to the chrooted directory assigned.

The chroot of the named process to a directory under a given user will
prevent the possibility of an exploit which at one time would result in
root access.
The original default RedHat configuration (6.2) ran the named process as root,
thus if an exploit was found, the named process will allow the hacker to use
the privileges of the root user. (no longer true)

Named Command Sytax:

            named -u utilisateur -g groupe -t directory-to-chroot-to
          

Exemple:

    named -u named -g named -t /opt/named

When chrooted, the process does not have access to system
libraries thus a
local lib directory is required with the appropriate library files –
theoretically. This does not seem to be the case here and as noted
above in chrooted FTP.
It's a mystery to me but it works????
Another method to handle libraries is to re-compile the named binary
with everything statically linked. Ajouter -static to the compile options.
The chrooted process should also require a local /etc/named.conf etc… but doesn't seem to???

Script to create a chrooted bind environment:



#!/bin/sh
cd /opt
mkdir named
cd named
mkdir etc
mkdir bin
mkdir var
cd var
mkdir named
mkdir run
cd ..
chown -R named.named bin etc var

You can probably stop here. If your system acts like a chrooted system should,
then continue with the following:

cp -p /etc/named.conf etc
cp -p /etc/localtime  etc
cp -p /bin/false bin
echo "named:x:25:25:Named:/var/named:/bin/false" > etc/passwd
echo "named:x:25:" > etc/group
touch  var/run/named.pid 

si [ -f /etc/namedb ]
puis
   cp -p /etc/namedb etc/namedb
Fi

mkdir dev
cd dev

# Create a character unbuffered file.
mknod -m ugo+rw null c 1 3     

cd ..
chown -R named.named bin etc var

Add changes to the init script: /etc/rc.d/init.d/named



#!/bin/bash
#
# named           This shell script takes care of starting and stopping
#                 named (BIND DNS server).
#
# chkconfig: - 55 45
# description: named (BIND) is a Domain Name Server (DNS) 
# that is used to resolve host names to IP addresses.
# probe: true

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ $NETWORKING = "no" ] && exit 0

[ -f /etc/sysconfig/named ] && . /etc/sysconfig/named 

[ -f /usr/sbin/named ] || exit 0

[ -f /etc/named.conf ] || exit 0

RETVAL=0

start() 
        # Start daemons.
        echo -n "Starting named: "
        daemon named -u named -g named -t /opt/named   # Change made here
	RETVAL=$?
 	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/named
écho
	return $RETVAL

stop() 
        # Stop daemons.
        echo -n "Shutting down named: "
        killproc named
	RETVAL=$?
	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/named
        écho
	return $RETVAL

rhstatus() 
	/usr/sbin/ndc status
	return $?

restart() 
Arrêtez
début

reload() 
	/usr/sbin/ndc reload
	return $?

probe()  echo start
	return $?


# See how we were called.
case "$1" in
	start)
début
		;;
	stop)
Arrêtez
		;;
	status)
		rhstatus
		;;
	restart)
redémarrer
		;;
	condrestart)
		[ -f /var/lock/subsys/named ] && restart || :
		;;
	reload)
recharger
		;;
	probe)
sonde
		;;
	*)
        	echo "Usage: named condrestart"
sortie 1
esac

exit $?

Note: The current version of bind from the RedHat errata updates and security
fixes (http://www.redhat.com/support/errata/)
runs the named process as user "named" in the home (not chrooted) directory
/var/named with no shell available. (named -u named)
This should be secure enough.
Proceed with a chrooted installation if your are paranoid.

Voir:


Chrooted DNS configuration:

Modern releases of Linux (i.e. Fedore Core 3, Red Hat Enterprise Linux 4)
come pre-configured to use "chrooted" bind. This security feature forces
even an exploited version of bind to only operate within the "chrooted" jail
/var/named/chroot
which contains the familiar directories:

  • /var/named/chroot/etc: Configuration files
  • /var/named/chroot/dev: devices used by bind:
    • /dev/null
    • /dev/random
    • /dev/zero

    (Real devices created with the mknod command.)

  • /var/named/chroot/var: Zone files and configuration information.

These directories are generated and configured by the Red Hat/Fedora RPM package "bind-chroot".

If building from source you will have to generate this configuration manually:

  • mkdir -p /var/named/chroot
  • mkdir /var/named/chroot/dev
  • mknod /var/named/chroot/dev/null c 1 3
  • mknod /var/named/chroot/dev/zero c 1 5
  • mknod /var/named/chroot/dev/random c 1 8
  • chmod 666 -R /var/named/chroot/dev
  • mkdir -p /var/named/chroot/etc
  • ln -s /var/named/chroot/etc/named.conf /etc/named.conf
  • mkdir -p /var/named/chroot/var/named
  • ln -s /var/named/chroot/var/named/named.XXXX /var/named/named.XXXX
  • ln -s /var/named/chroot/var/named/named.YYYY /var/named/named.YYYY
  • mkdir -p /var/named/chroot/var/named/slaves
  • mkdir -p /var/named/chroot/var/named/data
  • mkdir -p /var/named/chroot/var/run
  • mkdir -p /var/named/chroot/var/tmp
  • chown -R named:named /var/named/chroot
  • chown -R root:named /var/named/chroot/var/named


Load Balancing of servers using Bind: DNS Round-Robin

This will populate DNS caching name servers around the world with different IP addresses for your web server www.your-domain.com

Fichier: /var/named/data/named.your-domain.com



$TTL 604800
your-domain.com.    IN      SOA  ns1.your-domain.com.  hostmaster.your-domain.com.

...
...

www   IN  A       192.168.1.1



www   IN  A       192.168.1.2



www   IN  A       192.168.1.3



www   IN  A       192.168.1.4



www   IN  A       192.168.1.5



www   IN  A       192.168.1.6

Remarque:

  • This example will resolve the www.your-domain.com URL to each of the IP addresses listed, one at a time for each request.
                  First request will resolve to 192.168.1.1, the second request will resolve to 192.168.1.2, etc.
  • A perfectly even load balance is not possible becaused network service providers run DNS caching servers which hold the resolved IP address for a different number of users.
  • Using multiple CNAME's to rotate records is no longer permissible in bind9.
  • Listing a record multiple times with the same IP address will not change the load sharing. Bind will ignore duplicate records.
  • Reducing the time to live (TTL) will cause load sharing to take place more frequently thus responding to a change in servers more quickly.

Also see lbnamed: lbnamed load balancing named


Bind/DNS Links:

Domain name registration:

  • Domain Name Registrars:
  • AfterNic.com – Domain name exchange and auction.
  • BuyDomains.com – Buy a domain name that a squatter is holding.

Note that the Name registrations policies for the registrars are stated at ICANN.org.

  • You must renew with the same registrar within five days BEFORE the expiration date. There is no rule for afterwards.
  • Most free a domain name 30 days after it expires.

Web Server Load Balancing:

Load balancing becomes important if your traffic volume becomes too great for either your server or network connection or both.
      Multiple options are available for load balancing.

  • DNS round-robin: Discussed above, this uses DNS to point users to random server in a list of appropriate servers. This spreads the load among the servers in the list.
  • Use a Linux Virtual Server to Create a Load Balance Cluster. See next section below.
  • Run a reverse proxy. See nginx ("engine X").
              From a single external internet network connection, route http, smtp, imap or pop3 traffic to various servers on an internal network. Results are pushed back to the nginx proxy for routing to the internet (no caching).
  • Run the Apache httpd web server module "mod_proxy" to offload processing of dynamic content to another web server. This acts as a reverse proxy, routing external traffic to various servers on an internal network.

Using a Linux Virtual Server to Create a Load Balance Cluster:

You can use a single Linux server to forward requests to a cluster of servers
using iptables for IP masquerading and IPVsadm to scale your load.
The load balancing server receiving and routing the requests is called the "Linux Virtual Server" (LVS).
The LVS receives the requests which are passed to the real servers which
process and reply to the request.
This reply is forwarded to the client by the LVS.

This feature is available with the Linux 2.4/2.6 kernel.
(If compiling kernel: Networking Options + IP: Virtual Server Configuration)

Configuration: This example will load balance http traffic to three web servers
and ftp traffic to a fourth server.

  • Enable Forwarding:
        (Also see YoLinux Networking Tutorial: Enable Forwarding)

    echo "1" > /proc/sys/net/ipv4/ip_forward
                  
  • Enable IP Masquerading:
    iptables -t nat -P POSTROUTING DROP
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

    For more on IP Masquerading, iptables and subnet addresses, see the
        YoLinux network gateway tutorial.

  • Enable virtual server:
    • Create virtual service and choose scheduler for http (80) and ftp (21):
      ipvsadm -A -t 66.218.88.103:80 -s wlc
      ipvsadm -A -t 66.218.88.103:21 -s wrr

      Command directives:

      • A: Add a virtual service defined by IP address, port number, and protocol.
      • -t: Use TCP service host:port
      • -s: scheduler:
        • rr: Robin Robin: distributes jobs equally amongst the avail-
                                      able real servers.
        • wrr: Weighted Round Robin.
        • lc: Least-Connection: assigns more jobs to real servers with
                                      fewer active jobs.
        • wlc: (Default) Weighted Least-Connection: assigns more jobs to servers
                                      with fewer jobs and relative to the real server's weight.
        • lblc, lblcr, dh, sh, sed, nq. See man page.
    • Configure load balancing cluser.
      ipvsadm -a -t 66.218.88.103:80 -r 176.168.1.1:80 -m
      ipvsadm -a -t 66.218.88.103:80 -r 176.168.1.2:80 -m -w 2
      ipvsadm -a -t 66.218.88.103:80 -r 176.168.1.3:80 -m
      ipvsadm -a -t 66.218.88.103:21 -r 176.168.1.4:21 -m

      Command directives:

      • -r: Real server.
      • -m: Use masquerading also known as network address translation (NAT)
      • -w: Weight is an integer specifying the capacity of a server relative to the others in the pool. The valid values of weight are 0 through to 65535. The default is 1.

Links:

Managing Web Server Daemons:

To view if these services are
running, type ps -aux and look for the httpd, inetd and named
services (daemons). These are background processes necessary to perform
the server tasks.

   
   
   
   root       681  0.0  0.5  2304  744 ?        S    Sep09   0:01 named
   nobody   28123  0.0  1.1  3036 1420 ?        S    Oct06   0:00 httpd
   nobody   28186  0.0  0.7  3044  896 ?        S    Oct06   0:00 httpd
   root       385  0.0  0.1  1136  232 ?        S    Sep09   0:00 inetd

A new installation will most likely NOT start the named background process
which may be started manually after configuration.

See the YoLinux Init Process Tutorial
pour plus d'informations.

The inetd (or xinetd) background process is the Internet daemon which
starts FTP when an ftp request is made.

Sys Admin Script:

Script to prepare an account: (Red Hat/Fedora)



#!/bin/sh
# Author Greg Ippolito
# Requires: /opt/etc/AccountDefaults/pathmsg favicon.ico  mwh-mini_tr.gif etc.
#           /opt/bin/ftponly
#   You must be root to run this script.
#
si [ $# -eq 0 ]
puis
   echo "Enter user id as a command argument"
else if [ -r /home/$1 ]
puis
   echo "User's home directory already exists"
autre
   echo "1)  Create user."
   adduser -m $1

   echo "2)  Set user Password."
   passwd $1

   echo "3)  Add read access to user directory so apache can read it."
   cd /home
   chmod ugo+rx $1
   cd $1

   echo "4)  Create web directories."
   mkdir public_html
   chown $1.$1 public_html
   chcon -R -h -u system_u -r object_r -t httpd_sys_content_t public_html
   cd public_html
   mkdir images
   chown $1.$1 images
   chcon -R -h -u system_u -r object_r -t httpd_sys_content_t images

   # Block potential for unauthenticated logins
   cd ../
   touch .rhosts
   chmod ugo-xrw .rhosts

   echo "5)  Create default web page"
   sed "/HEADING/s!HEADING!$1!" /opt/etc/AccountDefaults/default-index.html > index.html
   cp -p /opt/etc/AccountDefaults/favicon.ico .
   cp -p /opt/etc/AccountDefaults/default-logo.gif ./images
   cp -p /opt/etc/AccountDefaults/robots.txt .
   chown $1.$1 index.html favicon.ico robots.txt
   chcon -R -h -t httpd_sys_content_t index.html favicon.ico robots.txt
   chcon -R -h -t httpd_sys_content_t images/default-logo.gif

   echo "6)  Edit /etc/passwd file - change user shell to /opt/bin/ftponly"
   cp -p  /etc/passwd /etc/passwd-`date +%m%d%y`
   sed "/^$1/s!/bin/bash!/opt/bin/ftponly!" /etc/passwd-`date +%m%d%y` > /etc/passwd

#wu-ftp# Requires: /etc/ftpaccess guestuser restrict-uid
#wu-ftp#   echo "7)  Add user to /etc/ftpaccess file"
#wu-ftp#   cp -p  /etc/ftpaccess /etc/ftpaccess-`date +%m%d%y`
#wu-ftp#   sed "/^guestuser/s!guestuser !guestuser $1 !" /etc/ftpaccess-`date +%m%d%y` > /etc/ftpaccess
#wu-ftp#   sed "/^restricted-uid/s!restricted-uid !restricted-uid $1 !" /etc/ftpaccess-`date +%m%d%y` > /etc/ftpaccess
#wu-ftp#   echo "guest-root /home/$1/public_html $1" >> /etc/ftpaccess

   echo "7)  Add user to vsftpd chroot list
   cat `echo $1` >> /etc/vsftpd/vsftpd.chroot_list

   echo "8)  Setting Disk Quotas to default 50Mb limit:"
#  Use user johndoe as a prototype.
   edquota -p johndoe $1

   echo "9)  Admin Follow-up:"
   echo "     Modify quota.user if different than default"
   echo "     Make changes to Bind names services on dns1 and dns2 if necessary"
   echo "       Change /etc/http/conf/httpd.conf or 
   echo "       add config to /etc/http/conf.d/ if using a new domain name"
   echo "       Add e-mail aliases to mail server if necessary"
Fi
Fi

FYI: Sample robots.txt files:

Useful links and resources:

technical book image Livres:
Amazon book image

"Ubuntu Unleashed 2017 edition:"

Covering 16.10 and 17.04, 17.10 (12th Edition)

by Matthew Helmke, Andrew Hudson and Paul Hudson

Sams Publishing, ISBN# 0134511182

Amazon.com
Amazon book image

"Ubuntu Unleashed 2013 edition:"

Covering 12.10 and 13.04 (8th Edition)

by Matthew Helmke, Andrew Hudson and Paul Hudson

Sams Publishing, ISBN# 0672336243

(Dec 15, 2012)

Amazon.com
Amazon book image

"Ubuntu Unleashed 2012 edition:"

Covering 11.10 and 12.04 (7th Edition)

by Matthew Helmke, Andrew Hudson and Paul Hudson

Sams Publishing, ISBN# 0672335786

(Jan 16, 2012)

Amazon.com
Amazon book image

"Red Hat Enterprise Linux 7: Desktops and Administration"

by Richard Petersen

Surfing Turtle Press, ISBN# 1936280620

(Jan 13, 2017)

Amazon.com
Amazon book image

"Fedora 18 Desktop Handbook"

by Richard Petersen

Surfing Turtle Press, ISBN# 1936280639

(Mar 6, 2013)

Amazon.com
Amazon book image

"Fedora 18 Networking and Servers"

by Richard Petersen

Surfing Turtle Press, ISBN# 1936280698

(March 29, 2013)

Amazon.com
Amazon book image

"Fedora 14 Desktop Handbook"

by Richard Petersen

Surfing Turtle Press, ISBN# 1936280167

(Nov 30, 2010)

Amazon.com
Amazon book image

"Fedora 14 Administration and Security"

by Richard Petersen

Surfing Turtle Press, ISBN# 1936280221

(Jan 6, 2011)

Amazon.com
Amazon book image

"Fedora 14 Networking and Servers"

by Richard Petersen

Surfing Turtle Press, ISBN# 1936280191

(Dec 26, 2010)

Amazon.com
Amazon book image

"Practical Guide to Ubuntu Linux (Versions 8.10 and 8.04)"

by Mark Sobell

Prentice Hall PTR, ISBN# 0137003889

2 edition (January 9, 2009)

Amazon.com
Amazon book image

"Fedora 10 and Red Hat Enterprise Linux Bible"

by Christopher Negus

Wiley, ISBN# 0470413395

Amazon.com
Amazon book image

"Red Hat Fedora 6 and Enterprise Linux Bible"

by Christopher Negus

Sams, ISBN# 047008278X

Amazon.com
Amazon book image

"Fedora 7 & Red Hat Enterprise Linux: The Complete Reference"

by Richard Petersen

Sams, ISBN# 0071486429

Amazon.com
Amazon book image

"Red Hat Fedora Core 6 Unleashed"

by Paul Hudson, Andrew Hudson

Sams, ISBN# 0672329298

Amazon.com
Amazon book image

"Red Hat Linux Fedora 3 Unleashed"

by Bill Ball, Hoyt Duff

Sams, ISBN# 0672327082

Amazon.com
Amazon book image

"Red Hat Linux 9 Unleashed"

by Bill Ball, Hoyt Duff

Sams, ISBN# 0672325888

May 8, 2003

I have the Red Hat 6 version and I have found it to be very helpful.
    I have found it to be way more complete than the other Linux books.
    It is the most complete general Linux book in publication. While other
    books in the "Unleashed" series have dissapointed me, this book
    is the best out there.

Amazon.com
Amazon book image

"Apache Server Bible 2"

by Mohammed J. Kabir

ISBN # 0764548212, Hungry Minds

This book is very complete covering all aspects in detail. Ce n'est pas
    your basic reprint of the apache.org documents like so many others.

Amazon.com
Amazon book image

"Pro DNS and Bind"

by Ronald Aitchison

Apress, ISBN# 1590594940

Amazon.com

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.