Apache: Forskellige sites på forskellige porte
Jeg har installeret en kalenderserver på min hjemmeserver og den sync'er med fx. hjemmets smartphones via CalDAV-protokol via Apache-https (port 443). Med andre ord har jeg åbnet port 443 på min hjemmeserver mod det store grimme Internet.
En uheldig sideeffekt er at alle og enhver kan se alle mine andre web-projekter hvis man kender adressen - det vil jeg gerne undgå.
Derfor vil det være lækkert, hvis jeg kan ændre porten på det "site", der udgør kalenderservicen, til noget andet end den port, som alle de andre sider skal leveres på.
Nogen gode ideer til at gøre det?
Jeg tror jeg kan bruge VirtualHost featuren, men jeg er lidt i tvivl om, hvordan det skal strikkes sammen.
Her er nuværende conf for kalenderserverens apache-site:
--
--
En uheldig sideeffekt er at alle og enhver kan se alle mine andre web-projekter hvis man kender adressen - det vil jeg gerne undgå.
Derfor vil det være lækkert, hvis jeg kan ændre porten på det "site", der udgør kalenderservicen, til noget andet end den port, som alle de andre sider skal leveres på.
Nogen gode ideer til at gøre det?
Jeg tror jeg kan bruge VirtualHost featuren, men jeg er lidt i tvivl om, hvordan det skal strikkes sammen.
Her er nuværende conf for kalenderserverens apache-site:
--
Alias /owncloud /usr/share/owncloud
Options -Indexes
ErrorDocument 404 /core/templates/404.php
AddDefaultCharset UTF-8
php_value upload_max_filesize 512M
php_value post_max_size 512M
php_value memory_limit 512M
SetEnv htaccessWorking true
RewriteEngine on
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization},last]
--
Kommentarer8
Prøv at se
http://httpd.apache.org/docs/2.2/vhosts/examples.html
hvordan man sætter en forskellig port pr site.
Men hvorfor sætter du ikke bare login på de sites - eller en hovedside hvor man kan se dine sider ?
Har da også enormt mange sites, men adskilt og beskyttet -men allesammen kører port 80
Men hvorfor sætter du
"Bare sætte login på" :) Altså i .htaccess, eller tror du at jeg "bare lige" modificerer php-koden til at køre med login sessions på samtlige sider? :) Så har du overvurderet mine evner betragteligt:)
Nogen af dem hedder jo noget forudsigeligt, fx. "mythweb" (som jeg formoder du kender qua din signatur) og "phpMyAdmin". Det kan selvfølgelig ændres til noget uforudsigeligt, men jeg kan bare godt lide ideen om at ingen kan tilgå dem udefra (undtagen mig selv via VPN) uanset hvor kreative, de end måtte være til at gætte navne.
Jeg kan se på nogle af mine webhoteller, at 404-fejlene skyldes at "folk" (nok nærmere bots) tydeligvis gætter løs for at finde skulte undersider.
Anyway, dit Apache-link er godt - jeg vil se, om jeg kan finde ud af det. Hvis der sidder nogen derude med erfaring på området hører jeg gerne nærmere.
Hvis vi snakker htacess, er
Her er et eksempel.
http://www.htaccess-guide.com/deny-visitors-by-ip-address/
Ellers ville jeg tro du kan "indkapsle" hele overnævnte sektion i en VirtualHost konfiguration med en anden port.
Denne port skal du muligvis også have defineret som Listen Address i din apache conf fil.
Nemlig.
Jeg har også flere
Jeg har også flere sites - såsom Mythweb - flere andre sites mm.
Men som sagt du kan modificere din .htaccess til at verificere op imod en masse ting.
Du kunne evt også sætte IPtables til at styre dette og dermed kun tillade bestemte MACadresser ind på disse porte . Men tjo der er rigitg mange muligheder for at lave din løsning.
I sin tid lavede jeg min egen Firewall på en Soekris, og i IPtables satte jeg en regel der kun tillod at min Laptop med den bestemte MAC var den eneste maskine der måtte logge ind.
Hvis der er så mange der får en 404 - så download noget ala SSH deny - og sæt det op så det lukker efter 5 forkerte forsøg - så spærres den udefrakommende IP!
Tak for svar, begge.
Du kunne evt også sætte IPtables til at styre dette og dermed kun tillade bestemte MACadresser ind på disse porte
Off-topic, men af ren nysgerrighed: MAC-adresser er vel ikke tilgængelige over WAN, så det er på dit eget lokalnet du har lavet den begrænsning, ik?
IP tables kan spore MAC
http://superuser.com/questions/254774/home-network-to-accept-only-certa…
[edit - forkert link]
Derfor vil det være
Det bedste efter min mening er at gøre det på virtualhost niveau.
...
DocumentRoot /var/www/kalender
...
Erstat port 80 med den port du ønsker. Genstart så Apache.
Du kan fint få apache til
Her er et vhost eksempel hvor alle har adgang til /srv/http/public, men kun lan og localhost har adgang til /srv/http/private.
DocumentRoot "/srv/http/public"
DocumentRoot "/srv/http/private"
ServerName private.mydomain
Order Allow,Deny
Allow from 192.0.0.0/24 127.0.0.1
Ved at bruge ServerName direktivet kan du også kører det hele på samme port, og du kan tilføje statiske entries til din hosts fil hvis du ikke har sat dns op for din server.
# /etc/hosts
127.0.0.1 localhost.localdomain localhost,hostname
127.0.0.2 private.mydomain private