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
Install-WindowsFeature Web-Server -IncludeManagementToolsNastę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).
& "$env:windir\system32\inetsrv\appcmd.exe" set config -section:system.webServer/proxy /enabled:"True" /preserveHostHeader:"True" /reverseRewriteHostInResponseHeaders:"False" /timeout:"00:05:00" /commit:apphost3. Zaimportuj certyfikat
$pfxPassword = Read-Host 'Certificate password' -AsSecureString
Import-PfxCertificate -FilePath C:\Install\phaf.pfx -CertStoreLocation Cert:\LocalMachine\My -Password $pfxPassword
# Note the Thumbprint shown4. Utwórz witrynę
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 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:
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:
- 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. - 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:
New-NetFirewallRule -DisplayName 'phaf HTTPS' -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow -RemoteAddress 10.0.8.0/24Nie twórz reguły dla portu 8181.
Test
- Na komputerze użytkownika
https://phaf.your-company.localotwiera stronę logowania phaf bez ostrzeżenia o certyfikacie http://phaf-server:8181nie odpowiada z tego komputera- Po zalogowaniu Settings › Security pokazuje adres IP Twojego komputera, a nie serwera