Die meisten Programme müssen mit dem Benutzer interagieren, indem sie bestimmte Daten eingeben, sei es der vollständige Name, die Größe, das Gewicht, das in die Datenbank eingegeben werden soll, oder die geometrischen Abmessungen eines Objekts, für das etwas berechnet werden muss. Alle diese Daten werden vom Benutzer eingegeben - einer Person, was bedeutet, dass alles als Antwort kommen kann. Was wird das Programm produzieren, wenn der Benutzer es anstelle des erforderlichen Alters in einem Wort schreibt? Höchstwahrscheinlich stürzt das Programm ab oder hängt sich auf, aber nicht, wenn es einen "Narrenschutz" enthält.
Warum kann ein Programm beendet oder eingefroren werden? Das Programm wird versuchen, den Zeichensatz in eine Zahl umzuwandeln, was fehlschlägt, was bedeutet weitere Arbeit Anwendung ist nicht definiert. Daher ist es sehr wichtig, die Struktur des Programms so zu organisieren, dass Sie es eingeben unerwartet für das Datenprogramm (falsch in Bezug auf das geforderte Format: es wird eine Zahl benötigt, aber ein Wort wird eingegeben) „stürzte“ die Anwendung nicht, sondern teilte dem Benutzer mit, dass ein Fehler aufgetreten sei, und bot an, die Eingabe zu wiederholen. Das ist „idiotensicher“.
Implementieren von Narrensicherheit in C
Um eine gute Narbensicherheit für die Eingabe verschiedener numerischer (int, double ...) Daten zu implementieren, ist es notwendig, nicht die Zahlen selbst, sondern den gesamten Eingabestring zu lesen und erst dann die Eingabe zu analysieren. Die C-Sprache hat eine sehr schöne Funktion sscanf(const char *, const char *, args) , die ähnlich wie die Funktion scanf(const char *, args) funktioniert und die Anzahl der erfolgreich gelesenen Argumente zurückgibt, nur dass die Daten nicht gelesen werden aus dem Standardeingabestream, sondern aus der als erstes Argument übergebenen Zeichenfolge.
Schauen wir uns ein paar Beispiele für Funktionen an, die eine Dummheitsprüfung mit der Funktion sscanf implementieren.
Eingabe einer Ganzzahl mit Prüfung auf ungültige Eingabe
int get_integer(const char *msg) ( char answer; // zu lesender String int n; // finale Ganzzahl printf("%s", msg); // Eingabeaufforderung drucken fgets(answer, sizeof(answer), stdin); // den String lesen // bis eine ganze Zahl gelesen wird while (sscanf(answer, "%d", &n) != 1) ( printf("Falsche Eingabe. Versuchen Sie es erneut: "); // eine Meldung über Fehler ausgeben fgets (antwort, sizeof(antwort), stdin); // und den String erneut lesen ) return n; // eine gültige ganze Zahl zurückgeben )Um eine ganze Zahl zu lesen, liest der Algorithmus den gesamten String und versucht dann, daraus eine ganze Zahl zu bekommen. Falls dies fehlschlägt, zeigt die Funktion eine Fehlermeldung mit dem Vorschlag, die Eingabe zu wiederholen, bis der richtige ganzzahlige Wert eingegeben ist.
Eingabe einer reellen Zahl mit Überprüfung auf falsche Eingabe
double get_double(const char *msg) ( char answer; // Zeichenfolge zum Lesen von double x; // resultierende reelle Zahl printf("%s", msg); // drucke Eingabeaufforderung fgets(answer, sizeof(answer), stdin) ; // den String lesen // bis eine reelle Zahl gelesen wird while (sscanf(antwort, "%lf", &x) != 1) ( printf("Falsche Eingabe. Versuch es noch einmal: "); // gib eine Nachricht über error fgets(answer, sizeof(answer), stdin); // und den String erneut lesen ) return x; // eine gültige reelle Zahl zurückgeben )Eingabe eines Punktes auf der Koordinatenebene (Struktur mit zwei reellen Feldern)
// Beschreibung der Datenstruktur typedef struct point_t ( double x; // x-Koordinate double y; // y-Koordinate ) point_t; point_t get_point(const char *msg) ( char answer; // Zeichenfolge zum Lesen von point_t point; // Endpunkt printf("%s", msg); // Eingabeaufforderung drucken fgets(answer, sizeof(answer), stdin ); // Zeile lesen // bis beide Punktkoordinaten gelesen sind while (sscanf(answer, "(%lf,%lf)", &point.x, &point.y) != 2) ( printf("Falsche Eingabe. Versuchen Sie es erneut: "); // die Fehlermeldung ausgeben fgets(answer, sizeof(answer), stdin); // und den String erneut lesen ) return point; // den richtigen Punkt zurückgeben )Wie aus den Beispielen ersichtlich ist, ermöglicht Ihnen die Funktion der Rückgabe der Anzahl der von der Funktion sscanf gelesenen Argumente, die Richtigkeit der eingegebenen Daten im angegebenen Format zu kontrollieren, und das Lesen der gesamten Zeile schützt vor Leerzeichen oder Zeilen Unterbrechungen "\n" verbleiben im Eingabestrom, was Sie sehr oft dazu zwingt, nicht eine einzige Stunde oder sogar einen Tag damit zu verbringen, nach einem Fehler zu suchen.
Es ist unmöglich, den Server ein für alle Mal vor fremden Zugriffen zu schützen, da jeden Tag neue Schwachstellen entdeckt werden und neue Möglichkeiten auftauchen, den Server zu hacken. Wir werden in diesem Artikel über den Schutz von Servern vor unbefugtem Zugriff sprechen.
Die Server jedes Unternehmens können früher oder später Ziel von Hackerangriffen oder Virenangriffen werden. Typischerweise ist das Ergebnis eines solchen Angriffs Datenverlust, Reputations- oder finanzieller Schaden, daher sollten Probleme mit der Serversicherheit in erster Linie angegangen werden.
Es versteht sich, dass der Schutz vor Server-Hacking aus einer Reihe von Maßnahmen besteht, einschließlich solcher, die eine ständige Überwachung des Serverbetriebs und Bemühungen zur Verbesserung des Schutzes beinhalten. Es ist unmöglich, den Server ein für alle Mal vor fremden Zugriffen zu schützen, da jeden Tag neue Schwachstellen entdeckt werden und neue Möglichkeiten auftauchen, den Server zu hacken.
Wir werden in diesem Artikel über den Schutz von Servern vor unbefugtem Zugriff sprechen.
Möglichkeiten und Methoden zum Schutz von Servern vor unbefugtem Zugriff
Physischer Schutz des Servers
Physischer Schutz. Es ist wünschenswert, dass sich der Server in einem sicheren Rechenzentrum befindet, einem geschlossenen und bewachten Raum, Außenstehende sollten keinen Zugriff auf den Server haben.
SSH-Authentifizierung einrichten
Verwenden Sie beim Einrichten des Zugriffs auf den Server eine SSH-Schlüsselauthentifizierung anstelle eines Passworts, da solche Schlüssel viel schwieriger und manchmal einfach nicht mit einer Brute-Force-Suche zu knacken sind.
Wenn Sie der Meinung sind, dass Sie noch ein Passwort benötigen, begrenzen Sie die Anzahl der Eingabeversuche.
Achten Sie darauf, wenn Sie beim Einloggen eine Meldung wie diese sehen:
Letzte fehlgeschlagene Anmeldung: Di, 28. September 12:42:35 MSK 2017 vom 52.15.194.10 auf ssh:notty
Seit der letzten erfolgreichen Anmeldung gab es 8243 fehlgeschlagene Anmeldeversuche.
Es kann darauf hindeuten, dass Ihr Server gehackt wurde. Um in diesem Fall die Serversicherheit zu konfigurieren, den SSH-Port zu ändern, die Liste der IPs einzuschränken, von denen aus Zugriff auf den Server möglich ist, oder Software zu installieren, die übermäßig häufige und verdächtige Aktivitäten automatisch blockiert.
Installieren Sie regelmäßig die neuesten Updates
Um den Serverschutz zu gewährleisten, installieren Sie die neuesten Patches und Updates der von Ihnen verwendeten Serversoftware - Betriebssystem, Hypervisor, Datenbankserver.
Es ist ratsam, jeden Tag nach neuen Patches, Updates und gemeldeten Fehlern/Schwachstellen zu suchen, um Angriffe zu verhindern, die Zero-Day-Schwachstellen ausnutzen. Abonnieren Sie dazu Nachrichten des Softwareentwicklungsunternehmens und folgen Sie seinen Seiten in sozialen Netzwerken.
Passwörter schützen
Bei weitem eine der häufigsten Methoden, um Zugang zu einem Server zu erhalten, besteht darin, das Passwort des Servers zu knacken. Befolgen Sie daher die bekannten, aber dennoch relevanten Empfehlungen, um den Server nicht ungeschützt zu lassen:
- Verwenden Sie keine leicht zu erratenden Passwörter, wie z. B. den Namen des Unternehmens;
- Wenn Sie immer noch das Standardkennwort für die Verwaltungskonsole verwenden, ändern Sie es sofort.
- Passwörter für verschiedene Dienste müssen unterschiedlich sein;
- Wenn Sie Ihr Passwort mit jemandem teilen müssen, senden Sie niemals Ihre IP-Adresse, Ihren Benutzernamen und Ihr Passwort in derselben E-Mail oder Messenger-Nachricht.
- Sie können die Bestätigung in zwei Schritten einrichten, um sich beim Administratorkonto anzumelden.
Firewall
- Stellen Sie sicher, dass der Server installiert ist, konfiguriert ist und die ganze Zeit läuft.
- Schützen Sie sowohl eingehenden als auch ausgehenden Datenverkehr.
- Verfolgen Sie, welche Ports offen sind und zu welchem Zweck, öffnen Sie nichts Unnötiges, um die Anzahl möglicher Schwachstellen für Server-Hacking zu reduzieren.
Insbesondere eine Firewall hilft sehr dabei, den Server davor zu schützen Ddos-Angriffe, Weil Sie können schnell blockierende Firewall-Regeln erstellen und IP-Adressen hinzufügen, von denen der Angriff kommt, oder den Zugriff auf bestimmte Anwendungen mit bestimmten Protokollen blockieren.
Überwachung und Einbruchserkennung
- Beschränken Sie die Software und Dienste, die auf Ihrem Server ausgeführt werden. Überprüfen Sie regelmäßig alles, was Sie ausführen, und wenn unbekannte Prozesse gefunden werden, löschen Sie diese sofort und beginnen Sie mit der Suche nach Viren.
- Überprüfen Sie regelmäßig auf Anzeichen von Manipulation. Hacking kann durch neue nachgewiesen werden Konten Benutzer, die Sie nicht erstellt haben, eine Datei verschieben oder löschen /etc/syslog.conf, gelöschte Dateien/etc/schatten Und /etc/passwort .
- Überwachen Sie die Leistung Ihres Servers, behalten Sie die normale Geschwindigkeit im Auge und Durchsatz, sodass Sie beispielsweise Abweichungen feststellen können, wenn die Belastung des Servers deutlich höher als gewöhnlich geworden ist.
Verwendung von VPN und SSL/TLS-Verschlüsselung
Wenn benötigt Fernzugriff zum Server, sollte es nur von bestimmten IP-Adressen erlaubt sein und über das VPN erfolgen.
Der nächste Schritt zur Gewährleistung der Sicherheit kann die Einrichtung von SSL sein, das nicht nur Daten verschlüsselt, sondern auch die Identität anderer Teilnehmer in der Netzwerkinfrastruktur überprüft, indem es ihnen entsprechende Zertifikate ausstellt.
Server-Sicherheitsprüfung
Sinnvoll wäre es, die Sicherheit des Servers selbstständig im Pentest-Verfahren zu überprüfen, d.h. Angriffssimulation, um potenzielle Schwachstellen zu finden und rechtzeitig zu beseitigen. Es ist ratsam, Spezialisten einzubeziehen Informationssicherheit Einige Tests können jedoch unabhängig voneinander mit Server-Hacking-Programmen durchgeführt werden.
Was außer Hacking noch Server bedroht
Ein Server kann aus einer Reihe von Gründen ausfallen, abgesehen davon, dass er gehackt wurde. Beispielsweise könnte es sich um eine Malware-Infektion oder nur um einen physischen Fehler einer der Komponenten handeln.
Daher sollten Maßnahmen zum Schutz des Servers Folgendes umfassen:
- Installieren und Aktualisieren von Programmen zum Schutz des Servers - Antivirenprogramme.
- Regelmäßige verschlüsselte Kopien von Daten mindestens einmal pro Woche, denn laut Statistik stehen Serverfestplatten an erster Stelle, was die Häufigkeit von Ausfällen angeht. Stelle sicher das Sicherheitskopie in einer physisch sicheren Umgebung gespeichert.
- Sicherstellung der unterbrechungsfreien Stromversorgung des Serverraums.
- Rechtzeitige physische Vorbeugung von Servern, einschließlich Reinigung von Staub und Austausch von Wärmeleitpaste.
Das sagt uns die Erfahrung der Spezialisten von Integrus beste Verteidigung Gegen solche Bedrohungen ist der Einsatz empfohlene Vorgehensweise im Bereich Serverschutzsysteme.
Um die Sicherheit der Server unserer Kunden zu gewährleisten, verwenden wir eine Kombination von Tools: Firewalls, Virenschutz, Sicherheits- / Event-Management-Technologien (SIM / SEM), Intrusion Detection / Protection-Technologien (IDS / IPS), Network Behavioral Analysis (NBA)-Technologien , natürlich regelmäßige präventive Wartung der Server und Einrichtung sicherer Serverräume auf Turnkey-Basis. Auf diese Weise können Sie das Risiko von Hackerangriffen oder Serverausfällen aus anderen Gründen minimieren.
Wir sind bereit, ein Sicherheitsaudit der Server Ihres Unternehmens durchzuführen, Spezialisten zu konsultieren und alle Arten von Arbeiten zur Einrichtung des Schutzes der Serverausrüstung durchzuführen.