Цей розділ буде більш технічним і призначений для користувачів, які більш знаються на системах у стилі Linux/BSD. Хоча я зазначу це зараз, позбудьтеся Windows та ознайомтеся з GNU/Linux у розділі Вступ до GNU/Linux. Хоча цей документ має назву "Захист заліза", це буде загальний складений список затвердження апаратних та програмних засобів для вашої системи GNU/Linux.
Документування основної інформації під час вашої установки буде корисним у майбутньому. Цей список повинен містити наступне, щоб уникнути будь-яких розбіжностей або втручання.
Мінімізація пакетів системи може значно підвищити загальний рівень безпеки вашої системи. Оскільки програмні помилки - один з основних бар'єрів безпеки, менше пакетів означає, що поверхня вразливості стає меншою. Менший слід, менша поверхня атаки. Як уже зазначалося, ви хочете мати список всіх встановлених пакетів у вашій системі.
dpkg --list
dpkg --info *пакет
apt purge *пакет
Для забезпечення виконання добре зміцнених політик стосовно складних паролів слід включити термін дії пароля для вашого облі
кового запису користувача. Ви можете встановлювати терміни дії паролів для користувачів за допомогою команди chage
у GNU/Linux. Це запитає вашу систему змінити пароль, коли поточний пароль закінчиться термін дії.
chage -l *користувач
вказує поточний термін дії пароля для користувача.
chage -M 30 *користувач
встановлює термін дії після 30 днів.
chage -E "2020-04-30"
може встановити цю дату, використовуючи формат YYYY-MM-DD.
Файлова система Linux розділяє все на кілька частин на основі їх призначення. Ви можете розділити критичні частини файлової системи на різні розділи вашого дискового сховища. Наприклад, наступні файлові системи повинні бути розділені на різні розділи. Це допомагає ізолювати чутливі частини вашої системи. Таким чином, навіть якщо зловмисний користувач отримає доступ до якоїсь частини системи, він не зможе вільно пересуватися по всій системі.
Ви повинні приділити особливу увагу системним розділам. Зловмисні користувачі можуть використовувати розділи, такі як /tmp, /var/tmp та /dev/shm для зберігання та виконання небажаних програм. Ви можете вжити заходи для захисту своїх розділів, додавши деякі параметри до вашого файлу /etc/fstab. Відкрийте цей файл за допомогою текстового редактора Linux.
nano /etc/fstab
Знайдіть рядок, який містить розташування /tmp. Тепер додайте параметри nosuid, nodev, noexec та ro як кома-розділенний список після defaults.
Вони пропонують наступні функціональності
Шифрування на рівні файлової системи
Ecryptfs | Це криптографічна стекова файлова система Linux. eCryptfs зберігає криптографічні метадані у заголовку кожного записаного файлу, щоб зашифровані файли можна було копіювати між хостами; файл буде розшифрований за допомогою відповідного ключа у ключовому кільці ядра Linux. Це рішення широко використовується як основа для Зашифрованого домашнього каталогу Ubuntu, наївно в ChromeOS від Google та автоматично вбудовано в кілька пристроїв для мережевого зберігання (NAS). |
EncFS | Вона надає зашифровану файлову систему на рівні користувача. Вона працює без будь-яких спеціальних дозволів та використовує бібліотеку FUSE та модуль ядра Linux, щоб надати інтерфейс файлової системи. Ви можете знайти посилання на вихідний та бінарний код нижче. EncFS є відкритим програмним забезпеченням, яке ліцензується під ліцензією GPL. |
Шифрування на рівні блочного пристрою
Loop AES | Швидка та прозора система шифрування файлової системи та обміну для Linux. Немає змін вихідного коду ядра Linux. Працює з ядрами 3.x, 2.6, 2.4, 2.2 та 2.0. |
VeraCrypt | Це безкоштовне відкрите програмне забезпечення для шифрування дисків для Windows 7/Vista/XP, Mac OS X та Linux на основі кодової бази TrueCrypt. |
dm-crypt+LUKS | dm-crypt – це прозора підсистема шифрування дисків у ядрі Linux версії 2.6+ та пізніше і DragonFly BSD. Вона може шифрувати цілі диски, знімні носії, розділи, об'єднані обсяги програмного забезпечення, логічні об'єднані обсяги та файли. |
Хоча я підкреслюватиму використання GPG або схожих сервісів, таких як PGP і OpenPGP, ви також завжди будете хотіти використовувати безпечні сервіси зв'язку, такі як ssh, scp, rsync, або sftp для віддаленого передавання даних. Під час використання цих сервісів намагайтеся використовувати шифрування GPG для шифрування та підписування ваших даних, а також всіх повідомлень, що передаються в вашому колі довіри.
Уникайте або видаліть їх! Хоч я буду першим, хто виправдає ці застарілі засоби зв'язку та як вони цікаві/особливі/цікаві... вони НЕ є безпечними. Усі або практично всі застарілі програми не надають необхідної безпеки під час передачі даних. До них входять...
У ядрі Linux є багато параметрів часу виконання. Ви можете легко налаштувати деякі з них для покращення безпеки Linux. Використовуючи команду
Додайте нижченаведений рядок для рандомізації адрес mmap base, heap, stack та VDSO сторінок.
Наступний рядок зробить ядро ігнорувати помилки ICMP.
Ви можете додавати стільки правил, скільки завгодно, і налаштовувати існуючі правила, щоб вони відповідали вимогам вашого ядра.
Щоденні Скани ClamAV (Debian/Ubuntu)
Встановіть Clamav та інструмент для відправки сповіщень по електронній пошті
Переконайтеся, що визначення вірусів буде оновлено за допомогою
Щоб виконати ручне оновлення визначень вірусів
chkrootkit | Linux Rootkit Scanner |
Lynis | Універсальний інструмент аудиту безпеки та сканер Rootkit https://cisofy.com/download/lynis/ |
IP Tables
iptables використовує три різних ланцюги: input, forward та output.
Input | Цей ланцюг використовується для контролю поведінки вхідних з'єднань. |
Forward | Цей ланцюг використовується для вхідних з'єднань, які насправді не призначені для локальної доставки. Припустімо, що маршрутизатор – завжди надсилається дані до нього, але рідко насправді призначені для самого маршрутизатора; дані просто пересилаються до їхньої мети. Якщо ви не виконуєте якусь форму маршрутизації, перенаправлення, або щось інше на вашій системі, що вимагає пересилання, ви навіть не будете використовувати цей ланцюг. |
Output | Цей ланцюг використовується для вихідних з'єднань. Наприклад, якщо ви намагаєтеся виконати ping neocities.org, iptables перевірить свій вихідний ланцюг, щоб перевірити, які правила щодо пінгу та neocities.org перед прийняттям рішення щодо дозволу або відмови у спробі з'єднання. |
Перш ніж переходити до конфігурації конкретних правил, вам потрібно визначити, яку поведінку за замовчуванням ви хочете для трьох ланцюгів. Іншими словами, що ви хочете, щоб iptables робив, якщо з'єднання не відповідає жодним існуючим правилам? Щоб переглянути, яка політика ланцюгів наразі налаштована для непарних трафіку, виконайте команду
Більшість часу ви, ймовірно, будете хотіти, щоб ваша система приймала з'єднання за замовчуванням. Якщо ви не змінювали правила політики ланцюга раніше, цей параметр вже має бути налаштований. Ось команда для прийняття з'єднань за замовчуванням:
За замовчуванням, приймаючи правило, ви можете використовувати iptables, щоб відхиляти конкретні IP-адреси або номери портів, продовжуючи приймати всі інші з'єднання. Ми дійдемо до цих команд через хвилину. Якщо ви бажаєте відхилити всі з'єднання і вручну вказати, які з них ви хочете допустити до з'єднання, вам слід змінити політику за замовчуванням ваших ланцюгів на відхилення. Це, ймовірно, буде корисним лише для серверів, які містять конфіденційну інформацію і завжди мають з'єднання лише з однаковими IP-адресами.
З налаштованими політиками ланцюгів за замовчуванням ви можете почати додавати правила до iptables, щоб він знаходив, що робити, коли він зустрічає з'єднання з або до певної IP-адреси або порту. У цьому посібнику ми розглянемо три найбільш базові і часто використовувані «відповіді».
Accept | Дозволити з'єднання. |
Drop | Відхилити з'єднання, ніби воно ніколи не відбулося. Це найкраще, якщо ви не хочете, щоб джерело розуміло, що ваша система існує. |
Reject | Не дозволяйте з'єднання, але надішліть повернену помилку. Це найкраще, якщо ви не хочете, щоб певне джерело підключалося до вашої системи, але ви хочете, щоб вони знали, що ваш брандмауер їх заблокував. |
Найкращим способом показати різницю між цими трьома правилами є показати, як виглядає спроба пк з пінгування Linux-машини з налаштуваннями iptables для кожного з них.
Після налаштування ланцюгів політики ви можете налаштувати iptables для дозволу або блокування конкретних адрес, діапазонів адрес та портів. У цих прикладах ми встановимо з'єднання на DROP, але ви можете переключити їх на ACCEPT або REJECT, залежно від ваших потреб та того, як ви налаштували ланцюги політики.
Примітка: У цих прикладах ми будемо використовувати iptables -A для додавання правил до існуючого ланцюга. Iptables розпочинає роботу з верхнього краю свого списку і переходить до кожного правила, доки не знайде те, яке відповідає. Якщо вам потрібно вставити правило перед іншим, ви можете використовувати iptables -I [ланцюг] [номер]
для вказівки номера у списку.
З'єднання з однієї IP-адреси. У цьому прикладі показано, як заблокувати всі IP-адреси у мережі 10.10.10.0/24. Ви можете використовувати маску підмережі або стандартну нотацію косої риски для вказівки діапазону IP-адрес.
З'єднання з діапазону IP-адрес. У цьому прикладі показано, як заблокувати всі IP-адреси у мережі 10.10.10.0/24. Ви можете використовувати маску підмережі або стандартну нотацію косої риски для вказівки діапазону IP-адрес.
З'єднання з конкретним портом. У цьому прикладі показано, як заблокувати з'єднання SSH з 10.10.10.10.
Ви можете замінити "ssh" на будь-який протокол або номер порту. Частина -p tcp коду повідомляє iptables, який тип з'єднання використовує протокол. Якщо ви блокуєте протокол, який використовує UDP замість TCP, тоді -p udp буде необхідним. У цьому прикладі показано, як заблокувати з'єднання SSH з будь-якої IP-адреси.
Як зазначалося раніше, багато протоколів потребуватимуть двостороннього зв'язку. Наприклад, якщо ви хочете дозволити з'єднання SSH до вашої системи, ланцюги введення та виведення повинні мати додане правило до них. Але якщо ви хочете, щоб SSH, що надходить до вашої системи, дозволялося тільки, чи не додавання правила до виведення також дозволить вихідні спроби SSH? Тут допомагають стани з'єднань, які надають вам можливість дозволити двосторонній зв'язок, але дозволяють встановлювати т ільки однонаправлені з'єднання. Погляньте на цей приклад, де з'єднання SSH ВІД 10.10.10.10 дозволяється, але з'єднання SSH ДО 10.10.10.10 - ні. Однак система має дозвіл відправляти інформацію через SSH, якщо сеанс вже був установлений, що забезпечує можливість зв'язку SSH між цими двома хостами.
Зміни, які ви вносите до ваших правил iptables, будуть втрачені при наступному перезапуску служби iptables, якщо ви не виконаєте команду для збереження змін. Ця команда може відрізнятися залежно від вашого розподілу:
Список в даний час налаштованих правил iptables:
Щоб очистити всі налаштовані правила, ви можете виконати команду очищення.
UFW (Debian/Ubuntu)
UFW, або Uncomplicated Firewall, - це інтерфейс для iptables, який спрямований на спрощення процесу налаштування брандмауера
Використання IPv6 з UFW
Потім переконайтеся, що значення "IPV6" дорівнює "yes" Перевірте Статус та Правила UFW
Налаштуйте Політики За Замовчуванням
App Armor
SELinux
Цей розділ в основному стосується демонів. Багато служб та демонів запускаються під час завантаження системи. Вимкнення тих, які не є обов'язковими, може допомогти у зміцненні системи та покращити час завантаження. Оскільки більшість сучасних дистрибутивів використовують systemd замість ініціалізаційних скриптів, ви можете використовувати systemctl для пошуку цих служб.
Ці команди відображатимуть такі служби та демони. Ви можете вимкнути конкретну службу, використовуючи наведену нижче команду.
GNU/Linux надає підтримку автоматизації за допомогою cron-завдань. Ви можете вказати регулярні завдання за допомогою планувальника cron. Користувачі root/admin повинні переконатися, що звичайні користувачі не можуть отримати доступ до crontab або додавати туди записи. Просто додайте їх імена користувачів у файл /etc/cron.deny, щоб це зробити.
Ця команда вимкне cron для всіх користувачів на вашому сервері, крім root. Щоб дозволити доступ для певного користувача, додайте його ім'я користувача до файлу /etc/cron.allow.
Збої ядра - це знімки пам'яті, які містять інформацію про аварійне завершення роботи виконуваного файлу. Вони створюються, коли програми перестають працювати або збоять. Вони містять занадто багато конфіденційної інформації про систему і можуть загрожувати вашій безпеці, якщо потраплять у неправильні руки. Тому завжди краще обмежувати збої ядра на вашій системі.
Виконайте ці команди, щоб обмежити збої ядра на вашій системі.
Завжди краще вимкнути якомога більше пристроїв, які не потрібні або не використовуються. Це робить вашу систему захищеною від атакування осіб, які отримали прямий доступ до інфраструктури, до якої вона підключена. Firewire - це загальна назва апаратного інтерфейсу IEEE 1394. Він використовується для підключення цифрових пристроїв, таких як відеокамери. Вимкніть його за допомогою наступної команди.
Інтерфейс Thunderbolt забезпечує з'єднання між вашою системою та периферійними пристроями високої швидкості, такими як жорсткі диски, масиви RAID, мережеві інтерфейси та інше. Ви можете вимкнути його за допомогою наступної команди.
Комбінація клавіш Ctrl+Alt+Delete дозволяє користувачам примусово перезавантажити багато дистрибутивів GNU/Linux. Це може стати проблемою для вас як користувача. Користувачі root/admin повинні вимкнути цю комбінацію клавіш, щоб забезпечити належне зміцнення GNU/Linux. Ви можете виконати наступну команду, щоб вимкнути це у системах, які використовують systemd.
Якщо ви використовуєте системи з ініціалізацією V замість systemd, редагуйте файл /etc/inittab
та закоментуйте наступний рядок, додавши перед ним символ решітки.
nano /etc/inittab
# ca::ctrlaltdel:/sbin/shutdown -t3 -r now
Ви повинні завжди бути готові до непередбачених проблем. Резервне копіювання вашої робочої станції або сервера може виявитися надзвичайно корисним у довгостроковій перспективі. Щасливо, існує велика кількість утиліт для резервного копіювання для Linux, які полегшують створення резервних копій системи. Крім того, вам слід автоматизувати процес резервного копіювання та зберігати ваші системні дані безпечно. Використання рішень управління кризовими ситуаціями та відновлення може також бути корисним управлінням даними.
Hardware Security: https://eldritchdata.neocities.org/CGFTPU/HardwareSecurity