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

33

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

    
задан One Zero 05.06.2012 в 14:20
источник

6 ответов

40

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

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

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

Поскольку я все еще «новый» пользователь, я не могу опубликовать более двух ссылок. Вы можете узнать больше об этой теме здесь: Ссылка и уделять особое внимание Ссылка

    
ответ дан Patrick Regan 07.06.2012 в 15:19
источник
13

Защищенная общая память

/ dev / shm можно использовать в атаке на запущенную службу, такую ​​как httpd. Измените / etc / fstab, чтобы сделать его более безопасным.

Откройте окно терминала и введите следующее:

sudo vi /etc/fstab

Добавьте следующую строку и сохраните. Вам необходимо будет перезагрузить, чтобы этот параметр вступил в силу:

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

Сеть Harden с настройками 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 для безопасности

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

Ссылка

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

Ссылка

Сканировать журналы и запрещать подозрительные хосты - 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 = [email protected]
SMTP_HOST = localhost
SMTP_PORT = 25
#SMTP_USERNAME=foo
#SMTP_PASSWORD=bar
SMTP_FROM = DenyHosts [email protected]
#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 на * enabled = true *

Например, если вы хотите включить SSH-мониторинг и запретить тюрьму, найдите приведенную ниже строку и измените ее с false на true . Вот оно.

[ssh]

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

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

destemail = [email protected]

и измените следующую строку:

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 дней на адрес электронной почты, введите следующее и замените [email protected] на требуемое электронное письмо.

sudo logwatch --mailto [email protected] --output mail --format html --range 'between -7 days and today' 

Аудит безопасности вашей системы - Tiger.

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

Откройте терминал и введите следующее:

sudo apt-get install tiger

Чтобы запустить тигр, введите:

sudo tiger

Все выходные данные Tiger можно найти в каталоге / var / log / tiger

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

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

Дополнительные сведения     

ответ дан One Zero 15.06.2012 в 16:51
13

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

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

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

  3. Вы можете использовать cron job , чтобы проверить, когда ваши файлы были изменены без вашего разрешения и, возможно, взломали; используя это задание 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.**
    
ответ дан Z9iT 10.06.2012 в 01:55
6

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

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

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

Вы можете просмотреть демонстрацию веб-сайта (только) здесь .

    
ответ дан pl1nk 09.06.2012 в 01:45
3

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

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

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

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

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

    
ответ дан Anders 06.06.2012 в 22:48
2

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

ответ дан Justin Andrusk 09.06.2012 в 16:53