2016-07-14 84 views
0

Ich habe this MS link verwendet, um einen TCP-Server in C# auf einem PC zusammenzustellen. Ich halte den Port offen und warte darauf, dass Verbindungen von verschiedenen SPS-Clients hergestellt werden. Die PLCs bewegen autonome Bots, also bewegen sie sich innerhalb und außerhalb der Wi-Fi-Reichweite. Ich verwende dieses Setup, um laufende Variablen (Batterie% usw.) von den Bots zu erfassen und sie in einer Benutzeroberfläche anzuzeigen, die der Systemadministrator überwachen soll.C# TCP Server-Socket-Sicherheit mit SPS

Ich habe den Router mit Portweiterleitung eingerichtet, so dass die Daten von den verschiedenen Clients auf dem Server-PC ankommen. Ich benutze Siemens S7-1200 PLCs und ich glaube nicht, dass sie High-End-Sicherheitsfunktionen wie PCs unterstützen.

Also meine Frage ist dies, wenn der Admin-PC einen Windows-Dienst läuft, der ständig den offenen Port überwacht, gibt es dann ein Sicherheitsrisiko? Und wenn es Risiken gibt, kannst du bitte erklären und unterstützen mit Links oder Ressourcen, um mir zu helfen, diese Lücken zu füllen (in C#)?

Es scheint mir sicher, denn wenn der PC aus ist, ist der Port geschlossen. Wenn der PC eingeschaltet ist, ist der Port offen, aber er ist an die Anwendung gebunden, die ihn überwacht. Wenn der Port etwas empfängt, das nicht als gültig erachtet wird, werden nur diese Daten ausgegeben. Ich bin nicht unglaublich gut informiert über Software und PC-Sicherheit, aber das ist etwas anders, weil es ein einzelner PC ist, der mit weniger fähiger Hardware zusammenarbeitet.

+1

Wenn ein Port offen ist, besteht ein gewisses Risiko. Es liegt an Ihrer App, wie Sie damit umgehen. normalerweise hörst du von Pufferüberläufen usw., die den Leuten Zugriff gewähren. Das Risiko hängt auch davon ab, was deine Bots tun können. Wenn zum Beispiel jemand auf das Wifi zugreifen könnte und den Verkehr blockiert und diese Bots vielleicht Maschinen ausschalten, Ihr Risiko wäre ... Ihre Maschinen könnten ständig durch einen Schurken Gegenstand ausgeschaltet werden .. oder es könnte die App zum Absturz bringen, so nichts könnte es ausschalten .. etc – BugFinder

+1

Es gibt keine Sicherheitsbedrohung von einem Port offen zu halten, da kein ausführbarer Code ist auf dem Server ausgeführt werden. Sie sind anfällig für Traffic Attack, bei der ein Client ständig Daten über den Port sendet und andere Benutzer daran hindert, Verbindungen herzustellen. – jdweng

+0

@BugFinder Wenn Sie Pufferüberläufe verarbeiten und unbekannte Nachrichten löschen sollten, sollte das System nicht fehlschlagen? – tdwolff

Antwort

0

Wenn Sie einen Port geöffnet haben, können Sie sich mit diesem Port verbinden und fehlerhafte Informationen bereitstellen, wodurch eine Sicherheitslücke bei der Message-Analyse und Socket-Handhabung entsteht (Pufferüberlauf oder Skript-Injektion) oder die Anwendung einfach überflutet wird. Der letzte ist fast unmöglich zu schützen, jemand kann DOS immer auf einer bestimmten Ebene.

Keine dieser unerwarteten Risiken, aber Sie müssen sich dessen bewusst sein und sicherstellen, dass Sie eingehenden Datenverkehr ordnungsgemäß ablehnen, um fehlerhafte Anfragen abzulehnen und irgendwie Verbindungen zu authentifizieren und zu löschen, die nicht von den erwarteten Bots stammen.

Wenn Sie einen Authentifizierungsschritt durchführen, müssen Sie den Kanal vor der Authentifizierung mit SSL oder SSH verschlüsseln. Andernfalls könnte jemand anderes Ihren Datenverkehr überwachen, die Authentifizierungstransaktion beobachten und dann einfach kopieren.

Viel Glück! Sicherheit ist ein tiefes Kaninchenloch, aber eine sehr wertvolle Fähigkeit!