Що можна зробити для захисту сервера Ubuntu?


35

У мене є проект максимально захистити Ubuntu Server. Сервер - це сервер веб-хостингу. На сервері будуть працювати LAMP, Mail та DNS.


Які послуги будуть працювати?
wojox

LAMP, Mail, DNS
One Zero

Я створив чіт-лист сервера Ubuntu, і я хотів би поділитися ним з вами. Перші кілька сторінок - це загальні команди Linux, потім конкретні серверні пакети, а остання - контрольний список безпеки сервера. Контрольний список об'єднує поради та загартовування з багатьох веб-сайтів. Я сподіваюся, що це допоможе вам! Ліцензовано за ліцензією WTFPL . Ви можете переглянути / завантажити / незалежно від контрольного списку тут . Я час від часу її оновлюю.
Ной Крассер

Відповіді:


43

Ось список речей, які я роблю для захисту свого сервера.

  1. Увімкніть UFW ( sudo ufw enable), а потім дозволяйте лише порти, які фактично використовуються. ( sudo ufw allow 80)
  2. Переконайтеся, що MySQL дозволяє лише з'єднання з localhost.
  3. Увімкніть TLS на поштових сервісах. Навіть якщо це самопідписаний сертифікат. Ви не хочете, щоб паролі надсилалися в поле очищення.
  4. Встановіть блокатори ssh bruteforce, як denyhosts або fail2ban. ( sudo apt-get install denyhosts)
  5. Подивіться робити вхід на основі ключа ssh.
  6. Дізнайтеся AppArmor. Якщо ви використовуєте досить ванільну конфігурацію, то це надзвичайно просто. Просто переконайтесь, що він увімкнено. Це допоможе зменшити подвиги нульового дня.
  7. Залежно від фізичного доступу до сервера, ви навіть можете подивитися на шифрування даних на жорсткому диску.
  8. Дотримуйтесь інших рекомендацій за цим посиланням. EDIT: Я забув редагувати це, коли мені не вистачило репутації, щоб додати більше посилань. Посилання, яке тут мається на увазі, є останнім посиланням нижче.
  9. Ніколи не довіряйте своїм користувачам. Якщо у вас є кілька користувачів, які мають доступ до системи, заблокуйте їх. Якщо вам потрібно надати їм доступ до судо, надайте їм лише те, що їм потрібно.
  10. Використовуйте здоровий глузд. Думайте по-справжньому важко про те, як би ви потрапили, якщо вас коли-небудь закривали. Потім закрийте ці отвори.

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

Оскільки я все ще "новий" користувач, я не можу розмістити більше 2 посилань. Більше про цю тему можна прочитати тут: https://help.ubuntu.com/12.04/serverguide/index.html та звернути особливу увагу на https://help.ubuntu.com/12.04/serverguide/security.html


2
Альтернативою для використання UFW (поки все ще використовуються вбудовані з коробки брандмауери в Ubuntu) є блокування вашої системи надзвичайно конкретними iptablesправилами, щоб заборонити зовнішній доступ до будь-якої служби, яку ви не збираєтеся використовувати, якщо у вас є налаштування м'яча, яке вимагає розширеного маршрутизації та іншого.
Thomas Ward

2
@LordofTime Погоджено. Я фактично використовую iptables сам, але ufw просто чудово підходить для більшості базових встановлень. Також UFW є більш-менш просто обгорткою для найбільш поширених конфігурацій iptables у будь-якому випадку. Основна система все одно є такою ж.
Патрік Реган

2
+1 для ufw, ви не новий користувач, ви член 1 рік: p
Tachyons

1
Дійсно, я просто хотів зазначити, що в певних випадках iptables матимуть кращу зручність використання у порівнянні з ufw у певних випадках
Thomas Ward

1
Подумайте, що BastilleLinux також є гарним пакетом зміцнення безпеки.
pl1nk

13

Захистіть спільну пам'ять

/ dev / shm може використовуватися для нападу на працюючу службу, таку як httpd. Змініть / etc / fstab, щоб зробити його більш безпечним.

Відкрийте вікно терміналу та введіть наступне:

sudo vi /etc/fstab

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

tmpfs     /dev/shm     tmpfs     defaults,noexec,nosuid     0     0

Загартуйте мережу з налаштуваннями sysctl

Файл /etc/sysctl.conf містить усі параметри sysctl. Запобігати маршрутизації джерел вхідних пакетів та неправильно сформованих протоколів IP вводити наступне у вікно терміналу

sudo vi /etc/sysctl.conf

Відредагуйте файл /etc/sysctl.conf та відмініть коментар або додайте наступні рядки:

# IP Spoofing protection
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Ignore ICMP broadcast requests
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Disable source packet routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0 
net.ipv4.conf.default.accept_source_route = 0
net.ipv6.conf.default.accept_source_route = 0

# Ignore send redirects
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

# Block SYN attacks
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5

# Log Martians
net.ipv4.conf.all.log_martians = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1

# Ignore ICMP redirects
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0 
net.ipv6.conf.default.accept_redirects = 0

# Ignore Directed pings
net.ipv4.icmp_echo_ignore_all = 1

Щоб перезавантажити sysctl з останніми змінами, введіть:

sudo sysctl -p

Запобігати підробленню IP-адрес

Відкрийте термінал і введіть наступне:

sudo vi /etc/host.conf

Додайте або відредагуйте наступні рядки:

order bind,hosts
nospoof on

Загартуйте PHP для безпеки

Відредагуйте файл php.ini:

sudo vi /etc/php5/apache2/php.ini

Додайте або відредагуйте наступні рядки:

disable_functions = exec,system,shell_exec,passthru
register_globals = Off
expose_php = Off
magic_quotes_gpc = On

Брандмауер веб-додатків - ModSecurity

http://www.thefanclub.co.za/how-to/how-install-apache2-modsecurity-and-modevasive-ubuntu-1204-lts-server

Захист від атак DDOS (відмова від служби) - ModEvasive

http://www.thefanclub.co.za/how-to/how-install-apache2-modsecurity-and-modevasive-ubuntu-1204-lts-server

Сканувати журнали та забороняти підозрілі хости - DenyHosts та Fail2Ban

@DenyHosts

DenyHosts - це програма python, яка автоматично блокує SSH-атаки, додаючи записи до /etc/hosts.deny. DenyHosts також повідомить адміністраторів Linux про ображення хостів, нападених користувачів та підозрілі входи.

Відкрийте термінал і введіть наступне:

sudo apt-get install denyhosts

Після встановлення відредагуйте файл конфігурації /etc/denyhosts.conf та змініть електронну пошту та інші налаштування за потребою.

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

sudo vi /etc/denyhosts.conf

Змініть такі значення, як потрібно на вашому сервері:

ADMIN_EMAIL = root@localhost
SMTP_HOST = localhost
SMTP_PORT = 25
#SMTP_USERNAME=foo
#SMTP_PASSWORD=bar
SMTP_FROM = DenyHosts nobody@localhost
#SYSLOG_REPORT=YES 

@ Fail2Ban

Fail2ban є більш досконалим, ніж DenyHosts, оскільки він розширює моніторинг журналу на інші сервіси, включаючи SSH, Apache, Courier, FTP та багато іншого.

Fail2ban сканує файли журналів і забороняє IP-адреси, які показують шкідливі знаки - занадто багато збоїв у паролі, шукають подвиги тощо.

Зазвичай Fail2Ban тоді використовувався для оновлення правил брандмауера для відхилення IP-адрес протягом певного часу, хоча будь-яка довільна інша дія також може бути налаштована. Fail2Ban поставляється з фільтрами для різних служб (apache, courier, ftp, ssh тощо).

Відкрийте термінал і введіть наступне:

sudo apt-get install fail2ban

Після встановлення відредагуйте файл конфігурації /etc/fail2ban/jail.local та створіть правила фільтра за потребою.

Для редагування налаштувань відкрийте вікно терміналу та введіть:

sudo vi /etc/fail2ban/jail.conf

Активуйте всі сервіси, які ви хочете відслідковувати fail2ban, змінивши увімкнено = хибне на * увімкнено = істинно *

Наприклад, якщо ви хочете ввімкнути моніторинг SSH та заборонити в'язницю, знайдіть рядок нижче та змініть увімкнено з false на true . Це воно.

[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 3

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

destemail = root@localhost

і змінити наступний рядок із:

action = %(action_)s

до:

action = %(action_mwl)s

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

sudo vi /etc/fail2ban/jail.local

Хороші вказівки щодо налаштування fail2ban та створення різних фільтрів можна знайти на HowtoForge - натисніть тут для прикладу

Після завершення конфігурації Fail2Ban перезапустіть службу за допомогою:

sudo /etc/init.d/fail2ban restart

Ви також можете перевірити стан.

sudo fail2ban-client status

Перевірте наявність руткітів - RKHunter та CHKRootKit.

І RKHunter, і CHKRootkit основному роблять те саме - перевіряють вашу систему на руткіти. Без використання обох.

Відкрийте термінал і введіть наступне:

sudo apt-get install rkhunter chkrootkit

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

sudo chkrootkit

Щоб оновити та запустити RKHunter. Відкрийте термінал і введіть наступне

sudo rkhunter --update
sudo rkhunter --propupd
sudo rkhunter --check

Сканувати відкриті порти - Nmap

Nmap ("Network Mapper") - це безкоштовна утиліта з відкритим кодом для виявлення мережі та аудиту безпеки.

Відкрийте термінал і введіть наступне:

sudo apt-get install nmap

Скануйте вашу систему на наявність відкритих портів:

nmap -v -sT localhost

Сканування SYN із наступним:

sudo nmap -v -sS localhost

Проаналізуйте системні файли LOG - LogWatch

Logwatch - це налаштована система аналізу журналів. Logwatch аналізує журнали вашої системи та створює звіт, аналізуючи визначені вами області. Logwatch простий у використанні і працюватиме прямо з пакета в більшості систем.

Відкрийте термінал і введіть наступне:

sudo apt-get install logwatch libdate-manip-perl

Для перегляду вихідних даних лог-годин слід використовувати менше:

sudo logwatch | less

Щоб надіслати звіт протоколу журналу за останні 7 днів на електронну адресу, введіть наступне та замініть mail@domain.com необхідною електронною поштою. :

sudo logwatch --mailto mail@domain.com --output mail --format html --range 'between -7 days and today' 

Аудит безпеки вашої системи - Tiger.

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

Відкрийте термінал і введіть наступне:

sudo apt-get install tiger

Для запуску тигра введіть:

sudo tiger

Весь вихід тигра можна знайти в / var / log / tiger

Щоб переглянути звіти про безпеку тигра, відкрийте термінал і введіть наступне:

sudo less /var/log/tiger/security.report.*

Для отримання додаткової допомоги


PHP : magic_quotes_gpc = On. Магічні цитати спочатку застаріли, а потім були видалені: php.net/manual/en/security.magicquotes.whynot.php
Тім

13

Оскільки ви сказали, що це веб-хостинг-сервер ... Я хотів би поділитися своїми найкращими практиками та досвідом 5 років у галузі веб-хостингу.

  1. З мого минулого досвіду, а не одразу переходити в конфігураційне пекло, спершу слід зібрати низький виноград безпеки, як зазначено у цій статті.

  2. Оскільки у вас є LAMP, ви повинні бути дуже обережними щодо PHP та його параметрів php.ini. Це хороше посилання для забезпечення PHP. PHP має надзвичайні повноваження, які можуть стати циклом безпеки при неправильному налаштуванні.

  3. Ви можете використовувати cron завдання, щоб перевірити, коли ваші файли були змінені без вашого дозволу та, можливо, взламані; використовуючи цю роботу cron . Я вважаю за краще Notepad ++ для порівняння результатів cron (безпосередньо завантажте електронний лист із свого веб-сервера та відкрийте в Notepad ++).

  4. Якщо ви хочете встановити якусь SEM, найкраще віддавати перевагу cPanel (однак оплачувати). Webmin і zpanel дуже хороші вільні альтернативи. Вебмін для цього краще, як мінімум, використовує сертифікати, що підписуються самостійно, та додає безпеку.

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

  6. Якщо ви починаєте з подряпин, ви також можете встановити ISPconfig3. Інструкція Тут .

  7. ви можете перевірити свою безпеку, намагаючись проникнути в безпеку за допомогою Back-Track-Linux .

  8. зберігати складні довгі та випадкові паролі. Не зберігайте їх на ПК. запишіть їх. Використовуйте живий компакт-диск для доступу до цих логінів.

  9. отримати програмне забезпечення для захисту від грубої сили на зразок fail2ban.

  10. Не запускайте тих демонів, які вам не потрібні.

  11. Блокуйте всі непотрібні порти . будьте надзвичайно обережні з порту SSH (22).

  12. Отримайте статичну IP-адресу в системі, через яку ви будете керувати сервером. Зробіть більшість речей IP-блоків і дозвольте вашому конкретному IP-доступу отримати доступ до таких конфігураційних місць, як порт 22.

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

**My heartiest best wishes to you. good luck.**

1
PHP також може бути небезпечним, якщо довіряти користувальницькому вкладу (наприклад, введення sql).
NoBugs

@NoBugs Я абсолютно згоден з цим пунктом. Неможливо стиснути все за одну однозначну відповідь. Моя відповідь містить багато гіперпосилань, оскільки такі веб-сайти, що містять ці сторінки, дуже корисні. Сподіваюсь, що моя відповідь та включені посилання допоможуть спільноті :)
Bhavesh Diwan

2
№ 9: Ні, пасовища, коріння, погані, ключ - у довжині , тобто. "D0g ....................." сильніше, ніж "PrXyc.N (n4k77 # L! EVdAfp9". Пояснення на тлумачення наxxccd.com/2011/08/10 / міцність пароля
papukaija

2
@papukaija Я пропоную вам перейти в Google brute force attacksі dictionary attacks.. Випадковий довгий пароль - це єдиний спосіб убезпечити себе від таких атак.
Бхавеш Діван

6

Скористайтеся проектом Bastille Linux.

Він надає інтерактивний інструмент для виконання додаткових заходів щодо посилення безпеки для підвищення загальної безпеки та зменшення сприйнятливості компромісів для вашої системи Ubuntu (від Bastille Linux ).

Він пропонує функцію оцінювання та звітування, щоб він міг сказати, які частини системи не заблоковані. Він розглядає систему лише для читання, повідомляючи про стан кожного її зміцнення. Наприклад, Bastille може перевірити, чи зафіксований DNS-сервер у в'язниці chroot, чи вимкнено telnet чи навіть якщо паролі мають бути довгими. Ви можете подивитися на веб-тільки демо це через це посилання (більш можете інформацію ).

Тут ви можете ознайомитись із веб-демонстрацією (лише) .

BastillleLinux


1
Я можу відрекомендувати цю рекомендацію. Для роботи відкритих хостів (наприклад, веб-серверів) Bastille проходить довгий шлях до забезпечення системи.
Флойд

Це схоже на систему SELinux, яку ви знайдете на CentOS / Redhat, але, думаю, SELinux є більш сучасним.
djangofan

3

Використовуйте nmapна всіх інтерфейсах машини, щоб ви знали, які послуги ви працюєте на вашій машині. Це важливий інструмент безпеки.

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

Використовуйте ufw для захисту вашої служби SSH (та можливих інших), щоб вона не допускала занадто багато (невдалих) з'єднань за хвилину з однієї машини. Це зробить грубіші атаки більш важкими. Змінити номер порту - це не корисно, лише невпевненість, відсутність безпеки.

Будьте обмеженими щодо кількості облікових записів на вашій машині. Також не встановлюйте більше пакетів / програм, ніж ви фактично використовуєте. Встановлюйте лише X11-клієнтів, а не X11-сервер.

Дозвольте входити в систему ssh-login лише цифровими сертифікатами, без пароля. Це також зробить грубі напади важкими / неможливими.


2

Я б також проконсультувався з документом Debian Benchmark в СНД, і він має значну кількість процедур і процесів для загартовування операційної системи, які застосовуватимуться до Ubuntu, оскільки це похідна від Debian. Я б також порадився:


0

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

  • Проти чого ви захищаєте себе (який тип лиходія, який його бюджет)?
  • Які ваші вектори нападу?

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

Забезпечення веб-сервера Ubuntu на Xenial 16.04


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.