Важко дати конкретні поради з того, що ви тут розмістили, але у мене є загальні поради, засновані на публікації, яку я писав століттями назад, коли мені ще можна було б занепокоєти блог.
Не панікуйте
По-перше, спочатку немає жодних "швидких виправлень", крім відновлення системи з резервної копії, зробленої до вторгнення, і це має щонайменше дві проблеми.
- Важко точно визначити, коли відбулося вторгнення.
- Це не допоможе вам закрити "дірку", яка дозволила їм зламатись за останній час, а також не боротися з наслідками будь-яких "крадіжок даних", які також могли відбутися.
Це питання не раз задаються жертвами хакерів, що ввірваються на їх веб-сервер. Відповіді змінюються дуже рідко, але люди продовжують задавати питання. Я не впевнений, чому. Можливо, людям просто не подобаються відповіді, які вони бачили під час пошуку допомоги, або вони не можуть знайти когось, кому вони довіряють, щоб дати їм поради. Або, можливо, люди читають відповідь на це запитання і занадто зосереджуються на 5%, чому їхній випадок особливий і відрізняється від відповідей, які вони можуть знайти в Інтернеті, і пропускають 95% запитань і відповідей, де їх справа майже однакова як той, який вони читають в Інтернеті.
Це підводить мене до першого важливого нотку інформації. Я дуже вдячний, що ви особлива унікальна сніжинка. Я вдячний, що ваш веб-сайт теж є, оскільки це відображення вас і вашого бізнесу або, принаймні, вашої наполегливої праці від імені роботодавця. Але для когось із зовнішньої сторони, незалежно від того, чи є людина з комп'ютерної безпеки, яка шукає проблему, щоб спробувати допомогти вам або навіть самому зловмисникові, велика ймовірність, що ваша проблема буде щонайменше на 95% ідентичною для кожного іншого випадку, який вони мають коли-небудь дивився.
Не сприймайте атаку особисто і не приймайте рекомендацій, які випливають тут, або які ви отримуєте від інших людей особисто. Якщо ви читаєте це після того, як тільки ви стали жертвою злому веб-сайту, тоді я дуже шкодую, і я дуже сподіваюся, що ви зможете знайти тут щось корисне, але це не час, щоб дозволити вашому Его заважати тому, що вам потрібно робити.
Ви щойно з’ясували, що ваш сервер (и) зламали. А тепер що?
Не панікувати. Абсолютно не дійте поспіхом і абсолютно не намагайтеся робити вигляд, що речі ніколи не відбувалися і не дійте зовсім.
По-перше: зрозумійте, що катастрофа вже сталася. Це не час для відмови; саме час прийняти те, що сталося, бути реалістичним щодо цього та вжити заходів щодо управління наслідками наслідків.
Деякі з цих кроків зашкодять, і (якщо на вашому веб-сайті немає копії моїх реквізитів), я дійсно не хвилююся, якщо ви проігноруєте всі або деякі з цих кроків, це залежати від вас. Але правильне дотримання їх зрештою покращить справи. Ліки може виглядати жахливо, але іноді вам доведеться не помітити, що якщо ви дійсно хочете, щоб ліки спрацювало.
Не дозволяйте проблемі стати гіршою, ніж вона є:
- Перше, що вам слід зробити - це відключити пошкоджені системи від Інтернету. Незалежно від будь-яких інших проблем, залишаючи систему, підключену до Інтернету, лише дозволить атаці тривати. Я маю на увазі це досить буквально; змусити когось фізично відвідати сервер та відключити мережеві кабелі, якщо для цього потрібно, але відключіть жертву від її гнучки, перш ніж спробувати зробити щось інше.
- Змініть усі ваші паролі для всіх облікових записів на всіх комп’ютерах, які перебувають у тій самій мережі, що і компрометовані системи. Насправді ні. Усі рахунки. Всі комп'ютери. Так, ви маєте рацію, це може бути зайвим; з іншого боку, це не може. Ви не знаєте жодного способу, чи не так?
- Перевірте свої інші системи. Зверніть особливу увагу на інші сервіси, що стоять перед Інтернетом, та на ті, що містять фінансові чи інші дані, комерційно важливі.
- Якщо система зберігає особисті дані когось, негайно повідомте про це особу, відповідальну за захист даних (якщо це не ви), і URGE про повне розголошення. Я знаю, що це важко. Я знаю, що це буде боляче. Я знаю, що багато підприємств хочуть підмітати подібну проблему під килимом, але бізнесу доведеться з цим вирішувати - і потрібно це робити з огляду на будь-які відповідні закони про конфіденційність.
Однак, якщо роздратовано ваших клієнтів, ви можете їм розказати про проблему, вони будуть набагато більше роздратовані, якщо ви не скажете їм, і вони дізнаються про себе лише після того, як хтось стягне товари на суму 8000 доларів за допомогою реквізитів кредитної картки, які вони викрали з вашого сайту.
Пам'ятаєте, що я казав раніше? Погане вже трапилося. Питання лише в тому, наскільки добре ви з цим справляєтеся.
Зрозумійте проблему повністю:
- НЕ ставте постраждалих систем назад до Інтернету, поки цей етап не буде повністю завершений, якщо тільки ви не хочете бути особою, чия посада стала для мене важливою для насправді, вирішивши написати цю статтю. Я не збираюся посилатись на цю посаду, щоб люди могли засміятися, але справжня трагедія - це коли люди не вчаться на своїх помилках.
- Вивчіть "атаковані" системи, щоб зрозуміти, яким чином атаки вдалося пошкодити вашу безпеку. Докладіть усіх зусиль, щоб з’ясувати, звідки "прийшли" атаки, щоб ви зрозуміли, які проблеми у вас є і потрібно вирішити, щоб забезпечити безпеку вашої системи в майбутньому.
- Вивчіть «атаковані» системи ще раз, щоб зрозуміти, куди пішли атаки, щоб зрозуміти, які системи були піддані атаці. Переконайтеся, що ви відстежуєте будь-які вказівки, які передбачають, що компрометовані системи можуть стати плацдармом для подальшого нападу на ваші системи.
- Переконайтесь, що "шлюзи", які використовуються в будь-яких атаках, повністю зрозумілі, щоб ви могли почати їх правильно закривати. (наприклад, якщо ваші системи були порушені атакою ін'єкції SQL, тоді вам не тільки потрібно закрити конкретний недосконалий рядок коду, через який вони прорвалися, ви хочете перевірити весь код, щоб побачити, чи помилка одного типу було зроблено в іншому місці).
- Зрозумійте, що атаки можуть досягти успіху через більше ніж один недолік. Часто атаки досягають успіху не через пошук однієї основної помилки в системі, а шляхом з’єднання разом декількох питань (іноді незначних і тривіальних самих) для компрометації системи. Наприклад, використання атак ін'єкцій SQL для відправки команд на сервер бази даних, виявлення веб-сайту / програми, на яку ви атакуєте, працює в контексті адміністративного користувача та використовує права цього облікового запису як перехідний етап для компрометації інших частин система. Або як хакери люблять називати це: "черговий день в офісі, скориставшись поширеними помилками людей".
Чому б не просто "відремонтувати" виявлений вами експлуатат або руткіт і повернути систему назад в Інтернет?
У таких ситуаціях проблема полягає в тому, що ви більше не маєте контролю над цією системою. Це вже не ваш комп’ютер.
Єдиний спосіб бути впевненим, що ви маєте контроль над системою, - це відновити систему. Незважаючи на те, що в пошуку і виправлення експлуатації, яка використовується для вторгнення в систему, є велика цінність, ви не можете бути впевнені, що ще було зроблено для системи, коли зловмисники отримали контроль (справді, це не є нечуваним для хакерів, які вербують на роботу системи в ботнет, щоб виправити подвиги, якими вони користувалися, щоб захистити "свій" новий комп'ютер від інших хакерів, а також встановити їх руткіт).
Складіть план відновлення та відновіть свій веб-сайт в Інтернеті та дотримуйтесь його:
Ніхто не хоче перебувати в офлайні довше, ніж це має бути. Це дано. Якщо цей веб-сайт є механізмом отримання доходу, тоді тиск, щоб швидко повернути його назад, буде сильним. Навіть якщо єдине, про що йдеться, - це репутація вашої / вашої компанії, це все одно створює чималий тиск для швидкого відновлення речей.
Однак не піддавайтеся спокусі занадто швидко повернутися в Інтернет. Замість цього рухайтесь якомога швидше, щоб зрозуміти, що спричинило проблему, і вирішити її, перш ніж повернутися в Інтернет, інакше ви майже напевно знову станете жертвою вторгнення, і пам’ятайте, «колись зламати, можна кваліфікувати як нещастя; знову зламатись прямо згодом, це виглядає як необережність "(із вибаченнями Оскара Уайльда).
- Я припускаю, що ви зрозуміли усі проблеми, які призвели до успішного втручання, перш ніж ви навіть розпочали цей розділ. Я не хочу перебільшувати справу, але якщо ви цього не зробили першими, то вам дійсно потрібно. Вибачте.
- Ніколи не платять гроші за шантаж / захист. Це знак легкої позначки, і ви не хочете, щоб ця фраза ніколи не використовувала вас для опису.
- Не спокушайтесь повернути той самий сервер (-ів) назад в Інтернет без повної перебудови. Потрібно набагато швидше створити нову скриньку або "запустити сервер з орбіти і зробити чисту установку" на старому апаратному забезпеченні, ніж перевірити кожен кут старої системи, щоб переконатися, що він чистий, перш ніж повертати його назад знову в Інтернеті. Якщо ви не згодні з цим, то, напевно, ви не знаєте, що насправді означає забезпечити повну очищення системи, або процедури розгортання вашого веб-сайту є нечестивим безладом. Імовірно, у вас є резервні копії та тестові розгортання вашого сайту, які ви можете просто використовувати для створення активного сайту, і якщо ви цього не зробите, то це не ваша найбільша проблема.
- Будьте дуже обережні щодо повторного використання даних, які були "живими" в системі під час злому. Я не скажу "ніколи не роби цього", тому що ти просто проігноруєш мене, але відверто кажучи, я думаю, що потрібно враховувати наслідки збереження даних, коли знаєш, що не можеш гарантувати їх цілісність. В ідеалі слід відновити це з резервної копії, зробленої до вторгнення. Якщо ви цього не можете чи не хочете, ви повинні бути дуже обережними з цими даними, тому що вони загрожують. Особливо слід знати про наслідки для інших, якщо ці дані належать клієнтам чи відвідувачам сайту, а не безпосередньо вам.
- Уважно стежте за системами. Ви повинні вирішити це в майбутньому як процес, що триває (докладніше нижче), але ви берете на себе будь-які болі, щоб бути пильними протягом періоду, одразу після повернення вашого веб-сайту в Інтернеті. Зловмисники майже напевно повернуться, і якщо ви зможете помітити їх, що намагаються пробитись знову, ви, безсумнівно, зможете швидко побачити, чи дійсно ви закрили всі отвори, які вони раніше використовували, а також будь-які зроблені для себе, і ви можете зібрати корисне інформацію, яку ви можете передати місцевим правоохоронним органам.
Зниження ризику в майбутньому.
Перше, що вам потрібно зрозуміти, це те, що безпека - це процес, який вам доведеться застосовувати протягом усього життєвого циклу проектування, розгортання та обслуговування системи, орієнтованої на Інтернет, а не те, що ви зможете згодом переплести кілька шарів над своїм кодом, як дешево фарба. Щоб бути належним чином захищеним, сервіс та додаток повинні бути розроблені з самого початку, враховуючи це як одну з головних цілей проекту. Я розумію, що це нудно, і ви все це чули раніше і що я "просто не усвідомлюю тиску", щоб ваш бета-сервіс web2.0 (бета) перейшов у статус бета в Інтернеті, але факт полягає в тому, що це триває повторюватися, тому що це було правдою вперше, коли це було сказано, і це ще не стало брехнею.
Ви не можете усунути ризик. Ви навіть не повинні намагатися це робити. Однак ви повинні зробити, щоб зрозуміти, які ризики для безпеки важливі для вас, і зрозуміти, як керувати та зменшувати як вплив ризику, так і ймовірність виникнення ризику.
Які заходи можна вжити, щоб зменшити ймовірність нападу?
Наприклад:
- Чи був недолік, який дозволив людям проникнути на ваш сайт відомою помилкою в коді постачальників, для якої доступно виправлення? Якщо так, чи потрібно переосмислити свій підхід до того, як виправляти програми на своїх Інтернет-серверах?
- Чи був недолік, який дозволив людям увірватися на ваш сайт, невідомий помилка коду постачальника, для якого патч не був доступний? Я, звичайно, не рекомендую змінювати постачальників кожного разу, коли щось подібне кусає вас, тому що у них є всі проблеми, і ви втратите платформи за рік максимум, якщо приймете такий підхід. Однак якщо система постійно дає вам змогу, вам слід або перейти на щось більш надійне, або, принаймні, перевлаштувати систему, щоб уразливі компоненти залишалися загорнуті у вату і якомога далі від ворожих очей.
- Чи був розроблений вами (або підрядник, який працював на вас) недоліком у коді? Якщо так, чи потрібно переосмислити свій підхід до того, як ви затверджуєте код для розгортання на своєму веб-сайті? Чи не вдалося виявити помилку за допомогою вдосконаленої тестової системи чи із змінами у вашому "стандартному" кодуванні (наприклад, поки технологія не є панацеєю, ви можете зменшити ймовірність успішної атаки ін'єкції SQL, використовуючи добре задокументовані методи кодування. ).
- Чи був недолік через проблему з тим, як було розгорнуто сервер чи прикладне програмне забезпечення? Якщо так, чи використовуєте ви автоматизовані процедури для створення та розгортання серверів, де це можливо? Це чудова допомога у підтримці послідовного "базового" стану на всіх ваших серверах, мінімізуючи кількість замовлених робіт, які необхідно виконати на кожному з них, і, таким чином, сподіваємось мінімізувати можливість помилки. Те ж саме стосується розгортання коду - якщо вам потрібно зробити щось "особливе" для розгортання останньої версії веб-програми, тоді постарайтеся автоматизувати його та забезпечити його завжди послідовно.
- Чи могли втрутитися вторгнення раніше, покращивши моніторинг ваших систем? Звичайно, цілодобовий моніторинг або система «за викликом» для вашого персоналу може не бути рентабельною, але є компанії, які можуть контролювати ваші веб-сервісні послуги для вас та попереджати вас у разі виникнення проблеми. Ви можете вирішити, що ви не можете собі цього дозволити чи не потрібно, і це просто чудово ... просто врахуйте це.
- Використовуйте такі інструменти, як трикутник і ніссус, де це доречно, але не використовуйте їх просто наосліп, тому що я це сказав. Знайдіть час, щоб навчитися використовувати декілька хороших інструментів безпеки, що відповідають вашому середовищу, постійно оновлюйте ці інструменти та регулярно користуйтеся ними.
- Розгляньте можливість найняти експертів із безпеки для регулярного "аудиту" безпеки вашого веб-сайту. Знову ж таки, ви можете вирішити, що ви не можете собі цього дозволити чи не потрібно, і це просто чудово ... просто врахуйте це.
Які заходи можна вжити, щоб зменшити наслідки успішного нападу?
Якщо ви вирішили, що "ризик" затоплення нижнього поверху вашого будинку високий, але недостатньо високий, щоб вимагати переїзду, вам слід принаймні перемістити незамінні сімейні реліквії наверх. Правильно?
- Чи можете ви зменшити кількість послуг, які безпосередньо піддаються впливу Інтернету? Чи можете ви дотримуватися певного розриву між вашими внутрішніми послугами та послугами, орієнтованими на Інтернет? Це гарантує, що навіть якщо ваші зовнішні системи зірвані, шанси використовувати це як плацдарм для атаки на ваші внутрішні системи обмежені.
- Чи зберігаєте ви інформацію, яку не потрібно зберігати? Чи зберігаєте ви таку інформацію "в Інтернеті", коли її можна було б архівувати десь в іншому місці. У цій частині є два моменти; очевидним є те, що люди не можуть вкрасти у вас інформацію, якої у вас немає, а другий момент - чим менше ви зберігаєте, тим менше вам потрібно підтримувати і кодувати, і тому менше шансів помилок потрапляти в ваш код або дизайн систем.
- Ви використовуєте принципи "найменшого доступу" для свого веб-додатка? Якщо користувачам потрібно читати лише з бази даних, переконайтеся, що обліковий запис, який веб-додаток використовує для обслуговування, має лише доступ для читання, не дозволяйте йому записувати доступ і, звичайно, не мати системного рівня.
- Якщо ви не дуже досвідчені в чомусь, і це не є головним у вашому бізнесі, подумайте про те, що це стосується аутсорсингу. Іншими словами, якщо ви запускаєте невеликий веб-сайт, говорячи про написання коду додатків для настільних комп'ютерів, і вирішили почати продавати невеликі додатки для настільних ПК із сайту, тоді подумайте про "аутсорсинг" вашої системи замовлень на кредитну картку комусь, наприклад, Paypal.
- Якщо це взагалі можливо, зробіть практичне відновлення зі збитих систем частиною вашого плану відновлення після аварій. Це, мабуть, лише черговий "сценарій катастроф", з яким ви можете зіткнутися, просто один із власним набором проблем та проблем, які відрізняються від звичайної "серверної кімнати, що загорілася" / ", вторглися гігантські сервери, що їдять халяву".
... І, нарешті
Я, мабуть, не залишив жодного кінця речей, які інші вважають важливими, але наведені вище кроки повинні принаймні допомогти вам почати розбирати речі, якщо вам не пощастило, щоб стати жертвою хакерів.
Перш за все: не панікуйте. Подумайте, перш ніж діяти. Дійте рішуче, приймаючи рішення, і залиште коментар нижче, якщо вам є що додати до мого списку кроків.