THE BELL

Є ті, хто прочитали цю новину раніше вас.
Підпишіться, щоб отримувати статті свіжими.
Email
ім'я
Прізвище
Як ви хочете читати The Bell
без спаму

У цьому матеріалі ми познайомимося з основними утилітами для Linux hardening. Російською мовою це називається якось начебто «перевірка рівня захищеності Linux-систем і оцінка коректності конфігов з точки зору ІБ». Зрозуміло, ми не тільки зробимо огляд програм, але і наведемо приклади їх використання.

Сам собі аудитор, або безпеку власними силами

Перед адміністраторами, а вже тим більше перед аудиторами ІБ часто постають завдання перевірити захищеність великої кількості хостів за дуже короткий час. І звичайно, для вирішення цих завдань в Enterprise-сегменті існують спеціалізовані інструменти, наприклад такі, як мережеві сканери безпеки. Упевнений, що всі вони - від open sources движка OpenVAS до комерційних продуктів типу Nessus або Nexpose - відомі нашому читачеві. Однак цей софт зазвичай використовується, щоб шукати застаріле і тому вразливе ПО і потім запустити патч-менеджмент. До того ж не всі сканери враховують деякі специфічні особливості вбудованих механізмів захисту Linux і інших open sources продуктів. Ну і не в останню чергу значення має ціна питання, адже комерційні продукти в змозі дозволити собі хіба що компанії, які виділяють під цю справу бюджети.

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

Практичні аспекти аудиту захищеності

Якщо подивитися очима аудитора, то підхід до тестування можна розділити на два типи.

перший - це відповідність так званим compliance-вимогам, тут перевіряється наявність обов'язкових елементів захисту, прописаних в будь-якому міжнародному стандарті або «best practice». Класичний приклад - вимоги PCI DSS для платіжних ІТ-систем, SOX404, NIST-800 series,.

другий - це суто раціональний підхід, заснований на питанні «А що ще можна зробити, щоб посилити захищеність?». Тут немає обов'язкових вимог - тільки твої знання, світла голова і вмілі руки. Наприклад, це оновлення версії ядра і / або пакетів програм, включення, форсування, настройка файрволу.

Все, що відноситься до другого підходу, прийнято називати спеціальним терміном Hardening, Що ще можна визначити як «дії, спрямовані на посилення рівня вихідної захищеності операційної системи (або програми) переважно штатними засобами».

Відповідність compliance-вимогам, як правило, перевіряють при підготовці до проходження обов'язкового аудиту типу PCI DSS або іншого сертифікаційного аудиту. Ми ж більше приділимо увагу Hardening-складової. Всі великі розробники пропонують для своїх продуктів Hardening Guidelines - керівництва, що містять поради та рекомендації, як посилити захищеність, враховуючи штатні механізми безпеки і специфіку софта. Так, подібні керівництва є у Red Hat, Debian, Oracle, Cisco.

INFO

Hardening - це термін зі світу ІБ, який позначає процес забезпечення безпеки системи (програми) за рахунок зниження її уразливості і, як правило, з використанням тільки штатних утиліт або механізмів захисту.

Sudo apt-get update sudo apt-get install lynis

І для RPM-орієнтованих дистрибутивів (попередньо додавши відповідні репозиторії):

Yum install linus -y

Установка на macOS:

$ Brew search lynis $ brew install lynis

Щоб запустити Lynis, досить вказати хоча б один ключ. Наприклад, для запуску всіх наявних тестів слід вказати ключ -c (check all, перевірити всі):

# Типовий набір тестів sudo lynis audit system # Повний набір тестів sudo lynis audit system -c # Сканування віддаленого хоста audit system remote







Перед аудитом завжди корисно перевірити, чи доступна нова версія Lynis:

Lynis update info && lynis update check

У утиліти Lynis, крім стандартного, існує ще один режим - непривилегированного запуску:

Lynis audit --pentest

Якщо ж ти хочеш помістити ім'я аудитора, що запустив тестування, просто додай параметр -auditor :

Sudo lynis audit system -c -auditor Daddy

На будь-якому етапі аудиту процес перевірки може бути продовжений (Enter) або примусово припинено (Ctrl + C). Результати виконаних тестів будуть писатися в журнал Lynis в /var/log/lynis.log. Врахуй, що журнал буде записуватись при кожному наступному запуску утиліти.

Для тестування на систематичній основі в автоматичному режимі можна призначити відповідне завдання в планувальник Cron за допомогою ключа -cronjob. В такому випадку утиліта буде запускатися за заданим шаблоном (конфігу) і не буде виводити ніяких інтерактивних повідомлень, запитань і попереджень. Всі результати збережуться в лог. Наприклад, ось скрипт запуску утиліти з дефолтних конфіг раз в місяць:

#! / Bin / sh AUDITOR \u003d "automated" DATE \u003d $ (date +% Y% m% d) HOST \u003d $ (hostname) LOG_DIR \u003d "/ var / log / lynis" REPORT \u003d "$ LOG_DIR / report - $ ( HOST). $ (DATE) "DATA \u003d" $ LOG_DIR / report-data - $ (HOST). $ (DATE) .txt "cd / usr / local / lynis ./lynis -c -auditor" $ (AUDITOR) " -cronjob\u003e $ (REPORT) mv /var/log/lynis-report.dat $ (DATA) # End

Збережи цей скрипт в каталог /etc/cron.monthly/lynis. І не забудь додати шляху для збереження логів (/ usr / local / lynis і / var / log / lynis), інакше можлива некоректна робота.

Ви можете побачити список всіх доступних для виклику команд:

Lynis show commands

Особливо цікаві можуть глянути настройки з конфіга за замовчуванням:

Lynis show settings

Короткий інструктаж по роботі з утилітою:

Man lynis

Варіанти можливих статусів за результатами перевірки обмежуються наступним списком: NONE, WEAK, DONE, FOUND, NOT_FOUND, OK, WARNING.


Запуск окремих тестів в Lynis

На практиці буває необхідно провести лише деякі тести. Наприклад, якщо твій сервак виконує тільки функції Mail Server або Apache. Для цього ми можемо використовувати параметр -tests. Синтаксис команди виглядає наступним чином:

Lynis -tests "Test-IDs"

Якщо тобі складно розібратися з-за великої кількості ідентифікаторів тестів, то ти можеш використовувати груповий параметр -test-category. За допомогою даної опції Lynis запускає ідентифікатори тільки тих тестів, які входять в певну категорію. Наприклад, ми плануємо запустити тести брандмауера і ядра:

./lynis -tests-category "firewalls kernel"

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

Пропозиції щодо виправлення (Suggestions)

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

профілі

Профілі, які керують аудитом, визначаються в файлах з розширенням .prf, Розташованих в каталозі / etc / lynis. Профіль за замовчуванням називається передбачувано: default.prf. Розробники не рекомендують правити його прямо: будь-які зміни, які ти хочеш внести в аудит, краще додавати в файл custom.prf, що знаходиться в тому ж каталозі.

Продовження доступно тільки учасникам

Варіант 1. Приєднайся до товариства «сайт», щоб читати всі матеріали на сайті

Членство в співтоваристві протягом зазначеного терміну відкриє тобі доступ до ВСІХ матеріалами «Хакера», збільшить особисту накопичувальну знижку і дозволить накопичувати професійний рейтинг Xakep Score!

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

Що входить в аудит безпеки сервера

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

Як провести аудит віртуального виділеного сервера своїми руками

Перевірити захищеність серверів на Windows або Linux-платформах може кожен користувач, для цього необов'язково володіти спеціальними знаннями в програмуванні.
Перевірку безпеки можна розділити на кілька етапів:

фізичний доступ

У випадку з виділеним сервером фізичний доступ до сервера третіх осіб обмежений по дефолту, це забезпечує ЦОД. Але користувач може додатково встановити пароль для доступу в BIOS.

Міжмережевий екран

Для безперервного контролю ПО і портів повинен бути правильно налаштований і включений брандмауер Windows. Для Linux можна використовувати систему SELinux для контролю доступу. Також у нас можна орендувати апаратний фаєрвол Cisco ASA або Fortinet FortiGate 60D.

файлова система

Перевірка оновлень

Налаштуйте на сервері автоматичне отримання і установку оновлень.

Парольная політика

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

контроль логів

Увімкніть ведення логів для критичних сегментів інфраструктури та регулярно їх перевіряйте.

мережева безпека

Для сегментації вузлів і безпеки каналів рекомендується використовувати VPN і VLAN.
Також слід змінити стандартні настройки і переадресувати порти сервісів мережевого обладнання.
Для шифрування трафіку можна використовувати сервіс IPsec. А для перегляду відкритих портів - утиліту Netstat.

Контроль доступу

Розмежуйте права доступу користувачів до критичних файлів, вимкніть гостьовий доступ і користувачів з порожнім паролем. Вимикатимете ролі і додатки на сервері.

Резервне копіювання

Скористайтеся послугою щодо створення резервної копії файлів, це вигідно і надійно. Не зберігайте резервні копії незашифрованими. Якщо ви орендуєте сервер у нас, то можете вибрати місце для бекапів.

Доступ до баз даних

Критично важливі бази даних слід зберігати на різних SQL-серверах. Налаштовувати запуск потрібно від імені користувача з мінімальними повноваженнями або від Переднастроєні білого списку IP-адрес.

антивірусний захист

Для роботи сервера на Windows установка автоматично оновлюваного антивірусного ПО рекомендується при роботі користувачів з мережевими сховищами. Для Linux установка антивіруса не потрібно за умови регулярного моніторингу безпеки сервера і контролю несанкціонованого доступу. Для цього може бути корисна утиліта Tiger.

Такий аудит раз на місяць допоможе перевірити коректність роботи сервера, усунути уразливості і контролювати безпеку мережевої інфраструктури.

Безпека сервера Linux має дуже важливе значення для захисту ваших даних, інтелектуальної власності, а також часу від рук хакерів. За безпеку операційної системи Linux відповідає системний адміністратор. У цій статті ми розглянемо двадцять речей, які потрібно зробити з вашою операційною системою Linux щоб вона була завжди в безпеці і надійно захищена. Якщо це домашній комп'ютер, то про безпеку, можливо, і немає сенсу турбуватися настільки сильно, досить буде надійних паролів і закриття доступу до портів з мережі інтернет. Але в разі публічного сервера варто звернути увагу на забезпечення його захисту.

Ці інструкції підійдуть для будь-якого дистрибутива, неважливо що ви використовуєте CentOS, Red Hat або Ubuntu, Debian.

1. Шифрування зв'язку

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

Використовуйте scp, ssh, rsync, або sftp для передачі файлів. Можна також змонтувати віддалену файлову систему в ваш домашній каталог за допомогою таких інструментів, як shhfs.

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

Fugu - це графічний інструмент для передачі файлів по протоколу SFTP. SFTP дуже схожий на FTP, але вся сесія тут зашифрована. Це означає що ніякі паролі або команди не передаються у відкритому вигляді. А тому такі передачі менш уразливі для третіх сторін. Також можна використовувати FileZilla, це багатоплатформовий FTP клієнт з підтримкою роботи FTS через SSH / TLS і SSH File Transfer Protocol (SFTP).

OpenVPN - ефективний і легкий VPN клієнт з підтримкою шифрування по SSH.

2. Постарайтеся не використовувати FTP, Telnet, Rlogin і RSH

У більшості мереж імена користувачів, паролі від FTP, Telnet, RSH команд можуть бути перехоплені ким-небудь з тієї ж самої мережі за допомогою аналізатора пакетів. Загальне рішення цієї проблеми полягає у використанні OpenSSH, SFTP або SFTP, який додає SSL або TLS до звичайного FTP. Виконайте таку команду щоб видалити NIS, RSH і інші застарілі служби:

yum erase inetd xinetd ypserv tftp-server telnet-server rsh-serve

3. Зменшіть кількість програмного забезпечення

Вам дійсно потрібні всі встановлені веб-служби? Не слід встановлювати непотрібне програмне забезпечення, щоб уникнути вразливостей в цих програмах. Використовуйте свій пакетний менеджер щоб подивитися встановлені програми і видалити всі непотрібні:

yum list installed
$ Yum list пакет
$ Yum remove пакет

dpkg --list
$ Dpkg --info пакет
$ Apt-get remove пакет

4. Одна машина - одна служба

Запускайте різні служби на окремих серверах або віртуальних машинах. Це обмежує число сервісів, які можуть бути скомпрометовані. Наприклад, якщо зловмисник зможе зламати Apache, то він отримає доступ до всього сервера. Включаючи такі сервіси, як MySQL, сервер електронної пошти і так далі. Ви можете використовувати таке програмне забезпечення, як XEN або OpenVZ для віртуалізації.

5. Тримайте ядро \u200b\u200bLinux і ПО в актуальному стані

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

Або для систем заснованих на Debian:

sudo apt update && sudo apt upgrade

Ви можете налаштувати Red Hat або Fedora для відправки вам повідомлення на Email про доступність нових оновлень безпеки. Також ви можете налаштувати автоматичне оновлення через cron, або ж ви можете використовувати aptcron в Debian для повідомлення про необхідність оновити систему.

6. Використовуйте розширення безпеки в Linux

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

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

7. Облікові записи користувачів і надійні паролі

Використовуйте команди useradd і usermod для створення і підтримування облікових записів користувачів. Переконайтеся, що у вас хороший і сильний пароль, він повинен містити, принаймні, вісім символів, бажано в різному регістрі, серед яких повинні зустрічатися спеціальні символи або цифри. Наприклад, 8 символів, з яких сім букви і один символ або цифра. Використовуйте такі інструменти, як John the ripper щоб знайти слабкі паролі користувачів на сервері, а також налаштуйте pam_cracklib.so, щоб забезпечити дотримання політики паролів.

8. Час від часу змінюйте паролі

Команда change дозволяє вказати кількість днів до дати примусової зміни пароля. Ця інформація використовується системою для визначення моменту, коли користувач повинен його змінити. Ці настройки знаходяться в /etc/login.defs. Щоб відключити старіння пароля введіть наступну команду:

change -l имя_пользователя

Щоб отримати інформацію про рядку придатності пароля введіть команду:

Також ви можете все налаштувати вручну, в файлі / etc / shadow:

(Користувач): (пароль): (Последнее_ізмененіе):(Максімум_дней): (мінімум_дней): (Попередження):(Деактивувати):(Строк_годності):

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

chage -M 60 -m 7 -W 7 имя_пользователя

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

9. Блокуйте акаунти після невдалих спроб входу

В операційній системі Linux ви можете використовувати команду faillog, щоб подивитися невдалі спроби входу користувачів. Також за допомогою неї ви можете встановити ліміт невдалих спроб входу. Вся інформація про невдалі спроби входу зберігається в файлі / var / log / faillog. Щоб її подивитися наберіть:

А щоб задати ліміт спроб входу для певного облікового запису використовуйте:

faillog -r -u користувач

Також ви можете вручну заблокувати або розблокувати акаунти за допомогою команди passwd. Щоб заблокувати використовуйте:

passwd -l користувач

А для розблокування:

passwd -u користувач

Також бажано перевірити чи є в системі акаунти з порожніми паролями. Для цього виконайте:

awk -F: "($ 2 \u003d\u003d" ") (print)" / etc / shadow

Також перевірте чи немає користувачів з групою або ідом 0. Такий користувач повинен бути тільки один, і це root. Перевірити можна за допомогою такої команди:

awk -F: "($ 3 \u003d\u003d" 0 ") (print)" / etc / passwd

Повинна бути тільки один рядок:

root: x: 0: 0: root: / root: / bin / bash

Якщо є й інші - видаліть їх. Користувачі, а особливо їх слабкі паролі - одна з найбільш уразливих речей, яка може негативно вплинути на безпечність в linux.

10. Вимкніть вхід для суперкористувача

Дбаючи про безпеку системи linux ніколи не використовуйте вхід від імені root користувача. Ви можете скористатися sudo, щоб отримати необхідні повноваження і запустити потрібну команду від імені суперкористувача. Ця команда дозволяє не розголошувати пароль суперкористувача іншим адмінам, а також містить інструменти моніторингу, обмеження і відстеження дій.

11. Фізична безпека сервера

Безпека сервера Linux повинна включати фізичну безпеку. Ви повинні обмежити фізичний доступ до консолі сервера. Налаштуйте BIOS так, щоб не підтримувалася завантаження з зовнішніх носіїв, таких як DVD, CD, USB. Також встановіть пароль на BIOS і завантажувач GRUB, щоб захистити їх параметри.

12. Вимкніть непотрібні сервіси

Вимкніть всі невикористовувані сервіси і демони. Також не забудьте видалити ці сервіси з автозавантаження. Ви можете подивитися список всіх активних сервісів в системах Red Hat командою:

chkconfig --list | grep "3: on"

Для відключення сервісу використовуйте:

service сервіс stop
$ Chkconfig сервіс off

Знайдіть всі відкриті програмами порти:

Те ж саме можна зробити за допомогою сканера nmap:

nmap -sT -O localhost

Використовуйте iptables, щоб закрити всі порти, які не повинні бути доступні з мережі. Або зупиніть непотрібні сервіси як описано вище.

13. Видаліть Х сервер

Х сервер на серверному комп'ютері - річ зовсім необов'язкова. Вам не потрібно запускати графічне оточення на виділеному Apache або Email сервері. Видаліть це програмне забезпечення для збільшення безпеки і продуктивності.

14. Налаштуйте Iptables

iptables - це програма простору користувача для налаштування вбудованого в ядро \u200b\u200bфаервола Netfilter. Він дозволяє фільтрувати весь трафік і вирішувати тільки певні види трафіку. Також використовуйте TCPWrappers - ACL систему для фільтрації доступу в інтернет. Ви можете запобігти безлічі типів DOS атак за допомогою iptables. Мережева безпека в Linux це дуже важливий момент загальної безпеки системи.

15. Налаштуйте ядро

У файлі /etc/sysctl.conf зберігаються настройки ядра, які завантажуються і застосовуються під час запуску системи.

Включити захист від переповнення буфера execshield:

kernel.exec-shield \u003d 1
kernel.randomize_va_space \u003d 1

Включити захист від підробки IP:

net.ipv4.conf.all.rp_filter \u003d 1

Відключити перенаправлення IP адрес:

net.ipv4.conf.all.accept_source_route \u003d 0

Ігнорувати широкомовні запити:

net.ipv4.icmp_echo_ignore_broadcasts \u003d 1
net.ipv4.icmp_ignore_bogus_error_messages \u003d 1

Логгіровать все підроблені пакети:

net.ipv4.conf.all.log_martians \u003d 1

16. Розбийте жорсткий диск на розділи

Поділ жорсткого диска на розділи в залежності від призначення файлів покращує безпеку ос Linux. Рекомендується робити окремі розділи для таких директорій:

  • / home
  • / Var і / var / tmp

Зробіть окремі розділи для кореневих директорій Apache і FTP серверів. Відкрийте файл / etc / fstab і виставте спеціальні опції для потрібних розділів:

  • noexec - не виконувати будь-які програми або виконувані файли на цьому розділі, дозволені тільки скрипти
  • nodev - не дозволяти символічні або спеціальні пристрої на цьому розділі.
  • nosuid - не дозволяти SUID / SGID доступ для програм з цього розділу.

17. Використовуйте обмеження дискового простору

Обмежуйте доступний дисковий простір для користувачів. Для цього створіть дискову квоту в / etc / fstab, перемонтують файлові системи і створіть базу даних дискових квот. Це підвищить безпеку в Linux.

18. Вимкніть IPv6

Протокол інтернету нового покоління IPv6 в майбутньому замінить вже використовується IPv4. Але на даний момент немає інструментів, що дозволяють перевірити безпеку мережі на основі IPv6. Багато дистрибутиви Linux дозволяють використання протоколу IPv6 за замовчуванням. Хакери можуть відправляти небажаний трафік і адміністратори не зможуть його відстежити. Так що якщо ця служба вам не потрібна вимкніть її.

19. Вимкніть невикористовувані SUID і SGID бінарники

Всі виконувані файли, для яких включений прапор SUID або SGID потенційно небезпечні. Цей прапор означає, що програма буде виконуватися з правами суперкористувача. А це означає, що якщо в програмі є якась вразливість або баг, то локальний або віддалений користувач зможе використовувати цей файл. Знайдіть всі такі файли за допомогою наступної команди:

find / -perm +4000

Знайти файли з встановленим SGID прапором:

find / -perm +2000

Або скомбініруем все це в одній команді:

find / \\ (- perm -4000 -o -perm -2000 \\) -print
$ Find / -path -prune -o -type f -perm +6000 -ls

Вам доведеться детально вивчити кожен знайдений файл, щоб зрозуміти наскільки потрібен той чи інший файл.

20. Загальнодоступні файли

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

find / dir -xdev -type d \\ (- perm -0002 -a! -perm -1000 \\) -print

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

Також бажано знайти всі файли не належать нікому:

find / dir -xdev \\ (- nouser -o -nogroup \\) -print

21. Використовуйте централізовану систему аутентифікації

Без централізованої системи аутентифікації призначені для користувача дані стають суперечливими, що може привести до старіння облікових даних, і забування акаунтів, які повинні були б бути вже давно видалені. Централізована служба дозволить підтримувати контроль над обліковими записами і аутентифікаційних даними користувачів на різних системах Linux і Unix. Ви можете синхронізувати дані аутентифікації між серверами. Але не використовуйте службу NIS, краще подивіться в сторону Open DAP.

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

22. Логування і аудит

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

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

Спостерігайте за системою за допомогою служби auditd. Програма записує на диск всі події аудиту які вас цікавлять. Всі настройки аудиту зберігаються в файлі /etc/audit.rules при запуску системи сервіс прочитує всі правила з цього файлу. Ви можете його відкрити і налаштувати все як потрібно або ж скористатися окремою утилітою - auditctl. Можна налаштувати такі моменти:

  • Події запуску та вимикання системи
  • Дата і час події
  • Призначені для користувача події (наприклад доступ до певного файлу)
  • Тип події (редагування, доступ, видалення, запис, оновлення і т д)
  • Успішність чи збій при виконанні події
  • Запис подій зміни налаштувань мережі
  • Запис зміни користувачів і груп
  • Моніторинг змін файлів

23. Захистіть OpenSSH сервер

Дозвольте тільки використання протоколу 2:

Забороніть вхід від імені суперкористувача:

24. Встановіть IDS

IDS або система виявлення вторгнень намагається виявити підозрілу, шкідливу активність, таку як атака DOS, сканування портів або навіть спроби зламати комп'ютер шляхом моніторингу мережевого трафіку.

Хороша практика - розгорнути подібне програмне забезпечення, перед тим як система стане доступною з інтернету. Ви можете встановити AIDE, це HIDS (Host based IDS) яка може контролювати всі аспекти внутрішнього устрою вашої системи.

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

25. Захистіть ваші файли і каталоги

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

  • Для шифрування і розшифровки файлу по паролю використовуйте GPG
  • Також можна захищати файли за допомогою OpenSSL
  • Шифрування каталогів виконується за допомогою ecryptfs
  • TrueCrypt - вільний інструмент для шифрування дисків в Windows і Linux

висновки

Тепер безпеку ос linux на вашому комп'ютері буде набагато збільшена. Не забувайте ставити складні паролі і час від часу. Напишіть в коментарях свій улюблений інструмент для забезпечення безпеки системи.

Більшість таких корпоративних і багатокомпонентних систем як SAP , Oracle DB використовують у своїй платформі операційну систему базується на Linux . З огляду на це до них було звернуто таку пильну увагу з боку ІТ-аудиторів. Сьогодні в статті ми представимо вашій увазі кілька безкоштовних інструментів представлених у вигляді скриптів і використовують штатні механізми ОС для провидіння експрес аудиту конфігурації безпеки.

Нижче описані системні команди і скрипти застосовуються для експрес аудиту опцій безпеки систем ОС Linux базуються на рекомендаціях з перевірки захищеності опублікованими спільнотою ISACA в керівництві UNIX / LINUX Operating System Security Audit / Assurance Program.

1.Проверка облікових записів

1.1 Вивести список всіх користувачів
Список користувачів зберігається в файлі / etc / passwdfile. Для отримання списку користувачів можна використовувати наступний скрипт:

  1. bin / bash
  2. # userslistinthesystem.sh
  3. # Count and Lists existing "real" users in the system.
  4. echo "[*] Existing users (sorted alphabetically):"
  5. grep '/ bin / bash' / etc / passwd | grep -v 'root' | cut -f1
  6. -d ':' | sort
  7. echo -n "[*] Number of real users found:"
  8. grep '/ bin / bash' / etc / passwd | grep -v 'root' | wc -l
1.2 Вивести список заблокованих облікових записів
В ході аудиту, необхідно перевірити список заблокованих і розблокованих користувачів ( accountName ). Для цього підійде наступна команда:
  1. #! / Bin / bash
  2. # Passwd -s accountName

1.3 Перегляд статистики по всім користувачам

  • Аудитор повинен переконатися, що команда ac включена в системі, для огляду діяльності користувачів:
    1. #! / Bin / bash
    Для перегляду активності сеансу підключення користувача з підсумками за кожен день використовуйте команду:
    1. #! / Bin / bash
    2. # Ac -d
    Для виведення інформації, про активність сеансу (в годинах) підключення користувача «User» :
    1. #! / Bin / bash
    2. # Ac user
    1.4 Перегляд активності користувачів
    Системні програми psacct або acct працюють у фоновому режимі і відстежують активність кожного користувача в системі, а також споживані їм ресурси. Для перевірки активності користувачів в системі запустіть наступний скрипт:
    1. #! / Usr / bin / envksh
    2. last -Fa | awk '
    3. / Wtmp begins / (next;)
    4. / Still logged in / (next;)
    5. $ 0 \u003d\u003d reboot (next;)
    6. NF\u003e 0 (
    7. if (NR\u003e 1)
    8. printf ( "
      ”);
    9. printf ( "User: t% s
      ", $ 1); # user
    10. printf ( "Start: t% s% s% s% s
      ”, $3, $4, $5, $6);
    11. if ($ 9 \u003d\u003d "down")
    12. printf ( "End: tshutdown
      ”);
    13. printf ( "End: t% s% s% s% s
      ”, $9, $10, $11, $12);
    14. if (substr ($ NF, 1, 1) \u003d\u003d "(")
    15. t \u003d $ NF;
    16. h \u003d "localhost";
    17. t \u003d $ (NF-1);
    18. h \u003d $ NF;
    19. gsub ( "[()]", "", t);
    20. printf ( "Time On: t% s
      ", T);
    21. printf ( "Remote Host: t% s
      ", H);
  • 2. Перевірка пральний політики

    2.1 Облікові записи з порожнім паролем
    В ході аудиту, необхідно переконатися, що в системі відсутні або заблоковані облікові записи, що дозволяють увійти в систему без введення пароля. Це правило можна перевірити командою:

    # Cat / etc / shadow | awk -F: ($ 2 \u003d\u003d "") (print $ 1) '

    2.2 Перевірка складності пароля
    В ході аудиту, необхідно перевірити настройки складності пароля, щоб знизити ризик атак на пароль брутфорсом (перебором) або підбором по словнику. Для установки цього правила в системі необхідно застосовувати модулі аутентифікації (PAM).
    Аудитор може перевірити відповідні налаштування у файлі конфігурації:

    # Vi /etc/pam.d/system-auth

    2.3 Перевірка терміну дії пароля

    В ході аудиту, необхідно перевірити настройку терміну закінчення дії пароля. Щоб перевірити термін дії пароля необхідно використовувати команду change. Ця команда виводить детальну інформацію терміні дії пароля, а також про дату його останньої зміни.
    Наступна команда служить для перегляду інформації про «віці» паролів:

    #chage -l username

    Для зміни терміну закінчення пароля конкретного користувача можна використовувати команди зазначені нижче:

    #chage -M 60 username
    #chage -M 60 -m 7 -W 7 userName

    Параметри (для установки терміну дії пароля):
    -M - максимальний термін дії в днях.
    -m - мінімальний термін дії в днях.
    -W - настройка попередження в днях.

    2.4 Використання повторюваних паролів
    Налаштування авторизації в систему повинні відповідати пральний політиці. Файл містить історію паролів знаходиться в / Etc / security / opasswd. Для перевірки необхідно виконати наступні кроки:

    для RHEL: відкрити файл '/etc/pam.d/system-auth':

    # Vi /etc/pam.d/system-auth

    для Ubuntu / Debian / Linux Mint: відкрити файл '/etc/pam.d/common-password':

    # Vi /etc/pam.d/common-password

    Додати наступний рядок розділ 'auth':

    auth sufficient pam_unix.so likeauthnullok

    Для заборони використовувати останні шість паролів додайте наступний рядок:

    Password sufficient pam_unix.so nullokuse_authtok md5 shadow remember \u003d 6

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

    3. Налаштування захищеного підключення
    Протоколи віддаленого підключення до системи Telnet і Rlogin вельми старі і уразливі, через передачу пароля по мережі в незашифрованому вигляді. Для приділений і безпечного підключення повинен використовуватися захищений протокол Secure Shell (SSH). Аудитору так само необхідно переконатися, що опція root login відключений, змінений SSH-порт за замовчуванням, віддалений доступ дозволений тільки для конкретних авторизованих користувачів. Перевіряються налаштування знаходяться в файлі конфігурації SSH:

    1. # vi / etc / ssh / sshd_config

    3.1 Вхід в систему від імені суперкористувача (root login)

    В ході аудиту, аудитор повинен перевірити заборону віддаленого входу в систему з правами суперкористувача root.

    # PermitRootLogin \u003d yes
    3.2 Перевірка службового аккаунта SSH login

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

    Check your sshd_config settings (/ etc / ssh / sshd_config) are correct one last time.

    # PermitRootLogin without-password

    # RSAAuthentication \u003d yes

    # PubkeyAuthentication \u003d yes

    3.3 Перевірка списків доступу в DenyHosts і Fail2ban
    В ході аудиту необхідно перевірити настройки списків доступу DenyHosts і Fail2ban . Це скрипти, що використовуються для моніторингу і аналізу журналів доступу по SSH і захисту від атак шляхом брутфорса паролів.

    Особливості DenyHosts:

    • зберігає і відслідковує журнали з файлу / Var / log / secure , Зазначивши, всі успішні і невдалі спроби входу, і фільтрує їх.
    • здійснює моніторинг невдалих спроб входу
    • відправляє по електронній пошті повідомлення про заблоковані хостах і підозрілих спроби входу
    Особливості Fail2ban:
    • Зберігає і відстежує журнали з файлів / Var / log / secure і /var/log/auth.log , / Var / log / pwdfail
    • високо настроюється і багато-
    • стежить за файлами журналів на регулярній основі

    4. Перевірка системних журналів
    В ході аудиту, необхідно переконатися, що запущений демон SysLog, а всі значущі події відбуваються в системі фіксуються в журналах подій. В ході аудиту також необхідно переконається, що політика збереження журналів подій враховує вимоги чинного законодавства та політики безопаности

    4.1 Журнали подій в Linux:

    /var/log/auth.log - журнал системи авторизації (логіни та механізм перевірки автентичності).
    /var/log/dpkg.log - журнал установки / видалення пакетів з використанням dpkg.
    /var/log/yum.log - журнал установки / видалення пакетів з використанням yum.
    / Var / log / faillog - журнал невдалих спроб входу в систему і їх граничного числа для кожної облікового запису.
    /var/log/kern.log - журнал ядра, (детальний лог повідомлень від ядра Linux).
    / Var / log / maillog або /var/log/mail.log - журнал поштового сервера.
    / Var / log / wtmp - журнал входу в систему (час реєстрації і тривалість роботи всіх користувачів системи).
    / Var / run / utmp - відомості про користувачів, зареєстрованих в системі в даний час.
    / Var / log / lastlog - записи про попередні входах в систему.
    / Var / log / boot - інформація, яка реєструється під час завантаження системи

    5. Захист системних файлів

    5.1 Захист завантажувача GRUB

    Для захисту системного завантажувача GRUB, адміністратор повинен використовувати шифрування пароля в MD5 форматі :

    # Grub-md5-crypt

    Після виконання команди, адміністратор повинен відкрити файл /boot/grub/menu.lst або /boot/grub/grub.conf і додати MD5-пароль:

    # Vi /boot/grub/menu.lst

    # Vi /boot/grub/grub.conf

    Новостворений MD5-пароль може бути доданий в конфігураційний файл GRUB.

    5.2 Захист завантажувального директорії / BOOT

    В ході аудиту, необхідно перевірити стан каталогу / Boot, оскільки ядро \u200b\u200bсистеми і пов'язані з ним файли розміщені в каталозі / Boot. Необхідно переконатися, що до даної директорії дозволений доступ тільки на читання, що запобігає несанкціоноване зміна важливих файлів в системі. Для перевірки відкрийте файл / etc / fstab і перевірте конфігурацію:

    У файлі повинна бути присутнім рядок:

    LABEL \u003d / boot / boot ext2 defaults, ro 1 2

    5.3 Перевірка відкритих портів і активних сполук

    Наступний скрипт може використовуватися для перевірки сервісів, запущених в системі:

    #! / Bin / bash
    if (($ (ps -ef | grep -v grep | grep $ service | wc -l)\u003e 0))
    then
    echo "$ service is running !!!"
    else
    /etc/init.d/$service start
    Fi

    Перегляд мережевих з'єднань

    # Netstat -anop
    або
    # Lsof -i (lsof -ni)
    або
    # iptraf

    прослуховування порти
    За допомогою команди Netstat, можна переглянути всі відкриті порти і пов'язані з ними команди. Приклад скрипта:

    # Netstat-tulpn
    A script for port scanning is:
    scan () (
    if [[-z $ 1 || -z $ 2]]; then
    echo "Usage: $ 0
    return
    fi
    local host \u003d $ 1
    local ports \u003d ()
    case $ 2 in
    *-*)
    IFS \u003d - read start end<<< “$2”
    for ((port \u003d start; port<= end; port++)); do
    ports + \u003d ($ port)
    done
    ;;
    *,*)
    IFS \u003d, read -ra ports<<< “$2”
    ;; *)
    ports + \u003d ($ 2) ;;
    esac
    for port in "$ (ports [@])"; do
    alarm 1 "echo\u003e / dev / tcp / $ host / $ port" &&
    echo "port $ port is open" ||
    echo "port $ port is closed"
    done
    }

    Брандмауер iptables

    В ході аудиту, необхідно перевірити конфігурацію брандмауера Linux для запобігання несанкціонованому доступу. Для контролю трафіку, в iptables повинні бути створені правила, які будуть фільтрувати вхідні, вихідні і пересилаються пакети з урахуванням IP адреси і номера TCP / UDP порту.

    # Iptables -n -L -v --line-numbers

    ICMP / broadcast запити

    В ході аудиту, необхідно перевірити, що системи налаштовані на ігнорування ping і широкомовних запитів. Для цього переконайтеся, що в файлі "/Etc/sysctl.conf" додані наступні рядки:

    # Ігнорувати ICMP запити:
    net.ipv4.icmp_echo_ignore_all \u003d 1
    # Ігнорувати широкомовні запити:
    net.ipv4.icmp_echo_ignore_broadcasts \u003d 1

    5.4 Перевірка встановлених оновлень

    В системи повинні бути встановлені останні оновлення:

    # Yum updates
    # Yum check-update

    6. Перевірка автоматично виконуваних завдань CRON

    Аудитор повинен перевірити кому дозволено і заборонено виконувати завдання в cron. Доступ до cron контролюється c використанням файлів /etc/cron.allow і /etc/cron.deny.

    # Echo ALL \u003e\u003e / etc / cron.deny

    7. Перевірка форсованого режиму безпеки SELINUX

    В ході аудиту важливо перевірити статус SELinux . Даний механізм повинен бути включений в системі.
    Існує три режими SELinux :

    • Enforcing: політика SELinux включена примусово. SELinux забороняє доступ, ґрунтуючись на правилах політики SELinux.
    • Permissive: політика SELinux не примусовою. SELinux не забороняє доступ, але заборони журнліруются як дії, які були б заборонені, якщо перемкнути політику в примусовий режим.
    • Disabled: SELinux відключений. Використовуються тільки дискретні правила DAC.

    В ході аудиту, можна використовувати наступний сценарій, щоб перевірити стан SELinux або використовувати команди system-configselinux, getenforce або sestatus:

    ENABLED \u003d `cat / selinux / enforce`
    if [ "$ ENABLED" \u003d\u003d 1]; then
    echo "SELinux is enabled, disable? (Yes / no): "
    read disable
    if [$ disable \u003d\u003d "yes"]; then
    echo "disabling selinux"
    setenforce 0
    fi
    fi

    Скрипт LBSA для перевірки основних опцій безпеки

    LBSA (Linux Basic Security Audit script) - це базовий скрипт аудиту конфігурації безпеки Linux-систем. Скрипт повинен бути запущений з командного рядка з привілеям root, або в ідеалі запускатися за розкладом на регулярній основі за допомогою планувальника cron для систематичної перевірки змін конфігурації.

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

    В даний редакції (Version 1.0.49), скрипт сканує наступний опції:

    • уразливості в налаштуваннях облікового запису
    • уразливості в налаштуваннях SSH
    • уразливості в тимчасових каталогах і каталогів файлової системи завантаженої в оперативну пам'ять (наприклад, в / tmp, / var / tmp / dev /)
    • дозволу на файли, стан системних директорій
    • rконфігурацію сервісів DRBD і Hearbeat

    Скрипт досить великий, тому ми не стали його поміщати на сторінку.

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

    Аудит безпеки Linux власними силами

    Перед системними адміністраторами, а вже тим більше перед аудиторами інформаційної безпеки часто постають завдання перевірити захищеність великої кількості хостів за дуже короткий час. І звичайно, для вирішення цих завдань в Enterprise-сегменті є спеціалізовані інструменти, наприклад такі, як. Упевнений, що всі вони - від open sources движка OpenVAS до комерційних продуктів типу Nessus або Nexpose - відомі нашому читачеві. Але даний софт зазвичай використовується, щоб шукати застаріле і тому вразливе програмне забезпечення і потім запустити патч-менеджмент. Крім цього не все сканери безпеки враховують певні специфічні особливості вбудованих механізмів захисту ОС Linux і інших продуктів з відкритим вихідним кодом. Ну і не в останню чергу значення має ціна питання, адже платні продукти можуть дозволити собі хіба що компанії, які виділяють під цю справу якісь бюджети.

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

    Практичні аспекти аудиту безпеки Linux

    Якщо подивитися очима аудитора, то підхід до тестування можна розділити на два типи.

    перший - це відповідність так званим compliance-вимогам, тут перевіряється наявність обов'язкових елементів захисту, прописаних в будь-якому міжнародному стандарті або «best practice». Класичний приклад - вимоги PCI DSS для платіжних ІТ-систем, SOX404, NIST-800 series,.

    другий - це суто раціональний підхід, заснований на питанні «А що ще можна зробити, щоб посилити захищеність?». Тут немає обов'язкових вимог - тільки твої знання, світла голова і вмілі руки. Наприклад, це оновлення версії ядра і / або пакетів програм, включення, форсування SELinux, настройка файрволу iptables.

    Все, що відноситься до другого підходу, прийнято називати спеціальним терміном Linux hardening, Що ще можна визначити як «дії, спрямовані на посилення рівня вихідної захищеності ОС (або ПО) переважно штатними засобами».

    Відповідність compliance-вимогам, як правило, перевіряють при підготовці до проходження обов'язкового аудиту типу PCI DSS або іншого сертифікаційного аудиту. Ми ж більше приділимо увагу Hardening-складової. Всі великі вендори пропонують для своїх продуктів Hardening Guidelines - керівництва, що містять поради та рекомендації, як посилити захищеність, враховуючи штатні механізми безпеки і специфіку ПО. Так, подібні керівництва є у Red Hat, Debian, Oracle, Cisco.

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

    До речі, у нас вже колись була стаття про налаштування опцій Hardening, але в тій статті йшлося саме про налаштування. Ми ж спочатку перевіримо нашу систему за допомогою спеціалізованих утиліт, тобто проведемо аудит безпеки, оцінимо поточний рівень захисту, а потім вже накрутимо туди security option, якщо в цьому буде необхідність. Ну або ще як варіант: якщо сервер вже налаштований з точки зору безпеки, наші інструменти зможуть це перевірити і, можливо, підказати, що ж можна зробити ще.

    Інструменти аудиту безпеки Linux

    Lynis - auditing system hardening testing

    Установка на macOS:

    ініціалізація тестів
    Результати тестів з групи System Tool and Boot & Services
    Результати тестів з групи Kernel and Memory & Process auditing
    Результати тестів з групи User and Group & Authentication

    Перед аудитом завжди корисно перевірити, чи доступна нова версія Lynis:

    Якщо ж ви хочете помістити ім'я аудитора, що запустив тестування, просто додайте параметр -auditor :

    sudo lynis audit system - c - auditor Daddy

    На будь-якому етапі аудиту безпеки Linux процес перевірки може бути продовжений (Enter) або примусово припинено (Ctrl + C). Результати виконаних тестів будуть писатися в журнал Lynis в каталог /var/log/lynis.log. Врахуйте, що лог-файл буде записуватись при кожному наступному запуску утиліти.

    Для тестування на постійній основі в автоматичному режимі можна призначити відповідне завдання в планувальник Cron за допомогою ключа -cronjob. В такому випадку Lynis буде запускатися за заданим шаблоном (конфігу) і не буде виводити ніяких інтерактивних зайвих повідомлень, запитань і попереджень. Всі результати будуть збережуться в лог. Наприклад, ось скрипт запуску утиліти з настройками за замовчуванням раз в місяць:

    #! / Bin / sh

    AUDITOR \u003d "automated"

    DATE \u003d $ (date +% Y% m% d)

    HOST \u003d $ (hostname)

    LOG_DIR \u003d "/ var / log / lynis"

    REPORT \u003d "$ LOG_DIR / report - $ (HOST). $ (DATE) "

    DATA \u003d "$ LOG_DIR / report - data - $ (HOST). $ (DATE). txt "

    cd / usr / local / lynis

    . / Lynis - c -auditor "$ (AUDITOR)" -cronjob\u003e $ (REPORT)

    mv / var / log / lynis - report. dat $ (DATA)

    # End

    Збережіть цей скрипт в каталог /etc/cron.monthly/lynis. І не забудьте додати шляху для збереження логів (/ usr / local / lynis and / var / log / lynis), інакше можлива некоректна робота.

    Ви можете побачити список всіх доступних для виклику команд:

    Коротка інструкція по роботі з утилітою:

    man lynis

    Варіанти можливих статусів за результатами перевірки обмежуються наступним списком: NONE, WEAK, DONE, FOUND, NOT_FOUND, OK, WARNING.


    Приклад виведення статусів
    Запуск окремих тестів в Lynis

    На практиці буває необхідно провести лише деякі певні тести. Наприклад, якщо ваш сервер виконує тільки функції Mail Server або Apache. Для цього ми можемо використовувати параметр -tests. Синтаксис команди виглядає таким чином:

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

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


    Висновок рекомендацій, як усувати знайдені проблеми

    профілі

    Профілі, які керують аудитом, визначаються в файлах з расшіреніем.prf, розташованих в каталозі / etc / lynis. Профіль за замовчуванням називається, передбачувано, default.prf. Розробники не радять правити його прямо: будь-які зміни, які ви хочете внести в аудит, краще додавати в файл custom.prf, що знаходиться в тому ж каталозі.

    Створюємо і редагуємо кастомний профіль:

    touch / etc / lynis / custom. prf

    sudo nano / etc / lynis / custom. prf

    В даному файлі можна визначити список тестів, які необхідно виключити з аудиту Lynis. наприклад:

    • FILE-6310: перевірка розділів;
    • HTTP-6622: тест установки nginx;
    • HTTP-6702: тест установки Apache.

    Щоб виключити якийсь певний тест, скористайтеся директивою skip-test і вкажіть ID тесту. Наприклад, так:

    # Is nginx installed?

    skip - test \u003d HTTP - 6622

    # Is Apache installed?

    skip - test \u003d HTTP - 6702

    Оцінка hardening state

    За результатами виконання всіх тестів наприкінці кожного виведення аудиту утиліти (трохи нижче розділу пропозицій) ви знайдете розділ, який буде виглядати приблизно так:

    Lynis security scan details:

    Hardening index: 57 [############ .........]

    Tests performed: 216

    Plugins enabled: 0

    Підсумкова оцінка hardening state

    Даний результат, виражений числом, показує кількість пройдених тестів і індекс безпеки системи, тобто hardening index - кінцеве число, за допомогою якого Lynis дає оцінку загального рівня безпеки сервера. І дуже важливо не забувати, що індекс безпеки змінюється в залежності від кількості виправлених попереджень та виконаних рекомендацій Lynis. Тому після виправлень знайдених проблем повторний аудит безпеки може показати зовсім інше число!

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

    Lunar - a UNIX security auditing tool

    Приклади запуску команд з CLI:


    Перегляд всіх параметрів запуску Lunar

    Запуск Lunar в режимі аудиту безпеки, тобто без внесення змін до системи:

    Перерахування тестів:

    Запуск в режимі виправлення, тобто з внесенням змін до системи:

    Приклад запуску тестів для web-сервера Apache

    Nix Auditor - a CIS Audit made easier

    Nix Auditor - це черговий скрипт для перевірки, чи відповідає безпеку Linux-систем вимогам показника CIS. Орієнтований на RHEL, CentOS і інші RPM-дистрибутиви.

    Розробники заявляють про такі переваги Nix Auditor:

    • швидкість сканування - провести базову перевірку ОС можна менш ніж за 120 секунд і тут же отримати звіт;
    • точність перевірки - робота Nix Auditor перевірена на різних версіях дистрибутивів CentOS і Red Hat;
    • настраиваемость - вихідні з документацією до програми лежать на GitHub, тому код легко налаштовується відповідно до типу ОС і набором елементів системи, які необхідно перевірити;
    • простота використання - достатньо зробити стартовий скрипт виконуваним, і той вже готовий до перевірки.

    Приклад виконання команд для завантаження утиліти з GitHub-сховища і наступного запуску скрипта:

    git clone https: //github.com/XalfiE/Nix-Auditor.git

    cd Nix - Auditor

    chmod + x nixauditor

    . / nixauditor

    Приклад виведення інформації після запуску Nix Auditor

    Loki - Simple IOC and Incident Response Scanner

    Утиліта Loki - не зовсім класичний інструмент для проведення аудиту Linux, але він відмінно підходить для пошуку слідів злому, що є, але частково можна віднести і до практики аудиту.

    Як запевняють розробники, ось такі можливості дає нам Loki - Simple IOC and Incident Response Scanner:

    I. Чотири способи виявити злом:

    • імена файлів (відповідність регулярному виразу повного шляху файлу);
    • перевірка відповідно до правил Yara (пошук на відповідність сигнатурам Yara у вмісті файлів і пам'яті процесів);
    • перевірка і аналіз хешів (порівняння просканованих файлів з хешамі (MD5, SHA-1, SHA-256) відомих шкідливих файлів);
    • перевірка зворотного зв'язку C2 (порівнює кінцеві точки технологічного з'єднання з C2 IOC).

    II. Додаткові перевірки:

    • перевірка файлової системи Regin (через -reginfs);
    • перевірка аномалій системних і призначених для користувача процесів;
    • сканування розпакованих SWF;
    • перевірка дампа SAM;
    • перевірка DoublePulsar - спроба виявити бекдор, слухає порти 445 / tcp і 3389 / tcp.

    Чуть-чуть торкнемося того, як програма визначає факт злому. Типовими ознаками (Indicators of Compromise), що свідчать, що комп'ютер був скомпрометований (тобто зламаний), можуть бути:

    • поява на комп'ютері шкідливий (вірусів, бекдор, криптор, і так далі), а також хакерських утиліт (наприклад, для дослідження мережі, експлуатації вразливостей, збору облікових даних);
    • поява невідомих нових здійсненних і інших файлів, навіть якщо вони не детектируются антивірусним движком як malware-код;
    • аномальна мережева активність (підключення до віддалених хостів, відкриття для прослуховування портів невідомими програмами та інше);
    • аномальна активність на дискових пристроях (I / O) і підвищене споживання ресурсів системи (CPU, RAM, Swap).

    Перед початком інсталяції потрібно доустановити кілька залежних пакетів. Це colorama (дає забарвлення рядків в консолі), psutil (утиліта перевірки процесів) і, якщо ще не встановлено, пакет Yara.

    Отже, приступаємо. Установка в (попередньо повинен бути встановлений пакет Yara, який за замовчуванням вже встановлений в Kali Linux):

    cd Loki /

    python2 loki - upgrader. py

    python2 loki. py - h

    Установка в Ubuntu / Debian:

    sudo apt - get install yara python - yara python - pip python - setuptools python - dev git

    sudo pip2 install - upgrade pip

    sudo pip2 install - U setuptools

    sudo pip2 install psutil netaddr pylzma colorama

    git clone https: //github.com/Neo23x0/Loki

    cd / home / download / Loki

    python2 loki - upgrader. py

    python2 loki. py - h

    Установка в BlackArch:

    sudo pacman - S yara python2 - pip python2 - yara

    sudo pip2 install psutil netaddr pylzma colorama

    git clone https: //github.com/Neo23x0/Loki

    cd / home / download / Loki

    python2 loki - upgrader. py

    python2 loki. py - h

    приклад використання

    Деякі опції запуску:

    optional arguments:

    H, - help show this help message and exit

    THE BELL

    Є ті, хто прочитали цю новину раніше вас.
    Підпишіться, щоб отримувати статті свіжими.
    Email
    ім'я
    Прізвище
    Як ви хочете читати The Bell
    без спаму