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...
Wo test-site
ist der zweite "localhost". Und my-hostname
ist der "System Hostname" definiert in /etc/hostname
.
2. Sie sollten einen virtuellen Host (VH) definieren und aktivieren :
Es gibt eine Standard-HTTP-VH. Es ist in platziert /etc/apache2/sites-available/
. Der Dateiname ist 000-default.conf
. Sie müssen es bearbeiten (Sie können es umbenennen, wenn Sie möchten, oder andere .conf-Dateien erstellen, basierend darauf) und danach müssen Sie es aktivieren.
Sie können es manuell aktivieren, indem Sie einen "weichen, symbolischen Link" erstellen:
sudo ln -s /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-enabled/
Oder Sie können das Apache2-Tool namens a2ensite verwenden , das dasselbe macht:
sudo a2ensite 000-default.conf
Nehmen wir an, es gibt 3 virtuelle Hosts , aktiviertes SSL und eine registrierte private Domain (z. B. SOS.info):
/etc/apache2/sites-available/http.SOS.info.conf
/etc/apache2/sites-available/https.SOS.info.conf
Und eine, die für die Zwecke dieses Themas erstellt wurde:
/etc/apache2/sites-available/http.test-site.conf
Der Inhalt der ersten 2 VHs ist:
$ cat /etc/apache2/sites-available/
http.SOS.info.conf
<VirtualHost *:80>
ServerName SOS.info
ServerAlias www.SOS.info
ServerAdmin admin@SOS.info
# 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>
Dieser leitet alle HTTP-Anforderungen an HTTPS um.
$ cat /etc/apache2/sites-available/
https.SOS.info.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerName SOS.info
ServerAlias www.SOS.info
ServerAdmin admin@SOS.info
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>
Dies ist die HTTPS VH.
Der Inhalt dieser beiden Dateien kann in einer Datei veröffentlicht werden. In diesem Fall ist die Verwaltung ( a2ensite
/ a2dissite
) jedoch schwieriger.
Der dritte virtuelle Host ist der, der für unsere Zwecke erstellt wurde :
$ 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. Mit dieser Konfiguration sollten Sie zugreifen auf:
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
Im Hauptbeispiel sollten Sie auf Folgendes zugreifen :
http://test-site # pointed to the directory /var/www/test-site
http://test-site.SOS.info # which is allied to http://test-site
Versuchen Sie, die Site im Webbrowser zu öffnen, oder versuchen Sie es einfach (im Terminal) mit den nächsten Befehlen:
$ curl -L http://test-site/index.html
$ curl -L http://test-site.SOS.info/index.html
Natürlich müssen einige index.html
Seiten in ihrem DocumentRoot enthalten sein :)
Ich werde die nächsten Notizen wegen Pedanterie hinterlassen :)
4. Sie müssen "/ etc / apache2 / apache2.conf" richtig konfiguriert haben.
Ii ist eine gute Idee, etwas Zeit zu investieren, um die Sicherheit Ihres Servers zu verbessern. In diesen Handbüchern geht es um die Sicherheitskonfiguration: 1. und 2 .. Hier erhalten Sie ein kostenloses SSL-Zertifikat. Diese Websites helfen Ihnen dabei, Ihren Fortschritt zu überprüfen: 1. und 2 ..
Gemäß den obigen Sicherheitshandbüchern /etc/apache2/apache2.conf
muss die Datei wie folgt aussehen:
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. Richten Sie die Firewall ein.
Um externen Zugriff auf Ihren Webserver zuzulassen / zu verweigern, können Sie UFW (Uncomplicated Firewall) verwenden:
sudo ufw allow http
sudo ufw allow https
Um nur die tcp
Verwendung des Protokolls zuzulassen :
sudo ufw allow http/tcp
sudo ufw allow https/tcp
Sie können und die Portnummer direkt verwenden:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Nur für den Fall, dass Sie die "Regeltabelle" neu laden können:
sudo ufw reload
Sie können die GUI-Oberfläche von UFW verwenden, die als gufw bezeichnet wird .
sudo apt update
sudo apt install gufw
gufw &
Wählen Sie das Office
Profil. Es wird festgelegt: Status:ON
, Incoming:Deny
und Outgoing:Allow
und Ihre Regeln hinzuzufügen.
6. Wenn Sie einen Router haben, vergessen Sie nicht, einige Ports weiterzuleiten:
Wenn Sie einen Router haben und möchten, dass Ihr Webserver über das Internet erreichbar ist , vergessen Sie nicht, eine Portweiterleitung hinzuzufügen. So etwas wie diese .
ServerName 192.168.0.2
Zeile wegwerfen, da die ServerName-Direktive den Namen www.server.com und nicht die IP-Nummer haben sollte. Ich denke, das könnte das Problem lösen. Für Servername sollten Sie den Namen des Servers eingeben, falls vorhanden. ServerName ermöglicht namenbasiertes virtuelles Hosting, wodurch mehr Websites auf derselben IP-Adresse gespeichert werden können.