У мене є проект максимально захистити Ubuntu Server. Сервер - це сервер веб-хостингу. На сервері будуть працювати LAMP, Mail та DNS.
У мене є проект максимально захистити Ubuntu Server. Сервер - це сервер веб-хостингу. На сервері будуть працювати LAMP, Mail та DNS.
Відповіді:
Ось список речей, які я роблю для захисту свого сервера.
sudo ufw enable
), а потім дозволяйте лише порти, які фактично використовуються. ( sudo ufw allow 80
)sudo apt-get install denyhosts
)Ще кілька речей. Більшість людей забувають про фізичний доступ. Всі конфігурації програмного забезпечення у світі нічого не означають, якщо я можу фізично зайти з LiveCD і викрасти ваші дані. Остерігайтеся соціальної інженерії. Поставте запитання, щоб перевірити, хто є по телефону, і переконайтеся, що вони мають дозвіл на запит, який вони роблять.
Оскільки я все ще "новий" користувач, я не можу розмістити більше 2 посилань. Більше про цю тему можна прочитати тут: https://help.ubuntu.com/12.04/serverguide/index.html та звернути особливу увагу на https://help.ubuntu.com/12.04/serverguide/security.html
iptables
правилами, щоб заборонити зовнішній доступ до будь-якої служби, яку ви не збираєтеся використовувати, якщо у вас є налаштування м'яча, яке вимагає розширеного маршрутизації та іншого.
/ dev / shm може використовуватися для нападу на працюючу службу, таку як httpd. Змініть / etc / fstab, щоб зробити його більш безпечним.
Відкрийте вікно терміналу та введіть наступне:
sudo vi /etc/fstab
Додайте наступний рядок і збережіть. Вам потрібно буде перезавантажити, щоб цей параметр набув чинності:
tmpfs /dev/shm tmpfs defaults,noexec,nosuid 0 0
Файл /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
Відкрийте термінал і введіть наступне:
sudo vi /etc/host.conf
Додайте або відредагуйте наступні рядки:
order bind,hosts
nospoof on
Відредагуйте файл 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
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 є більш досконалим, ніж 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 основному роблять те саме - перевіряють вашу систему на руткіти. Без використання обох.
Відкрийте термінал і введіть наступне:
sudo apt-get install rkhunter chkrootkit
Для запуску chkrootkit відкрийте вікно терміналу та введіть:
sudo chkrootkit
Щоб оновити та запустити RKHunter. Відкрийте термінал і введіть наступне
sudo rkhunter --update
sudo rkhunter --propupd
sudo rkhunter --check
Nmap ("Network Mapper") - це безкоштовна утиліта з відкритим кодом для виявлення мережі та аудиту безпеки.
Відкрийте термінал і введіть наступне:
sudo apt-get install nmap
Скануйте вашу систему на наявність відкритих портів:
nmap -v -sT localhost
Сканування SYN із наступним:
sudo nmap -v -sS localhost
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 - це інструмент безпеки, який можна використовувати як в якості аудиту безпеки, так і в системі виявлення вторгнень.
Відкрийте термінал і введіть наступне:
sudo apt-get install tiger
Для запуску тигра введіть:
sudo tiger
Весь вихід тигра можна знайти в / var / log / tiger
Щоб переглянути звіти про безпеку тигра, відкрийте термінал і введіть наступне:
sudo less /var/log/tiger/security.report.*
magic_quotes_gpc = On
. Магічні цитати спочатку застаріли, а потім були видалені: php.net/manual/en/security.magicquotes.whynot.php
Оскільки ви сказали, що це веб-хостинг-сервер ... Я хотів би поділитися своїми найкращими практиками та досвідом 5 років у галузі веб-хостингу.
З мого минулого досвіду, а не одразу переходити в конфігураційне пекло, спершу слід зібрати низький виноград безпеки, як зазначено у цій статті.
Оскільки у вас є LAMP, ви повинні бути дуже обережними щодо PHP та його параметрів php.ini. Це хороше посилання для забезпечення PHP. PHP має надзвичайні повноваження, які можуть стати циклом безпеки при неправильному налаштуванні.
Ви можете використовувати cron завдання, щоб перевірити, коли ваші файли були змінені без вашого дозволу та, можливо, взламані; використовуючи цю роботу cron . Я вважаю за краще Notepad ++ для порівняння результатів cron (безпосередньо завантажте електронний лист із свого веб-сервера та відкрийте в Notepad ++).
Якщо ви хочете встановити якусь SEM, найкраще віддавати перевагу cPanel (однак оплачувати). Webmin і zpanel дуже хороші вільні альтернативи. Вебмін для цього краще, як мінімум, використовує сертифікати, що підписуються самостійно, та додає безпеку.
Якщо ви хочете, щоб щось працювало прямо з коробки, тоді ви можете перейти до Linux під ключ. Він заснований на Ubuntu, надзвичайно простий у виконанні та гнучкий для ваших потреб. При дуже маленьких зусиллях ви отримуєте безпеку з коробки. Це їх стек LAMP . Я особисто використовую і віддаю перевагу лише цьому.
Якщо ви починаєте з подряпин, ви також можете встановити ISPconfig3. Інструкція Тут .
ви можете перевірити свою безпеку, намагаючись проникнути в безпеку за допомогою Back-Track-Linux .
зберігати складні довгі та випадкові паролі. Не зберігайте їх на ПК. запишіть їх. Використовуйте живий компакт-диск для доступу до цих логінів.
отримати програмне забезпечення для захисту від грубої сили на зразок fail2ban.
Не запускайте тих демонів, які вам не потрібні.
Блокуйте всі непотрібні порти . будьте надзвичайно обережні з порту SSH (22).
Отримайте статичну IP-адресу в системі, через яку ви будете керувати сервером. Зробіть більшість речей IP-блоків і дозвольте вашому конкретному IP-доступу отримати доступ до таких конфігураційних місць, як порт 22.
Врешті-решт ... робота з цілком розумом, не відчувайте емоційності при встановленні, а застосування здорового глузду відведе вас далеко за межі.
**My heartiest best wishes to you. good luck.**
brute force attacks
і dictionary attacks
.. Випадковий довгий пароль - це єдиний спосіб убезпечити себе від таких атак.
Скористайтеся проектом Bastille Linux.
Він надає інтерактивний інструмент для виконання додаткових заходів щодо посилення безпеки для підвищення загальної безпеки та зменшення сприйнятливості компромісів для вашої системи Ubuntu (від Bastille Linux ).
Він пропонує функцію оцінювання та звітування, щоб він міг сказати, які частини системи не заблоковані. Він розглядає систему лише для читання, повідомляючи про стан кожного її зміцнення. Наприклад, Bastille може перевірити, чи зафіксований DNS-сервер у в'язниці chroot, чи вимкнено telnet чи навіть якщо паролі мають бути довгими. Ви можете подивитися на веб-тільки демо це через це посилання (більш можете інформацію ).
Тут ви можете ознайомитись із веб-демонстрацією (лише) .
Використовуйте nmap
на всіх інтерфейсах машини, щоб ви знали, які послуги ви працюєте на вашій машині. Це важливий інструмент безпеки.
Видаліть усі зовнішні інтерфейси, які вам не потрібні. Ви можете налаштувати MySQL для прослуховування лише на конкретних інтерфейсах, як-от localhost.
Використовуйте ufw для захисту вашої служби SSH (та можливих інших), щоб вона не допускала занадто багато (невдалих) з'єднань за хвилину з однієї машини. Це зробить грубіші атаки більш важкими. Змінити номер порту - це не корисно, лише невпевненість, відсутність безпеки.
Будьте обмеженими щодо кількості облікових записів на вашій машині. Також не встановлюйте більше пакетів / програм, ніж ви фактично використовуєте. Встановлюйте лише X11-клієнтів, а не X11-сервер.
Дозвольте входити в систему ssh-login лише цифровими сертифікатами, без пароля. Це також зробить грубі напади важкими / неможливими.
Я б також проконсультувався з документом Debian Benchmark в СНД, і він має значну кількість процедур і процесів для загартовування операційної системи, які застосовуватимуться до Ubuntu, оскільки це похідна від Debian. Я б також порадився:
Безпека завжди поставляється з ціною. Встановлення деяких реалістичних меж допоможе вам досягти поставлених цілей. Я б розглядав такі аспекти:
Перевіряючи всі посилання, які розміщені тут, я думаю, це слід додати. У ньому детально йдеться не тільки про те, як налаштувати програмне забезпечення, а й продумати план безпеки. Як плюс, кожна команда для виконання пояснюється джерелом до неї.
Недавно я створив повідомлення про це, як захистити ubuntu 16.04-18.04. Ці кроки включають:
Замініть вхід пароля авторизованими клавішами Встановіть брандмауер на своєму Linux сервері
і ще деякі. https://hostup.org/blog/how-to-secure-a-ubuntu-linux-server-in-3-simple-steps/