尝试在浏览器中访问 Apache 2.4.7 Web 服务器时出现禁止 403 错误

尝试在浏览器中访问 Apache 2.4.7 Web 服务器时出现禁止 403 错误

当我使用以下方式访问 Apache Web 服务器时本地主机从同一台 Web 服务器 PC,它显示 Apache2 Ubuntu 默认页面。

但是当我使用以下方式访问 Apache Web 服务器时192.168.0.2,它给出了 403 Forbidden 错误(禁止您无权访问此服务器上的/)。

Web 服务器详细信息

  • Ubuntu 14.04 LTS
  • Apache 版本 2.4.7

所有权命令

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

等/apache2/apache2.conf文件

ServerName 192.168.0.2

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

等/apache2/端口.conf文件

NameVirtualHost *:80
Listen *:80

一个网站的虚拟主机

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

我需要在哪里做哪些设置?请帮忙...

答案1

1. 你应该配置你的 /etc/hosts 文件像那样:

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-site是第二个“localhost”。并且my-hostname是在中定义的“系统主机名” /etc/hostname


2. 您应该定义并启用虚拟主机(VH):

有一个默认的 HTTP VH。它位于 中/etc/apache2/sites-available/。文件名是000-default.conf。您必须编辑它(如果需要,您可以重命名它,或者基于它创建其他 .conf 文件),然后必须启用它。

您可以通过创建“软符号链接”手动启用它:

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

或者你可以使用Apache2 工具称为a2ensite,其结果相同:

sudo a2ensite 000-default.conf

假设有 3 个虚拟主机,启用SSL,并注册私有域名(以SOS.info为例):

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

还有一个是为了本主题的目的而创建的:

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

前 2 个 VH 的内容是:

$ 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>

这将把所有 HTTP 请求重定向到 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>

这是 HTTPS VH。

这两个文件的内容可以发布在一个文件中,但这样它们的管理(a2ensite/ a2dissite)会更加困难。


第三个虚拟主机是为了我们的目的而创建的

$ 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. 通过此配置您应该可以访问:

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

在主示例中,您应该访问并

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

尝试在 Web 浏览器中打开该网站或尝试(在终端中)使用以下命令:

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

当然,你需要index.html在它们的 DocumentRoot 中有一些页面:)



我将出于迂腐的考虑留下下一篇笔记:)


4.您需要正确配置“/etc/apache2/apache2.conf”。

花些时间提高服务器的安全性是个好主意。这些手册是关于安全配置的:第一第二这里您可以免费获得 SSL 证书。以下网站将帮助您检查进度:第一第二

根据上述安全手册/etc/apache2/apache2.conf文件必须类似于:

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.设置防火墙。

要允许/拒绝外部访问您的 Web 服务器,您可以使用联邦水务局(简单的防火墙):

sudo ufw allow http
sudo ufw allow https

仅允许tcp使用协议:

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

您可以直接使用和端口号:

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

以防万一您可以重新加载“规则表”:

sudo ufw reload

您可以使用 UFW 的 GUI 界面,称为海湾战争

sudo apt update
sudo apt install gufw
gufw &

选择Office配置文件。它将设置:Status:ONIncoming:Deny以及Outgoing:Allow添加您的规则。


6.如果您有路由器,请不要忘记转发一些端口:

如果你有路由器,并且希望你的网络服务器可从互联网访问,不要忘记添加一些端口转发。例如

答案2

请使用命令更改您提供文件服务的目录的所有权:

sudo chown -R www-data:www:data <directory_where_you_serve_files_from>

答案3

我应该把你链接到这个答案哪里解决了我的问题。

首先给文件夹添加权限:

sudo chmod -R 775 /var/www

然后添加以下文本:

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

至此文件末尾:

/etc/apache2/sites-available/000-default.conf

相关内容