Повечето програми трябва да взаимодействат с потребителя чрез въвеждане на определени данни, независимо дали това е пълното име, височина, тегло, което трябва да се въведе в базата данни, или геометричните размери на някакъв обект, за който трябва да се изчисли нещо. Всички тези данни се въвеждат от потребителя - лице, което означава, че всичко може да дойде в отговор. Какво ще изведе програмата, ако вместо необходимата възраст, потребителят я напише с дума? Най-вероятно програмата ще се срине или ще увисне, но не и ако има "защита от глупаци" в нея.
Защо една програма може да прекрати или замрази? Програмата ще се опита да преобразува набора от знаци в число, което ще се провали, което означава по-нататъшна работаприложението не е дефинирано. Ето защо е много важно да организирате структурата на програмата, така че когато влезете неочакваноза програмата за данни (неправилна по отношение на необходимия формат: необходимо е число, но е въведена дума), приложението не е „паднало“, а е информирало потребителя, че е възникнала грешка и е предложило да повтори въвеждането. Това е "безумно".
Внедряване на защита от грешки в 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(отговор, sizeof(отговор), stdin); // и прочете отново низа) връщане x; // връща валидно реално число)Въвеждане на точка в координатната равнина (структура с две реални полета)
// описание на структурата на данните 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); // четене на ред // докато координатите на двете точки не бъдат прочетени while (sscanf(answer, "(%lf,%lf)", &point.x, &point.y) != 2) ( printf("Неправилно въвеждане. Опитайте отново: "); // отпечатване на съобщението за грешка fgets(answer, sizeof(answer), stdin); // и препрочитане на низа) точка за връщане; // връщане на правилната точка)Както може да се види от примерите, функцията за връщане на броя аргументи, прочетени от функцията sscanf, ви позволява да контролирате коректността на въведените данни в посочения формат, а четенето на целия ред предпазва от факта, че символите за интервал или ред breaks "\n" остават във входния поток, което много често ви принуждава да отделите нито един час или дори ден за търсене на грешка.
Невъзможно е да защитите сървъра от външен достъп веднъж завинаги, защото всеки ден се откриват нови уязвимости и се появяват нови начини за хакване на сървъра. В тази статия ще говорим за защита на сървърите от неоторизиран достъп.
Сървърите на всяка компания рано или късно могат да станат обект на хакване или вирусна атака. Обикновено резултатът от такава атака е загуба на данни, репутационни или финансови щети, така че проблемите със сигурността на сървъра трябва да бъдат разгледани на първо място.
Трябва да се разбере, че защитата срещу хакване на сървъри е набор от мерки, включително такива, които предполагат постоянно наблюдение на работата на сървъра и работа за подобряване на защитата. Невъзможно е да защитите сървъра от външен достъп веднъж завинаги, защото всеки ден се откриват нови уязвимости и се появяват нови начини за хакване на сървъра.
В тази статия ще говорим за защита на сървърите от неоторизиран достъп.
Начини и методи за защита на сървърите от неоторизиран достъп
Физическа защита на сървъра
Физическа защита. Желателно е сървърът да се намира в защитен център за данни, затворено и охранявано помещение, външни лица да нямат достъп до сървъра.
Настройте SSH удостоверяване
Когато настройвате достъп до сървъра, използвайте удостоверяване на SSH ключ вместо парола, тъй като такива ключове са много по-трудни, а понякога просто невъзможни за пробиване с помощта на грубо търсене.
Ако смятате, че все още имате нужда от парола, не забравяйте да ограничите броя на опитите за въвеждане.
Обърнете внимание, ако видите съобщение като това, когато влезете:
Последно неуспешно влизане: вторник, 28 септември, 12:42:35 MSK 2017 от 52.15.194.10 на ssh:notty
Има 8243 неуспешни опита за влизане от последното успешно влизане.
Това може да означава, че вашият сървър е бил хакнат. В този случай, за да конфигурирате защитата на сървъра, променете SSH порта, ограничете списъка с IP адреси, от които е възможен достъп до сървъра, или инсталирайте софтуер, който автоматично блокира прекалено честата и подозрителна дейност.
Инсталирайте редовно последните актуализации
За да осигурите защита на сървъра, инсталирайте най-новите пачове и актуализации на сървърния софтуер, който използвате - операционна система, хипервайзор, сървър на база данни.
Препоръчително е да проверявате за нови корекции, актуализации и докладвани грешки/уязвимости всеки ден, за да предотвратите атаки, експлоатиращи уязвимости от нулевия ден. За да направите това, абонирайте се за новини от компанията за разработка на софтуер, следвайте нейните страници в социалните мрежи.
Защитете паролите
Един от най-разпространените начини за получаване на достъп до сървър е разбиването на паролата на сървъра. Затова следвайте добре познатите, но все пак подходящи препоръки, за да не оставите сървъра незащитен:
- не използвайте пароли, които са лесни за отгатване, като например името на фирмата;
- ако все още използвате паролата по подразбиране за административната конзола, сменете я незабавно;
- паролите за различните услуги трябва да са различни;
- ако трябва да споделите паролата си с някого, никога не изпращайте вашия IP адрес, потребителско име и парола в едно и също имейл или съобщение в месинджър;
- Можете да настроите потвърждаването в 2 стъпки, за да влезете в администраторския акаунт.
защитна стена
- Уверете се, че сървърът има , е конфигуриран и работи през цялото време.
- Защитете както входящия, така и изходящия трафик.
- Следете какви портове са отворени и с каква цел, не отваряйте нищо ненужно, за да намалите броя на възможните уязвимости за хакване на сървъра.
По-специално, защитната стена помага много за защитата на сървъра от ddos атаки, защото можете бързо да създадете правила за блокиране на защитната стена и да добавите IP адреси, от които идва атаката, или да блокирате достъпа до определени приложения, използващи определени протоколи.
Мониторинг и откриване на проникване
- Ограничете софтуера и услугите, работещи на вашия сървър. Периодично проверявайте всичко, което изпълнявате, и ако бъдат открити непознати процеси, незабавно ги изтрийте и започнете да проверявате за вируси.
- Периодично проверявайте за признаци на подправяне. Хакването може да бъде доказано от нови Сметкипотребители, които не сте създали, преместване или изтриване на файл /etc/syslog.conf, изтрити файлове/etc/shadowИ /etc/passwrd.
- Наблюдавайте производителността на вашия сървър, следете нормалната му скорост и пропускателна способност, така че можете да забележите отклонения, например, когато натоварването на сървъра е станало значително повече от обикновено.
Използване на VPN и SSL/TLS криптиране
Ако е необходимо отдалечен достъпкъм сървъра, то трябва да бъде разрешено само от определени IP адреси и да се случва през VPN.
Следващата стъпка в осигуряването на сигурност може да бъде настройката на SSL, който не само ще криптира данните, но и ще проверява самоличността на други участници в мрежовата инфраструктура, като им издава подходящи сертификати.
Проверка на сигурността на сървъра
Би било добра идея независимо да проверите сигурността на сървъра, като използвате метода pentest, т.е. симулация на атака, за да намерите потенциални уязвимости и да ги елиминирате навреме. Препоръчително е да включите специалисти в това информационна сигурност, но някои тестове могат да се направят независимо, като се използват програми за хакване на сървъри.
Какво друго застрашава сървърите освен хакване
Сървърът може да се повреди поради редица причини, различни от хакване. Например, това може да е инфекция със зловреден софтуер или просто физическа повреда на един от компонентите.
Следователно мерките за защита на сървъра трябва да включват:
- Инсталиране и обновяване на програми за защита на сървъра - антивируси.
- Редовни криптирани копия на данни поне веднъж седмично, тъй като според статистиката сървърните твърди дискове са на първо място по отношение на честотата на повреди. Уверете се, че резервно копиесъхранявани във физически защитена среда.
- Осигуряване на непрекъснато захранване на сървърното помещение.
- Навременна физическа профилактика на сървъри, включително почистване от прах и смяна на термопаста.
Опитът на специалистите от Integrus ни казва това най-добра защитасрещу подобни заплахи е използването най-добри практикив областта на сървърните системи за защита.
За да гарантираме сигурността на сървърите на нашите клиенти, ние използваме комбинация от инструменти: защитни стени, антивируси, технологии за сигурност / управление на събития (SIM / SEM), технологии за откриване / защита на проникване (IDS / IPS), технологии за анализ на мрежовото поведение (NBA) , разбира се редовна профилактика на сървъри и подреждане на защитени сървърни стаи до ключ. Това ви позволява да сведете до минимум рисковете от хакване или повреда на сървъра по други причини.
Ние сме готови да проведем одит на сигурността на сървърите на вашата компания, да консултираме специалисти, да извършим всички видове работа по настройка на защитата на сървърното оборудване.