10 Рад з безпеки для захисту вашого сайту від хакерів, безпека
Ви можете думати, що ваш сайт не має сенсу зламувати, однак веб-сайти постійно перебувають під загрозою злому.
Більшість зломів веб-сайтів не має на меті вкрасти ваші дані або порушити роботу сайту. Вони спрямовані на використання вашого сервера для розсилки спаму або тимчасового використання веб-сервера для зберігання файлів, зазвичай нелегального змісту.
Зломи постійно виробляються автоматизованими скриптами, написаними спеціально, щоб прочісувати інтернет і намагатися зламати сайти, які мають відомі діри в програмному забезпеченні.
Ось 10 наших порад, які допоможуть вам зберегти ваш сайт в безпеці:
01. Обновляйте програмне забезпечення
Це може здатися очевидним, але регулярне оновлення програмного забезпечення життєво важливо для підтримки безпеки вашого сайту.
Це відноситься як до операційної системи сервера, так і до будь-якого програмного забезпечення, яке використовується на вашому сайті, такому як CMS або форум. Коли виявляються діри в безпеці програмного забезпечення, хакери швидко намагаються скористатися цим.
Якщо ваш сайт розташовується на хостингу, тоді вам не варто турбуватися про своєчасну установці оновлень для операційної системи, так як хостінг компанії повинна піклуватися про це самостійно.
Якщо ви використовуєте програмне забезпечення сторонніх виробників на вашому сайті, на зразок CMS або форуму, переконайтеся, що ви встановлюєте оновлення системи відразу після їх виходу.
Більшість виробників ПЗ мають розсилку або RSS канал з описом проблем безпеки веб-сайтів. WordPress, Umbraco і багато інших CMS повідомляють вас про доступні оновлення при вході в адміністративну частину сайту.
02. SQL-ін'єкції
При атаці за допомогою SQL-ін'єкції атакуючий використовує поле веб-форми або параметр URL, щоб отримати доступ до вашої базі даних або маніпулювати даними.
Коли ви використовуєте стандартний Transact SQL, то можливо непомітно вставити шахрайський код до своєї черги так, що він може бути використаний для зміни таблиць, отримання інформації або видалення даних.
Ви можете легко запобігти цьому, завжди використовуючи параметризовані запити.
Більшість мов веб розробки підтримують цю можливість.
Якщо зловмисник змінить параметр URL на 'or' 1 '=' 1, це призведе до того, що запит прийме наступний вигляд:
Так як '1' дорівнює '1', атакуючий отримає доступ до всіх даних таблиці. Також це дозволить йому додати додатковий запит в кінець виразу SQL, який буде виконаний поряд з вихідним.
При створенні форми завжди перевіряйте дані, які до вас приходять від користувачів, і кодуйте або маскуйте будь спецсимволи.
04. Повідомлення про помилку
Ви повинні використовувати загальні фрази, на кшталт «Неправильне ім'я користувача або пароль», і не вказувати, в чому саме користувач помилився.
Якщо зловмисник намагається підібрати ім'я користувача і пароль, а повідомлення про помилку видає, що одне з полів було вірним, тоді він може сконцентруватися на полі, що залишилося, що спрощує його завдання:
05. Перевірка форм на стороні сервера
Перевірка форм завжди повинна проводитися як на стороні браузера, так і на стороні сервера. Браузер може перевірити прості помилки, на зразок незаповненого обов'язкового поля або тексту, введеного в поле, яке потребує введення числа.
Однак ці перевірки можуть бути обійдені, і ви повинні перевіряти ці умови також і на стороні сервера. Відсутність подібної перевірки може призвести до вставки шкідливого коду в вашу базу даних або небажаних результатів роботи веб-сайту.
06. Паролі
Незважаючи на те, що користувачі цього не люблять, примусові вимоги до паролів, такі як мінімальна довжина не менше восьми символів, включення до складу пароля символів у верхньому регістрі або цифр, допоможе їм, в кінцевому рахунку, зберегти їх інформацію.
Для додаткового захисту можна використовувати «сіль» для паролів, при цьому додаючи нову «сіль» до кожного паролю.
У разі якщо веб-сайт буде зламаний і зловмисник отримає дані з паролями, зберігання хешірованних паролів допоможе знизити збиток, тому що потрібно їх дешифрування. Найкраще, що може зробити зловмисник в цьому випадку - це атака за словником або атака перебором, тобто перевірка всіх можливих комбінацій, поки не буде знайдено збіг.
При використанні «солі» в паролі, процес злому великої кількості паролів стає ще повільніше, тому що кожен варіант повинен бути хешірованного окремо для всіх комбінацій пароль + «сіль», що вимагає великих обчислювальних витрат.
На щастя, більшість CMS надають інструменти управління користувачами з багатьма вбудованими системами безпеки, хоча для використання «солі» або установки мінімальної складності пароля може знадобитися деяка альтернативна настройка або додаткові модулі.
Якщо ви використовуєте .NET, тоді варто використовувати провайдери членства, тому що вони мають безліч налаштувань, надають вбудовану систему безпеки і включають в себе готові елементи для входу в систему і зміни пароля.
07. Завантаження файлів
Якщо у вас на сайті є форма завантаження файлу, тоді вам потрібно ставитися до всіх завантажуваних файлів з підозрою. Якщо ви дозволяєте користувачам завантажувати зображення, то при визначенні типу файлу, ви не можете покладатися на розширення або mime-тип, так як вони легко можуть бути підроблені.
Так що ж ви можете зробити, щоб запобігти цьому? Зазвичай вам потрібно заборонити виконання завантаження користувачами.
За замовчуванням веб сервери не намагаються виконувати файли з розширеннями зображень, але не рекомендується покладатися виключно на розширення файлу, так як відомі випадки, коли файл «image.jpg.php» обходив цю перевірку.
Ось деякі варіанти вирішення проблеми: перейменування файлу при завантаженні, щоб упевнитися в коректності дозволу; зміна дозволів для файлу, наприклад на chmod 0666. щоб він не міг бути виконаний.
В * nix системах ви можете створити файл .htaccess (дивіться приклад нижче), який відкриє доступ тільки до заданого безлічі файлів, що виключить можливість атаки з подвійним розширенням, згаданої раніше:
Якщо ваші файли недоступні безпосередньо, вам буде потрібно створити скрипт (або обробник HTTP в .NET), щоб витягувати їх із закритої папки і видавати браузеру.
Більшість хостинг провайдерів проводить необхідні настройки сервера за вас, але якщо ваш веб-сайт працює на вашому власному сервері, тоді є ще кілька речей, які вам потрібно перевірити.
Переконайтеся, що у вас налаштований міжмережевий екран, і він блокує несуттєві порти. Якщо це можливо, налаштуйте DMZ (демілітаризовану зону), відкривши доступ із зовнішнього світу тільки до портів 80 і 443. Хоча, це може бути неможливо, якщо ви не маєте доступу до вашого сервера з локальної мережі, так як в цьому випадку вам доведеться відкрити порти, що дозволяють завантажувати файли і віддалено керувати вашим сервером через SSH або RDP.
Якщо ви дозволяєте завантаження файлів з інтернету, використовуйте захищені методи передачі, такі як SFTP або SSH.
Якщо це можливо, виділіть окремий сервер під базу даних, відмінний від веб-сервера.
При цьому сервер бази даних не буде безпосередньо доступний із зовнішнього світу, тільки ваш веб сервер зможе отримати доступ до нього, тим самим мінімізуючи ризик крадіжки ваших даних.
Нарешті, не забудьте обмежити фізичний доступ до вашого сервера.
SSL - це протокол, що використовується для забезпечення безпеки при передачі даних по мережі інтернет. Це гарна ідея використовувати сертифікат безпеки кожного разу, коли ви передаєте персональну інформацію між клієнтом і веб сервером або базою даних.
10. Інструменти перевірки веб-сайтів
Коли ви вже думаєте, що зробили все можливе, настав час протестувати систему безпеки вашого сайту. Найбільш ефективний спосіб зробити це - використовувати інструменти перевірки сайтів, також відомі як тести на проникнення або pen-тести.
Для цього існує безліч комерційних і безкоштовних продуктів. Вони працюють за схожою зі скриптами хакерів схемою, використовуючи всі відомі експлойти і намагаючись зламати ваш сайт одним з описаних вище способів, наприклад, за допомогою SQL-ін'єкції.
Ось деякі безкоштовні інструменти:
- Netsparker (доступна безкоштовна пробна версія). Підходить для тестування на SQL-ін'єкції і XSS
- OpenVAS. Позиціонує себе як найбільш досконалий сканер системи безпеки з відкритим кодом. Підходить для тестування на відомі уразливості, на даний момент перевіряє більше 25000.
Але він складний для установки і вимагає наявності сервера OpenVAS, який працює тільки під * nix.
OpenVAS - це різновид системи Nessus до того, як остання стала комерційним продуктом.
Результати автоматизованих тестів можуть бути страшними, так як вони показують всі різновиди потенційних загроз. Важливим моментом є робота в першу чергу над критичними зауваженнями.
До кожної виявленої проблеми додається гарне пояснення потенційної загрози безпеки. Ви, швидше за все, вирішите, що деякі середньо- і малонебезпечні уразливості не становлять загрози для вашого сайту.
Якщо ви хочете піти далі, тоді є і ще деякі дії, які ви можете зробити, спробувавши вручну зламати ваш сайт, змінюючи значення POST / GET запитів.
Тут вам може допомогти debugging proxy (проксі-сервер налагодження), так як він дозволяє вам перехоплювати значення HTTP запитів на ділянці між вашим браузером і сервером. Популярне безкоштовний додаток, яке називається Fiddler. підійде для початку.
Інша можлива область тестування - форми. Змінюйте значення POST. щоб спробувати відправити міжсайтовий запит або завантажити серверний скрипт:
Ми сподіваємося, що наші поради допоможуть вам містити сайт і інформацію на ньому в безпеці.
На щастя, багато CMS мають досить вбудованих інструментів захисту, але все одно непогано знати про найбільш популярних загрози безпеці, щоб бути впевненим, що ви від них застраховані.
Також існують деякі корисні модулі CMS для перевірки вашої системи на найбільш часті уразливості.
Серед них Security Review для Drupal і WP Security Scan для WordPress.
Переклад статті «10 security tips to protect your website from hackers» був підготовлений дружною командою проекту Сайтобудування від А до Я.