Будь-яка версія Комплексний захист від атак (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); помилка fgets(answer, sizeof(answer), stdin); // і знову зчитуємо рядок ) return n; // повертаємо коректне ціле число )

Щоб рахувати ціле число, алгоритм зчитує весь рядок і потім намагається отримати з нього ціле число. У тому випадку, якщо це не вдалося, функція виводимо повідомлення про помилку з пропозицією повторити введення, доки не буде введено коректне значення цілого числа.

Введення речового числа з перевіркою на некоректне введення

double get_double(const char *msg) ( char answer; // рядок для читання double x; // підсумкове речове число printf("%s", msg); // виводимо запрошення до введення fgets(answer, sizeof(answer), stdin); помилці fgets(answer, sizeof(answer), stdin); // і наново зчитуємо рядок ) return 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("Incorrect input). Try again: "); // виводимо повідомлення про помилку fgets(answer, sizeof(answer), stdin); // і знову зчитуємо рядок ) return point; // повертаємо коректну точку )

Як видно з прикладів, особливість повернення функцією sscanf числа лічених аргументів дозволяє контролювати коректність введених даних у зазначеному форматі, а зчитування всього рядка захищає від того, що в потоці введення залишаться символи пропуску або перенесення рядка "\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"

Натисніть, щоб розкрити...

Цим правилом ми записуємо всі ігрові пакети з порту 29 000 розміром від 500 до 65 535 байтів.

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

Натисніть, щоб розкрити...

Цими правилами ми блокуємо користувачів, які відправили більше трьох пакетів за 15 секунд на порт 29000. SIZE - розмір пакету в байтах.
Як відстежити розмір пакета у байтах?
Після першого правила, де ми логуємо всі ігрові пакети, Ви зможете побачити їх у файлі /var/log/syslogабо командою dmesgу консолі сервера.
Коли йде атака в syslog, буде безліч однакових пакетів за короткий час.

PW IN = ipip1 OUT = MAC = SRC = USER IP ADRESS 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.
Брут облікових записів. Тут все просто:
#block brute force login

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 key (ключі) з кодовим словом.
  • Використовуйте останні версії mysql, apache2 та інших важливих пакетів.
  • Після навантаження через OOG використовуйте logrotate, інакше при резервне копіюваннялогів оперативна пам'ятьВаш сервер буде повністю використано. Це може стати наслідком злому.
  • Не використовуйте інше програмне забезпечення на ігровому сервері.
  • Використовуйте нестандартний фільтр паролів гравців. За кілька годин на нашій авторизації було понад 50 000 невалідних спроб авторизацій. У 30% наших гравців збігалися логіни із цих пар логін-пароль.
Ми віддаємо перевагу чесному веденню конкуренції, у нас немає часу і зайвих фінансів на атаки. Не зв'язуйтесь з цими людьми, це може погано скінчитися.

Неможливо захистити сервер від зовнішнього доступу раз і назавжди, адже щодня виявляються нові вразливості та з'являються нові способи злому сервера. Про захист серверів від несанкціонованого доступу ми розповімо в цій статті.

Сервера будь-якої компанії рано чи пізно можуть стати мішенню для злому чи вірусної атаки. Зазвичай результатом такої атаки стає втрата даних, репутаційні або фінансові збитки, тому питанням безпеки серверів варто приділити увагу в першу чергу.

Слід розуміти, що захист від злому серверів – це комплекс заходів, у тому числі який передбачає постійний моніторинг роботи сервера і роботу з удосконалення захисту. Неможливо захистити сервер від зовнішнього доступу раз і назавжди, адже щодня виявляються нові вразливості та з'являються нові способи злому сервера.

Про захист серверів від несанкціонованого доступу ми розповімо в цій статті.

Способи та методи захисту серверів від несанкціонованого доступу

Фізичний захист сервера

Фізичний захист. Бажано, щоб сервер знаходився в захищеному ЦОДі, закритому та охоронюваному приміщенні, сторонні не повинні мати доступу до сервера.

Встановіть аутентифікацію SSH

При налаштуванні доступу до сервера використовуйте автентифікацію за ключами SSH замість пароля, оскільки такі ключі набагато складніші, а іноді й просто неможливо зламати за допомогою перебору варіантів.

Якщо ж вважаєте, що вам таки потрібен пароль, обов'язково обмежте кількість спроб його введення.

Зверніть увагу, якщо при вході ви бачите таке повідомлення:

Last failed login: Tue Sep 28 12:42:35 MSK 2017 від 52.15.194.10 on ssh:notty
Там були 8243 згодні повідомлення про те, що останні successful login.

Це може свідчити, що ваш сервер намагалися зламати. У такому випадку для налаштування безпеки сервера змініть порт SSH, обмежте список IP, з яких можливий доступ до сервера або встановіть програмне забезпечення, яке автоматично блокує надмірно часту та підозрілу активність.

Регулярно встановлюйте останні оновлення

Для забезпечення захисту сервера вчасно встановлюйте останні патчі та оновлення серверного програмного забезпечення, яке використовуєте. операційної системи, гіпервізора, сервер баз даних.

Бажано перевіряти наявність нових патчів, оновлень та повідомлення про виявлені помилки/вразливості щодня, щоб запобігти атакам, що використовують уразливості нульового дня. Для цього підпишіться на новини від компанії-розробника, слідкуйте за її сторінками в соцмережах.

Захищайте паролі

До цих пір одним з найпоширеніших способів отримати доступ до сервера є зламування пароля сервера. Тому дотримуйтесь загальновідомих, але актуальних рекомендацій, щоб не залишити сервер без захисту:

  • не використовуйте паролі, які легко підібрати, такі як назва компанії;
  • якщо ви досі використовуєте дефолтний пароль для консолі адміністратора, негайно змініть його;
  • паролі на різні послуги повинні бути різними;
  • якщо вам необхідно передати пароль будь-кому, ніколи не надсилайте IP-адресу, логін і пароль в тому самому листі або повідомленні в месенджері;
  • для входу в обліковий запис адміністратора можна встановити двоетапну аутентифікацію.

Файрвол

  • Переконайтеся, що на сервері є , він настроєний і працює весь час.
  • Захищайте і вихідний, і вихідний трафік.
  • Слідкуйте за тим, які порти відкриті і для яких цілей, не відкривайте нічого зайвого, щоб знизити кількість ймовірних вразливих місць для злому сервера.

Зокрема, файрвол дуже допомагає у захисті сервера від ddos атак, т.к. можна швидко створювати забороняючі правила файрвола і вносити в них IP-адреси, з яких йде атака, або блокувати доступ до певних програм за певними протоколами.

Моніторинг та виявлення вторгнень

  • Обмежте програмне забезпечення та служби, що працюють у вас на сервері. Періодично перевіряйте все, що у вас запущено, і якщо виявляться якісь вам незнайомі процеси, видаляйте їх негайно і починайте перевірку на віруси.
  • Періодично перевіряйте наявність слідів злому. Про злом можуть свідчити нові облікові записикористувачів, які ви не створювали, переміщення або видалення файлу /etc/syslog.conf, видалені файли/etc/shadowі /etc/passwrd.
  • Моніторьте роботу вашого сервера, стежте за його звичайною швидкістю та пропускною здатністюТак ви зможете помітити відхилення, наприклад, коли навантаження на сервер стало значно більше звичайного.

Використання VPN та шифрування SSL/TLS

Якщо необхідний віддалений доступдо сервера, він повинен бути дозволений тільки з певних IP-адрес і відбуватися за VPN.

Наступним етапом забезпечення безпеки може бути налаштування SSL, яке дозволить не лише шифрувати дані, а й перевіряти ідентичність інших учасників мережної інфраструктури, надаючи їм відповідні сертифікати.

Перевірка безпеки сервера

Хорошою ідеєю буде самостійна перевірка безпеки сервера шляхом пентесту, тобто. моделювання атаки, щоб знайти потенційні вразливості та вчасно їх ліквідувати. Бажано залучити до цього фахівців з інформаційної безпекиОднак деякі тести можна зробити і самостійно, використовуючи програми для злому серверів.

Що ще загрожує серверам, крім злому

Сервер може вийти з ладу з інших причин, крім злому. Наприклад, це може бути зараження шкідливим програмним забезпеченням або просто фізична поломка будь-якого з компонентів.

Тому заходи захисту сервера повинні включати:

  • Встановлення та оновлення програм для захисту сервера – антивірусів.
  • Регулярні зашифровані копії даних щонайменше раз на тиждень, оскільки, згідно зі статистикою, жорсткі диски сервера на першому місці за частотою поломок. Впевніться, що резервна копіязберігається у фізично безпечному середовищі.
  • Забезпечення безперебійного електроживлення серверним.
  • Своєчасна фізична профілактика серверів, що включає їх чищення від пилу та заміну термопасти.

Досвід фахівців "Інтегруса" говорить нам, що найкращий захиствід такого роду загроз – це застосування кращих практику сфері систем захисту серверів.

Для забезпечення безпеки серверів наших замовників ми застосовуємо поєднання інструментів: брандмауери, антивіруси, технології безпеки/керування подіями (SIM/SEM), технології виявлення вторгнень/захисту (IDS/IPS), технології мережевого поведінкового аналізу (NBA), звичайно ж регулярне профілактичне обслуговування серверів та облаштування захищених серверних під ключ. Це дозволяє звести ризики злому або відмови сервера з інших причин до мінімуму.

Готові провести аудит безпеки серверів вашої компанії, провести консультування фахівців, виконати всі види робіт з налаштування захисту серверного обладнання.



Завантаження...
Top