Werfen wir einen Blick auf Apache, um Linuc2 zu lernen. Um ehrlich zu sein, waren mir die detaillierten Einstellungen nicht wirklich wichtig, da sie durch Installation mit yum verwendet werden können. Wenn Sie httpd.conf bearbeiten und mit Apache Configtest usw. überprüfen, wird ein Fehler angezeigt, der mit Basic AH beginnt, sodass der Zugriff relativ einfach ist.
Persönlich installiere ich immer nur mit yum, daher lesen Sie bitte den folgenden Artikel. Konfigurieren, kompilieren, installieren
Sie müssen auch APR und APR-util installieren, um aus dem Quellcode zu kompilieren.
# yum install -y httpd
Richtlinie | Erläuterung |
---|---|
/etc/httpd/conf/httpd.conf | Hauptkonfigurationsdatei |
/etc/httpd/conf.d | Verzeichnis zum Speichern von Zusatzkonfigurationsdateien |
ssl.conf | SSL/TLS-Einstellungen |
php.conf | PHP-Moduleinstellungen |
perl.conf | Perl-Moduleinstellungen |
htpd.conf#
Einstellwert für den Director-Namen
<Dateinateiname> ... </ Files>
<Verzeichnisverzeichnisname> ... </ Verzeichnis>
<LOcation URL>...</Location>
Richtlinie | Erläuterung |
---|---|
ServerTokens | Versionsinformation |
ServerRoot | Top-Verzeichnis |
ServerName | Hostname |
ServerAdmin | Mail Adresse |
StartServers | Nummer beim Start |
MinSpareServers | Mindestanzahl von Kellnerprozessen |
MaxSpareServers | Maximale Anzahl von Kellnerprozessen |
ServerLimits | Maximale Anzahl von untergeordneten Prozessen, die festgelegt werden können |
Timeout | Zeit, zu der die Verbindung vom Client unterbrochen wird |
KeepAlive | Am Leben bleiben aktiviert/Ungültig |
KeepAliveRequests | Maximale Anzahl von Anforderungen pro TCP-Verbindung |
KeepAliveTimeout | Timeout-Zeit für eine TCP-Verbindung |
Listen | Standby-Port |
User | Benutzer des untergeordneten Prozesses ausführen |
Group | Ausführungsgruppe des untergeordneten Prozesses |
DocumentRoot | Dokumentstammverzeichnis |
UserDir | Öffentliches Verzeichnis für allgemeine Benutzer |
DirectoryIndex | Dateiname, der als Verzeichnisindex zurückgegeben werden soll |
ErrorLog | Protokolldatei, die Fehler aufzeichnet |
LogLevel | Fehlerprotokoll Protokollstufe |
LogFormat | Zu protokollierende Elemente und Formate |
CustomLog | Zugriffsprotokoll |
HostnameLookups | Führen Sie eine umgekehrte DNS-Suche durch und rufen Sie den Hostnamen von der IP-Adresse der Zugriffsquelle ab |
Alias | Sie können andere Orte als den Dokumentstammbaum sehen. |
ScliptAlias | CGI-Skriptverzeichnis |
ErrorDocument | Geben Sie an, was zu tun ist, wenn ein Fehler auftritt |
Verwenden Sie das Verzeichnis ** AccessFileName **, um eine externe Datei (.htaccess) zum Überschreiben der Einstellungen in httpd.conf zu verwenden.
httpd.conf
AccessFileName .htaccess
Geben Sie im Verzeichnis ** AllowOverride ** an, um die Verwendung externer Konfigurationsdateien zuzulassen.
Das folgende Beispiel aktiviert die Authentifizierung und Zugriffssteuerung in .htaccess.
httpd.conf
AllowOverride AuthConfig Limit
Unterbefehl | Erläuterung |
---|---|
AuthConfig | Authentifizierung |
Indexes | DirectoryIndex |
Fileinfo | Dateitypsteuerung |
Limit | Order,Allow,Deny |
Options | Options |
None | .Deaktivieren Sie Änderungen in htaccess |
All | .Aktivieren Sie alle änderbaren Einstellungen in htaccess |
apachectl#
Unterbefehl | Erläuterung |
---|---|
start | Anlaufen |
stop | Halt |
restart | Starten Sie neu |
graceful | Starten Sie, wenn gestoppt, warten Sie auf einen Neustart, wenn die Anforderung neu gestartet wird |
reload | Lesen Sie die Einstellungsdatei |
configtest | Überprüfen Sie die Syntax der Konfigurationsdatei |
Geben Sie zum Laden des Moduls Folgendes an:
httpd.conf
LoadModule perl_module modules/mod_perl.so
Verwenden Sie nach der Installation von Apache ** apxs **, um das Modul einzuschließen. Fügen Sie es anschließend wie in ↑ im LoadModule-Verzeichnis hinzu. Installieren Sie das httpd-devel-Paket, um apxs zu installieren.
# yum install httpd-devel
# apxs -i -c mod_foobar.c
Eingebaute Module sind ** httpd -l ** ** httpd -M **, um eine Liste der integrierten Module und DSO-Module anzuzeigen und die Syntax der Konfigurationsdatei zu überprüfen Benutzen.
# httpd -l
# httpd -M
Werfen wir einen Blick auf PHP, das häufig als WEB-Anwendung verwendet wird.
# yum install -y php
Die Datei / etc / httpd / conf.d / php.conf
wird hinzugefügt.
Erstellen Sie eine Datei wie die folgende und starten Sie Apache neu, um sie anzuzeigen.
/var/www/html/phpinfo.php
<?php
phpinfo();
?>
Fügen Sie zur Verwendung der BASIC-Authentifizierung Benutzerauthentifizierungseinstellungen zu httpd.conf hinzu und bereiten Sie eine dedizierte Kennwortdatei vor.
Richtlinie | Erläuterung |
---|---|
AuthType | Basic |
AuthName | Nachricht, die zum Zeitpunkt der Authentifizierung im Dialogfeld ausgegeben werden soll |
AuthUserfile | Name der Passwortdatei |
AuthGroupfile | Gruppieren Sie den zu authentifizierenden Dateinamen |
require | Zugängliche Benutzer,valid-userWenn angegeben, wird Benutzern Zugriff gewährt, die einen Eintrag in der Kennwortdatei haben. |
httpd.conf
<Directory "/var/www/html/private-area">
AuthType Basic
AuthName "Please enter your ID and password"
AuthUserfile /etc/httpd/conf/.htpasswd
require valid-user
</Directory>
Verwenden Sie ** htpasswd **, um den Benutzer und das Kennwort festzulegen, die für die Authentifizierung verwendet werden.
# htpasswd -c /etc/httpd/conf/htpasswd linuc1
New password:
Re-type new password:
Adding password for user linuc
# cat /etc/httpd/conf/.htpasswd
linuc:$apr1$szHx1lmc$PVMPwHwo/7T0bnlbRhAFP0
Geben Sie die Gruppenkennwortdatei in AuthGroupfile an, um die BASIC-Authentifizierung gruppenweise zu konfigurieren.
Das Format der Passwortdatei ist wie folgt.
Gruppenname: Benutzername 1 Benutzername 2 ...
Für jeden angegebenen Benutzer ist ein Kennwort mit htpasswd festgelegt.
Geben Sie bei Bedarf den Gruppennamen im folgenden Format an.
Gruppengruppenname benötigen
Richtlinie | Erläuterung |
---|---|
AuthType | Digest |
AuthName | Authentifizierungsbereich |
AuthUserfile | Name der Passwortdatei |
AuthDigestGroupfile | Gruppieren Sie den zu authentifizierenden Dateinamen |
require | Zugängliche Benutzer,valid-userWenn angegeben, wird Benutzern Zugriff gewährt, die einen Eintrag in der Kennwortdatei haben. |
httpd.conf
<Directory "/var/www/html/secret-area">
AuthType Digest
AuthName "secret-area"
AuthUserfile /etc/httpd/conf/.htdigestfile
require valid-user
</Directory>
Verwenden Sie ** htdigest **, um Benutzer zu erstellen und Kennwörter für die Digest-Authentifizierung zu ändern.
# htdigest -c /etc/httpd/conf/.htdigest secret-area linuc2
Adding password for linuc2 in realm secret-area.
New password:
Re-type new password:
# cat /etc/httpd/conf/.htdigest
linuc2:secret-area:2b2b3ade579cc9e0121b4f1df227db6b
Wenn Sie den Zugriff anhand der IP-Adresse, des Hostnamens, des Domänennamens usw. steuern möchten, verwenden Sie die Anweisung ** require **. Diese Funktion wird von ** authz_host_module ** bereitgestellt.
Geben Sie beispielsweise Folgendes an, um den Zugriff von 172.31.0.0/16 zu verweigern und den Zugriff von anderen Hosts zuzulassen:
require all granted
require not ip 172.31.0.0/16
Sie können mehrere Websites auf einem Host verwalten.
Richten Sie eine IP-Adresse und mehrere Domänen auf einem Host ein. Beschreiben Sie es in der Direktive ** VirtualHost **. Mit den richtigen DNS-Einstellungen kann jede Website unabhängig betrieben werden.
<VirtualHost *:80>
ServerName web.example.com
DocumentRoot /var/www/virtual/web
<VirtualHost *:80>
ServerName www.example.net
DocumentRoot /var/www/virtual/example
</VirtualHost>
Richten Sie mehrere IP-Adressen und mehrere Domänen auf einem Host ein. Beschreiben Sie es in der Direktive ** VirtualHost **. Jede IP-Adresse muss in der Anweisung ** Listen ** angegeben werden.
Listen 192.168.1.10:80
Listen 192.168.1.11:80
<VirtualHost 192.168.1.10:80>
ServerName web.example.com
DocumentRoot /var/www/virtual/web
<VirtualHost 192.168.1.11:80>
ServerName www.example.net
DocumentRoot /var/www/virtual/example
</VirtualHost>
** mod_status **: Informationen zur Serveraktivität
LoadModule status_module modules/mod_status.so
<Location /server-status>
SetHandler server-status
</Location>
** mod_info **: Informationen zu den Servereinstellungen
LoadModule info_module modules/mod_info.so
<Location /server-info>
SetHandler server-info
</Location>
SSL/TLS##
SSL wird mit ** mod_ssl ** unterstützt.
Sie müssen das Standortzertifikat von der Zertifizierungsstelle erhalten.
① Erstellen Sie einen öffentlichen Schlüssel und einen Verschlüsselungsschlüssel. (2) Senden Sie den erstellten öffentlichen Schlüssel zusammen mit Dokumenten, die die Identität des Benutzerunternehmens bestätigen, an die Zertifizierungsstelle (CA). ③ CA stellt ein Zertifikat aus und gibt es zurück. (Mit diesem Zertifikat identifiziert sich der Webserver gegenüber dem Webbrowser.) ④ Installieren Sie das gesendete Zertifikat auf dem Webserver.
Serverzertifikate werden für IP-Adressen oder Domänennamen ausgestellt. Hier nehmen wir ein selbstsigniertes Zertifikat auf (eine Methode zum Signieren eines Zertifikats durch die Zertifizierungsstelle, die sich selbst als eigene Zertifizierungsstelle verwendet). In CentOS wird in dem Verzeichnis, in dem SSL installiert ist, ein Skript namens CA.sh vorbereitet. Kopieren Sie es also und erstellen Sie es interaktiv.
# cd /etc/pki/tls/misc
# ./CA -newca
Privater Schlüssel: / etc / pki / CA / private / cakey.pem
Öffentlicher Schlüssel: / etc / pki / CA / cacert.pem
Wird so erstellt.
Erstellen Sie den privaten Serverschlüssel ** server.key **, der zum Erstellen eines SSL-fähigen HTTP-Servers erforderlich ist.
# openssl genrsa -out server.key 2048
Erstellen Sie eine CSR (Certificate Issuance Request) ** server.csr **, für die die Zertifizierungsstelle ein Zertifikat ausstellen muss.
# openssl -req -new -key server.key -out server.csr
Das Zertifikat signiert die Anforderungsdatei für die Zertifikatsausstellung und erstellt ein Serverzertifikat ** server.crt **.
# openssl ca -out server.crt -infiles server.csr
Verschieben Sie den privaten Serverschlüssel und das Serverzertifikat in das entsprechende Verzeichnis und schreiben Sie die erforderlichen Einstellungen in httpd.conf.
SSL/TLS-bezogene Richtlinien | Erläuterung |
---|---|
SSLEngine | Wirksamkeit/Ungültig |
SSLProtocol | Ausführung |
SSLCipherSuite | Kryptographischer Algorithmus |
SSLCertificateFile | Serverzertifikatdatei |
SSLCertificateKeyFile | Private Schlüsseldatei des Servers |
SSLCertificateChainFile | Zwischenzertifizierungsstellendatei |
SSLCACertificateFile | CA-Zertifikatausstellungsdatei für die Clientzertifikatsausstellung |
SSLCACertificatePAth | CA-Zertifikatausstellungsverzeichnis für die Clientzertifikatsausstellung |
SSLVerifyClient | Stufe der Clientauthentifizierung |
LoadModule ssl_module modules/mod_ssl.so
Listen 443 https
<VirtualHost _default_:443>
ServerName www.example.net:443
DocumentRoot "/var/www/html"
ErrorLog logs/ssl_errorlog
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA:!DH
SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
</VirtualHost>
/var/log/httpd/access_log
Geben Sie das Format mit der Direktive ** LogFormat ** und an Verknüpfen Sie den Namen der Protokolldatei mit dem Format der Direktive ** CustomLog **.
httpd.conf
LogFormat
CustomLog logs/access_log combined
/var/log/httpd/error_log
Sie können die aufzuzeichnende Protokollebene mit der Direktive LogLevel angeben.
httpd.conf
LogLevel
Recommended Posts