Как обезопасить сервер ubuntu

Обновлено: 04.07.2024

Существует распространенное заблуждение, что сервера под управлением ОС Linux являются наиболее безопасными и защищенными от вторжений извне. К сожалению это не так, безопасность любого сервера зависит от ряда факторов и мероприятий по ее обеспечению и практически не зависит от применяемой операционной системы.

Мы решили начать цикл статей посвященных сетевой безопасности с Ubuntu Server, так как решения на данной платформе вызывают большой интерес у наших читателей и так как многие считают, что Linux решения безопасны сами по себе.

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

Еще одно частое заблуждение, рассуждения в стиле: "да кому он нужен, наш сервер, у нас ничего интересного нет". Действительно, ваша локальная сеть может не представлять для злоумышленников никакого интереса, однако они могут использовать взломанный сервер для рассылки спама, атак на другие сервера, анонимный прокси, короче говоря как отправную точку для своих темных делишек.

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

Несмотря на то, что статья посвящена Ubuntu Server, вначале мы рассмотрим общие вопросы безопасности, которые в равной степени относятся к любой платформе и являются азами, без усвоения которых нет смысла обсуждать вопрос более детально.

С чего начинается безопасность?

Нет, безопасность не начинается с брандмауэра, она вообще не начинается с технических средств, безопасность начинается с пользователя. Ведь что толку от самой-самой крутой металлической двери установленной самыми лучшими специалистами если хозяин оставит ключ под ковриком?

Поэтому первое, что вы должны сделать - это провести аудит безопасности. Не пугайтесь этого слова, все не так сложно: начертите схематический план сети, на котором отметьте безопасную зону, зону потенциальной опасности и зону повышенной опасности, а также составьте список пользователей которые имеют (должны иметь доступ) к этим зонам.

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

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

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

По возможности потенциально опасную зону следует вынести в отдельную подсеть - демилитаризованную зону (DMZ), которая отделена от основной сети дополнительным брандмауэром.

ubuntu-security-001.jpg

Физически DMZ можно организовать поставив отдельный сервер / аппаратный брандмауэр или добавив дополнительную сетевую карту в роутер, однако в последнем случае придется уделить пристальное внимание безопасности роутера. Но в любом случае обеспечить безопасность одного сервера гораздо проще, чем группы серверов.

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

Как правило, здесь требуется очень непопулярный шаг - введение в действие политики паролей. Все пароли пользователей имеющих доступ к критически важным сервисам и имеющих возможность подключаться извне должны содержать не менее 6 символов и иметь в составе, кроме строчных букв, символы двух категорий из трех: прописные буквы, цифры, неалфавитные символы.

Кроме того пароль не должен включать логин пользователя или его часть, не содержать дат и имен, которые можно связать с пользователем и, желательно, не являться словарным словом.

Неплохо завести практику менять пароли раз в 30-40 дней. Понятно, что подобная политика способна вызвать неприятие со стороны пользователей, но вы должны всегда помнить, что пароли типа 123 или qwerty равносильны ключу оставленному под ковриком.

Безопасность сервера - ничего лишнего.

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

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

Сконфигурируйте службы, обслуживающие локальную сеть (например squid), таким образом, чтобы они принимали запросы исключительно с локального интерфейса. Чем меньше служб доступно извне, тем лучше.

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

Хорошим помощником в деле обеспечения безопасности будет сканер уязвимостей, которым следует просканировать внешний интерфейс сервера. Мы использовали демо-версию одного из самых известных продуктов - XSpider 7.7.

ubuntu-security-002.jpg

Сканер показывает открытые порты, пытается определить тип работающей службы и, если это удалось, уязвимости для нее. Как видим - правильно сконфигурированная система вполне безопасна, однако не стоит оставлять ключ под ковриком, наличие на роутере открытых портов 1723 (VPN) и 3389 (RDP, проброшен на терминальный сервер) хороший повод подумать о политике паролей.

Отдельно стоит поговорить о безопасности SSH, данная служба обычно используется администраторами для удаленного управления сервером и представляет повышенный интерес для злоумышленников. Настройки SSH хранятся в файле /etc/ssh/sshd_config, все описываемые ниже изменения вносятся в него. В первую очередь следует запретить авторизацию под пользователем root, для этого добавьте опцию:

Теперь злоумышленнику придется подбирать не только пароль, но еще и логин, при этом ему все равно будет неизвестен пароль суперпользователя (надеемся он не совпадает с вашим паролем). Все административные задачи при подключении извне стоит выполнять из-под sudo, входя в систему непривилегированным пользователем.

Стоит явно указать список разрешенных пользователей, при этом можно использовать записи типа user@host, которая разрешает указанному пользователю подключаться только с указанного хоста. Например чтобы разрешить пользователю ivanov подключаться из дома (IP 1.2.3.4) следует добавить следующую запись:

Также запретите использование устаревшего и менее безопасного протокола SSH1, разрешив только вторую версию протокола, для этого приведите следующую строку к виду:

Несмотря на все принятые меры попытки подключится к SSH и иным публичным сервисам все равно будут, чтобы предотвратить подбор паролей воспользуйтесь утилитой fail2ban, которая позволяет автоматически банить пользователя после нескольких неудачных попыток авторизации. Установить ее можно командой:

Данная утилита готова к работе сразу после установки, однако мы бы советовали сразу изменить некоторые параметры, для этого внесите изменения в файл /etc/fail2ban/jail.conf. По умолчанию контролируется только доступ к SSH и время бана составляет 10 минут (600 секунд), на наш взгляд стоит его увеличить, изменив следующую опцию:

После чего пролистайте файл и включите секции для работающих в вашей системе служб, установив после имени соответствующей секции параметр enabled в состояние true, например для службы proftpd это будет выглядеть так:

Еще один важный параметр maxretry, который отвечает за максимальное количество попыток подключения. После изменения настроек не забудьте перезапустить сервис:

Лог работы утилиты вы можете посмотреть в /var/log/fail2ban.log.

Надеемся, что приведенные рекомендации помогут вам сделать ваш сервер действительно неприступной крепостью.

Никто из нас не хочет, чтобы личная информация попала в чужие руки. Но как защитить систему от атак и хищений данных? Неужели придется читать километровые мануалы по настройке и алгоритмам шифрования? Совсем не обязательно. В этой статье я расскажу, как сделать Linux-систему безопасной буквально за 30 минут.

Введение

Мы живем в век мобильных устройств и постоянного онлайна. Мы ходим в кафе с ноутбуком и запускаем на домашних машинах веб-серверы, выставленные в интернет. Мы регистрируемся на сотнях сайтов и используем одинаковые пароли для веб-сервисов. В наших карманах всегда лежит смартфон, в который забиты десятки паролей, и хранятся ключи от нескольких SSH-серверов. Мы настолько привыкли к тому, что сторонние сервисы заботятся о нашей конфиденциальности, что уже перестали уделять ей внимание.

Когда я потерял смартфон, мне сильно повезло, что установленный на него антивор оказался работоспособным и позволил удаленно стереть все данные из памяти девайса. Когда я по невнимательности открыл SSH-порт на домашней машине с юзером без пароля (!) во внешний мир (!!), мне сильно повезло, что на машину пробрались скрипт-кидди, которые кроме смешной истории шелла не оставили никаких серьезных следов своего пребывания в системе. Когда я случайно опубликовал в интернете листинг со своим паролем от Gmail, мне сильно повезло, что нашелся добрый человек, который предупредил меня об этом.

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

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

Пароль!

Все начинается с паролей. Они везде: в окне логина в Linux-дистрибутиве, в формах регистрации на интернет-сайтах, на FTP- и SSH-серверах и на экране блокировки смартфона. Стандарт для паролей сегодня — это 8–12 символов в разном регистре с включением цифр. Генерировать такие пароли своим собственным умом довольно утомительно, но есть простой способ сделать это автоматически:

Никаких внешних приложений, никаких расширений для веб-браузеров, OpenSSL есть на любой машине. Хотя, если кому-то будет удобней, он может установить и использовать для этих целей pwgen (поговаривают, пароль получится более стойким):

Где хранить пароли? Сегодня у каждого юзера их так много, что хранить все в голове просто невозможно. Довериться системе автосохранения браузера? Можно, но кто знает, как Google или Mozilla будет к ним относиться. Сноуден рассказывал, что не очень хорошо. Поэтому пароли надо хранить на самой машине в зашифрованном контейнере. Отцы-основатели рекомендуют использовать для этого KeePassX. Штука графическая, что не сильно нравится самим отцам-основателям, но зато работает везде, включая известный гугль-зонд Android (KeePassDroid). Останется лишь перекинуть базу с паролями куда надо.

В KeePassX есть свой генератор паролей

В KeePassX есть свой генератор паролей

Шифруемся

В Linux можно найти тонны средств шифрования всего и вся, от разделов на жестком диске до одиночных файлов. Три наиболее известных и проверенных временем инструмента — это dm-crypt/LUKS, ecryptfs и encfs. Первый шифрует целые диски и разделы, второй и третий — каталоги с важной информацией, каждый файл в отдельности, что очень удобно, если потребуется делать инкрементальные бэкапы или использовать в связке с Dropbox. Также есть несколько менее известных инструментов, включая TrueCrypt например.

Сразу оговорюсь, что шифровать весь диск целиком — задача сложная и, что самое важное, бесполезная. Ничего особо конфиденциального в корневом каталоге нет и быть не может, а вот домашний каталог и своп просто кладезь инфы. Причем второй даже больше, чем первый, так как туда могут попасть данные и пароли уже в расшифрованном виде (нормальные программеры запрещают системе скидывать такие данные в своп, но таких меньшинство). Настроить шифрование и того и другого очень просто, достаточно установить инструменты ecrypts:

И, собственно, включить шифрование:

Далее достаточно ввести свой пароль, используемый для логина, и перезайти в систему. Да, все действительно так просто. Первая команда зашифрует и перемонтирует своп, изменив нужные строки в /etc/fstab. Вторая — создаст каталоги

/Private, в которых будут храниться зашифрованные и расшифрованные файлы соответственно. При входе в систему будет срабатывать PAM-модуль pam_ecryptfs.so, который смонтирует первый каталог на второй с прозрачным шифрованием данных. После размонтирования

/Private окажется пуст, а

/.Private будет содержать все файлы в зашифрованном виде.

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

/Dropbox. Делается это так:

Кстати, места на диске должно быть в 2,5 раза больше, чем данных у vasya, так что рекомендую заранее почиститься. После завершения операции следует сразу войти под юзером vasya и проверить работоспособность:

Если все ок, незашифрованную копию данных можно затереть:

Ecryptfs предупреждает нас

Ecryptfs предупреждает нас

Заметаем следы

ОK, пароли в надежном месте, личные файлы тоже, что теперь? А теперь мы должны позаботиться о том, чтобы какие-то куски наших личных данных не попали в чужие руки. Ни для кого не секрет, что при удалении файла его актуальное содержимое остается на носителе даже в том случае, если после этого произвести форматирование. Наши зашифрованные данные будут в сохранности даже после стирания, но как быть с флешками и прочими картами памяти? Здесь нам пригодится утилита srm, которая не просто удаляет файл, но и заполняет оставшиеся после него блоки данных мусором:

Как всегда, все просто до безобразия. Далее, если речь идет о всем носителе, то можно воспользоваться старым добрым dd:

Эта команда сотрет все данные на флешке sdb. Далее останется создать таблицу разделов (с одним разделом) и отформатировать в нужную ФС. Использовать для этого рекомендуется fdisk и mkfs.vfat, но можно обойтись и графическим gparted.

Предотвращение BruteForce-атак

В Ubuntu/Debian для установки набираем:

Конфиги находятся в каталоге /etc/fail2ban. После изменения конфигурации следует перезапускать fail2ban командой:

Угроза извне

Теперь позаботимся об угрозах, исходящих из недр всемирной паутины. Здесь я должен был бы начать рассказ об iptables и pf, запущенном на выделенной машине под управлением OpenBSD, но все это излишне, когда есть ipkungfu. Что это такое? Это скрипт, который произведет за нас всю грязную работу по конфигурированию брандмауэра, без необходимости составлять километровые списки правил. Устанавливаем:

Для включения ipkungfu открываем файл /etc/default/ipkungfu и меняем строку IPKFSTART = 0 на IPKFSTART = 1. Запускаем:

Дополнительно внесем правки в /etc/sysctl.conf:

Выявляем вторжения

Snort — один из любимейших инструментов админов и главный фигурант всех руководств по безопасности. Штука с долгой историей и колоссальными возможностями, которой посвящены целые книги. Что он делает в нашем гайде по быстрой настройке безопасной системы? А здесь ему самое место, Snort можно и не конфигурировать:

Все! Я не шучу, стандартных настроек Snort более чем достаточно для защиты типовых сетевых сервисов, если, конечно, они у тебя есть. Нужно только время от времени просматривать лог. А в нем можно обнаружить строки типа этих:

Упс. Кто-то пытался вызвать переполнение буфера в MySQL. Тут сразу есть и ссылочка на страницу с детальным описанием проблемы. Красота.

Кто-то наследил…

Кто-то особенно умный смог обойти наш брандмауэр, пройти мимо Snort, получить права root в системе и теперь ходит в систему регулярно, используя установленный бэкдор. Нехорошо, бэкдор надо найти, удалить, а систему обновить. Для поиска руткитов и бэкдоров используем rkhunter:

Софтина проверит всю систему на наличие руткитов и выведет на экран результаты. Если зловред все-таки найдется, rkhunter укажет на место и его можно будет затереть. Более детальный лог располагается здесь: /var/log/rkhunter.log. Запускать rkhunter лучше в качестве cron-задания ежедневно:

Заменяем email-адрес Васи на свой и делаем скрипт исполняемым:

Базу rkhunter рекомендуется время от времени обновлять с помощью такой команды:

Ее, кстати, можно добавить перед командой проверки в cron-сценарий. Еще два инструмента поиска руткитов:

По сути, те же яйца Фаберже с высоты птичьего полета, но базы у них различные. Возможно, с их помощью удастся выявить то, что пропустил rkhunter. Ну и на закуску debsums — инструмент для сверки контрольных сумм файлов, установленных пакетов с эталоном. Ставим:

Как всегда? запуск можно добавить в задания cron.

rkhunter за работой

rkhunter за работой

В моей системе руткитов нет

В моей системе руткитов нет

За пределами

Теперь поговорим о том, как сохранить свою анонимность в Сети и получить доступ к сайтам и страницам, заблокированным по требованию различных организаций-правообладателей и прочих Мизулиных. Самый простой способ сделать это — воспользоваться одним из тысяч прокси-серверов по всему миру. Многие из них бесплатны, но зачастую обрезают канал до скорости древнего аналогового модема.

Чтобы спокойно ходить по сайтам и только в случае необходимости включать прокси, можно воспользоваться одним из множества расширений для Chrome и Firefox, которые легко находятся в каталоге по запросу proxy switcher. Устанавливаем, вбиваем список нужных прокси и переключаемся на нужный, увидев вместо страницы табличку «Доступ к странице ограничен по требованию господина Скумбриевича».

В тех ситуациях, когда под фильтр попал весь сайт и его адрес внесли в черный список на стороне DNS-серверов провайдеров, можно воспользоваться свободными DNS-серверами, адреса которых опубликованы здесь. Просто берем два любых понравившихся адреса и добавляем в /etc/resolv.conf:

Чтобы разного рода DHCP-клиенты и NetworkManager’ы не перезаписали файл адресами, полученными от провайдера или роутера, делаем файл неперезаписываемым с помощью расширенных атрибутов:

После этого файл станет защищен от записи для всех, включая root.

Чтобы еще более анонимизировать свое пребывание в Сети, можно воспользоваться также демоном dnscrypt, который будет шифровать все запросы к DNS-серверу в дополнение к прокси-серверу, используемому для соединения с самим сайтом. Устанавливаем:

Указываем в /etc/resolv.conf loopback-адрес:

Кстати, версии dnscrypt есть для Windows, iOS и Android.

Луковая маршрутизация

Что такое луковая маршрутизация? Это Tor. А Tor, в свою очередь, — это система, которая позволяет создать полностью анонимную сеть с выходом в интернет. Термин «луковый» здесь применен относительно модели работы, при которой любой сетевой пакет будет «обернут» в три слоя шифрования и пройдет на пути к адресату через три ноды, каждая из которых будет снимать свой слой и передавать результат дальше. Все, конечно, сложнее, но для нас важно только то, что это один из немногих типов организации сети, который позволяет сохранить полную анонимность.

Тем не менее, где есть анонимность, там есть и проблемы соединения. И у Tor их как минимум три: он чудовищно медленный (спасибо шифрованию и передаче через цепочку нод), он будет создавать нагрузку на твою сеть (потому что ты сам будешь одной из нод), и он уязвим для перехвата трафика. Последнее — естественное следствие возможности выхода в интернет из Tor-сети: последняя нода (выходная) будет снимать последний слой шифрования и может получить доступ к данным.

Тем не менее Tor очень легко установить и использовать:

Чтобы введенный в командной строке пароль не был сохранен в истории, можно использовать хитрый трюк под названием «добавь в начале команды пробел».

Именно ecryptfs используется для шифрования домашнего каталога в Ubuntu.

Борьба с флудом

Приведу несколько команд, которые могут помочь при флуде твоего хоста.

Подсчет количества коннектов на определенный порт:

Подсчет числа «полуоткрытых» TCP-соединений:

Просмотр списка IP-адресов, с которых идут запросы на подключение:

Анализ подозрительных пакетов с помощью tcpdump:

Дропаем подключения атакующего:

Ограничиваем максимальное число «полуоткрытых» соединений с одного IP к конкретному порту:

Отключаем ответы на запросы ICMP ECHO:

Выводы

Вот и все. Не вдаваясь в детали и без необходимости изучения мануалов мы создали Linux-box, который защищен от вторжения извне, от руткитов и прочей заразы, от непосредственно вмешательства человека, от перехвата трафика и слежки. Остается лишь регулярно обновлять систему, запретить парольный вход по SSH, убрать лишние сервисы и не допускать ошибок конфигурирования.

Евгений Зобнин

Редактор рубрики X-Mobile. По совместительству сисадмин. Большой фанат Linux, Plan 9, гаджетов и древних видеоигр.

Без сомнения, только что установленная система Linux намного устойчивее к различным вредоносным программам, шпионскому программному обеспечению и действиям хакеров, чем такая же версия Windows. Но тем не менее большинство систем Linux используют настройки по умолчанию, которые не совсем безопасны по своей сути.

Некоторые дистрибутивы Linux рассчитаны на то, чтобы быть максимально безопасными из коробки, но, как правило, они вызывают очень много трудностей у новичков, особенно не специалистов в сфере компьютерной безопасности.

Ubuntu - это самый популярный дистрибутив из всех используемых на сегодняшний день дистрибутивов Linux. Это связано с множеством факторов, одним из них является то, что он наиболее простой для начинающих пользователей. В этом есть свои положительные стороны, но также по этой причине в системе есть несколько слабых мест, которые разработчики оставили, выбрав удобство пользователя. В этой статье мы рассмотрим как выполняется настройка безопасности Ubuntu. Эти настройки не так сложны, но они помогут вам сделать систему более стойкой к самым распространенным методам атак.

Настройка безопасности в Ubuntu

Первым делом вы должны знать, что нужно держать свою систему постоянно обновленной и в самом актуальном состоянии. Постоянно обнаруживаются новые уязвимости в ядре и программном обеспечении, примером может послужить та же Drity COW, Meltdown и Spectre. Разработчики закрывают эти баги очень быстро, но чтобы применить эти исправления на своей системе вам нужно ее своевременно обновлять.

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

1. Настройка общей памяти

По умолчанию весь объем общей памяти /run/shm доступен для чтения и записи с возможностью выполнения программ. Это считается брешью в безопасности и многие эксплойты используют /run/shm для атак на запущенные сервисы. Для большинства настольных, а особенно серверных устройств рекомендуется монтировать этот файл в режиме только для чтения. Для этого нужно добавить такую строчку в /etc/fstab:

sudo vi /etc/fstab

none /run/shm tmpfs defaults,ro 0 0

Но, тем не менее, некоторые программы не будут работать, если /run/shm доступен только для чтения, одна из них - это Google Chrome. Если вы используете Google Chrome, то мы должны сохранить возможность записи, но можем запретить выполнение программ, для этого добавьте такую строчку вместо предложенной выше:

none /run/shm tmpfs rw,noexec,nosuid,nodev 0 0

2. Защитите свой домашний каталог

Ваш домашний каталог по умолчанию будет доступен каждому пользователю в системе. Так что если у вас есть гостевая учетная запись, то гость сможет получить полный доступ ко всем вашим личным файлам и документам. Но вы можете сделать его доступным только вам. Откройте терминал и выполните следующую команду:

chmod 0700 /home/имя_пользователя

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

chmod 0750 /home/имя_пользователя

Теперь безопасность Ubuntu, а особенно ваших личных данных будет немного выше.

3. Отключите вход по SSH от имени root

По умолчанию в Ubuntu вы можете войти в систему по SSH от имени суперпользователя Несмотря на то, что вы устанавливаете пароль для пользователя root, это может быть потенциально опасно, поскольку если пароль очень простой, то злоумышленник сможет его перебрать и получить полный контроль над компьютером. Возможно, в вашей системе не установлена служба sshd. Чтобы проверить выполните:

sudo vi /etc/ssh/sshd_config

И замените строку:

Готово, теперь по ssh в вашу систему будет сложнее прорваться, но настройка безопасности в ubuntu 16.04 еще не завершена.

4. Установите брандамуэр

Возможно, на вашем компьютере установлен не только сервер ssh, но и служба баз данных и веб-сервер apache или nginx. Если это домашний компьютер, то, скорее всего, вы бы не хотели чтобы кто-то еще мог подключиться к вашему локальному сайту или базе данных. Чтобы это предотвратить нужно установить брандмауэр. В Ubuntu рекомендуется использовать gufw, так как он разработан специально для этой системы.

Для установки выполните:

sudo apt install gufw

gufw8

Затем нужно открыть программу, включить защиту и заблокировать все входящие соединения. Разрешить только нужные порты для браузера и других известных программ. Подробнее читайте в инструкции настройка Gufw.

5. Защита от MITM атак

Суть MITM атаки или атаки "Человек посередине" в том, что другой человек перехватывает все пакеты, которые вы передаете серверу, таким образом, может получить все ваши пароли и личные данные. Не ото всех атак подобного рода мы можем защититься, но довольно популярна в публичных локальных сетях разновидность MITM атак - ARP атака. С помощью особенностей протокола ARP злоумышленник выдает перед вашим компьютером себя за роутер и вы отправляете все свои пакеты с данными ему. От этого можно очень просто защититься с помощью утилиты TuxCut.

В официальных репозиториях программы нет, поэтому для ее установки нужно скачать пакет с GitHub:

Затем установите полученный пакет:

sudo apt install tuxcut_6.1_amd64.deb

Перед тем, как запускать программу, запустите ее сервис:

sudo systemctl start tuxcutd

Главное окно утилиты выглядит вот так:


Здесь отображены IP адреса всех пользователей, подключенных к сети, а также соответствующий каждому из них MAC адрес. Если отметить галочку Protection Mode, то программа будет защищать от ARP атак. Вы можете использовать её в публичных сетях, например, в общественном WiFi, где есть смысл опасаться за свою безопасность.

Выводы

Ну вот и все, теперь настройка безопасности Ubuntu завершена и ваша система стала намного безопаснее. Мы перекрыли самые распространенные векторы атак и методов проникновения в систему используемых хакерами. Если вы знаете другие полезные способы улучшить безопасность в Ubuntu пишите в комментариях!

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

Я сделал Шпаргалку по Ubuntu Server, и я хотел бы поделиться ею с вами. Первые несколько страниц - это общие команды linux, затем конкретные серверные пакеты, а последняя страница - контрольный список безопасности сервера. Контрольный список объединяет советы и рекомендации со многих веб-сайтов. Я надеюсь, что это поможет вам! Лицензировано по лицензии WTFPL . Вы можете просмотреть / скачать / любой контрольный список здесь . Я обновляю это время от времени.

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

  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 и украсть ваши данные. Остерегайтесь социальной инженерии. Задайте вопросы, чтобы проверить, кто разговаривает по телефону, и убедитесь, что у них есть разрешение на выполнение запроса, который они делают.

Альтернативой использованию UFW (хотя в Ubuntu по-прежнему используются встроенные встроенные брандмауэры) является блокировка вашей системы с очень специфическими iptables правилами, чтобы запретить внешний доступ к любой службе, которую вы не собираетесь использовать, если у вас Настройка мяча, которая требует продвинутых маршрутов и прочее. @LordofTime Согласен. На самом деле я сам использую iptables, но ufw подходит для большинства основных установок. Кроме того, UFW в любом случае является более или менее просто оболочкой для наиболее распространенных конфигураций iptables. Базовая система все та же. +1 для ufw, вы не новый пользователь, вы являетесь участником в течение 1 года: p В самом деле, я просто хотел указать, что в некоторых случаях iptables будет лучше использоваться по сравнению с UFW в некоторых случаях Рассмотрим BastilleLinux, это также хороший набор мер безопасности.

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

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

Файл /etc/sysctl.conf содержит все настройки sysctl. Для предотвращения маршрутизации исходящих входящих пакетов и регистрации неверных IP-адресов введите следующее в окне терминала

Отредактируйте файл /etc/sysctl.conf и откомментируйте или добавьте следующие строки:

Чтобы перезагрузить sysctl с последними изменениями, введите:

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

Добавьте или отредактируйте следующие строки:

Отредактируйте файл php.ini:

Добавьте или отредактируйте следующие строки:

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

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

После установки отредактируйте файл конфигурации /etc/denyhosts.conf и измените адрес электронной почты и другие параметры, если это необходимо.

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

Измените следующие значения, как требуется на вашем сервере:

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

Fail2ban сканирует файлы журналов и блокирует IP-адреса, которые показывают вредоносные признаки - слишком много сбоев паролей, поиск эксплойтов и т. Д.

Обычно Fail2Ban затем используется для обновления правил брандмауэра, чтобы отклонять IP-адреса в течение заданного промежутка времени, хотя любое другое произвольное действие также может быть настроено. Из коробки Fail2Ban поставляется с фильтрами для различных сервисов (apache, courier, ftp, ssh и т. Д.).

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

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

Для редактирования настроек откройте окно терминала и введите:

Активируйте все службы, которые вы хотите, чтобы fail2ban отслеживал, изменив enabled = false на * enabled = true *

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

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

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

чтобы:

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

Хорошие инструкции о том, как настроить fail2ban и создать различные фильтры, можно найти в HowtoForge - нажмите здесь для примера

Когда закончите с настройкой Fail2Ban, перезапустите сервис с:

Вы также можете проверить статус с помощью.

И RKHunter, и CHKRootkit в основном делают одно и то же - проверяют вашу систему на наличие руткитов. Нет вреда в использовании обоих.

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

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

Для обновления и запуска RKHunter. Откройте Терминал и введите следующее

Nmap («Network Mapper») - бесплатная утилита с открытым исходным кодом для обнаружения сети и аудита безопасности.

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

Сканирование вашей системы на наличие открытых портов с помощью:

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

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

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

Для просмотра вывода logwatch используйте less:

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

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

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

Весь вывод Tiger можно найти в / var / log / tiger

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

Читайте также: