Erreur 403 interdite lors de la tentative d'accès au serveur Web Apache 2.4.7 dans le navigateur

9

Lorsque j'accède au serveur Web Apache en utilisant localhost à partir du même PC serveur Web, il affiche la page par défaut Apache2 Ubuntu.

Mais lorsque j'accède au serveur Web Apache en utilisant 192.168.0.2 , cela donne une erreur interdite 403 (Interdit Vous n'avez pas la permission d'accéder à / sur ce serveur).

Détails du serveur Web

  • Ubuntu 14.04 LTS
  • Apache version 2.4.7

Commandes de propriété

www-data sudo adduser ftpuser www-data
sudo chown -R www-data:ftpuser /var/www
sudo chmod -R g+rwX /var/www

Dans le fichier etc / apache2 / apache2.conf

ServerName 192.168.0.2

<Directory/>
    AllowOverride All
    Require all granted
</Directory>

Dans le fichier etc / apache2 / port.conf

NameVirtualHost *:80
Listen *:80

Hôte virtuel pour un site Web

<VirtualHost *:80>
    ServerName mysite
    DocumentRoot /var/www/mysite
    <Directory /var/www/mysite>
        Options None FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>    
</VirtualHost>

Quels paramètres dois-je faire à quel endroit? Veuillez aider ...

K Ahir
la source
Je jetterais la ServerName 192.168.0.2ligne car la directive ServerName devrait avoir le nom comme www.server.com et non le numéro IP. Je pense que cela pourrait résoudre le problème. Pour ServerName, vous devez saisir le nom du serveur si vous l'avez. ServerName autorise l'hébergement virtuel basé sur le nom, ce qui permet d'avoir plus de sites Web sur la même IP.
personne
@nobody, déjà supprimé du fichier mais toujours pas de succès.
K Ahir

Réponses:

7

1. Vous devez configurer votre fichier / etc / hosts comme ceci:

127.0.0.1   localhost
127.0.0.1   test-site
127.0.1.1   my-hostname
# The following lines are desirable for IPv6 capable hosts. etc...

test-siteest le deuxième "localhost". Et my-hostnameest le "nom d'hôte système" défini dans /etc/hostname.


2. Vous devez définir et activer un hôte virtuel (VH):

Il existe un HTTP VH par défaut. Il est placé /etc/apache2/sites-available/. Le nom de fichier est 000-default.conf. Vous devez le modifier (vous pouvez le renommer, si vous le souhaitez, ou créer d'autres fichiers .conf, basés sur lui) et après cela, vous devez l'activer.

Vous pouvez l'activer manuellement en créant un "lien symbolique doux":

sudo ln -s /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-enabled/

Ou vous pouvez utiliser l' outil Apache2 appelé a2ensite , qui fait la même chose:

sudo a2ensite 000-default.conf

Supposons qu'il y ait 3 hôtes virtuels , SSL activé et domaine privé enregistré (SOS.info par exemple):

/etc/apache2/sites-available/http.SOS.info.conf
/etc/apache2/sites-available/https.SOS.info.conf

Et celui qui est créé aux fins de cette rubrique:

/etc/apache2/sites-available/http.test-site.conf

Le contenu des 2 premiers VH est:

$ cat /etc/apache2/sites-available/http.SOS.info.conf

<VirtualHost *:80>    
    ServerName SOS.info
    ServerAlias www.SOS.info
    ServerAdmin [email protected]

    # Redirect Requests to SSL
    Redirect permanent "/" "https://SOS.info/"

    ErrorLog ${APACHE_LOG_DIR}/http.SOS.info.error.log
    CustomLog ${APACHE_LOG_DIR}/http.SOS.info.access.log combined       
</VirtualHost>

Celui-ci redirige toutes les requêtes HTTP vers HTTPS.

$ cat /etc/apache2/sites-available/https.SOS.info.conf

<IfModule mod_ssl.c>    
    <VirtualHost _default_:443>    
        ServerName SOS.info
        ServerAlias www.SOS.info
        ServerAdmin [email protected]

        DocumentRoot /var/www/html  

        SSLEngine on    
        SSLCertificateFile /etc/ssl/certs/SOS.info.crt
        SSLCertificateKeyFile /etc/ssl/private/SOS.info.key
        SSLCertificateChainFile /etc/ssl/certs/SOS.info.root-bundle.crt
        #etc..
    </VirtualHost>    
</IfModule>

Il s'agit du HTTPS VH.

Le contenu de ces deux fichiers peut être publié dans un seul fichier, mais dans ce cas leur gestion ( a2ensite/ a2dissite) sera plus difficile.


Le troisième hôte virtuel est celui qui est créé pour nos besoins :

$ cat /etc/apache2/sites-available/http.test-site.conf

<VirtualHost *:80>
    ServerName test-site
    ServerAlias test-site.SOS.info

    DocumentRoot /var/www/test-site
    DirectoryIndex index.html

    ErrorLog ${APACHE_LOG_DIR}/test-site.error.log
    CustomLog ${APACHE_LOG_DIR}/test-site.access.log combined

    <Directory /var/www/test-site>
        # Allow .htaccess 
        AllowOverride All
        Allow from All
    </Directory>    
</VirtualHost>

3. Avec cette configuration, vous devez accéder à:

http://localhost     # pointed to the directory of the mine Domain 
https://localhost    # iin our case: /var/www/html (SOS.info), but you should get an error, because the SSL certificate

http://SOS.info      # which redirects to https://SOS.info
https://SOS.info     # you should have valid SSL certificate

http://www.SOS.info  # which is allied to http://SOS.info and redirects to https://SOS.info
https://www.SOS.info # which is allied to https://SOS.info

Sur l'exemple principal, vous devez accéder et :

http://test-site           # pointed to the directory /var/www/test-site
http://test-site.SOS.info  # which is allied to http://test-site

Essayez d'ouvrir le site dans le navigateur Web ou essayez simplement (dans le terminal) avec les commandes suivantes:

$ curl -L http://test-site/index.html
$ curl -L http://test-site.SOS.info/index.html

Bien sûr, vous devez avoir quelques index.htmlpages dans leur DocumentRoot :)



Je laisserai les prochaines notes à cause de la pédanterie :)


4. Vous avez besoin de `/ etc / apache2 / apache2.conf` correctement configuré.

C'est une bonne idée de passer du temps pour améliorer la sécurité de votre serveur. Ces manuels concernent la configuration de la sécurité: 1er et 2e . Ici, vous pouvez obtenir un certificat SSL gratuit. Ces sites vous aideront à vérifier vos progrès: 1er et 2e .

Selon les manuels de sécurité ci-dessus, le /etc/apache2/apache2.conffichier doit ressembler à:

Mutex file:${APACHE_LOCK_DIR} default

PidFile ${APACHE_PID_FILE}

Timeout 60

#KeepAlive Off
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

HostnameLookups Off

ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn

IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf

Include ports.conf

<Directory />
    Options None FollowSymLinks 
    AllowOverride None
    Require all denied
</Directory>

<Directory /var/www/>
    Options None FollowSymLinks 
    AllowOverride None
    Require all granted
</Directory>

AccessFileName .htaccess
<FilesMatch "^\.ht">
    Require all denied
</FilesMatch>

LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf

# Hide Server type in the http error-pages 
ServerSignature Off
ServerTokens Prod

# Etag allows remote attackers to obtain sensitive information 
FileETag None

# Disable Trace HTTP Request
TraceEnable off

# Set cookie with HttpOnly and Secure flag.
# a2enmod headers
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure

# Clickjacking Attack
Header always append X-Frame-Options SAMEORIGIN

# CX-XSS Protection
Header set X-XSS-Protection "1; mode=block"

# Disable HTTP 1.0 Protocol
RewriteEngine On
RewriteCond %{THE_REQUEST} !HTTP/1.1$
RewriteRule .* - [F]

# Change the server banner @ ModSecurity 
# Send full server signature so ModSecurity can alter it
ServerTokens Full
# Alter the web server signature sent by Apache
<IfModule security2_module>
    SecServerSignature "Apache 1.3.26"
</IfModule>
Header set Server "Apache 1.3.26"
Header unset X-Powered-By

# Hde TCP Timestamp
#   gksu gedit /etc/sysctl.conf
#   >> net.ipv4.tcp_timestamps = 0
# Test: sudo hping3 SOS.info -p 443 -S --tcp-timestamp -c 1

# Disable -SSLv2 -SSLv3 and weak Ciphers
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"

5. Configurez le pare-feu.

Pour autoriser / refuser l'accès externe à votre serveur Web, vous pouvez utiliser UFW (pare-feu simple):

sudo ufw allow http
sudo ufw allow https

Pour autoriser uniquement l' tcputilisation du protocole:

sudo ufw allow http/tcp
sudo ufw allow https/tcp

Vous pouvez utiliser et le numéro de port directement:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Juste au cas où vous pourriez recharger la "table des règles":

sudo ufw reload

Vous pouvez utiliser et l'interface GUI d'UFW, appelée gufw .

sudo apt update
sudo apt install gufw
gufw &

Choisissez le Officeprofil. Il établira: Status:ON, Incoming:Denyet Outgoing:Allowet ajoutez vos règles.


6. Si vous avez un routeur, n'oubliez pas de transférer certains ports:

Si vous avez un routeur et que vous souhaitez que votre serveur Web soit accessible depuis Internet , n'oubliez pas d'ajouter une redirection de port. Quelque chose comme ça .

pa4080
la source
Le fichier 000-default.conf se trouve déjà dans le dossier / etc / apache2 / sites-enabled /. Dois-je donc l'activer en utilisant la commande ci-dessus? S'il vous plaît, faites-moi savoir.
K Ahir
S'il est déjà là, vous n'avez pas besoin de les utiliser.
pa4080
Vous trouverez peut-être les raisons de cette erreur dans /var/log/apache2/error.log.
pa4080
J'ai mis à jour mon commentaire.
pa4080
Obtention de ce message d'erreur ... [ven. 12 août 17: 18: 37.224182 2016] [mpm_prefork: avis] [pid 4335] AH00169: pris SIGTERM, arrêtant [ven août 12 17: 18: 40.679317 2016] [mpm_prefork: avis] [pid 4571] AH00163: Apache / 2.4.7 (Ubuntu) PHP / 5.5.9-1ubuntu4.19 configuré - reprise des opérations normales [Ven 12 août 17: 18: 40.679382 2016] [core: notice] [pid 4571] AH00094 : Ligne de commande: '/ usr / sbin / apache2'
K Ahir
3

Veuillez modifier la propriété du répertoire dans lequel vous servez vos fichiers à l'aide de la commande:

sudo chown -R www-data:www:data <directory_where_you_serve_files_from>
Programmeur Shady
la source
Désolé de ne pas le mentionner dans ma question, mais j'ai déjà attribué la propriété à un groupe et à un utilisateur spécifiques pour le dossier / var / www.
K Ahir
0

Je suis censé vous lier à cette réponse où a résolu mon problème.

Tout d'abord, ajoutez des autorisations au dossier:

sudo chmod -R 775 /var/www

Ajoutez ensuite ce texte:

<Directory /var/www/html>
  AllowOverride All
</Directory>

À la fin de ce fichier:

/etc/apache2/sites-available/000-default.conf
Amir Fo
la source