Software entwickeln ist mehr als Technik

Software entwickeln ist mehr als Technik

Softwareprojekte sollten (wie bei einem Projekt üblich) gut geplant werden. Dieser Artikel ist keine Grundlage für Projektmanagement. Ich möchte erläutern, warum ein Blick über den Tellerrand wichtig ist und man Software oder eine Anwendung nicht nur auf „Technik“ reduzieren sollte.

Hintergrund dieses Artikels ist eine Unterhaltung. Es ging darum, wie ein bestimmter Webservice erreichbar gemacht werden sollte. Die Überlegung bestand darin, ob dieser Dienst im internen Netzwerk (Intranet) oder oder extern (Internet) gehostet werden soll. Aus meiner Sicht benötigt ein Webservice bei Internetzugriff zusätzliche Formen der Absicherung.

An dieser Stelle wurde mir gesagt, dass das Unnötig sei. Es ist egal, ob der Dienst im lokalen Netzwerk bereitsteht oder im Internet. Stimmt diese Aussage?

Ich behaupte: „Jain“

Ein Webserver kann sich im Prinzip überall befinden. Wenn er erreichbar ist, ist das Ziel erfüllt. Ich sehe allerdings folgende Aspekte:

Aspekt Internes Netzwerk Internet
Zugriff Interne Benutzer der Organisation Prinzipiell weltweiter Zugriff
Netzwerkstruktur „Sichere“ Netzwerkverbindung Netzwerkstruktur/Routing unklar
Datenleck Bekannter Benutzer hat die Informationen Unbekannter hat die Informationen
Verschlüsselung SSL + Je nach Daten SSL + Je nach Daten
Angriffsvektor „Unangetastet“ Mitten im Schussfeld

Das größte Problem sehe ich persönlich darin, dass die Benutzer unbekannt sind. Auch ohne Zugriff können Metadaten (Header) des Server ausgelesen oder eine SQL-Injektion probiert werden. Es wird immer jemanden geben, der genug Zeit und Wissen investiert, um Informationen abzugreifen.

Über den letzten Punkt lässt sich streiten. Interne Benutzer neigen dazu, über andere Wege an bestimmte Daten zu kommen. Notfalls werden Informationen über einen USB-Stick verteilt. Allerdings gehe ich nicht davon aus, dass jemand in einer Firma aktiv einen Brute-Force Angriff durchführt.

Ich behaupte daher, dass für einen Internet-Webservice erweiterte Mechanismen aktiviert werden müssen. Darunter verstehe ich unter anderem:

  • Erweitertes Logging (Fehlgeschlagene Logins, aufgerufene URLs, gelieferte Parameter)
  • IP/Regionen der Zugriffe
  • Überwachung des Traffic (Stichwort: DDoS)
  • Sicherheit beim Hoster prüfen (wenn ein externer Dienstleister verwendet wird)
  • Zertifizierung der Software

Technisch gesehen ist es nicht wichtig, wo ein Server steht. Es wird eine HTTPS-Anfrage versendet und empfangen und alles ist kein Problem. Allerdings sollten Entwickler, anhand des Umfeldes, an die Fälle denken, die im „normalen Betrieb“ nicht auftreten.

Wie ist eure Meinung hierzu?