1 IP, {SMTP,IMAPS,HTTP}-Server, virtuelle/mehrere Server

23/08/2007 - 02:59 von Peter Mairhofer | Report spam
Hallo,

Ich bin dabei nun endlich den seit Jahren immer krimineller gewordenen
Wildwuchs aus internen Sachen und oeffentlich per Web zugaenglichen Sachen
auf meinem Server per Linux VServer zu trennen.

Alle Services die entweder "hier oder hier" auftreten sind ja kein Problem,
da sich die Ports unterscheiden und so in die unterschiedlichen VServer
leiten lassen.

Probleme habe ich jedoch bei den im Subject genannten Services, da diese in
mehreren VServern (und damit Kontexen) laufen wuerden (und jetzt schon
sollten), jedoch nur eine IP vorhanden ist.

Da gibts z.B. den Kontext "provider" wo ich Sachen fuer Verwandte/Bekannte
anbiete. Weiters "privat" und einige mehr.

Als IMAPs verwende ich Courier und hab das bis jetzt (wohlgemerkt auf einem
Server) so geloest dass ich ein LDAP Authmodul fuer "provider" hatte und
per PAM "privat" authentifiziere. Ist es ueberhaupt moeglich diese beiden
Sachen nun mit einer IP in unterschiedliche VServer zu stopfen? Falls ja,
wie?

Das naechste ist SMTP. Hier wuerde ich einen "Front VServer" erstellen der
ganz einfach zu den diversen MTAs in den VServern relayed. Macht man das
so?

Dann fehlt nur mehr HTTP/HTTPS. Hier wuerde ich aehnlich vorgehen und im
"Front VServer" einen Apache mit nur als Reverseproxy konfigurieren und
Requests an die betreffenden VServer weiterleiten. Macht man das so? Geht
es besser? Wie stark leidet die Performance darunter? Gibt es einen
"schmaleren" Reverseproxy als einen fetten Apache? Funktioniert das auch
zuverlaessig, d.h. fuer alle Webapplikationen? Kann ich dann problemlos
einen "named virtual host" als ganzes an einen VServer leiten? Bei SSL kann
ich vermutlich nur einen haben oder? Falls ich aber auch hier trennen will,
gibt es dafuer auch Loesungen?

Danke und lg,
Peter
 

Lesen sie die antworten

#1 Peter Mairhofer
04/09/2007 - 21:17 | Warnen spam
Hi,

Ok, nachdem seit 2 Wochen keiner geantwortet hat will offenbar keiner was
dazu sagen. Deswegen mein eigener Senf:

Peter Mairhofer dixit:
[...]

Als IMAPs verwende ich Courier und hab das bis jetzt (wohlgemerkt auf
einem Server) so geloest dass ich ein LDAP Authmodul fuer "provider"
hatte und per PAM "privat" authentifiziere. Ist es ueberhaupt moeglich
diese beiden Sachen nun mit einer IP in unterschiedliche VServer zu
stopfen? Falls ja, wie?



Bei diesem Service konnte ich noch nichts weiterbringen :-( Sowohl Courier
als auch Dovecot scheinen eine "Proxy"-Funktionaliaet zu haben jedoch ist
diese jeweils proprietar und funktioniert nicht so wie ich mir das
vorstelle, à la "*@domain1.net --> Server 1, *domain2.net --> Server 2".
Und selbst wenn hab ich das Problem dass ich nur mit IMAPs arbeite und da
wieder das Zertifikateproblem hab...

Ich werde vermutlich einfach einen IMAPs an einen andren Port haengen,
fertig!

Das naechste ist SMTP. Hier wuerde ich einen "Front VServer" erstellen
der ganz einfach zu den diversen MTAs in den VServern relayed. Macht
man das so?



Hier habe ich fuer exim4 das nette Feature einer "manualroute" gefunden:
Ein "Front-Server" ist nach aussen geschaltet, und routet - je nach Domain
- per manualroute an die dahinter geschalteten Server. Bei dieser
Gelegenheit kann ich als Vorverarbeitung gleich Spamassassin einbauen, das
Spammails tagged. Die unterschiedlichen VHosts koennen damit dann machen
was sie wollen...

Was mir hier aber noch fehlt: Relaying fuer unterschiedliche VServer (und
damit Benutzergruppen). z.B. gibt es auf einem VServer eine LDAP Datenbank,
auf einem eine auf mySQL usw...die alle direkt an den "Front-Server"
anschliessen konnte mir nicht so gut vor..Kennt jemand eine bessere
Loesung?

Dann fehlt nur mehr HTTP/HTTPS. Hier wuerde ich aehnlich vorgehen und
im "Front VServer" einen Apache mit nur als Reverseproxy konfigurieren
und Requests an die betreffenden VServer weiterleiten. Macht man das
so? Geht es besser? Wie stark leidet die Performance darunter? Gibt es
einen "schmaleren" Reverseproxy als einen fetten Apache? Funktioniert
das auch zuverlaessig, d.h. fuer alle Webapplikationen? Kann ich dann
problemlos einen "named virtual host" als ganzes an einen VServer
leiten? Bei SSL kann ich vermutlich nur einen haben oder? Falls ich
aber auch hier trennen will, gibt es dafuer auch Loesungen?



Auch dieses Konstrukt arbeitet bereits.

Das traurige: HTTPS geht natuerlich definitiv mit der gleichen IP nicht auf
2 VHosts, wie auch? (Zumindest mit unterschiedlichen Zertifikaten).

Das tolle: Apache mod_proxy leistet als Reverseproxy gute Arbeit. Sowohl
mit SSL als auch normal lassen sich die verschiedenen Seiten einfach
durchproxien, einfach so:

ProxyRequests off
<Proxy *>
AddDefaultCharset off
Order deny,allow
Allow from all
</Proxy>

SSLEngine on

ProxyPreserveHost on

# Proxie einen kompletten virtual host:
<VirtualHost *>
ServerName www.domain1.net
ProxyPass http://192.168.0.10/
</VirtualHost>

# Proxie z.B. horde und svn:
ProxyPass /horde3 https://192.168.0.11/horde3/
ProxyPass /svn https://192.168.0.11/svn/

Gut, hier bleiben fuer mich ein paar offene Fragen, wuerd mich freun wenn
dafuer jemand eine Antwort haette:

Apache loggt alles, was auf dem Proxyrechner druebergeht, aber das ist
sinnlos da er es ja nur moeglichst "transparent" weiterleiten soll. Gibt es
eine Moeglichkeit dem Apache zu sagen dass er fuer bestimmte VServer und
Locations *nichts* loggen soll (hab bis jetzt nur conditional logging usw
gefunden aber nichts wie "NoLog, Log Off" etc).

Und, vieeeeel diffiziler: Mir liegt sehr viel daran, am Zielserver
a) Statistiken auswerten zu koennen, d.h. mit awstats Zugriffe pro Land &
Co aufschluesseln zu koennen
b) IP Adressen in Scrips zu verwerten
c) Deny from/Allow from etc. im Apache zu verwenden.

Dummerweise ist die Quelladresse, wie sie der Zielserver sieht, nun die vom
Reverseproxy :-(

Gibt es eine Moeglichkeit/ein Apachemodul, welches, sofern vorhanden einen
"Via"-Header oder "Original-Host"-Header (den der Reverseproxy mit der
originalen IP setzt) zu verwenden statt der "echten" IP Adresse und -
sofern nicht vorhanden die echte IP Adresse?

Mit ist voellig bewusst dass so ein Header irrsinnig leicht zu faelschen
waere, aber auf der anderen Seite haben nur interne Hosts Zugriff auf den
Zielserver oder eben der Reverseproxy selbst. Und diese stufe ich beide als
"trusted" ein

Danke und lg,
Peter

Ähnliche fragen