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

Step 1 — Making Sure IPv6 is Enabled

In recent versions of Ubuntu, IPv6 is enabled by default. In practice that means most firewall rules added to the server will include both an IPv4 and an IPv6 version, the latter identified by within the output of UFW’s status command. To make sure IPv6 is enabled, you can check your UFW configuration file at . Open this file using or your favorite command line editor:

Then make sure the value of is set to . It should look like this:

/etc/default/ufw excerpt

Save and close the file. If you’re using , you can do that by typing , then and to confirm.

When UFW is enabled in a later step of this guide, it will be configured to write both IPv4 and IPv6 firewall rules.

6: Поддержка других соединений

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

Ниже мы приведём несколько примеров правил наиболее востребованных сервисов.

Незашифрованные соединения HTTP можно разблокировать с помощью команды allow, указав протокол или порт:

Зашифрованные соединения HTTPS можно разрешить при помощи команд:

Настройка диапазонов портов

UFW позволяет разблокировать необходимый диапазон портов. Некоторые приложения используют сразу несколько портов.

К примеру, чтобы разрешить трафик X11, нужно разблокировать порты 6000-6007:

Указывая диапазон портов, вы должны указать протокол (tcp или udp). Если вы не сделаете этого, UFW будет использовать оба протокола (в большинстве случаев это нормально).

Настройка IP-адресов

Также UFW может поддерживать трафик определённых IP-адресов. К примеру, чтобы разрешить доступ IP-адресу 203.0.113.4, нужно ввести from и сам адрес:

Вы можете ограничить доступ для определенного IP-адреса конкретным портом с помощью опции to any port. Например, чтобы разрешить IP-адресу 203.0.113.4 SSH-доступ, используйте:

Настройка подсетей

Чтобы разблокировать в брандмауэре подсеть IP-адресов, используйте CIDR-нотации для определения маски подсети. К примеру, чтобы разрешить трафик от диапазона IP-адресов 203.0.113.1-203.0.113.254 , нужно ввести:

Аналогичным образом можно указать порт, доступ к которому есть у подсети. Например, чтобы открыть доступ к порту 22, нужно ввести:

Настройка сетевых интерфейсов

Правила брандмауэра могут применяться к конкретному интерфейсу. Для этого нужно ввести allow in on, а затем указать имя этого интерфейса.

Прежде чем продолжить, просмотрите свои сетевые интерфейсы.

Имена интерфейсов выделены красным (обычно они называются eth0, enp3s2 и т.п.).

Чтобы разблокировать трафик HTTP для интерфейса eth0, введите:

Чтобы сервер баз данных MySQL (порт 3306) мог прослушивать соединения интерфейса частной сети eth1, нужно ввести:

Шаг 4 – Настройка vsftpd

Чтобы продолжить устанавливать FTP сервер на Ubuntu VPS, нам нужно настроить vsftpd и наш FTP-доступ. В этом руководстве мы разрешим одному пользователю подключаться по FTP, используя локальную консоль. Необходимая для этого двух этапная настройка уже установлена в конфигурационном файле (vsftpd.conf). Вначале проверьте, чтобы настройки в файле совпадали с указанными ниже, используя команду nano:

sudo nano etcvsftpd.conf
. . .

# Allow anonymous FTP? (Disabled by default).

anonymous_enable=NO

#

# Uncomment this to allow local users to log in.

local_enable=YES

. . .

В этом же файле, продолжим удаляя # включаем write_enable:

. . .

write_enable=YES

. . .

Chroot также раскоментируем, чтобы убедиться, что пользователь, подключившийся по FTP имеет доступ к файлам внутри разрешённой директории:

. . .

chroot_local_user=YES

. . .

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

user_sub_token=$USER

local_root=home$USERftp

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

pasv_min_port=40000

pasv_max_port=50000

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

userlist_enable=YES

userlist_file=etcvsftpd.userlist

userlist_deny=NO

Флаг userlist_deny отвечает за переключение логики, когда он установлен в “NO”, только те пользователи, которые есть в списке имеет доступ. По завершению нажмите CTRL+X и подтвердите сохранения изменений в файле.

В завершение, продолжим создание и добавление нашего пользователя в файл:

echo "alex" | sudo tee -a etcvsftpd.userlist

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

cat etcvsftpd.userlist

Вывод должен быть “alex”, как показано на скриншоте:

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

sudo systemctl restart vsftpd

Шаг 5 – Делаем защищенный FTP

По умолчанию, FTP не делает никакого шифрование данных, поэтому мы будем использовать TLS/SSL, чтобы позаботиться о безопасности. В качестве первого шага нам нужно создать SSL сертификат и использовать его для защиты Ubuntu FTP сервера. Для начала выполним следующую команду:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Флаг —days делает сертификат действующим в течение года и мы включаем 2048-битный приватный ключ RSA в этой же команде. Когда запросит нужные данные введите их в предоставленном поле.

После создания сертификата ещё раз откройте конфигурационный файл:

sudo nano /etc/vsftpd.conf

В конце файла есть строка с “_rsa”. Закомментируйте эти две строки:

# rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
# rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Вместо этого мы направим конфиг файл на сертификат, который мы создали. Добавьте такие строки:

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

Теперь мы включим SSL и убедимся, что только пользователи со включённым SSL могут с нами связываться. Измените значение ssl_enable на YES:

ssl_enable=YES

Теперь добавьте следующие строки для продолжения создания защиты (это запретить какие-либо анонимные соединения с использованием SSL):

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

Настройте TLS используя:

ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

Здесь мы добавим ещё 2 опции. Во-первых, повторное использование SSL не будет необходимым, потому что это может привести к разрывам у большого количества клиентов. Во-вторых, мы будем использовать высокозащищенный код шифрования, что будет означать, что длина ключа соответствует (или больше, чем) 128 бит.

require_ssl_reuse=NO
ssl_ciphers=HIGH

Сделаем ещё раз перезапуск, для вступления изменений в силу:

sudo systemctl restart vsftpd

Прекрасно! Вот вы и настроили FTP сервер на вашем Ubuntu VPS для работы с протоколом SSL/TLS.

Мониторинг

Системные ресурсы

Мониторить ресурсы сервера можно консольной утилитой или ее более красочной версией . Установим и запустим ее

$ sudo apt install htop
$ htop

Периодически контролируйте использование оперативной памяти. Если часто наблюдается загруженность около 100%, настройте файл подкачки.

$ sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
$ sudo chmod 600 /swapfile && sudo mkswap /swapfile
$ sudo swapoff -a
$ sudo swapon /swapfile
$ echo "/swapfile swap swap defaults 0 0"| sudo tee -a /etc/fstab

Здесь — размер файла подкачки в мегабайтах.

Дисковое пространство

Для мониторинга файловой системы удобно пользоваться файловым менеджером Midnight Commander. Если Вы застали времена MS DOS и Notron Commander, то объяснять ничего не нужно.

Устанавливаем и запускаем

$ sudo apt install mc
$ mc

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

🔐 Используйте SSH ключ вместо пароля

Эффективность: ️ ️ ️ ️ ️ ️

Сервер OpenSSH поддерживает различную аутентификацию. Пароли можно угадывать, взламывать или подбирать методом перебора. Ключи SSH не подвержены таким атакам.

Когда вы генерируете ключи SSH, вы создаете пару ключей. Один из них — открытый ключ, другой — закрытый. Открытый ключ устанавливается на серверах, к которым вы хотите подключиться. Закрытый ключ, хранится в безопасности на вашем компьютере.

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

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

Схематичный процесс авторизации по SSH ключу

Создание ssh ключей

И так, генерация ключей ssh выполняется командой:

Утилита предложит вам выбрать расположение ключей. По умолчанию ключи располагаются в папке ~/.ssh/. Лучше ничего не менять, чтобы все работало по умолчанию и ключи автоматически подхватывались. Секретный ключ будет называться id_rsa, а публичный id_rsa.pub.

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

Теперь у вас есть открытый и закрытый ключи SSH и вы можете использовать их для проверки подлинности. Дальше нам осталось разместить открытый ключ на удаленном сервере.

Никогда и никому не передавайте свой закрытый ключ.

Загрузка ключа на сервер

Самый простой способ скопировать ключ на удаленный сервер — это использовать утилиту . Она входит в пакет программ OpenSSH. Но для работы этого метода вам нужно иметь пароль доступа к серверу по SSH.

Синтаксис команды:

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

При первом подключении к серверу система может его не распознать, поэтому вам нужно ввести yes. Затем введите ваш пароль пользователя на удаленном сервере. Утилита подключится к удаленному серверу, а затем использует содержимое ключа id_rsa.pub для загрузки его на сервер в файл ~/.ssh/authorizedkeys. Дальше вы можете выполнять аутентификацию с помощью этого ключа.

Если такой способ по какой-либо причине для вас не работает, вы можете скопировать ключ по ssh вручную. Мы создадим каталог , а затем поместим наш ключ в файл с помощью символа , это позволит не перезаписывать существующие ключи:

Здесь вам тоже нужно набрать yes, если вы подключаетесь к новому серверу, а затем ввести пароль.

Также необходимо убедиться, что имеется возможность входа по ssh ключу. Для этого в файле должна присутствовать строка .

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

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

Локальный Web-сервер

Для создания Web у сервера должен быть свой выделенный IP. Тогда после установки LAMP по этому IP-адресу будет доступна тестовая страница Apache. Это и есть будущий Веб. В дальнейшем на него можно будет поставить FTP, базы данных, почтовый протокол. Для настройки Web-сервера:

Установите phpMyAdmin. Для этого в терминале или в консоли введите друг за другом введите «sudo apt-get install phpmyadmin»

Команда «sudo apt-get install phpmyadmin»

  • И потом «sudo service apache2 restart».
  • Компонент загрузится. Apache будет перезагружен. Дальнейшие действия зависят от версии операционной системы.

Если у вас Ubuntu 13.1 и выше, используйте команды:

  1. sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
  2. sudo a2enconf phpmyadmin
  3. sudo /etc/init.d/apache2 reload

Вбивайте их последовательно друг за другом, после каждой нажимайте Enter.

В Ubuntu 16.04, нужны другие указания:

  1. sudo apt-get install php-mbstring php-gettext
  2. sudo phpenmod mcrypt
  3. sudo phpenmod mbstring
  4. sudo systemctl restart apache2

После их ввода и автоматического перезапуска службы по адресу http:///phpmyadmin будет доступен веб-интерфейс.

  • Конфигурация и данные о ней находятся в папке сервера Apache «etc/apache2/». Apache2.conf — конфигурационный файл для дистрибутива
  • В директориях «mods-available»/«sites-available» и «mods-enabled»/«sites-enabled» находятся моды и сайты.
  • В Ports.conf расписаны прослушиваемые порты.
  • Если вы добавите после команды «sudo /etc/init.d/apache2» слово «Stop», Apache приостановит работу. Если «Start» — снова запустится. Если «Restart» — перезагрузится.
  • Чтобы самостоятельно выбирать путь для сохранения сайтов, последовательно введите в терминал «sudo a2enmod rewrite» и «sudo a2enmod userdir».

Каждый раз после внесения каких-либо изменений надо перезапускать службу командой «Restart».

Шаг 12. Смонтируйте существующие разделы жесткого диска

Как объяснялось ранее, мой домашний сервер Ubuntu включает в себя два жестких диска: твердотельный накопитель емкостью 250 ГБ для ОС и жесткий диск объемом 4 ТБ для хранения мультимедиа. Как вы можете заставить свой домашний сервер Ubuntu загружать носители, хранящиеся на втором жестком диске? Хорошо, установив второй жесткий диск (sdb) в операционной системе в известное место. В примере, показанном в этом руководстве, у нас есть второй жесткий диск (SDB) емкостью 5,4 ГБ (в реальности это будет в ТБ)

На рисунке ниже обратите внимание, что он уже отформатирован как EXT4. Если на вашем жестком диске более одного раздела, все они будут перечислены здесь

Все, что нам нужно сделать, это предоставить точку монтирования для каждого раздела на втором жестком диске. Никаких других настроек не требуется.

12а. Монтировать существующие разделы

Выберите раздел на втором диске. Вам будет представлен экран настроек раздела, как показано на рисунке ниже.

12b. Смонтировать существующий раздел как EXT4

Для «Использовать как» выберите EXT4, так как этот раздел уже отформатирован в EXT4. Если раздел на втором жестком диске отформатирован как NTFS, выберите NTFS. После того, как вы установите тип раздела, для настройки станут доступны несколько других параметров.

Для «Форматировать раздел» выберите «Нет, сохранить существующие данные»

Это ОЧЕНЬ ВАЖНО, иначе вы потеряете все данные на втором жестком диске. Затем выберите «Точка монтирования» и «Ввести вручную», как показано на рисунке ниже:

12с. Точка монтирования существующего раздела вручную

Затем введите путь для монтирования этого существующего раздела. Я обычно монтирую все существующие разделы в папке. В этом примере, поскольку второй жесткий диск содержит медиа-файлы, я называю его «медиадиск». Таким образом, полная точка монтирования , как показано на рисунке ниже.

12г. Существующая точка монтирования раздела

Еще раз выберите «noatime» и «nodiratime» для «Параметры монтирования» и оставьте «Флаг загрузки» выключенным. Конечные настройки раздела для существующего раздела, который нужно смонтировать, должны выглядеть так, как показано на рисунке ниже.

12е. Монтировать существующие разделы

В примере, используемом в этом руководстве, на втором жестком диске только один раздел. Если у вас есть больше, повторите Шаг 12 для каждого раздела, который нужно смонтировать. После установки сервера вы можете получить доступ ко всем подключенным разделам в папке . Для более легкого доступа я создаю символические ссылки на смонтированные разделы в моей домашней папке. [ Читать: Как создать ярлыки / псевдонимы для команд в Ubuntu, используя .bash_aliases?

Выбор оборудования

Как я уже написал, оборудование нам подойдет практически любое, но все же кое-какие пожелания у нас есть. Поскольку сервер будет файловый, то и пожелания наши будут касаться дисковой системы. Было бы неплохо найти машину с RAID контроллером на борту. Если мы делаем сервер для размещения рабочей файловой базы, было бы неплохо разместить ее на RAID-5, если хранилище резервных копий, отличным вариантом будет RAID-1.

При этом у нас нет особых требований к оперативной памяти, хватит и 1 Гбайта. К процессору тоже нет особых требований, Linux будет работать на всем, что еще живо.

Пожалуй, самый оптимальный вариант — приобрести восстановленный сервер «с пробегом». Берите самый дешевый, какой найдете, главное, что бы перед этим он прошел профилактику, его очистили от пыли и прогнали все системные тесты.

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

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

Учётная запись root

По умолчанию пароль для не установлен в Ubuntu 20.04, мы видим сообщение об ошибке:

Permission denied, please try again.

Можем убедится в том, что пароль для пустой:

sudo cat /etc/shadow | grep root

Так устроено в целях безопасности. Например, вы можете забыть что работаете от имени суперпользователя и удалить какие-либо важные вещи. Разработчики Ubuntu это учли и вообще отключили аккаунт суперпользователя.

Если всё же нужно авторизоваться от имени суперпользователя, необходимо установить для него пароль:

sudo passwd root

Затем нужно ввести два раза пароль. Проверим снова:

sudo cat /etc/shadow | grep root

Важно! На рабочих серверах не делайте так. Так можно делать только на домашней машине для удобства

Шаг 6 — Разрешение других соединений

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

  • соединения HTTP на порту 80, которые используются веб-серверами без шифрования, с помощью команды или
  • соединения HTTPS на порту 443, которые используются веб-серверами с шифрованием, с помощью команды или

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

Определенные диапазоны портов

С помощью UFW вы можете указывать диапазоны портов. Некоторые приложения используют для соединений не один порт, а несколько.

Например, чтобы разрешить соединения X11, которые используют порты -, нужно использовать следующие команды:

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

Конкретные IP-адреса

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

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

Подсети

Если вы хотите разрешить подсеть IP-адресов, вы можете указать маску сети с помощью нотации CIDR. Например, если вы хотите разрешить все IP-адреса в диапазоне от до , вы можете использовать следующую команду:

Также вы можете указывать порт назначения, к которому разрешено подключаться подсети . В качестве примера мы используем порт (SSH):

Подключения к определенному сетевому интерфейсу

Если вы хотите создать правило брандмауэра, применимое только к определенному сетевому интерфейсу, вы можете использовать для этого опцию «allow in on», а затем указать имя сетевого интерфейса.

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

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

Если на вашем сервере имеется публичный сетевой интерфейс под названием вы можете разрешить трафик HTTP (порт ) для этого интерфейса с помощью следующей команды:

Это позволит вашему серверу принимать запросы HTTP из публичной части интернета.

Если вы хотите использовать сервер базы данных MySQL (порт ) для прослушивания соединений на интерфейсе частной сети (например, ), вы можете использовать следующую команду:

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

Защита от DDoS-атак

DDoS (Distributed Denial of Service) может происходить на любом уровне, и это последнее, что вы хотите иметь, как владелец бизнеса.

Поиск исходного IP-адреса возможен, и в качестве лучшей практики не следует раскрывать IP-адрес своего сервера общедоступному интернету. Есть несколько способов скрыть Исходный IP, чтобы предотвратить DDoS на ваш сервер.

Используйте балансировщик нагрузки (LB)

Внедрить балансировщик нагрузки с выходом в интернет, чтобы IP-адрес сервера не был открыт для сети. Существует множество балансировщиков нагрузки: Google Cloud LB, AWS ELB, Linode Nodebalancer, DO LB и т.д.

Используйте CDN

CDN (сеть доставки контента) — один из лучших способов повысить производительность и безопасность веб-сайта.

При реализации CDN вы настраиваете запись DNS с произвольным IP-адресом, предоставленным поставщиком CDN. Делая это, вы афишируете IP-адрес CDN-провайдера для своего домена, а источник не раскрывается.

Существует множество провайдеров CDN для ускорения работы сайта, защиты от DDoS, WAF и многих других функций.

  • Cloudflare
  • Amazon CloudFront
  • SUCURI
  • KeyCDN

Так что выберите поставщика CDN, который обеспечивает производительность и безопасность.

Настройте параметры iptables

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

Используйте брандмауэр

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

Их много, но одним из самых популярных является UFW (Uncomplicated Firewall) для Ubuntu и FirewallD для CentOS.

Автоматизация проверок с помощью Cron

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

Лучше указать свой постоянный почтовый адрес, чтобы иметь возможность своевременно проверять отчеты rkhunter. Для этого измените значение параметра MAIL-ON-WARNING в файле /etc/rkhunter.conf.

Запустите rkhunter с привилегиями root, чтобы иметь возможность внести его в crontab пользователя root

Обратите внимание: внеся rkhunter в системный crontab, вы рискуете потерять данные настройки при обновлении системы

Для начала нужно убедиться, что у root-пользователя уже есть crontab, набрав:

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

Затем отредактируйте crontab root-пользователя, выполнив команду:

Если эта команда запущена впервые, она спросит, какой редактор нужно использовать; в данном руководстве используется надежный nano.

Затем будет открыт текстовый редактор; файл будет предварительно заполнен некоторыми комментариями, объясняющими, как написать crontab.

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

Для автоматизации запуска команды используется формат:

Часы должны указываться в 24-часовом формате. Команда, которую нужно автоматизировать, выглядит так:

Чтобы запускать ее в 04: 15, внесите в конец файла:

Опция –cronjob говорит rkhunter не выводить результат в цветном формате и не запрашивать дополнительного нажатия клавиш. Опция — update регулярно обновляет определения. Опция –quiet подавляет весь вывод.

Итак, теперь cron будет запускать данную команду в 04.15, а при наличии каких-либо изменений rkhunter отправит извещение на почту.

List Available Application Profiles

Upon installation, applications that rely on network communications will typically set up a UFW profile that you can use to allow connection from external addresses. This is often the same as running , with the advantage of providing a shortcut that abstracts the specific port numbers a service uses and provides a user-friendly nomenclature to referenced services.

To list which profiles are currently available, run the following:

If you installed a service such as a web server or other network-dependent software and a profile was not made available within UFW, first make sure the service is enabled. For remote servers, you’ll typically have OpenSSH readily available:

Allow Other Connections

Now you should allow all of the other connections that your server needs to respond to. The connections that you should allow depends your specific needs. Luckily, you already know how to write rules that allow connections based on a service name or port—we already did this for SSH on port 22.

We will show a few examples of very common services that you may need to allow. If you have any other services for which you want to allow all incoming connections, follow this format.

HTTP—port 80

HTTP connections, which is what unencrypted web servers use, can be allowed with this command:

If you’d rather use the port number, 80, use this command:

HTTPS—port 443

HTTPS connections, which is what encrypted web servers use, can be allowed with this command:

If you’d rather use the port number, 443, use this command:

FTP—port 21

FTP connections, which is used for unencrypted file transfers (which you probably shouldn’t use anyway), can be allowed with this command:

If you’d rather use the port number, 21, use this command:

Настройка правил брандмауэра в Ubuntu 18.04 с UFW

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

Далее мы настроим некоторые правила брандмауэра с помощью UFW:

Открытие и закрытие портов с помощью UFW

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

С UFW их довольно легко открывать или закрывать по своему усмотрению. Чтобы открыть порт, нам нужно запустить эту команду:

sudo ufw allow [port/protocol]

Если мы говорим о протоколах, то это могут быть TCP или UDP. Всё зависит от наших потребностей. Например:

sudo ufw allow 56/tcp

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

Однако мы можем запретить использование этого порта с помощью следующей команды:

sudo ufw deny 56/tcp

Теперь все приложения, использующие TCP и пытающиеся подключиться к серверу через порт 56, не смогут этого сделать.

Мы также можем одной командой разрешить или заблокировать ряд портов. Это здорово экономит время. Базовый синтаксис выглядит так:

sudo ufw allow/deny /протокол

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

sudo ufw allow 300:310/tcp

Или, чтобы запретить их:

sudo ufw deny 300:310/tcp

Работа со службами в Ubuntu firewall

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

Например, HTTP требует, чтобы был доступен порт 80, а HTTPS — порт 443.

Итак, для HTTP нам нужно запустить эту команду:

sudo ufw allow http

Выполнение этой  команды эквивалентно включению порта 80.

Таким образом, нам нужно знать только порты, используемые сетевыми службами.

Запретить или разрешить подключения по IP-адресу

Также мы можем запретить доступ для определенного IP-адреса.

Для этого мы должны выполнить следующую команду:

sudo ufw deny from IP_АДРЕС

Например:

sudo ufw deny from 192.168.1.2

Или наоборот, если мы хотим разрешить доступ только этому IP-адресу.

sudo ufw allow from 192.168.1.3

Ещё, если мы хотим, чтобы IP-адрес мог подключаться только к определённому порту, мы можем уточнить это следующим образом:

sudo ufw allow from  to any port 

В реальном сценарии команда будет выглядеть так:

sudo ufw allow from 192.168.1.4 to any port 44

При таком раскладе IP-адрес сможет устанавливать соединение только в том случае, если он использует порт 44.

Удаление правила межсетевого экрана в Ubuntu

Мы можем удалить отдельное правило из нашего UFW с помощью одной записи в командной строке! Но сначала мы должны перечислить их все. Для этого мы должны запустить эту команду:

sudo ufw status numbered

После этого удаляем то правило, которое хотим. Для примера давайте удалим правило номер четыре.

sudo ufw delete 4

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

sudo ufw –help

Запуск терминала Linux

В современных Linux вместо консоли используется терминал. Чтобы в него зайти:

  1. Откройте «Приложения».
  2. Нажмите «Стандартные».
  3. Там будет «Терминал».

Терминал в Linux

В него можно вводить команды так же, как в Ubuntu Server.

  • Чтобы установить компоненты LAMP (если их ещё нет), надо последовательно ввести команды «sudo apt-get update», «sudo apt-get install tasksel» и «sudo tasksel install lamp-server». После каждой нажимайте Enter.
  • Чтобы загрузить Open SSh, введите «sudo apt-get install openssh-server».
  • Чтобы поставить Samba file server, напишите «sudo apt-get install samba».

При установке MySQL из пакета LAMP нужно будет задать пароль администратора, для SQL.

Deleting Rules

There are two options to delete rules. The most straightforward one is to use the following syntax:

sudo ufw delete allow ssh

As you can see, we use the command “delete” and input the rules you want to eliminate after that. Other examples include:

sudo ufw delete allow 80/tcp

or

sudo ufw delete allow 1000:2000/tcp

This can get tricky when you have rules that are long and complex.

A simpler, two-step alternative is to type:

sudo ufw status numbered

which will have UFW list out all the current rules in a numbered list. Then, we issue the command:

sudo ufw delete 

where “” is the line number from the previous command.

Prerequisites

Before you start using this tutorial, you should have a separate, non-root superuser account—a user with sudo privileges—set up on your Ubuntu server. You can learn how to do this by completing at least steps 1-3 in the Initial Server Setup with Ubuntu 14.04 tutorial.

UFW is installed by default on Ubuntu. If it has been uninstalled for some reason, you can install it with :

Using IPv6 with UFW

If your Ubuntu server has IPv6 enabled, ensure that UFW is configured to support IPv6 so that it will manage firewall rules for IPv6 in addition to IPv4. To do this, open the UFW configuration with your favorite editor. We’ll use nano:

Then make sure the value of “IPV6” is to equal “yes”. It should look like this:

/etc/default/ufw excerpt

Save and quit. Hit to exit the file, then to save the changes that you made, then to confirm the file name.

When UFW is enabled, it will be configured to write both IPv4 and IPv6 firewall rules.

This tutorial is written with IPv4 in mind, but will work fine for IPv6 as long as you enable it.

Почтовый сервер

Чтобы создать почтовый сервер на Линукс, у вас уже должен быть зарегистрирован домен. Также нужно иметь статический IP.

  • Установите компонент Postfix. Для этого наберите в консоли «sudo apt-get postfix».
  • Когда он загрузится, напишите команду «sudo /etc/initd/postfix start». Сервис начнёт работать.
  • В Postfix уже прописаны параметры, которые нужны для полноценной работы с протоколом SMTP. Но всё же не помешает небольшая настройка.
  • Откройте файл /etc/postfix/main.cf.
  • Найдите в нём значение «mydomain =». После знака «=» напишите имя домена.
  • Потом отыщите «myhostname =». И введите имя машины.
  • Теперь почтовый сервер может отправлять письма другим компьютерам, которые находятся с ним в одной сети. Чтобы он мог посылать корреспонденцию и на другие домены в интернете, в файле «main.cf» найдите строчку «inet_interfaces =». Поставьте после неё слово «all».
  • В переменной «mynetworks =» пропишите диапазон адресов всех компьютеров вашей подсети (например, 127.0.0.0/8).

Не рекомендуется открывать доступ к серверу извне. Такие «публичные» ресурсы очень часто используются для рассылки спама. Из-за этого ваш домен может оказаться в чёрном списке у других почтовых сервисов.

Если служба настроена верно, и выполнены все условия (постоянный IP-адрес, зарегистрированный домен), то Server сможет принимать и отправлять корреспонденцию. Если запись MX вашего домена ссылается на ваш хост.

Чтобы посмотреть логи ресурса, используйте команду «tail -f /var/log/mail/info». Чтобы получить от него сообщение, введите «mailq».

Set Up Default Policies

If you’re just getting started with your firewall, the first rules to define are your default policies. These rules control how to handle traffic that does not explicitly match any other rules. By default, UFW is set to deny all incoming connections and allow all outgoing connections. This means anyone trying to reach your cloud server would not be able to connect, while any application within the server would be able to reach the outside world.

Let’s set your UFW rules back to the defaults so we can be sure that you’ll be able to follow along with this tutorial. To set the defaults used by UFW, use these commands:

As you might have guessed, these commands set the defaults to deny incoming and allow outgoing connections. These firewall defaults, by themselves, might suffice for a personal computer but servers typically need to respond to incoming requests from outside users. We’ll look into that next.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: