Повечето програми трябва да взаимодействат с потребителя чрез въвеждане на определени данни, било то пълно име, височина, тегло, които да бъдат въведени в базата данни, или геометричните размери на някакъв обект, за който трябва да се изчисли нещо. Всички тези данни се въвеждат от потребителя - лице, което означава, че всичко може да дойде в отговор. Какво ще произведе програмата, ако потребителят я напише с думи вместо възрастта, която изисква? Най-вероятно програмата ще се срине или ще замръзне, но не и ако има „защита от глупаци“.
Защо дадена програма може да се срине или да замръзне? Програмата ще се опита да преобразува набора от знаци в число, което няма да е възможно, което означава по-нататъшна работаприложението не е дефинирано. Ето защо е много важно да организирате структурата на програмата така, че при влизане неочакваноза програмата за данни (неправилно от гледна точка на необходимия формат: необходимо е число, но се въвежда дума), приложението не се срива, но информира потребителя, че е възникнала грешка и иска да повтори въвеждането. Това е „доказателство за глупаци“.
Внедряване на защита от грешки в C
За да се реализира добра защита от грешки при въвеждане на различни числови (int, double...) данни, е необходимо да се четат не самите числа, а целият входен низ и едва след това да се анализира входа. Езикът C има много добра функция sscanf(const char *, const char *, args) , която работи подобно на функцията scanf(const char *, args), връщайки броя на успешно прочетените аргументи, само данните не се четат от стандартен потоквход, но от низа, предаден му като първи аргумент.
Нека да разгледаме някои примери за функции, които прилагат проверка на грешки с помощта на функцията sscanf.
Въвеждане на цяло число с проверка за неправилно въвеждане
int get_integer(const char *msg) ( char answer; // ред за четене int n; // окончателно цяло число printf("%s", msg); // показване на подкана fgets(answer, sizeof(answer), stdin); // прочете реда // докато не бъде прочетено цяло число while (sscanf(answer, "%d", &n) != 1) ( printf("Неправилно въвеждане. Опитайте отново: "); // отпечатайте съобщение за грешка fgets (отговор, sizeof(отговор), stdin); // и прочете реда отново ) return n; // върне правилното цяло число)За да прочете цяло число, алгоритъмът чете целия низ и след това се опитва да получи цяло число от него. Ако това не успее, функцията показва съобщение за грешка, което ви моли да повторите въвеждането, докато бъде въведена правилната целочислена стойност.
Въвеждане на реално число с проверка за грешно въвеждане
double get_double(const char *msg) ( char answer; // ред за четене double x; // окончателно реално число printf("%s", msg); // показване на подкана за въвеждане fgets(answer, sizeof(answer), stdin); // прочете реда // докато се прочете реално число, докато (sscanf(answer, "%lf", &x) != 1) ( printf("Неправилно въвеждане. Опитайте отново: "); // отпечатайте съобщение за грешка fgets(answer, sizeof(answer), stdin); // и прочете реда отново ) return x; // return the correct real number )Въвеждане на точка в координатната равнина (структура с две реални полета)
// описание на структурата на данните typedef struct point_t ( double x; // x координата double y; // y координата ) point_t; point_t get_point(const char *msg) ( char answer; // ред за четене point_t point; // крайна точка printf("%s", msg); // показва подкана за въвеждане fgets(answer, sizeof(answer), stdin ); // прочете реда // докато не бъдат прочетени координатите на двете точки, докато (sscanf(answer, "(%lf,%lf)", &point.x, &point.y) != 2) ( printf("Неправилно въвеждане. Опитайте отново: "); // изведете съобщение за грешка fgets(answer, sizeof(answer), stdin); // и прочетете отново реда) точка за връщане; // върнете правилната точка)Както може да се види от примерите, функцията на функцията sscanf, връщаща броя прочетени аргументи, ви позволява да контролирате коректността на въведените данни в посочения формат, а четенето на целия ред предпазва от факта, че знаците за интервали или прекъсвания на редове „\n“ ще остане във входния поток, което много често ви принуждава да губите Не отнема час или дори ден, за да откриете грешка.
Невъзможно е да защитите сървъра от външен достъп веднъж завинаги, защото всеки ден се откриват нови уязвимости и се появяват нови начини за хакване на сървъра. В тази статия ще говорим за защита на сървърите от неоторизиран достъп.
Сървърите на всяка компания рано или късно могат да станат обект на хакване или вирусна атака. Обикновено резултатът от такава атака е загуба на данни, репутационни или финансови щети, така че на проблемите със сигурността на сървъра трябва да се обърне приоритетно внимание.
Трябва да се разбере, че защитата срещу хакване на сървъри е набор от мерки, включително постоянен мониторинг на работата на сървъра и работа за подобряване на защитата. Невъзможно е да защитите сървъра от външен достъп веднъж завинаги, защото всеки ден се откриват нови уязвимости и се появяват нови начини за хакване на сървъра.
В тази статия ще говорим за защита на сървърите от неоторизиран достъп.
Начини и методи за защита на сървърите от неоторизиран достъп
Физическа защита на сървъра
Физическа защита. Препоръчително е сървърът да бъде разположен в защитен център за данни, затворено и охранявано помещение да няма достъп до сървъра.
Настройте SSH удостоверяване
Когато настройвате достъп до сървъра, използвайте удостоверяване на SSH ключ вместо парола, тъй като такива ключове са много по-трудни и понякога просто невъзможни за пробиване с груба сила.
Ако смятате, че все още имате нужда от парола, не забравяйте да ограничите броя на опитите за въвеждане.
Моля, обърнете внимание, ако видите съобщение като това, когато влезете:
Последно неуспешно влизане: вторник, 28 септември, 12:42:35 MSK 2017 от 52.15.194.10 на ssh:notty
Има 8243 неуспешни опита за влизане от последното успешно влизане.
Това може да означава, че някой се е опитал да хакне вашия сървър. В този случай, за да конфигурирате защитата на сървъра, променете SSH порта, ограничете списъка с IP адреси, от които е възможен достъп до сървъра, или инсталирайте софтуер, който автоматично блокира прекалено честата и подозрителна дейност.
Инсталирайте редовно последните актуализации
За да осигурите защита на сървъра, инсталирайте незабавно най-новите пачове и актуализации за сървърния софтуер, който използвате - операционна система, хипервайзор, сървър на база данни.
Препоръчително е да проверявате за нови пачове, актуализации и доклади за грешки/уязвимости всеки ден, за да предотвратите атаки, които използват уязвимости от нулевия ден. За да направите това, абонирайте се за новини от компанията за разработка на софтуер, следвайте нейните страници в социалните мрежи.
Защитете вашите пароли
Досега един от най-разпространените начини за получаване на достъп до сървър е хакването на паролата на сървъра. Затова се придържайте към добре познатите, но все пак подходящи препоръки, за да не оставите сървъра незащитен:
- Не използвайте пароли, които са лесни за отгатване, като името на вашата компания;
- ако все още използвате паролата по подразбиране за администраторската конзола, сменете я незабавно;
- паролите за различните услуги трябва да са различни;
- ако трябва да дадете парола на някого, никога не изпращайте IP адреса, потребителското име и паролата в едно и също имейл или съобщение в месинджър;
- Можете да настроите двуфакторно удостоверяване, за да влезете във вашия администраторски акаунт.
Защитна стена
- Уверете се, че сървърът има, че е конфигуриран и работи през цялото време.
- Защитете както входящия, така и изходящия трафик.
- Следете кои портове са отворени и за какви цели, не отваряйте нищо ненужно, за да намалите броя на възможните уязвимости за хакване на сървъра.
По-специално, защитната стена е много полезна за защита на сървъра от ddos атаки, защото можете бързо да създадете забранителни правила за защитна стена и да добавите IP адресите, от които идва атаката, или да блокирате достъпа до определени приложения, използващи определени протоколи.
Мониторинг и откриване на проникване
- Ограничете софтуера и услугите, работещи на вашия сървър. Периодично проверявайте всичко, което изпълнявате, и ако откриете непознати за вас процеси, незабавно ги изтрийте и започнете да сканирате за вируси.
- Проверявайте периодично за признаци на подправяне. Нова информация може да означава хак сметкипотребители, които не сте създали, преместване или изтриване на файл /etc/syslog.conf, изтрити файлове/etc/shadowи /etc/passwrd.
- Наблюдавайте производителността на вашия сървър, вижте нормалната му скорост и пропускателна способност, така че можете да забележите отклонения, например, когато натоварването на сървъра е станало значително по-високо от обикновено.
Използване на VPN и SSL/TLS криптиране
При необходимост отдалечен достъпкъм сървъра, то трябва да бъде разрешено само от определени IP адреси и да се извършва през VPN.
Следващата стъпка в осигуряването на сигурност може да бъде настройката на SSL, която ще ви позволи не само да шифровате данни, но и да проверите самоличността на други участници в мрежовата инфраструктура, като им издадете съответните сертификати.
Проверка на сигурността на сървъра
Би било добра идея независимо да проверите сигурността на сървъра с помощта на метод pentest, т.е. моделиране на атаки, за да откриете потенциални уязвимости и да ги елиминирате своевременно. Препоръчително е да включите специалисти в това информационна сигурност, но някои тестове могат да се направят независимо, като се използват програми за хакване на сървъри.
Какво друго застрашава сървърите освен хакване?
Сървърът може да се провали поради редица причини, различни от хакване. Например, това може да е инфекция със зловреден софтуер или просто физическа повреда на един от компонентите.
Следователно мерките за защита на сървъра трябва да включват:
- Инсталиране и обновяване на програми за защита на сървъра - антивируси.
- Редовни криптирани копия на данни поне веднъж седмично, тъй като според статистиката, твърди дисковесървърите са на първо място по честота на повреди. Уверете се архивиранесъхранявани във физически защитена среда.
- Осигуряване на непрекъснато захранване на сървърното помещение.
- Навременна физическа профилактика на сървъри, включително почистване от прах и смяна на термопаста.
Опитът на специалистите от Integrus ни казва това най-добра защитасрещу този тип заплахи е прилагането на най-добрите практики в областта на сървърните системи за защита.
За да гарантираме сигурността на сървърите на нашите клиенти, ние използваме комбинация от инструменти: защитни стени, антивируси, технологии за сигурност / управление на събития (SIM / SEM), технологии за откриване / защита на проникване (IDS / IPS), технологии за анализ на мрежовото поведение (NBA) , разбира се редовна превантивна поддръжка на сървъри и подреждане на защитени сървърни стаи до ключ. Това ви позволява да намалите до минимум рисковете от хакване или отказ на сървъра по други причини.
Ние сме готови да проведем одит на сигурността на сървърите на вашата компания, да се консултираме със специалисти и да извършим всички видове работа за настройка на защитата на сървърното оборудване.