PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Webserver zur "Festung" ausbauen



g3r0
09.04.04, 16:34
Also mein Ziel ist es meinen Webserver so sicher wie möglich zu machen.

*Suse9.0
*Apache2
*PHP 4.3.3
*PureFtpd
*webmin
*ssh

Mit der Suse Firewall hab ich nur die benötigten Ports freigegeben. Alle unötigen Dienste deinstalliert oder deaktiviert.
PHP und Apache möchte ich jetzt dann noch "sicher" konfigurieren.
Bei PureFtpd bin ich noch nicht sicher wie ich das mit der Rechtevergabe sicher mache.
Webmin wird auch umgestellt (zB Port 10000 ändern) .......

Hab ich wensentliche Sachen noch nicht bedacht?
Links zu guten Tutorials zwecks Apache2 und PHP Konfigurierung?
Wie überpüfe ich dann ob wirklich alles sicher ist ?


PS: Vielleicht könnte dieser Thread eine Art kleines Turorial werden um sich nicht immer die gesamte Information zusammensuchen zu müssen und dann doch was wichtiges zu vergessen. :)

Roger Wilco
09.04.04, 17:10
Mit der Suse Firewall hab ich nur die benötigten Ports freigegeben. Alle unötigen Dienste deinstalliert oder deaktiviert.
Mal ehrlich, die SuSE Firewall ist völlig unnötig, wenn eh nur die von dir gestarteten Dienste laufen. Welches Programm sollte denn auf einem anderen Port antworten? :ugly:


PHP und Apache möchte ich jetzt dann noch "sicher" konfigurieren.
Das Einfachste wäre wohl 'killall apache2' oder 'apache2ctl stop'. Sicherer gehts nicht. Anonsten bist du ganz gut beraten, wenn du sensible Bereiche nur über HTTPS erreichbar machst und immer schön brav die Security Mailinglisten liest.


Bei PureFtpd bin ich noch nicht sicher wie ich das mit der Rechtevergabe sicher mache.
Wenn du nicht unbedingt darauf angewiesen bist, würde ich FTP gar nicht benutzen, sondern auf SSH/SCP umsatteln.


Webmin wird auch umgestellt (zB Port 10000 ändern) .......
Security by Obscurity funktioniert nicht. Es wäre sicherer, Webmin nur dann zu starten, wenn er gebraucht wird und ansonsten nicht laufen zu lassen. Oder noch besser: Ganz darauf verzichten.


Wie überpüfe ich dann ob wirklich alles sicher ist ?
Nessus sollte dir hier helfen können. Das ist ein Security-Scanner.

$kuLL
09.04.04, 17:19
Was ist das denn für ein Webserver? Steht der bei dir zu Hause (mit nem dyndns Account) oder steht der in einem Rechenzentrum (Rootserver)?

Bei letzterem heißt die Devise: Verschlüssele oder Stirb :D

g3r0
09.04.04, 17:27
Thnx Roger Wilco- mal ein Anfang! :)

@Skull

Server steht noch bei mir zu Hause wird aber in einem Rechenzentrum untergestellt.

*FTP brauch ich da wir mehrere FTP Accounts zu verwalten haben. Also fällt Option drauf zu verzichten leider weg.
*Zum Thema webmin: Wie schaff ich es webmin nur zu starten wenn ichs brauche und zu stopen wenn ich mich auslogge ? Eigenes Script schreiben ? :eek:

$kuLL
09.04.04, 17:36
Du kannst das über einen cronjob realisieren. Beispeilsweise dass webmin nur Montags und Freitags von 10:00 - 14:00 Uhr erreichbar ist.

Wenn du auf FTP angewiesen bist, dann schau dir unbeding ProFTPD + TLS an, sonst wird die Authentifizierung im Klartext abgehandelt, für Sniffer in dem zukünftigen RZ ein leichtes Ziel. Glaub mir, ich spreche aus Erfahrung *g* ;)

g3r0
09.04.04, 17:47
Hab hier gestern irgendwo gelesen, dass es jemand mit einem Script gelöst hat. Such schon ganze Zeit - finds leider nimmer! :( Wäre schon angenehm sich einloggen zu können wann man will.:)

Im webmin gibt es auch die Option sich nur mit eingetragenen IPs anmelden zu könnnen. Is das nicht schon mal ein guter bzw optimaler Schutz?

Werd mal ProFtpd + TLS testen. Authentifizierung im Klartext scheint mir ein wenig risky.
:)

Noch etwas zu Apache und PHP. Gibts wo gute Erklärungen für eine sichere Konfiguration?


*Zusatzt* : Blöde Frage - Kann man eigentlich ein Betriebssystem faken? zB http://scan.sygate.com/ erkennt mein OS und es wäre doch ganz hilfreich einen Windows 2003 Server zu faken. :)
Prinzipiell möglich oder Idee gleich mal abhaken ?

$kuLL
09.04.04, 17:58
Hab hier gestern irgendwo gelesen, dass es jemand mit einem Script gelöst hat. Such schon ganze Zeit - finds leider nimmer! :( Wäre schon angenehm sich einloggen zu können wann man will.:)

Du kannst dich auch einfach per ssh einloggen und webmin manuel starten/stoppen ;)


Im webmin gibt es auch die Option sich nur mit eingetragenen IPs anmelden zu könnnen. Is das nicht schon mal ein guter bzw optimaler Schutz?

Schon, aber dann kannst du dich nie von einem normalen Modem/ISDN/DSL Anschluss aus anmelden, außer du hast ne Standleitung.


Noch etwas zu Apache und PHP. Gibts wo gute Erklärungen für eine sichere Konfiguration?

- Apache selber konfigurieren mit den minimalen Modulen: httpd_core mod_access mod_auth mod_dir mod_log_config mod_mime, den Rest disablen
- Apache in einer Jail/chroot Umgebung laufen lassen
- bei google "apache absichern" eingeben ;)

$kuLL
09.04.04, 18:04
*Zusatzt* : Blöde Frage - Kann man eigentlich ein Betriebssystem faken? zB http://scan.sygate.com/ erkennt mein OS und es wäre doch ganz hilfreich einen Windows 2003 Server zu faken.
Prinzipiell möglich oder Idee gleich mal abhaken ?
Abhaken :)

Du kannst zwar bei fast allen Diensten einen anderen Banner faken, aber das geht schon mal nur ordentlich unter *BSD/UNIX, da alleine der Linux sshd das gar nicht unterstützt *löl*

Du kannst deine Firewall auch alle Ports dicht machen lassen und alle Protokolle blocken lassen, dann hättest du gute Chancen. Aber dann funzt ja nix mehr ;)

Und ein ordentlicher nmap Scan erkennt dein OS eh am IP Stack, da hast du also keine Chance.

g3r0
09.04.04, 18:18
Schade :)

Haben static IPs - grad getestet - können nur eingetragene IPs connecten - webmin nur bei Bedarf zu starten möcht ich auch machen.

Werd mal mit der bisherigen Info weitermachen. Weitere Anregungen erwünscht!:)

Mal 20stellige Passwörter mit Gross-Kleinschreibung/Zahlen/Zeichen setzen sollt auch helfen!:D

Irgendwie hab ich beim durchlesen einiger Tutorials eine leichte Paranoia aufgerissen - aber anscheinend nicht ganz unberechtigt.


:ugly:

Jasper
09.04.04, 21:27
mit chroots oder MAC-tools wie selinux oder lids kann man dienste voneinander isolieren und die folgen eines einbruchs minimieren.

man kann ja mal versuchen die maschine zu übernehmen:

http://www.coker.com.au/selinux/play.html

root-passwort bekommt man sogar dazu.


-j

fsd
09.04.04, 22:35
Ich würde noch PaX und evtl Grsecurity installieren.

MFG fsd.

LINUXRH7
10.04.04, 16:48
Hallo,

wenn ein Dienst nur gestartet werden soll, wenn man diesen braucht, kann man folgendes machen.
Einen Mailaccount anlegen, der nicht auf eine User Mailbox zeigt sondern auf ein Programm/Script zeigt. Bei Sendmail z.B. in der alias anstatt name: account1 dann eintragen name: "|/opt/bin/daemon_start.pl"
Das dort abegelegt Script ist z.B. ein Perlscript. Dieses Script checkt den Absender, div. Header und und den Body. Absender kann man faken und alles andere ja bekanntlich auch. Da Perl aber ein paat nette Module für Mail und gpg anbietet sollte man davon auch ruhig gebrauch manchen.
Die Mail signiert an den Server schicken. Im Body die IP schreiben.
Signatur checken lassen, wenn alles passt dann die im Body angegebene IP freigeben für 30 Minuten. Soll heissen, der ssh, Webmin, FTP oder was man sonst so braucht wird dann für 30 Minuten für diese IP freigeschalltet/eingeschaltet.

cya
LiNUXhr7

Jasper
10.04.04, 17:43
Einen Mailaccount anlegen, der nicht auf eine User Mailbox zeigt sondern auf ein Programm/Script zeigt. Bei Sendmail z.B. in der alias anstatt name: account1 dann eintragen name: "|/opt/bin/daemon_start.pl"
Das dort abegelegt Script ist z.B. ein Perlscript. Dieses Script checkt den Absender, div. Header und und den Body. Absender kann man faken und alles andere ja bekanntlich auch. Da Perl aber ein paat nette Module für Mail und gpg anbietet sollte man davon auch ruhig gebrauch manchen.
Die Mail signiert an den Server schicken. Im Body die IP schreiben.
Signatur checken lassen, wenn alles passt dann die im Body angegebene IP freigeben für 30 Minuten. Soll heissen, der ssh, Webmin, FTP oder was man sonst so braucht wird dann für 30 Minuten für diese IP freigeschalltet/eingeschaltet.


hmm, dazu muss u.u. aber ein aktiver MTA auf port 25 lauschen. da lasse ich lieber einen sshd laufen über den ich mich einloggen kann und die dienste starten kann.
eine methode die mir recht gut gefällt ist port knocking (www.portknocking.org)

-j

LINUXRH7
10.04.04, 17:51
hmm, dazu muss u.u. aber ein aktiver MTA auf port 25 lauschen. da lasse ich lieber einen sshd laufen über den ich mich einloggen kann und die dienste starten kann.
eine methode die mir recht gut gefällt ist port knocking (www.portknocking.org)

-j

Hallo,

in dem Fall ist ja kein MTA installiert. Ich hatte es nur mal gepostet da im Thread die Frage aufkam.

Portknocking hört sich aber auch sehr interessant an. Ich habe jetzt nach dem ersten durchlesen aber direkt bedenken wegen der Knocking-Sequenz, aber ich schau mir das jetzt noch mal genauer an. Vielleicht räumt die Doku meine bedenken aus dem Weg.

cya
LiNUXrh7

g3r0
11.04.04, 16:39
Beim port scan auf www.port-scan.de wird mir folgendes angezeigt....

Die gewünschten ports sind offen - nur die port die geschlossen sein sollten sind werden nur "gefiltert". Zum Beispiel port 110 für pop3. Steht als gefiltert obwohl nicht einmal ein pop3 Dienst läuft. Wie mach ich den Port koplett dicht ? :confused:

Jasper
11.04.04, 17:15
Beim port scan auf www.port-scan.de wird mir folgendes angezeigt....

Die gewünschten ports sind offen - nur die port die geschlossen sein sollten sind werden nur "gefiltert". Zum Beispiel port 110 für pop3. Steht als gefiltert obwohl nicht einmal ein pop3 Dienst läuft. Wie mach ich den Port koplett dicht ? :confused:

gefiltert heisst, dass ein paketfilter diesen port sperrt und zwar mit DROP. das ist zwar unfug aber eine verbreitete unsitte. tcp-ports werden mit tcp-rst oder icmp-port-unreach gesperrt, udp mit icmp-port-unreach. droppen sollte man nur ungültige pakete wie x-mas, null oder dergleichen spielereien.


-j

g3r0
11.04.04, 17:27
versteh leider net ganz was du meinst :(

Jasper
11.04.04, 19:27
versteh leider net ganz was du meinst :(

was verstehst du nicht? gefiltert heisst, dass die pakete durch einen paketfilter verworfen werden. durch dieses verwerfen der pakete gibt sich der paketfilter sofort als solcher zu erkennen, ausserdem provoziert das droppen das wiederholte senden von paketen. das droppen verletzt ausserdem IETF-standards wie RFC793.


-j

g3r0
12.04.04, 13:55
.......... tcp-ports werden mit tcp-rst oder icmp-port-unreach gesperrt, udp mit icmp-port-unreach. droppen sollte man nur ungültige pakete wie x-mas, null oder dergleichen spielereien. .......


-j

Weiss net ganz ich ich mit icmp-port-unreach und tcp-rst anfangen soll. Wo, wie, hö? :confused: :)