Всяка версия Цялостна защита от атаки (OOG и други). Защита на сървъра от хакване Физическа защита на сървъра

Повечето програми трябва да взаимодействат с потребителя чрез въвеждане на определени данни, независимо дали това е пълното име, височина, тегло, което трябва да се въведе в базата данни, или геометричните размери на някакъв обект, за който трябва да се изчисли нещо. Всички тези данни се въвеждат от потребителя - лице, което означава, че всичко може да дойде в отговор. Какво ще изведе програмата, ако вместо необходимата възраст, потребителят я напише с дума? Най-вероятно програмата ще се срине или ще увисне, но не и ако има "защита от глупаци" в нея.

Защо една програма може да прекрати или замрази? Програмата ще се опита да преобразува набора от знаци в число, което ще се провали, което означава по-нататъшна работаприложението не е дефинирано. Ето защо е много важно да организирате структурата на програмата, така че когато влезете неочакваноза програмата за данни (неправилна по отношение на необходимия формат: необходимо е число, но е въведена дума), приложението не е „паднало“, а е информирало потребителя, че е възникнала грешка и е предложило да повтори въвеждането. Това е "безумно".

Внедряване на защита от грешки в 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" остават във входния поток, което много често ви принуждава да отделите нито един час или дори ден за търсене на грешка.

Здравейте всички от екипа на UNITWAY PW. С тази тема бихме искали да демонстрираме липсата на нелоялна конкуренция от наша страна и черна, грозна, измамна конкуренция от проекта NewDestiny.

Ето списък с решения от атаки, които някога са били използвани от администраторите на NewDestiny loko9988, TyrikMan (вчерашната OOG атака беше от IP адреса на Йошкар Ола), Killer_Pooh (Беше записана и атака от град Волжски). Освен атаки срещу нас, получихме информация за атака срещу редица други сървъри, която беше свързана с нашето откритие. Чрез публикуването на редица корекции от тези атаки, ние демонстрираме нашата неучастност в атаки срещу когото и да било, въпреки явно загрижената позиция на администратора Zzebra PW (mirthost) по нашия проект. Абсолютно не се сърдим на всеки, който се е хванал по жълтата статия за нас, всеки си има глава на раменете.


И това е само част от техните сметки.

Една от причините за публикуването на тази тема бяха слуховете, достигнали до нас. Същността на тези слухове е, че loko9988 атакува сървъри не само поради конкуренция, но и за да предложи защита на тези сървъри чрез него.

Защита срещу OOG атаки, базирани на iptables:
Първо, ние създаваме скриптови правила за защитна стена, можете да ги наричате както искате.

iptables -A INPUT -p tcp -m multiport --dports 29000 -m length --length 500:65535 -j LOG --log-prefix "PW"

Кликнете, за да разкриете...

С това правило записваме всички пакети за игри от порт 29000 с размер от 500 до 65535 байта.

iptables -A INPUT -p tcp -m multiport --dports 29000 -m length --length 500:65535 -m recent --name packets --set
iptables -A INPUT -p tcp -m multiport --dports 29000 -m length --length 500:65535 -m recent --name packets --update --seconds 1 --hitcount 100 -j REJECT

Кликнете, за да разкриете...

С тези правила ние блокираме потребителя, ако сървърът получи от него повече от 100 пакета от 500 - 65535 байта за 1 секунда на 29000 (игра) порт.

iptables -A INPUT -p tcp -m multiport --dports 29000 -m length --length SIZE -m recent --name packet1 --set
iptables -A INPUT -p tcp -m multiport --dports 29000 -m length --length SIZE -m recent --name packet1 --update --seconds 15 --hitcount 3 -j REJECT

Кликнете, за да разкриете...

С тези правила блокираме потребители, изпратили повече от 3 пакета за 15 секунди към порт 29000. SIZE - размер на пакета в байтове.
Как да проследя размера на пакета в байтове?
След първото правило, където регистрираме всички пакети на играта, можете да ги видите във файла /var/log/syslogили екип dmesgв сървърната конзола.
Когато е в ход атака, ще има много идентични пакети в syslog за кратко време.

PW IN=ipip1 OUT= MAC= SRC= ПОТРЕБИТЕЛСКИ IP АДРЕС DST=*.*.*.* LEN=547 TOS=0x00 PREC=0x00 TTL=241 ID=13328 DF PROTO=TCP SPT=22511 DPT=63947 WINDOW=254 RES=0x00 ACK PSH URGP=0

Кликнете, за да разкриете...

В горния пример размерът на пакета е "LEN=547".

Разбрахме OOG защитата. Нека да преминем към други начини, по които NewDestiny се конкурира.
Груби сметки. Тук всичко е съвсем просто:
#блокиране на влизане с груба сила

iptables -A INPUT -p tcp -m multiport --dports 29000 -m conntrack --ctstate NEW -m recent --name brute --set
iptables -A INPUT -p tcp -m multiport --dports 29000 -m conntrack --ctstate NEW -m recent --name brute --update --seconds 30 --hitcount 3 -j REJECT

Кликнете, за да разкриете...

С това правило блокираме IP адреса на потребителя за 30 секунди, ако е направил повече от 3 заявки за свързване към порт 29000.
  • Направете пълно ограничение на портовете, освен за игри през iptables.
  • Направете връзка със сървъра, като използвате ssh ключ (ключове) с кодова дума.
  • Използвайте най-новите версии mysql, apache2 и други важни пакети.
  • След зареждане чрез OOG използвайте logrotate, в противен случай, когато архивиранетрупи RAMВашият сървър ще бъде напълно използван. Това може да доведе до хакване.
  • Не използвайте софтуер на трети страни на сървъра на играта.
  • Използвайте персонализиран филтър за парола на играч. В рамките на няколко часа имаше над 50 000 невалидни опита за авторизация на нашата авторизация. 30% от нашите играчи са имали идентични входове от тези двойки вход-парола.
Предпочитаме честно провеждане на състезанието, нямаме време и излишни пари за атаки. Не се забърквайте с тези хора, може да свърши зле.

Невъзможно е да защитите сървъра от външен достъп веднъж завинаги, защото всеки ден се откриват нови уязвимости и се появяват нови начини за хакване на сървъра. В тази статия ще говорим за защита на сървърите от неоторизиран достъп.

Сървърите на всяка компания рано или късно могат да станат обект на хакване или вирусна атака. Обикновено резултатът от такава атака е загуба на данни, репутационни или финансови щети, така че проблемите със сигурността на сървъра трябва да бъдат разгледани на първо място.

Трябва да се разбере, че защитата срещу хакване на сървъри е набор от мерки, включително такива, които предполагат постоянно наблюдение на работата на сървъра и работа за подобряване на защитата. Невъзможно е да защитите сървъра от външен достъп веднъж завинаги, защото всеки ден се откриват нови уязвимости и се появяват нови начини за хакване на сървъра.

В тази статия ще говорим за защита на сървърите от неоторизиран достъп.

Начини и методи за защита на сървърите от неоторизиран достъп

Физическа защита на сървъра

Физическа защита. Желателно е сървърът да се намира в защитен център за данни, затворено и охранявано помещение, външни лица да нямат достъп до сървъра.

Настройте 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) , разбира се редовна профилактика на сървъри и подреждане на защитени сървърни стаи до ключ. Това ви позволява да сведете до минимум рисковете от хакване или повреда на сървъра по други причини.

Ние сме готови да проведем одит на сигурността на сървърите на вашата компания, да консултираме специалисти, да извършим всички видове работа по настройка на защитата на сървърното оборудване.



Зареждане...
Връх