GNU/Linux >> Znalost Linux >  >> Linux

Nastavení webového serveru pro použití HTTPS

Tento článek popisuje a ukazuje kroky k instalaci a konfiguraci httpd služba pro poskytování obsahu přes HTTPS. Účelem použití HTTPS spíše než základního HTTP je to, že obsah je při přenosu zašifrován. To znamená, že pokud někdo zachytí provoz mezi vaším systémem a webovým serverem, nebude schopen vidět, co bylo odesíláno. Pokud jste přistupovali k základnímu HTTP serveru, mohli vidět obsah.

Předpoklady

Pro začátek je prostředí, které použijeme, základní virtuální stroj Red Hat Enterprise Linux (RHEL) 8.2. Ujistěte se, že je systém registrován buď na Red Hat Satellite nebo na zákaznickém portálu Red Hat. Potřebujete-li s tím pomoc, navštivte Pomocníka při registraci.

Po registraci systému a připojení správných předplatných nainstalujte httpd a mod_ssl :

[root@webserver ~]# dnf install httpd mod_ssl
### Output truncated ###

Installed:
  apr-1.6.3-9.el8.x86_64                                                         apr-util-1.6.1-6.el8.x86_64                                                       
  apr-util-bdb-1.6.1-6.el8.x86_64                                                apr-util-openssl-1.6.1-6.el8.x86_64                                               
  httpd-2.4.37-21.module+el8.2.0+5008+cca404a3.x86_64                            httpd-filesystem-2.4.37-21.module+el8.2.0+5008+cca404a3.noarch                    
  httpd-tools-2.4.37-21.module+el8.2.0+5008+cca404a3.x86_64                      mod_http2-1.11.3-3.module+el8.2.0+7758+84b4ca3e.1.x86_64                          
  mod_ssl-1:2.4.37-21.module+el8.2.0+5008+cca404a3.x86_64                        redhat-logos-httpd-81.1-1.el8.noarch                                              

Complete!
[root@webserver ~]#

[ Čtenářům se také líbilo: Přežití bezpečnostního auditu s podnikovým Linuxem ]

Generování certifikátů

Po instalaci RPM vygenerujte certifikáty od vámi zvolené CA, pokud je ještě nemáte:

[root@webserver ~]# openssl req -newkey rsa:2048 -nodes -keyout /etc/pki/tls/private/httpd.key -x509 -days 3650 -out /etc/pki/tls/certs/httpd.crt
Generating a RSA private key
..............+++++
..........................................................................+++++
writing new private key to '/etc/pki/tls/private/httpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields, but you can leave some blank
For some fields, there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:North Carolina
Locality Name (eg, city) [Default City]:Holly Springs
Organization Name (eg, company) [Default Company Ltd]:Example Co
Organizational Unit Name (eg, section) []:Example Unit
Common Name (eg, your name or your server's hostname) []:webserver
Email Address []:root@localhost

[root@webserver ~]#

Můžete ověřit, že soubory byly vytvořeny:

[root@webserver ~]# ls -l /etc/pki/tls/private/ /etc/pki/tls/certs/
/etc/pki/tls/certs/:
total 4
lrwxrwxrwx. 1 root root   49 Oct 18  2019 ca-bundle.crt -> /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
lrwxrwxrwx. 1 root root   55 Oct 18  2019 ca-bundle.trust.crt -> /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
-rw-r--r--. 1 root root 1489 Oct  1 12:02 httpd.crt

/etc/pki/tls/private/:
total 4
-rw-------. 1 root root 1704 Oct  1 12:00 httpd.key

Nyní, když jsou certifikáty vygenerovány, je třeba vytvořit adresář, ze kterého bude váš webový server poskytovat obsah. Například:

[root@webserver ~]# mkdir /var/www/https

Ukázkový obsah můžete vložit do index.html soubor tam:

[root@webserver ~]# echo secure content > /var/www/https/index.html
[root@webserver ~]# cat /var/www/https/index.html
secure content
[root@webserver ~]#

Zabezpečení SELinux

Ověřte, že je nastaven správný kontext SELinux:

[root@webserver ~]# ll -Z /var/www
total 0
drwxr-xr-x. 2 root root system_u:object_r:httpd_sys_script_exec_t:s0 6 Dec  2  2019 cgi-bin
drwxr-xr-x. 2 root root system_u:object_r:httpd_sys_content_t:s0     6 Dec  2  2019 html
drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_sys_content_t:s0 6 Oct  1 12:34 https

[root@webserver ~]#

Také ověřte správnost kontextu SELinux pro váš index.html soubor:

[root@webserver ~]# ll -Z /var/www/https/index.html
-rw-r--r--. 1 root root unconfined_u:object_r:httpd_sys_content_t:s0 15 Oct  1 15:07 /var/www/https/index.html

[root@webserver ~]#

Nyní, když máte správné certifikáty, adresář byl vytvořen a SELinux je správný, řekněte httpd k použití kláves:

[root@webserver ~]# vi /etc/httpd/conf.d/ssl.conf
[root@webserver ~]# grep -e httpd.crt -e httpd.key /etc/httpd/conf.d/ssl.conf -B1
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateFile /etc/pki/tls/certs/httpd.crt
--
#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateKeyFile /etc/pki/tls/private/httpd.key
[root@webserver ~]#
[root@webserver ~]# grep DocumentRoot /etc/httpd/conf.d/ssl.conf
DocumentRoot "/var/www/https"
#DocumentRoot "/var/www/html"

[root@webserver ~]#

Nastavení brány firewall

httpd Služba je nyní nakonfigurována, ale musíme se ujistit, že provoz je povolen přes bránu firewall. Povolíme port 443 a poté znovu načteme bránu firewall:

[root@webserver ~]# firewall-cmd --permanent --add-port=443/tcp
success

[root@webserver ~]# firewall-cmd --reload
success

Konečná konfigurace a testování

Povolte httpd službu spustit při startu a poté restartovat httpd služba:

[root@webserver ~]# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[root@webserver ~]# systemctl restart httpd
[root@webserver ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-10-01 12:35:26 EDT; 1min 30s ago
     Docs: man:httpd.service(8)
 Main PID: 33387 (httpd)
   Status: "Total requests: 1; Idle/Busy workers 100/0;Requests/sec: 0.0112; Bytes served/sec:  40 B/sec"
    Tasks: 213 (limit: 74790)
   Memory: 35.6M
   CGroup: /system.slice/httpd.service
           ├─33387 /usr/sbin/httpd -DFOREGROUND
           ├─33390 /usr/sbin/httpd -DFOREGROUND
           ├─33391 /usr/sbin/httpd -DFOREGROUND
           ├─33392 /usr/sbin/httpd -DFOREGROUND
           └─33393 /usr/sbin/httpd -DFOREGROUND

Oct 01 12:35:26 webserver.example.com systemd[1]: Starting The Apache HTTP Server...
Oct 01 12:35:26 webserver.example.com systemd[1]: Started The Apache HTTP Server.
Oct 01 12:35:26 webserver.example.com httpd[33387]: Server configured, listening on: port 443, port 80

[root@webserver ~]#

Pomocí netstat můžete ověřit, že služba běží a naslouchá na portu 443 :

[root@webserver ~]# netstat -tlpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 192.168.124.1:53        0.0.0.0:*               LISTEN      1505/dnsmasq       
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1438/sshd          
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1904/cupsd         
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd          
tcp6       0      0 :::80                   :::*                    LISTEN      33387/httpd        
tcp6       0      0 :::22                   :::*                    LISTEN      1438/sshd          
tcp6       0      0 ::1:631                 :::*                    LISTEN      1904/cupsd         
tcp6       0      0 :::443                  :::*                    LISTEN      33387/httpd        
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd          

[root@webserver ~]#

V tomto okamžiku by webová služba měla správně fungovat a měla by být viditelná pro vaše klienty. Chcete-li to ověřit, zkuste se na web dostat pomocí webového prohlížeče. Pokud používáte certifikát podepsaný svým držitelem, budete jej muset přijmout:

Kliknutím na ikonu zámku v adresním řádku a výběrem možnosti „Zobrazit certifikát“ se zobrazí informace o certifikátu, které jste zadali:

Obsah budete moci vidět na /var/www/https/index.html soubor, který vám bude doručen přes HTTPS:

[ Chcete se dozvědět více o zabezpečení? Podívejte se na kontrolní seznam zabezpečení IT a dodržování předpisů. ] 

Sbalit

Tento článek ukazuje, jak nainstalovat a nakonfigurovat server HTTPS a poté ověřit, zda služba funguje správně. Další konfigurace mohou zahrnovat nastavení vzdáleného protokolování, povolení PHP nebo konfiguraci databáze pro web.


Linux
  1. Jak používat BusyBox na Linuxu

  2. Jak používám cron v Linuxu

  3. Jak používat sudo k přiřazení kořenového přístupu uživateli na serveru Linux

  1. Jak přinutit Apache používat HTTPS

  2. Spuštění notify-send jako root

  3. Obnovení hesla root

  1. Přesměrování na HTTPS

  2. Jak používat Wireshark Tshark k určení limitů souborů, času a zachycování vyrovnávací paměti

  3. Bezpečně používejte find pomocí sudo