Что можно сделать для защиты Ubuntu Server?

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

35
задан 18.01.2020, 01:33

8 ответов

Вот список того, что я делаю для защиты своего сервера.

  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. Следуйте другим рекомендациям по этой ссылке. РЕДАКТИРОВАТЬ: я забыл отредактировать это, когда у меня не было достаточно репутации, чтобы добавить больше ссылок. Ссылка, указанная здесь, является последней ссылкой ниже.
  9. Никогда не доверяйте своим пользователям. Если у вас есть несколько пользователей с доступом к системе, заблокируйте их. Если вам нужно предоставить им доступ к sudo, дайте им только то, что им нужно.
  10. Используйте здравый смысл. Подумайте очень серьезно о том, как вы попали бы, если бы вы были когда-либо заблокированы. Затем закройте эти отверстия.

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

Так как я все еще «новый» пользователь, я не могу опубликовать более 2 ссылок. Вы можете прочитать больше об этой теме здесь: https://help.ubuntu.com/12.04/serverguide/index.html и обратить особое внимание на https://help.ubuntu.com /12.04/serverguide/security.html

43
ответ дан 18.01.2020, 01:33
  • 1
    Альтернатива использованию UFW (в то время как все еще использование встроило из брандмауэров поля в Ubuntu) должна заблокировать вниз Вашу систему с чрезвычайно определенным iptables правила запретить внешний доступ к любому сервису, Вы - not' t собирающийся использовать, если у Вас есть чудная установка, которая требует усовершенствованного rouing и материала все же. – Contango 18.01.2020, 01:34
  • 2
    Рассмотрите BastilleLinux it' s также хороший комплект усиления безопасности. – Boris Hurinek 18.01.2020, 01:34
  • 3
    Согласованный @LordofTime. Я на самом деле использую iptables сам, но ufw очень хорошо для большинства основных установок. Также UFW является более или менее просто оберткой для наиболее распространенных iptables конфигураций так или иначе. Базовая система является все еще тем же. – Jason Goemaat 18.01.2020, 01:34
  • 4
    +1 для ufw, Вы не новый пользователь, Вы - участник в течение 1 года: p – Francis B. 18.01.2020, 01:35
  • 5
    Действительно, я просто хотел указать, что в определенных экземплярах iptables будет иметь лучшее удобство использования по ufw в определенных случаях – pejman 18.01.2020, 01:35

Используйте nmap на всех интерфейсах на машине, чтобы вы знали, какие сервисы вы используете на своей машине. Это важный инструмент для безопасности.

Удалите все службы, которые вам не нужны, на внешних интерфейсах. Вы можете настроить MySQL так, чтобы он прослушивал только определенные интерфейсы, например localhost.

Используйте ufw для защиты вашей службы SSH (и, возможно, других), чтобы она не допускала слишком много (неудачных) соединений в минуту с одной и той же машины. Это усложнит атаки методом грубой силы. Изменить номер порта не так уж и полезно, просто неизвестность, нет безопасности.

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

Разрешить ssh-вход в систему только с цифровыми сертификатами, пароль отсутствует . Это также сделает атаки грубой силы трудными / невозможными.

3
ответ дан 18.01.2020, 01:34

Я недавно сделал сообщение об этом, как обезопасить Ubuntu 16.04-18.04. Эти шаги включают в себя:

Замена пароля для входа в систему авторизованными ключами Установите брандмауэр на вашем сервере Linux

и некоторые другие. https://hostup.org/blog/how-to-secure-a-ubuntu-linux-server-in-3-simple-steps/

0
ответ дан 18.01.2020, 01:35

Безопасность всегда идет с ценой. Установка реалистичных границ поможет вам в достижении ваших целей. Я хотел бы рассмотреть следующие аспекты:

  • Против того, что вы защищаете себя (какой тип злодея, каков его бюджет)?
  • Каковы ваши векторы атаки?
  • [ 116]

    Проверяя все ссылки, которые размещены здесь, я думаю, что эта должна быть добавлена. Здесь подробно рассказывается не только о настройке программного обеспечения, но и о плане безопасности. Как плюс, каждая команда, которую нужно выполнить, объясняется с источником к ней.

    Защита веб-сервера Ubuntu в Xenial 16.04

0
ответ дан 18.01.2020, 01:35

Используйте проект Bastille Linux.

Он предоставляет интерактивный инструмент для выполнения дополнительных мер по усилению безопасности для повышения общей безопасности и снижения уязвимости компрометации для вашей системы Ubuntu (из Bastille Linux ).

Он предлагает функции оценки и отчетности, так что он может сказать вам, какие части системы не заблокированы. Он проверяет систему только для чтения, сообщая о состоянии каждого из ее элементов защиты. Например, Бастилия может проверить, заблокирован ли DNS-сервер в тюрьме chroot, отключен ли telnet, или даже если пароли должны быть большой длины. Вы можете посмотреть демо-версию этого веб-сайта по этой ссылке (подробнее info ).

Предварительный просмотр демо (только) в Интернете можно получить здесь здесь .

BastillleLinux

6
ответ дан 18.01.2020, 01:36
  • 1
    Это выглядит подобным системе SELinux, которую Вы находите на CentOS/Redhat, но я держал пари, что SELinux более современен. – and... break 18.01.2020, 01:36
  • 2
    Я могу второй та рекомендация. Для выполнения представленных хостов (например, веб-серверы), крепость имеет большое значение для обеспечения системы. – Abhishek Srivastava 18.01.2020, 01:37

Защищенная разделяемая память

/ 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

Harden PHP для обеспечения безопасности

[ 11110] Отредактируйте файл 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

[1146 ] Защита от DDOS (отказ в обслуживании) - ModEvasive

http://www.thefanclub.co.za/how-to/how-install-apache2-modsecurity-and-modevasive-ubuntu -1204-LTS-се rver

Сканировать журналы и запретить подозрительные хосты - 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 отслеживал, изменив enabled = false на [11119 ] * enabled = true *

Например, если вы хотите включить мониторинг SSH и запретить тюрьму, найдите строку ниже и измените значение с на false [true] [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

Вы также можете [11124 ] создать фильтры правил для различных сервисов, которые вы хотите, чтобы 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 с помощью следующего: [ 1193]

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

Все выходные данные Tiger можно найти в / var / log / tiger [11101 ]

Чтобы просмотреть отчеты о безопасности тигра, откройте Терминал и введите следующее:

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

Для получения дополнительной помощи

13
ответ дан 18.01.2020, 01:36

Я бы также обратился к документу CIS Debian Benchmarks , в котором содержится значительное количество процедур и процессов для усиления защиты операционной системы, которые будут применяться к Ubuntu, поскольку она является производной от Debian. Я также посоветовался бы:

2
ответ дан 18.01.2020, 01:37

Поскольку вы сказали, что это веб-хостинг-сервер ... Я хотел бы поделиться своими лучшими практиками и опытом 5 долгих лет в области веб-хостинга. [ 1123]

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

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

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

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

  5. Если вы хотите, чтобы что-то работало прямо из коробки, вы можете перейти на Linux под ключ. Он основан на Ubuntu, чрезвычайно прост в реализации и гибок в соответствии с вашими потребностями. С очень небольшим усилием вы получаете безопасность из коробки. Это их стек LAMP . Я лично использую и предпочитаю только это.

  6. Если вы начинаете с нуля, вы также можете установить ISPconfig3. Инструкция Здесь .

  7. вы можете проверить свою безопасность, пытаясь проникнуть в вашу безопасность , используя Back-Track-Linux .

  8. хранят сложные длинные и случайные пароли. Не храните их на ПК. Запишите их. Используйте live CD для доступа к этим логинам.

  9. получить программное обеспечение для защиты от перебора , например fail2ban.

  10. Не запускайте тех демонов, которые вам не нужны.

  11. Заблокировать все ненужные порты . будьте предельно осторожны с портом SSH (22).

  12. Получите статический IP-адрес в системе, через которую вы собираетесь управлять сервером. Сделать большинство вещей из IP-блока и разрешить доступ только вашему конкретному IP к таким местам конфигурации, как порт 22.

В конце дня ... работайте с полной душой, не становитесь эмоциональными с установкой, и применение здравого смысла выводит вас далеко за пределы.

**My heartiest best wishes to you. good luck.**
13
ответ дан 18.01.2020, 01:37
  • 1
    PHP может также быть опасным когда доверчивый ввод данных пользователем (внедрение SQL, например). – Ryan Kohn 18.01.2020, 01:38
  • 2
    9.: Нет, случайные passowrds плохи, ключ находится в длина , т.е. " D0g....................." более сильно, чем " PrXyc. N (n4k77#L! eVdAfp9". объяснение в explainxkcd.com/2011/08/10/password-strength – Community 18.01.2020, 01:38
  • 3
    @NoBugs я абсолютно соглашаюсь с этой точкой зрения. Не возможный сжиматься все в одном отдельно отвечает. Мой ответ содержит много гиперссылок как таковое, эти веб-сайты, содержащие те страницы, действительно очень полезны. Надеюсь, мой ответ и включенные ссылки помогают сообществу:) – Adam Plocher 18.01.2020, 01:38
  • 4
    @papukaija я предлагаю Вас Google на brute force attacks и dictionary attacks.. Случайный длинный пароль является единственным способом защитить себя от таких нападений. – Chirag 18.01.2020, 01:39