Nowość w phaf 26.11.1: Instalator Windows oraz konektory CSV, Email i REST. Informacje o wersjach → Produkt Spectro Web Solutions ↗ EN PL

Przewodnik instalacji · Windows Server

HTTPS i dostęp zdalny

Opublikuj konsolę przez HTTPS z IIS lub nginx i otwórz zaporę.

phaf nasłuchuje wyłącznie na samym serwerze, przez zwykłe HTTP, na porcie wybranym w instalatorze (domyślnie 8181). Aby użytkownicy mogli pracować ze swoich komputerów, opublikuj go przez reverse proxy, które obsługuje HTTPS z Twoim certyfikatem. Ta strona pokazuje IIS, będący częścią Windows Server, oraz nginx jako alternatywę.

Dlaczego reverse proxy

  • Hasła i dane użytkowników są przesyłane w postaci zaszyfrowanej (TLS 1.2 lub 1.3) między przeglądarką a serwerem.
  • Używasz własnego certyfikatu i ustawień TLS swojej organizacji.
  • phaf pozostaje niedostępny z sieci na porcie 8181.

Nie wystawiaj portu 8181

Ustawienie "host": "0.0.0.0" w config.json sprawia, że phaf odpowiada w sieci przez nieszyfrowane HTTP. Używaj tego tylko do krótkiego testu w odizolowanej sieci, nigdy na produkcji.

IIS

1. Zainstaluj IIS, URL Rewrite i ARR

PowerShell
Install-WindowsFeature Web-Server -IncludeManagementTools

Następnie zainstaluj dwa bezpłatne rozszerzenia Microsoft, w tej kolejności: URL Rewrite 2.1 i Application Request Routing (ARR) 3.0, ze strony iis.net.

2. Włącz proxy

To polecenie włącza ARR jako proxy, zachowuje oryginalną nazwę hosta, przekazuje adres IP użytkownika w X-Forwarded-For i pozwala na żądania trwające do 5 minut (migracje bazy danych i duże przesyłki).

PowerShell
& "$env:windir\system32\inetsrv\appcmd.exe" set config -section:system.webServer/proxy /enabled:"True" /preserveHostHeader:"True" /reverseRewriteHostInResponseHeaders:"False" /timeout:"00:05:00" /commit:apphost

3. Zaimportuj certyfikat

PowerShell
$pfxPassword = Read-Host 'Certificate password' -AsSecureString
Import-PfxCertificate -FilePath C:\Install\phaf.pfx -CertStoreLocation Cert:\LocalMachine\My -Password $pfxPassword
# Note the Thumbprint shown

4. Utwórz witrynę

PowerShell
New-Item -ItemType Directory -Force C:\phaf\iis
Import-Module WebAdministration
New-Website -Name 'phaf' -PhysicalPath C:\phaf\iis -Port 443 -Ssl -HostHeader 'phaf.your-company.local' -SslFlags 1

$thumb = '<certificate thumbprint>'
(Get-WebBinding -Name 'phaf' -Protocol https).AddSslCertificate($thumb, 'My')

Utwórz C:\phaf\iis\web.config z regułą proxy:

XML — C:\phaf\iis\web.config
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="phaf" stopProcessing="true">
          <match url="(.*)" />
          <action type="Rewrite" url="http://127.0.0.1:8181/{R:1}" />
        </rule>
      </rules>
    </rewrite>
    <security>
      <requestFiltering allowDoubleEscaping="true">
        <!-- phaf accepts requests of up to 64 MB -->
        <requestLimits maxAllowedContentLength="67108864" />
      </requestFiltering>
    </security>
    <httpProtocol>
      <customHeaders>
        <add name="Strict-Transport-Security" value="max-age=31536000" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>

Witryna ma tylko powiązanie HTTPS, więc nic nie jest serwowane przez zwykłe HTTP.

5. Wersje TLS

Upewnij się, że Windows (Schannel) akceptuje tylko TLS 1.2 i TLS 1.3, zgodnie ze standardem Twojej organizacji (na przykład benchmarkiem CIS dla Windows Server). IIS korzysta z ustawień Windows.

nginx (alternatywa)

Jeśli już używasz nginx dla Windows lub nginx na osobnym proxy z Linuksem, użyj tego bloku server:

nginx
server {
    listen 443 ssl;
    server_name phaf.your-company.local;

    ssl_certificate     C:/nginx/certs/phaf.crt;
    ssl_certificate_key C:/nginx/certs/phaf.key;
    ssl_protocols       TLSv1.2 TLSv1.3;

    client_max_body_size 64m;
    add_header Strict-Transport-Security "max-age=31536000" always;

    location / {
        proxy_pass http://127.0.0.1:8181;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_read_timeout 300s;
    }
}

Na osobnym serwerze proxy zastąp 127.0.0.1 adresem serwera phaf, ustaw "host" w config.json na własny adres IP serwera phaf i zezwól na port 8181 w zaporze Windows tylko z proxy.

Poinformuj phaf o proxy

Zaloguj się przez nowy adres i ustaw dwie rzeczy:

  1. Settings › Security › Network access — ustaw nagłówek proxy na X-Forwarded-For. phaf będzie wtedy widział prawdziwy adres IP każdego użytkownika w dzienniku audytu i regułach IP, a nie adres proxy.
  2. Settings › Alerts — ustaw adres phaf używany w linkach e-mail na https://phaf.your-company.local.

Zapora

Zezwól na HTTPS tylko z sieci, w których pracują użytkownicy:

PowerShell
New-NetFirewallRule -DisplayName 'phaf HTTPS' -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow -RemoteAddress 10.0.8.0/24

Nie twórz reguły dla portu 8181.

Test

  • Na komputerze użytkownika https://phaf.your-company.local otwiera stronę logowania phaf bez ostrzeżenia o certyfikacie
  • http://phaf-server:8181 nie odpowiada z tego komputera
  • Po zalogowaniu Settings › Security pokazuje adres IP Twojego komputera, a nie serwera