A legtöbb programnak bizonyos adatok megadásával kell interakcióba lépnie a felhasználóval, legyen az név, magasság, súly, hogy az adatbázisba kerüljön, vagy geometriai méretek valami tárgy, amihez valamit ki kell számítani. Mindezeket az adatokat a felhasználó – egy személy – adja meg, ami azt jelenti, hogy bármi válaszul jöhet. Mit fog kiadni a program, ha a felhasználó szavakkal írja le a megkövetelt kor helyett? Valószínűleg a program összeomlik vagy lefagy, de nem, ha „bolondvédelemmel” rendelkezik.
Miért állhat össze vagy lefagy egy program? A program megpróbálja a karakterkészletet számmá alakítani, ami nem lesz lehetséges, ami azt jelenti további munka alkalmazás nincs meghatározva. Ezért nagyon fontos a program felépítését úgy megszervezni, hogy belépéskor váratlan adatprogramhoz (a szükséges formátum szempontjából hibás: szám kell, de szó van beírva), az alkalmazás nem omlott le, hanem hiba lépett fel a felhasználóval, és kérte a bevitel megismétlését. Ez „bolond bizonyíték”.
A bolondvédelem megvalósítása C-ben
Ahhoz, hogy a különféle numerikus (int, dupla...) adatok bevitelénél jó hibabiztosságot tudjunk megvalósítani, nem magukat a számokat kell beolvasni, hanem a teljes bemeneti karakterláncot, és csak ezután kell elemezni a bemenetet. A C nyelvnek van egy nagyon jó sscanf(const char *, const char *, args) függvénye, ami a scanf(const char *, args) függvényhez hasonlóan működik, visszaadja a sikeresen beolvasott argumentumok számát, csak az adatok beolvasása nem a szabványos bemeneti adatfolyamból, hanem a neki első argumentumként átadott karakterláncból.
Nézzünk néhány példát azokra a függvényekre, amelyek az sscanf függvény segítségével bolondellenőrzést valósítanak meg.
Egész szám bevitele a hibás bevitel ellenőrzésével
int get_integer(const char *msg) ( char answer; // sor az int n olvasásához; // final integer printf("%s", msg); // prompt megjelenítése fgets(answer, sizeof(answer), stdin); // addig olvassa el a sort // amíg egy egész szám beolvasásra nem kerül míg (sscanf(answer, "%d", &n) != 1) ( printf("Hibás bevitel. Próbáld újra: "); // üzenet nyomtatása az fgets hibáról (válasz, sizeof(válasz), stdin // és olvassa újra a sort ) return n // visszaadja a helyes egész számot )Egy egész szám beolvasásához az algoritmus beolvassa a teljes karakterláncot, majd megpróbál belőle egész számot kérni. Ha ez nem sikerül, a függvény hibaüzenetet jelenít meg, amely arra kéri, hogy ismételje meg a bevitelt mindaddig, amíg a helyes egész értéket meg nem adja.
Valós szám bevitele a hibás bevitel ellenőrzésével
double get_double(const char *msg) ( char answer; // sor a double x olvasásához; // végső valós szám printf("%s", msg); // prompt megjelenítése fgets(válasz, sizeof(answer), stdin) ; // addig olvassa a sort // amíg egy valós szám beolvasásra kerül, míg (sscanf(answer, "%lf", &x) != 1) ( printf("Hibás bevitel. Próbáld újra: "); // üzenetet nyomtat hiba fgets(válasz, sizeof(válasz), stdin // és olvassa újra a sort ) return x // visszatér a helyes valós szám )Pont bevitele a koordinátasíkon (két valós mezővel rendelkező szerkezet)
// az adatstruktúra leírása typedef struct point_t ( double x; // x koordináta double y; // y koordináta ) pont_t; point_t get_point(const char *msg) ( char answer; // sor a point_t point olvasásához; // végső pont printf("%s", msg); // bemeneti prompt megjelenítése fgets(answer, sizeof(answer), stdin ); // addig olvassa a sort // amíg mindkét pontkoordináta beolvasásra kerül, míg (sscanf(answer, "(%lf,%lf)", &point.x, &point.y) != 2) ( printf("Hibás bevitel. Próbáld újra: "); // hibaüzenet megjelenítése fgets(válasz, sizeof(answer), stdin); // és olvassa el újra a sort ) return point; // a helyes pont visszaadása )Ahogy a példákból is látható, az sscanf függvény beolvasott argumentumok számát visszaadó tulajdonsága lehetővé teszi a megadott formátumban bevitt adatok helyességének ellenőrzését, a teljes sor beolvasása pedig véd a szóköz karakterek vagy sortörések ellen. A „\n” a bemeneti adatfolyamban marad, ami gyakran vesztegetésre kényszeríti. Nem kell egy óra vagy akár egy nap sem, hogy megtaláljuk a hibát.
Lehetetlen egyszer s mindenkorra megvédeni a szervert a külső hozzáféréstől, mert napról napra újabb sérülékenységeket fedeznek fel, és új módok jelennek meg a szerver feltörésére. Ebben a cikkben a szerverek jogosulatlan hozzáféréssel szembeni védelméről fogunk beszélni.
Bármely cég szerverei előbb-utóbb hackelés vagy vírustámadás célpontjává válhatnak. Az ilyen támadások eredménye általában adatvesztés, hírnév- vagy anyagi kár, ezért kiemelt figyelmet kell fordítani a szerverbiztonsági kérdésekre.
Meg kell érteni, hogy a szerver feltörése elleni védelem egy intézkedéscsomag, amely magában foglalja a szerver működésének folyamatos ellenőrzését és a védelem javítására irányuló munkát. Lehetetlen egyszer s mindenkorra megvédeni a szervert a külső hozzáféréstől, mert napról napra újabb sérülékenységeket fedeznek fel, és új módok jelennek meg a szerver feltörésére.
Ebben a cikkben a szerverek jogosulatlan hozzáféréssel szembeni védelméről fogunk beszélni.
A szerverek jogosulatlan hozzáférés elleni védelmének módjai és módszerei
A szerver fizikai védelme
Fizikai védelem. A szervert célszerű biztonságos adatközpontban elhelyezni, zárt és őrzött helyiségben kívülállók nem férhetnek hozzá a szerverhez.
SSH hitelesítés beállítása
A kiszolgálóhoz való hozzáférés beállításakor használjon SSH-kulcsos hitelesítést jelszó helyett, mivel az ilyen kulcsokat sokkal nehezebb, és néha egyszerűen lehetetlen nyers erővel feltörni.
Ha úgy gondolja, hogy továbbra is szüksége van jelszóra, mindenképpen korlátozza a megadási kísérletek számát.
Kérjük, vegye figyelembe, ha bejelentkezéskor ilyen üzenetet lát:
Utolsó sikertelen bejelentkezés: 2017. szeptember 28. kedd, 12:42:35 MSK, 52.15.194.10, ssh:notty
Az utolsó sikeres bejelentkezés óta 8243 sikertelen bejelentkezési kísérlet történt.
Azt jelezheti, hogy valaki megpróbálta feltörni a szerverét. Ebben az esetben a szerver biztonságának konfigurálásához módosítsa az SSH-portot, korlátozza azon IP-címek listáját, amelyekről elérhető a szerver, vagy telepítsen olyan szoftvert, amely automatikusan blokkolja a túl gyakori és gyanús tevékenységeket.
Rendszeresen telepítse a legújabb frissítéseket
A kiszolgáló védelmének biztosítása érdekében azonnal telepítse a használt kiszolgálószoftver legújabb javításait és frissítéseit - operációs rendszer, hypervisor, adatbázis-kiszolgáló.
Javasoljuk, hogy minden nap ellenőrizze az új javításokat, frissítéseket és hiba-/sebezhetőségi jelentéseket, hogy megelőzze a nulladik napi sebezhetőségeket kihasználó támadásokat. Ehhez iratkozzon fel a szoftverfejlesztő cég híreire, kövesse oldalait a közösségi hálózatokon.
Védje jelszavait
Eddig a szerverhez való hozzáférés egyik leggyakoribb módja a kiszolgáló jelszavának feltörése volt. Ezért tartsa be a jól ismert, de mégis releváns ajánlásokat, hogy ne hagyja védelem nélkül a szervert:
- Ne használjon könnyen kitalálható jelszavakat, például a cég nevét;
- ha továbbra is az alapértelmezett jelszót használja a rendszergazdai konzolhoz, azonnal módosítsa azt;
- a különböző szolgáltatások jelszavainak eltérőnek kell lenniük;
- ha valakinek jelszót kell adnia, soha ne küldje el az IP-címet, a bejelentkezési nevet és a jelszót ugyanabban az e-mailben vagy messenger üzenetben;
- A rendszergazdai fiókba való bejelentkezéshez kétfaktoros hitelesítést állíthat be.
Tűzfal
- Győződjön meg arról, hogy a kiszolgáló rendelkezik , be van állítva és folyamatosan fut.
- Biztonságos a bejövő és a kimenő forgalom.
- Kövesse nyomon, hogy mely portok vannak nyitva és milyen célból, ne nyisson meg semmi feleslegeset, hogy csökkentse a szerver feltörésével kapcsolatos lehetséges sebezhetőségek számát.
A tűzfal különösen nagy segítség a szerver védelmében ddos támadások, mert gyorsan létrehozhat tiltó tűzfalszabályokat, és hozzáadhatja azokat az IP-címeket, amelyekről a támadás érkezik, vagy letilthatja a hozzáférést bizonyos alkalmazásokhoz bizonyos protokollok használatával.
Felügyelet és behatolásészlelés
- Korlátozza a kiszolgálón futó szoftvereket és szolgáltatásokat. Rendszeresen ellenőrizze mindazt, ami fut, és ha olyan folyamatokat talál, amelyek ismeretlenek az Ön számára, azonnal törölje azokat, és kezdje el a víruskeresést.
- Rendszeresen ellenőrizze a manipuláció jeleit. Az új információk feltörésre utalhatnak Fiókok felhasználók, akiket nem Ön hozott létre, áthelyezett vagy törölt fájlt /etc/syslog.conf, törölt fájlok/etc/shadowÉs /etc/passwrd.
- Kövesse nyomon a szerver teljesítményét, nézze meg a normál sebességét és áteresztőképesség, így észreveheti az eltéréseket, például amikor a szerver terhelése jelentősen megnőtt a szokásosnál.
VPN és SSL/TLS titkosítás használata
Ha szükséges távoli hozzáférés a szerverre, csak bizonyos IP-címekről engedélyezhető, és VPN-en keresztül történhet.
A következő lépés a biztonság biztosításában az SSL beállítása lehet, amivel nemcsak az adatok titkosítását, hanem a hálózati infrastruktúra többi résztvevőjének személyazonosságát is ellenőrizheti, kiadva nekik a megfelelő tanúsítványokat.
Szerver biztonsági ellenőrzés
Célszerű lenne önállóan ellenőrizni a szerver biztonságát pentest módszerrel, pl. támadásmodellezés a lehetséges sebezhetőségek felkutatása és azok időbeni megszüntetése érdekében. Ebbe célszerű szakembereket bevonni információ biztonság bizonyos tesztek azonban önállóan is elvégezhetők, a szerverek feltörésére szolgáló programokkal.
Mi fenyegeti még a szervereket a hackelésen kívül?
A szerver a feltörésen kívül számos más okból is meghibásodhat. Ez lehet például egy rosszindulatú programfertőzés, vagy egyszerűen az egyik összetevő fizikai meghibásodása.
Ezért a szerver védelmét szolgáló intézkedéseknek a következőket kell tartalmazniuk:
- A szerver védelmét szolgáló programok telepítése és frissítése - vírusirtó.
- Rendszeres titkosított adatmásolatok, legalább hetente, mivel a statisztikák szerint a szerver merevlemezei vannak az első helyen a meghibásodások gyakoriságában. Győződjön meg arról, hogy biztonsági másolat fizikailag biztonságos környezetben tárolják.
- A szerverterem zavartalan áramellátásának biztosítása.
- A szerverek időben történő fizikai megelőzése, beleértve a portisztítást és a hőpaszta cseréjét.
Az Integrus szakembereinek tapasztalata ezt mutatja legjobb védelem ez a fajta fenyegetés ellen – ez a haszna legjobb gyakorlatok a szervervédelmi rendszerek területén.
Ügyfeleink szervereinek biztonsága érdekében eszközök kombinációját alkalmazzuk: tűzfalak, vírusirtó, biztonsági / eseménykezelési technológiák (SIM / SEM), behatolásészlelő / védelmi technológiák (IDS / IPS), hálózati viselkedéselemző (NBA) technológiák , és természetesen rendszeres megelőző karbantartások és kulcsrakész, biztonságos szervertermek rendezése. Ez lehetővé teszi, hogy minimálisra csökkentse a feltörések vagy a szerver egyéb okok miatti meghibásodásának kockázatát.
Készek vagyunk cége szervereinek biztonsági auditjára, szakértőkkel konzultálni, és mindenféle munkát elvégezni a szerverberendezések védelmének beállításához.