libre.UA ВІКІ

🌐🔒️Вільне програмне забезпечення

Головна сторінка Ресурси Новини Спільноти

Автори: eldritchdata, just_bird та ChatGPT (переклад)

Захист заліза

Передмова

Цей розділ буде більш технічним і призначений для користувачів, які більш знаються на системах у стилі 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. Використовуючи команду sysctl, корінь/адміністратор може налаштувати ці параметри ядра. Ви також можете змінити файл /etc/sysctl.conf для налаштування ядра. Наприклад, додайте нижченаведений рядок в кінець вашої конфігурації sysctl, щоб дозволити перезавантаження системи через 10 секунд після виявлення критичної помилки ядра.

nano /etc/sysctl.conf

kernel.panic=10

Додайте нижченаведений рядок для рандомізації адрес mmap base, heap, stack та VDSO сторінок.

kernel.randomize_va_space=2

Наступний рядок зробить ядро ігнорувати помилки ICMP.

net.ipv4.icmp_ignore_bogus_error_responses=1

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

Виявлення Малівару

Щоденні Скани ClamAV (Debian/Ubuntu)

Встановіть Clamav та інструмент для відправки сповіщень по електронній пошті apt update && apt install clamav clamav-freshclam heirloom-mailx

Переконайтеся, що визначення вірусів буде оновлено за допомогою service ClamAV-freshclam start

Щоб виконати ручне оновлення визначень вірусів freshclam -v

Захист від Вірусів/Rootkit

chkrootkit Linux Rootkit Scanner apt install chkrootkit
Lynis Універсальний інструмент аудиту безпеки та сканер Rootkit https://cisofy.com/download/lynis/

Безпека Файрволу

IP Tables

sudo apt install iptables

Типи Ланцюгів

iptables використовує три різних ланцюги: input, forward та output.

Input Цей ланцюг використовується для контролю поведінки вхідних з'єднань.
Forward Цей ланцюг використовується для вхідних з'єднань, які насправді не призначені для локальної доставки. Припустімо, що маршрутизатор – завжди надсилається дані до нього, але рідко насправді призначені для самого маршрутизатора; дані просто пересилаються до їхньої мети. Якщо ви не виконуєте якусь форму маршрутизації, перенаправлення, або щось інше на вашій системі, що вимагає пересилання, ви навіть не будете використовувати цей ланцюг.
Output Цей ланцюг використовується для вихідних з'єднань. Наприклад, якщо ви намагаєтеся виконати ping neocities.org, iptables перевірить свій вихідний ланцюг, щоб перевірити, які правила щодо пінгу та neocities.org перед прийняттям рішення щодо дозволу або відмови у спробі з'єднання.

Політика Ланцюга За Замовчуванням

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

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

iptables --policy INPUT ACCEPT

iptables --policy OUTPUT ACCEPT

iptables --policy FORWARD ACCEPT

За замовчуванням, приймаючи правило, ви можете використовувати iptables, щоб відхиляти конкретні IP-адреси або номери портів, продовжуючи приймати всі інші з'єднання. Ми дійдемо до цих команд через хвилину. Якщо ви бажаєте відхилити всі з'єднання і вручну вказати, які з них ви хочете допустити до з'єднання, вам слід змінити політику за замовчуванням ваших ланцюгів на відхилення. Це, ймовірно, буде корисним лише для серверів, які містять конфіденційну інформацію і завжди мають з'єднання лише з однаковими IP-адресами.

iptables --policy INPUT DROP

iptables --policy OUTPUT DROP

iptables --policy FORWARD DROP

Відповіді Специфічні Для З'єднання

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

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

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

Дозвіл чи Блокування Конкретних З'єднань

Після налаштування ланцюгів політики ви можете налаштувати iptables для дозволу або блокування конкретних адрес, діапазонів адрес та портів. У цих прикладах ми встановимо з'єднання на DROP, але ви можете переключити їх на ACCEPT або REJECT, залежно від ваших потреб та того, як ви налаштували ланцюги політики.

Примітка: У цих прикладах ми будемо використовувати iptables -A для додавання правил до існуючого ланцюга. Iptables розпочинає роботу з верхнього краю свого списку і переходить до кожного правила, доки не знайде те, яке відповідає. Якщо вам потрібно вставити правило перед іншим, ви можете використовувати iptables -I [ланцюг] [номер] для вказівки номера у списку.

З'єднання з однієї IP-адреси. У цьому прикладі показано, як заблокувати всі IP-адреси у мережі 10.10.10.0/24. Ви можете використовувати маску підмережі або стандартну нотацію косої риски для вказівки діапазону IP-адрес. iptables -A INPUT -s 10.10.10.10 -j DROP

З'єднання з діапазону IP-адрес. У цьому прикладі показано, як заблокувати всі IP-адреси у мережі 10.10.10.0/24. Ви можете використовувати маску підмережі або стандартну нотацію косої риски для вказівки діапазону IP-адрес. iptables -A INPUT -s 10.10.10.0/24 -j DROP або iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP

З'єднання з конкретним портом. У цьому прикладі показано, як заблокувати з'єднання SSH з 10.10.10.10. iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP

Ви можете замінити "ssh" на будь-який протокол або номер порту. Частина -p tcp коду повідомляє iptables, який тип з'єднання використовує протокол. Якщо ви блокуєте протокол, який використовує UDP замість TCP, тоді -p udp буде необхідним. У цьому прикладі показано, як заблокувати з'єднання SSH з будь-якої IP-адреси. iptables -A INPUT -p tcp --dport ssh -j DROP

Стани З'єднання

Як зазначалося раніше, багато протоколів потребуватимуть двостороннього зв'язку. Наприклад, якщо ви хочете дозволити з'єднання SSH до вашої системи, ланцюги введення та виведення повинні мати додане правило до них. Але якщо ви хочете, щоб SSH, що надходить до вашої системи, дозволялося тільки, чи не додавання правила до виведення також дозволить вихідні спроби SSH? Тут допомагають стани з'єднань, які надають вам можливість дозволити двосторонній зв'язок, але дозволяють встановлювати т ільки однонаправлені з'єднання. Погляньте на цей приклад, де з'єднання SSH ВІД 10.10.10.10 дозволяється, але з'єднання SSH ДО 10.10.10.10 - ні. Однак система має дозвіл відправляти інформацію через SSH, якщо сеанс вже був установлений, що забезпечує можливість зв'язку SSH між цими двома хостами.

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -p tcp --sport 22 -d 10.10.10.10 -m state --state ESTABLISHED -j ACCEPT

Збереження Змін

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

Інші Команди

Список в даний час налаштованих правил iptables: iptables -L Додавання опції -v надасть вам інформацію про пакет та байт, а додавання -n відобразить все у числовому вигляді.

Щоб очистити всі налаштовані правила, ви можете виконати команду очищення. iptables -F

UFW (Debian/Ubuntu)

UFW, або Uncomplicated Firewall, - це інтерфейс для iptables, який спрямований на спрощення процесу налаштування брандмауера sudo apt install ufw

Використання IPv6 з UFW sudo nano /etc/default/ufw

Потім переконайтеся, що значення "IPV6" дорівнює "yes" Перевірте Статус та Правила UFW >sudo ufw status verbose

Налаштуйте Політики За Замовчуванням

sudo ufw default deny incoming

sudo ufw default allow outgoing

sudo ufw enable

Модулі безпеки

App Armor

SELinux

Вимкнення зайвих служб

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

systemctl list-unit-files --type=service

systemctl list-dependencies graphical.target

Ці команди відображатимуть такі служби та демони. Ви можете вимкнути конкретну службу, використовуючи наведену нижче команду.

systemctl disable service

systemctl disable httpd.service

Доступ до Cron

GNU/Linux надає підтримку автоматизації за допомогою cron-завдань. Ви можете вказати регулярні завдання за допомогою планувальника cron. Користувачі root/admin повинні переконатися, що звичайні користувачі не можуть отримати доступ до crontab або додавати туди записи. Просто додайте їх імена користувачів у файл /etc/cron.deny, щоб це зробити.

echo ALL >>/etc/cron.deny

Ця команда вимкне cron для всіх користувачів на вашому сервері, крім root. Щоб дозволити доступ для певного користувача, додайте його ім'я користувача до файлу /etc/cron.allow.

Збої ядра

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

echo 'hard core 0' >> /etc/security/limits.conf

echo 'fs.suid_dumpable = 0' >> /etc/sysctl.conf

sysctl -p

echo 'ulimit -S -c 0 > /dev/null 2>&1' >> /etc/profile

Виконайте ці команди, щоб обмежити збої ядра на вашій системі.

Вимкнення пристроїв Firewire/Thunderbolt

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

echo "blacklist firewire-core" >> /etc/modprobe.d/firewire.conf

Інтерфейс Thunderbolt забезпечує з'єднання між вашою системою та периферійними пристроями високої швидкості, такими як жорсткі диски, масиви RAID, мережеві інтерфейси та інше. Ви можете вимкнути його за допомогою наступної команди.

echo "blacklist thunderbolt" >> /etc/modprobe.d/thunderbolt.conf

Вимкнення Ctrl+Alt+Delete

Комбінація клавіш Ctrl+Alt+Delete дозволяє користувачам примусово перезавантажити багато дистрибутивів GNU/Linux. Це може стати проблемою для вас як користувача. Користувачі root/admin повинні вимкнути цю комбінацію клавіш, щоб забезпечити належне зміцнення GNU/Linux. Ви можете виконати наступну команду, щоб вимкнути це у системах, які використовують systemd.

systemctl mask ctrl-alt-del.target

Якщо ви використовуєте системи з ініціалізацією V замість systemd, редагуйте файл /etc/inittab та закоментуйте наступний рядок, додавши перед ним символ решітки.

nano /etc/inittab

# ca::ctrlaltdel:/sbin/shutdown -t3 -r now

Різне

Перевірка на наявність уразливостей Spectre / Meltdown

ЗРОБІТЬ РЕЗЕРВНУ КОПІЮ ВАШИХ ДАНИХ

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

Джерела

Hardware Security: https://eldritchdata.neocities.org/CGFTPU/HardwareSecurity