- 3 ways to configure a network interface in Linux
- More Linux resources
- At installation time
- Как настроить брандмауэр с UFW в Ubuntu 20.04
- Подготовка
- Установить UFW
- Проверить статус UFW
- Политики UFW по умолчанию
- Профили приложений
- Включение UFW
- Открытие портов
- Портовые диапазоны
- Определенный IP-адрес и порт
- Подсети
- Конкретный сетевой интерфейс
- Отказ от подключений
- Удаление правил UFW
- Отключение UFW
- Сброс UFW
- IP-маскарадинг
- Выводы
- 📑 Настройка HTTPS в Apache
- Включаем поддержку TLS v1.3 в Nginx на примере Debian 9
3 ways to configure a network interface in Linux
More Linux resources
Editor’s note: This article was written while James Brigman was a member of the Red Hat Accelerator program.
Almost any useful work that one would want to do with a Linux system requires a network interface. Want to browse the web, watch YouTube, stream video, audio or files? It’s all done over the network interface. RPM-based Linux distributions using Gnome have several fundamental ways to configure the network interface. I’m describing three ways in this article. All of the configuration methods require the entry of sets of numbers that allow the network interface to operate.
You will need three fundamental pieces of numerical information in order to minimally configure a network interface to work over IPv4 and more if you want to define things like IPv6, hostnames, or DNS servers. This article covers the bare minimum for IPv4. Those three fundamental numerical pieces are:
IP Address: The unique number defining the access point to your network interface. It has the form: xxx.xxx.xxx.xxx, where “xxx” are three, or fewer, numbers between 0 and 255. It’s possible for this number to be purely made up, but normally it takes a form that works with the other three numbers. If you are using a home router with DHCP, which is the typical default configuration, the router will “assign” the IP address to your network interface. You won’t have to enter the number at all.
Gateway: The unique number assigned to the network interface at the «other end of the wire» that your computer must communicate through. Again, it has the general xxx.xxx.xxx.xxx format and takes a form that also works with the other two numbers. If you are using a home router, your home router generates this number because it is the gateway through which you communicate with the wider world.
Netmask: The non-unique number that defines the network itself. This number can be automatically generated but is sometimes requested by the method you use to configure the interface. It, too, has the format xxx.xxx.xxx.xxx.
Note that I’m not going into the how of these numbers; I’m just telling you they are needed to configure the network interface. I’ll skip that so you can get on into the point of the article: Three ways to configure network interfaces. In each case, the numbers I use will be real numbers applicable to the system I used to write this article. I used CentOS 8 to generate the images, but everything you see here is the same in Fedora and Red Hat Enterprise Linux.
At installation time
The Anaconda installer prompts for network configuration and you can’t complete the installation without providing these numbers to the installer. Here’s the initial screen, using “Network & Host Name” in the rightmost column, third selection down:
Источник
Как настроить брандмауэр с UFW в Ubuntu 20.04
Брандмауэр — это инструмент для мониторинга и фильтрации входящего и исходящего сетевого трафика. Он работает, определяя набор правил безопасности, которые определяют, разрешить или заблокировать определенный трафик.
Ubuntu поставляется с инструментом настройки межсетевого экрана под названием UFW (Несложный межсетевой экран). Это удобный интерфейс для управления правилами брандмауэра iptables. Его основная цель — упростить или, как следует из названия, упростить управление межсетевым экраном.
В этой статье описывается, как использовать инструмент UFW для настройки и управления брандмауэром в Ubuntu 20.04. Правильно настроенный брандмауэр — один из наиболее важных аспектов общей безопасности системы.
Подготовка
Только root или пользователи с привилегиями sudo могут управлять системным брандмауэром. Лучше всего запускать административные задачи от имени пользователя sudo.
Установить UFW
UFW является частью стандартной установки Ubuntu 20.04 и должен присутствовать в вашей системе. Если по какой-то причине он не установлен, вы можете установить пакет, набрав:
Проверить статус UFW
По умолчанию UFW отключен. Вы можете проверить статус службы UFW с помощью следующей команды:
Вывод покажет, что состояние брандмауэра неактивно:
Если UFW активирован, вывод будет выглядеть примерно так:
Политики UFW по умолчанию
По умолчанию межсетевой экран UFW блокирует весь входящий и пересылаемый трафик и разрешает весь исходящий трафик. Это означает, что любой, кто пытается получить доступ к вашему серверу, не сможет подключиться, если вы специально не откроете порт. Приложения и службы, работающие на вашем сервере, смогут получить доступ к внешнему миру.
Политики по умолчанию определены в /etc/default/ufw и могут быть изменены либо путем изменения файла вручную, либо с помощью команды sudo ufw default
Политики брандмауэра — это основа для создания более сложных и определяемых пользователем правил. Как правило, исходные политики по умолчанию UFW являются хорошей отправной точкой.
Профили приложений
Профиль приложения — это текстовый файл в формате INI, который описывает службу и содержит правила брандмауэра для службы. Профили приложений создаются в каталоге /etc/ufw/applications.d во время установки пакета.
Вы можете просмотреть все профили приложений, доступные на вашем сервере, набрав:
В зависимости от пакетов, установленных в вашей системе, вывод будет выглядеть следующим образом:
Чтобы найти дополнительную информацию о конкретном профиле и включенных правилах, используйте следующую команду:
Выходные данные показывают, что профиль «Nginx Full» открывает порты 80 и 443 .
Вы также можете создавать собственные профили для своих приложений.
Включение UFW
Если вы подключаетесь к Ubuntu из удаленного места, перед включением брандмауэра UFW вы должны явно разрешить входящие соединения SSH. В противном случае вы больше не сможете подключиться к машине.
Чтобы настроить брандмауэр UFW для разрешения входящих соединений SSH, введите следующую команду:
Если SSH работает на нестандартном порту , вам необходимо открыть этот порт.
Например, если ваш демон ssh прослушивает порт 7722 , введите следующую команду, чтобы разрешить соединения на этом порту:
Теперь, когда брандмауэр настроен на разрешение входящих соединений SSH, вы можете включить его, набрав:
Вы будете предупреждены, что включение брандмауэра может нарушить существующие соединения ssh, просто введите y и нажмите Enter .
Открытие портов
В зависимости от приложений, которые работают в системе, вам также может потребоваться открыть другие порты. Общий синтаксис открытия порта следующий:
Ниже приведены несколько способов, как разрешить HTTP-соединения.
Первый вариант — использовать имя службы. UFW проверяет файл /etc/services предмет порта и протокола указанной службы:
Вы также можете указать номер порта и протокол:
Если протокол не указан, UFW создает правила как для tcp и для udp .
Другой вариант — использовать профиль приложения; в данном случае Nginx HTTP:
UFW также поддерживает другой синтаксис для указания протокола с помощью ключевого слова proto :
Портовые диапазоны
UFW также позволяет открывать диапазоны портов. Открывающий и закрывающий порты разделяются двоеточием ( : ), и вы должны указать протокол, либо tcp или udp .
Например, если вы хотите разрешить порты с 7100 до 7200 как на tcp и на udp , вы должны выполнить следующую команду:
Определенный IP-адрес и порт
Чтобы разрешить соединения на всех портах с заданного IP-адреса источника, используйте ключевое слово from за которым следует адрес источника.
Вот пример внесения IP-адреса в белый список:
Если вы хотите разрешить данному IP-адресу доступ только к определенному порту, используйте ключевое слово to any port за которым следует номер порта.
Например, чтобы разрешить доступ к порту 22 с машины с IP-адресом 64.63.62.61 , введите:
Подсети
Синтаксис разрешения подключений к подсети IP-адресов такой же, как и при использовании одного IP-адреса. Единственное отличие состоит в том, что вам нужно указать маску сети.
Ниже приведен пример, показывающий, как разрешить доступ для IP-адресов от 192.168.1.1 до 192.168.1.254 до порта 3360 ( MySQL ):
Конкретный сетевой интерфейс
Чтобы разрешить подключения к определенному сетевому интерфейсу, используйте ключевое слово in on за которым следует имя сетевого интерфейса:
Отказ от подключений
Политика по умолчанию для всех входящих подключений настроена на deny , и если вы не изменили ее, UFW заблокирует все входящие подключения, если вы специально не откроете подключение.
Написание запрещающих правил аналогично написанию разрешающих правил; вам нужно только использовать ключевое слово deny вместо allow .
Допустим, вы открыли порты 80 и 443 , и ваш сервер атакован из сети 23.24.25.0/24 . Чтобы запретить все соединения с 23.24.25.0/24 вы должны выполнить следующую команду:
Вот пример 23.24.25.0/24 доступа только к портам 80 и 443 из 23.24.25.0/24 вы можете использовать следующую команду:
Удаление правил UFW
Есть два разных способа удалить правила UFW по номеру правила и указав фактическое правило.
Удалять правила по номеру правила проще, особенно если вы новичок в UFW. Чтобы сначала удалить правило по номеру правила, вам нужно найти номер правила, которое вы хотите удалить. Чтобы получить список пронумерованных правил, используйте команду ufw status numbered :
Чтобы удалить правило номер 3 , которое разрешает подключения к порту 8080 , вы должны ввести:
Второй способ — удалить правило, указав фактическое правило. Например, если вы добавили правило для открытия порта 8069 вы можете удалить его с помощью:
Отключение UFW
Если по какой-либо причине вы хотите остановить UFW и деактивировать все правила, вы можете использовать:
Позже, если вы захотите снова включить UTF и активировать все правила, просто введите:
Сброс UFW
Сброс UFW отключит UFW и удалит все активные правила. Это полезно, если вы хотите отменить все изменения и начать все заново.
Чтобы сбросить UFW, введите следующую команду:
IP-маскарадинг
IP Masquerading — это вариант NAT (трансляция сетевых адресов) в ядре Linux, который преобразует сетевой трафик путем перезаписи исходных и целевых IP-адресов и портов. С помощью IP Masquerading вы можете разрешить одной или нескольким машинам в частной сети связываться с Интернетом, используя одну машину Linux, которая действует как шлюз.
Настройка IP-маскарадинга с помощью UFW включает несколько шагов.
Во-первых, вам нужно включить переадресацию IP. Для этого откройте файл /etc/ufw/sysctl.conf :
Найдите и раскомментируйте строку net.ipv4.ip_forward = 1 :
Затем вам нужно настроить UFW, чтобы разрешить пересылку пакетов. Откройте файл конфигурации UFW:
Найдите ключ DEFAULT_FORWARD_POLICY и измените значение с DROP на ACCEPT :
Теперь вам нужно установить политику по умолчанию для цепочки POSTROUTING в таблице nat и правило маскарада. Для этого откройте файл /etc/ufw/before.rules и добавьте строки, выделенные желтым, как показано ниже:
Добавьте следующие строки:
Не забудьте заменить eth0 в строке -A POSTROUTING чтобы он соответствовал имени публичного сетевого интерфейса:
Когда вы закончите, сохраните и закройте файл.
Наконец, перезагрузите правила UFW, отключив и снова включив UFW:
Выводы
Мы показали вам, как установить и настроить брандмауэр UFW на вашем сервере Ubuntu 20.04. Обязательно разрешите все входящие соединения, которые необходимы для правильного функционирования вашей системы, ограничив при этом все ненужные соединения.
Для получения дополнительной информации по этой теме посетитесправочную страницу UFW .
Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.
Источник
📑 Настройка HTTPS в Apache
Незащищённое http — соединение опасно тем, что существует возможность прослушивания трафика и соответственно паролей, отсылаемых на сайты вместе с логинами по POST или GET.
Использование сертификатов защищает от пассивного прослушивания и, если сертификат подписан компанией-центром сертификации (Certificate authority или CA) , гарантирует клиентам, что сервер является именно тем сервером, который им нужен.То-есть сертификат, подписанный CA, предоставляет два важных свойства в отличие от самоподписанного сертификата:
- Браузеры (обычно) автоматически распознают такой сертификат и позволяют устанавливать защищенные соединения без предупреждения пользователя.
- Когда CA выпускает подписанный сертификат, он гарантирует идентичность организации, которая предоставляет интернет страницы браузеру.
В Ubuntu есть возможность создания самоподписанных сертификатов, которые бесплатны и только шифруют трафик. Для большинства случаев этого достаточно.
Для начала, если не установлен, необходимо установить openssl:
Для создания ключа и сертификата вводим команду:
Этой командой генерируется ключ без пароля (passphrase), чтобы Apache не мучил запросам пароля при каждом перезапуске.
На вопрос «Common Name (e.g. server FQDN or YOUR name) []:» необходимо ввести имя сайта, для которого создается сертификат, например www.example.com.
Для начала необходимо активировать mod_ssl:
а затем включить настройки HTTPS сайта по умолчанию:
Теперь необходимо отредактировать файл с настройками HTTPS сайта по умолчанию, указав в нём пути к сертификатам.
Сам файл называется
В этом файле рекомендуется после директивы
чтобы запретить использование устаревшего протокола SSLv2.
Дальше необходимо отредактировать параметры, ответственные за сертификаты.
Перезагрузить Apache:
И если все параметры указаны верно, сайт станет доступнен по HTTPS.
Протокол HTTPS работает по 443 порту, поэтому если сервер находится за шлюзом, то необходимо на нём пробросить данный порт.
Источник
Включаем поддержку TLS v1.3 в Nginx на примере Debian 9
Всем доброго времени суток!
Данный пост написан вследствие победы желания докопаться до сути над усталостью, сонливостью, соблазном опрокинуть очередную бутылочку пива пятничным вечером. Сразу скажу, что ничего супер сложного не раскрываю, всего лишь включение TLS v1.3 в Nginx.
Наверняка на Хабре найдутся те, кто уже 100 раз это делал, поэтому данная статья — больше для новичков или для тех, кто хочет найти готовое решение в виде мануала, не тратя много времени на поиски, как я, например. Вспомнив, что давно не писал на Хабре и поставив статье метку «tutorial», принялся за дело.
Беглый поиск по Хабру показал, что на данную тему постов не было, а на «тостере» был топик, где вопрошающему ответили в комментариях в стиле «сам дурак».
Получается, вопрос остаётся без ответа, по крайней мере, в открытом доступе не нашёл рабочих мануалов. Не хорошо, надо исправить ситуацию 🙂
А началось всё с того, что в очередной раз настроив SSL сертификат от Letsencrypt (издатель сертификата совершенно не важен в рамках данной статьи), когда вроде бы всё было хорошо,
(тест настройки SSL сертификата на ssllabs.com, обзор)
и можно было бы спокойно закрыть таск в Jira и идти домой, но тут мой взор привлёк пункт о поддержке TLS 1.3. Точнее, там было указано, что этой самой поддержки TLS 1.3 как раз нет!
(тест настройки SSL сертификата на ssllabs.com, детали)
Ну что ж, как говорится,
Конечно, я видел этот пункт и раньше, но как-то не придавал значения, всё было не до того. А в этот раз сказал себе мысленно: «хватит это терпеть!» Надо всё же разобраться, как включить новый протокол.
Немного предыстории. Выход TLS v1.3 это не новость последних дней, работа над новой версией ведётся уже много лет. Со времени анонсирования TLS v1.2 прошло почти 10 лет. И вот, в апреле 2017 года вышла версия nginx 1.13.0, которая поддерживает TLS v1.3.
Если уважаемый читатель думает, что достаточно установить nginx >=1.13.0 и прописать
в настройках virtualhost, не спешите делать выводы и расходиться, я тоже попался на этот «развод» 🙂
При установленной версии nginx >=1.13.0 и при наличии вышеуказанной строчки в конфиге
не выдаёт ошибок, это плюс, но тест ssllabs показывает, что TLS 1.3 всё же не включён, а это большой минус.
Позже, изучив требования, я понял, что заставить работать новую версию протокола можно путём компиляции nginx >=1.13.0 с поддержкой openssl >=1.1.1, который сейчас разработке, причём версия черновика протокола — строго 18. Если брать другие версии draft, результат будет отличаться. Я не вдавался в подробности, почему-то на текущий момент за основу взяли именно 18ю версию черновика, о чём любезно сообщает ssllabs в своём disclaimer-е в результатах теста
(тест настройки SSL сертификата на ssllabs.com, детали)
1. Сохраняем содержимое /etc/nginx куда-нибудь в /backup, если до этого уже настроили требуемый virtualhost, чтобы не делать всё заново. Можно сразу же сделать
2. Скачиваем и распаковываем исходники openssl 1.1.1 tls1.3 draft 18.
3. Подготовительные работы для openssl
4. Собираем openssl.
Переходим в каталог с распакованным содержимым архива openssl
5. Подготовительные работы для nginx
При запуске конфигуратора nginx важно указать правильный путь к распакованным исходникам openssl нужной нам версии. У меня это /root/openssl-tls1.3-draft-18, если у вас другой путь к каталогу с исходниками openssl, тогда внесите изменения в опцию —with-openssl=.
На этапе выполнения конфигуратора openssl и/или nginx могут появиться ошибки, в основном лечатся обычным гуглением. Как правило, будет не хватать каких-то lib, ничего особенного.
90% решается тем, что берём название компонента/пакета, которого не нашёл конфигуратор и делаем
и снова запускаем конфигуратор. Повторяем процедуру, пока конфигуратор не отработает без ошибок.
Последняя команда устраняет баг компиляции nginx. Он связан с тем, что openssl v1.1.1 сейчас только на стадии разработки, и в nginx по этому поводу что-то не учтено на данный момент.
6. Компиляция nginx
После успешной компиляции не спешите делать make install, лучше сделать всё красиво
Создавать каталоги надо до выполнения checkinstall, так как после сборки deb пакета будет попытка установить его в систему, если какого-то каталога не будет хватать, завершится fail-ом.
На этом этапе nginx должен быть установлен в системе, но если выполнить
выдаст, что nginx — нет такой команды/бинарника. Не спешите расстраиваться, всё дело в том, что установлен он не совсем по стандартному пути PATH, а вот здесь — /usr/share/nginx/sbin/nginx
Cледовательно, выполнять нужно
Чтобы было красиво, сделаем
и тогда запускаем
себе на здоровье и без ошибок.
Небольшой минус — после инсталляции nginx нет ни init.d скрипта, ни конфига для systemd.
Лечится так (один из способов):
это новый файл, мы его создаём сами, вписываем содержимое
Возвращаем обратно каталог nginx из /backup в /etc, лучше перед этим удалить /etc/nginx, так как туда что-то было положено после выполнения checkinstall и dpkg -i
Готовы к запуску nginx
Всё должно подняться, если нет, небольшой troubleshooting будет даже полезен.
Ещё один маленький штрих. Необходимо донастроить nginx virtualhost, активировать новый набор шифров.
Уже точно не помню, но точно больше часа ушло на то, чтобы найти источник, где упоминалось про шифры, и что в TLS 1.3 они должны быть такими:
В целом конфигурация nginx у меня получилась такая:
Это не готовая конфигурация для production среды, здесь нет кэширования, сжатия и других полезных и важных вещей. Напомню, цель статьи — это активировать TLS 1.3 и только.
После редактирования проверяем, что всё хорошо
Если да, делаем рестарт nginx и запускаем тест на ssllabs. Должно быть вот так
Как включить поддержку TLS 1.3 в браузерах Chrome, Firefox, чтобы протестировать новый протокол можно было прямо на локальной машине, можно найти — здесь.
На этом точно можно успокоиться и пойти домой 🙂
Источник