Служба поиска сетевых ресурсов отключена в Ubuntu

Обновлено: 21.11.2024

NTP — это протокол TCP/IP для синхронизации времени по сети. По сути, клиент запрашивает текущее время с сервера и использует его для установки собственных часов.

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

Ubuntu по умолчанию использует timedatectl / timesyncd для синхронизации времени, и пользователи могут дополнительно использовать chrony для обслуживания сетевого протокола времени.

Синхронизация системного времени

Начиная с Ubuntu 16.04 timedatectl / timesyncd (которые являются частью systemd) заменяют большую часть ntpdate / ntp.

timesyncd доступен по умолчанию и заменяет не только ntpdate, но и клиентскую часть chrony (ранее ntpd). Таким образом, в дополнение к одноразовому действию, которое ntpdate обеспечивает при загрузке и сетевой активации, теперь timesyncd по умолчанию регулярно проверяет и синхронизирует ваше локальное время. Он также сохраняет обновления времени локально, так что после перезагрузки монотонно увеличивается, если применимо.

Если chrony установлен, timedatectl делает шаг назад, позволяя chrony вести учет времени. Это должно гарантировать, что никакие две службы синхронизации времени не будут конфликтовать. Хотя это больше не рекомендуется использовать, это также относится к устанавливаемому ntpd, чтобы сохранить любое старое поведение/конфигурацию, которое у вас было при обновлении. Но это также означает, что при обновлении предыдущей версии ntp/ntpdate все еще может быть установлен, и поэтому новые службы на основе systemd отключаются.

ntpdate считается устаревшим в пользу timedatectl (или chrony) и поэтому больше не устанавливается по умолчанию. timesyncd, как правило, правильно синхронизирует ваше время, а chrony поможет в более сложных случаях. Но если у вас есть один из нескольких известных особых случаев использования ntpdate, рассмотрите следующее:

Если вам требуется однократная синхронизация, используйте: chronyd -q

Если вам требуется однократная проверка времени без установки времени, используйте: chronyd -Q

Настройка timedatectl и timesyncd

Текущий статус времени и настройки времени через timedatectl и timesyncd можно проверить с помощью timedatectl status .

Если хрони запущен, он автоматически переключится на:

Через timedatectl администратор может управлять часовым поясом, тем, как системные часы должны быть связаны с hwclock, и должна ли быть включена постоянная синхронизация или нет. Дополнительные сведения см. в man timedatectl.

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

Сервер имен для получения времени для timedatectl и timesyncd можно указать в /etc/systemd/timesyncd.conf, а дополнительные файлы конфигурации можно сохранить в /etc/systemd/timesyncd.conf.d/ . Записи для NTP= и FallbackNTP= представляют собой списки, разделенные пробелами. Дополнительную информацию см. в man timesyncd.conf.

Обслуживать сетевой протокол времени

Если в дополнение к синхронизации вашей системы вы также хотите обслуживать информацию NTP, вам нужен сервер NTP. Есть несколько вариантов с chrony, ntpd и open-ntp. Рекомендуемое решение — хрони.

хрония(г)

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

Установка

Чтобы установить хрони, введите в терминале:

Это предоставит два двоичных файла:

chronyd — фактический демон для синхронизации и обслуживания по протоколу NTP

chronyc — интерфейс командной строки для демона chrony

Конфигурация Chronyd

Отредактируйте файл /etc/chrony/chrony.conf, чтобы добавить/удалить строки сервера. По умолчанию настроены эти серверы:

Дополнительную информацию о параметрах конфигурации см. в man chrony.conf. После изменения любого файла конфигурации вам необходимо перезапустить хрони:

Обслуживание протокола NTP

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

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

Примером может быть

Дополнительную информацию о том, как вы можете контролировать и ограничивать доступ к вашему NTP-серверу, см. в разделе «NTP-сервер» на странице руководства.

Просмотреть статус

Используйте chronyc, чтобы просмотреть статус демона chrony. Например, чтобы получить обзор доступных и выбранных источников времени.

Некоторые команды chronyc являются привилегированными и не могут выполняться по сети без явного разрешения. Дополнительные сведения см. в разделе Доступ к командам и мониторингу в man chrony.conf. Локальный администратор может использовать sudo как обычно, так как это предоставит ему доступ к сокету локального администратора /var/run/chrony/chronyd.sock .

Поддержка PPS

Chrony изначально поддерживает различные типы PPS. Он может использовать PPS API ядра, а также аппаратные часы PTP. Большинство общих приемников GPS можно использовать через GPSD. Доступ к последнему (и потенциально большему количеству) можно получить через SHM или через сокет (рекомендуется). Все вышеперечисленное можно использовать для дополнения хронии дополнительными высококачественными источниками времени для повышения точности, джиттера, дрейфа, долгосрочной или краткосрочной точности (обычно каждый тип часов хорош в одном из них, но неидеален в другие). Дополнительные сведения о настройке см. на некоторых внешних ресурсах PPS/GPSD, перечисленных ниже.

Примечание: в выпуске 20.04 была ошибка, из-за которой, пока она не будет исправлена, вы можете захотеть добавить этот контент в ваш /etc/apparmor.d/local/usr.sbin.gpsd .

Пример конфигурации GPSD для передачи Chrony

Для установки вам потребуется
$ sudo apt install gpsd chrony

Но вы захотите протестировать/отладить свои настройки и особенно прием GPS, поэтому также установите
$ sudo apt install pps-tools gpsd-clients

Устройства GPS обычно обмениваются данными через последовательные интерфейсы, однако в наши дни наиболее распространенным типом являются устройства USB GPS, которые имеют последовательный преобразователь после USB. Если вы хотите использовать это для PPS, имейте в виду, что большинство устройств не передает сигнал PPS через USB. Подробности смотрите в списке оборудования GPSD. Приведенные ниже примеры были выполнены с помощью Navisys GR701-W.

При подключении такого устройства (или во время загрузки) dmesg должен сообщать о каком-то последовательном соединении, например:

Выше мы видим, что он появился как ttyUSB0 . Чтобы позже chrony принимал информацию о времени, мы должны настроить ее в /etc/chrony/chrony.conf (пожалуйста, замените USB0 на то, что применимо к вашей настройке):

Затем перезапустите chrony, чтобы сделать сокет доступным и ожидающим.
sudo systemctl перезапустить хронию

Далее нужно указать gpsd, какое устройство управлять, поэтому в /etc/default/gpsd прописываем:
DEVICES="/dev/ttyUSB0"

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

  • немедленный запуск даже без подключения клиента, это можно установить в GPSD_OPTIONS файла /etc/default/gpsd:
    • GPSD_OPTIONS="-n"
    • sudo systemctl enable /lib/systemd/system/gpsd.service

    Перезапуск gpsd теперь инициализирует PPS из GPS, и в dmesg вы увидите

    Если у вас есть несколько PPS, инструмент ppsfind может быть полезен для определения того, какой PPS принадлежит какому GPS. Вы можете проверить это с помощью:

    Чтобы получить больше, вам нужен GPS, чтобы получить замок.
    Такие инструменты, как cgps или gpsmon, должны сообщать об исправлении 3D-изображения, если данные в порядке.
    Тогда вам нужно проверить, действительно ли данные PPS сообщаются об этом с помощью ppstest

    Далее может потребоваться убедиться, что устройство pps действительно отправляет данные PPS, для этого запустите ppstest :

    Хорошо, gpsd теперь работает, прием GPS нашел исправление, и это передано в chrony .
    Теперь давайте проверим это с точки зрения хронии.

    Изначально (например, до запуска gpsd или до его блокировки) это будут новые и «ненадежные» источники, отмеченные знаком «?». Если ваши устройства остаются в «?» состояние и не покинет его даже через некоторое время, тогда gpsd, похоже, не передает никаких данных в хрони, и вам нужно отладить, почему.

    Со временем хрони классифицирует их как хорошие или плохие.
    В данном примере необработанный GPS имел слишком большое отклонение, но PPS был в порядке.

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

    С PPS также можно работать, но использовать его в сочетании, например, с выбранный сервер.
    Подробнее о том, как будут выглядеть все эти комбинации, см. в man chronyc.

    И если вам интересно, насколько хороши ваши данные GPS на основе shm, вы также можете проверить это.
    Во-первых, хрони не только скажет вам, классифицировала ли она ее как хорошую или плохую. С помощью sourcestats вы также можете проверить детали

    Вы также можете отслеживать необработанные данные, которые gpsd или другие рефклокы, совместимые с ntpd, отправляют через общую память, используя ntpshmmon:

    Поддержка НТС

    В Chrony 4.0 (впервые появился в Ubuntu 21.04 Hirsute) добавлена ​​поддержка Network Time Security «NTS».

    NTS-сервер

    Чтобы настроить сервер с NTS, вам потребуются сертификаты, чтобы сервер мог аутентифицировать себя и на основе этого разрешить шифрование и проверку трафика NTP.

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

    Примеры записей будут выглядеть так:

    Важно отметить, что по причинам изоляции chrony по умолчанию запускается как пользователь и группа _chrony . Поэтому вам необходимо предоставить доступ к сертификатам для этого пользователя.

    $ sudo chown _chrony:_chrony /etc/chrony/*.pem

    Затем перезапустите chrony systemctl перезапустите chrony, и он будет готов предоставить службу времени на основе NTS.

    Работающий хронический сервер имеет различную статистику, в том числе учитывается количество установленных (или разорванных) соединений NTS:

    Есть также статистика для каждого клиента, которую можно включить с помощью параметра -p команды client.

    Для более сложных сценариев есть дополнительные параметры настройки NTS, описанные на странице руководства.

    Клиент NTS

    Клиенту необходимо указать сервер как обычно (директивы пула не работают с NTS). Как обычно, после адреса сервера могут быть указаны параметры, и нужно добавить nts.

    сервер iburst nts

    Можно проверить данные аутентификации соединений, установленных клиентом, например

    Опять же, на справочной странице описаны дополнительные параметры. Распространенные варианты использования — указание явного доверенного сертификата.

    Плохие часы и безопасная синхронизация времени — проблема «курицы и яйца».

    Есть одна проблема с системами, которые имеют очень плохие часы. NTS основан на TLS, и для этого нужны несколько правильные часы. Из-за этого синхронизация на основе NTS может завершиться ошибкой. На оборудовании, затронутом этим, можно рассмотреть возможность использования параметра nocerttimecheck, который позволяет установить количество раз, когда время может быть синхронизировано без проверки проверки и истечения срока действия.

    Намного более короткое руководство доступно в Руководстве по серверу Ubuntu. Если вам нужна дополнительная информация, читайте ниже.

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

    NFS идеально подходит для создания NAS (сетевого подключенного хранилища) в среде Linux/Unix. Это собственный протокол Linux/Unix, в отличие от Samba, который использует протокол SMB, разработанный Microsoft. Apple OS имеет хорошую поддержку NFS. Windows 7 имеет некоторую поддержку NFS.

    NFS, возможно, лучше всего подходит для более «постоянных» сетевых каталогов, таких как каталоги /home или общие ресурсы, к которым регулярно обращаются. Если вам нужен общий сетевой ресурс, к которому гостевые пользователи могут легко подключиться, больше подходит Samba. Это связано с тем, что в старых и проприетарных операционных системах проще использовать инструменты для временного подключения и отключения общих ресурсов Samba.

    • Разрешения для файлов и каталогов в Linux
    • Монтирование и отсоединение (размонтирование) файловых систем

    Это руководство делает сервер Ubuntu готовым к NFSv4.

    Если вы понимаете, что делаете, используйте это краткое пошаговое руководство для настройки сервера NFSv4 в Ubuntu (без аутентификации). Затем смонтируйте общий ресурс на клиенте Ubuntu. Он был протестирован на Ubuntu 14.04.

    NFS-сервер

    Проверить, что сервер NFS не установлен, можно.

    Установите необходимые пакеты.

    Допустим, мы хотим экспортировать домашние каталоги наших пользователей в /home/users. Сначала мы создаем файловую систему экспорта: важно, чтобы /export и /export/users имели права доступа 777, так как мы будем получать доступ к общему ресурсу NFS с клиента без аутентификации LDAP/NIS. Это не будет применяться при использовании аутентификации (см. ниже). Теперь смонтируйте каталог реальных пользователей с помощью: Чтобы нам не приходилось вводить это заново после каждой перезагрузки, мы добавляем следующее

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

    Для тех, кто использует аутентификацию на основе LDAP, добавьте следующие строки в файл idmapd.conf вашего клиента:

    Это приведет к тому, что idmapd будет знать, что нужно просмотреть nsswitch.conf, чтобы определить, где он должен искать учетную информацию (и если у вас уже работает аутентификация LDAP, nsswitch не требует дополнительных объяснений).

    Чтобы экспортировать наши каталоги в локальную сеть 192.168.1.0/24, мы добавляем следующие две строки в /etc/exports

    Блокировка карты порта

    Добавьте следующую строку в /etc/hosts.deny:

    Если сначала заблокировать всех клиентов, доступ к серверу будет разрешен только клиентам из /etc/hosts.allow ниже.

    Теперь добавьте следующую строку в /etc/hosts.allow:

    Там, где находится строка «список IP-адресов», вам нужно составить список IP-адресов, состоящий из сервера и всех клиентов. Это должны быть IP-адреса из-за ограничений в карте портов (она не любит имена хостов). Обратите внимание: если у вас настроен NIS, просто добавьте их в ту же строку.

    Примечание. Убедитесь, что список авторизованных IP-адресов включает адрес локального хоста (127.0.0.1), поскольку сценарии запуска в последних версиях Ubuntu используют команду rpcinfo для обнаружения поддержки NFSv3, и это будет отключено, если локальный хост не сможет подключиться.

    Теперь перезапустите службу

    Клиент NFSv4

    Установите необходимые пакеты:

      Вы также можете указать имя хоста NFS-сервера вместо его IP-адреса, но в этом случае вам необходимо убедиться, что имя хоста может быть преобразовано в IP-адрес на стороне клиента (для этого вы можете использовать файл /etc/hosts).

    Мы также можем смонтировать экспортированное поддерево с помощью:

    Если после монтирования запись в /proc/mounts отображается как :// (с двумя косыми чертами), возможно, вам потребуется указать две косые черты в /etc/fstab, иначе umount может пожаловаться, что не может найти монтирование.

    Ubuntu Server не поставляется с init.d/netfs или другими скриптами, которые сделают это за вас.

    Блокировка карты порта

    Добавьте следующую строку в /etc/hosts.deny:

    Если сначала заблокировать всех клиентов, доступ к серверу будет разрешен только клиентам из /etc/hosts.allow ниже.

    Теперь добавьте следующую строку в /etc/hosts.allow:

    Где "IP-адрес сервера NFS" — это IP-адрес сервера. Это должно быть числовое значение! Так работает карта портов.

    Настройка перед установкой

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

    Разрешения пользователя

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

    Разрешения группы

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

    Имена хостов

    необязательно, если используется DNS

    Добавьте любое имя клиента и IP-адреса в /etc/hosts. Здесь уже должен быть настоящий (не 127.0.0.1) IP-адрес сервера. Это гарантирует, что NFS по-прежнему будет работать, даже если DNS выйдет из строя. Вы можете положиться на DNS, если хотите, решать вам.

    необязательно — выполнять действия только при использовании NIS

    Примечание. Это работает только при использовании NIS. В противном случае вы не сможете использовать сетевые группы и должны указать отдельные IP-адреса или имена хостов в /etc/exports. Прочтите раздел ОШИБКИ в man netgroup.

    Отредактируйте /etc/netgroup и добавьте строку для классификации ваших клиентов. (Этот шаг необязателен, он сделан для удобства).

    Очевидно, что можно добавить больше клиентов. myclients может быть чем угодно; это имя сетевой группы.

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

    Блокировка карты порта

    Добавьте следующую строку в /etc/hosts.deny:

    Если сначала заблокировать всех клиентов, доступ к серверу будет разрешен только клиентам из /etc/hosts.allow ниже.

    Теперь добавьте следующую строку в /etc/hosts.allow:

    Там, где находится строка «список IP-адресов», вам нужно составить список IP-адресов, состоящий из сервера и всех клиентов. Это должны быть IP-адреса из-за ограничений в карте портов (она не любит имена хостов). Обратите внимание: если у вас настроен NIS, просто добавьте их в ту же строку.

    Установка и настройка

    Установить NFS-сервер

    Поделиться

    Отредактируйте файл /etc/exports и добавьте общие ресурсы:

    Вышеупомянутые общие папки /home и /usr/local доступны всем клиентам в сетевой группе myclients.

    Вышеупомянутые разделы /home и /usr/local для двух клиентов с фиксированными IP-адресами. Лучше всего использовать только с машинами со статическими IP-адресами.

    Вышеупомянутые общие папки /home и /usr/local доступны для всех клиентов в частной сети, попадающих в указанный диапазон IP-адресов.

    rw обеспечивает доступ к общему ресурсу для чтения/записи, а sync требует, чтобы сервер отвечал на запросы только после того, как все изменения были сброшены на диск. Это самый безопасный вариант (async быстрее, но опаснее. Настоятельно рекомендуется прочитать man exports.

    После настройки /etc/exports экспортируйте общие папки:

    Эту команду следует выполнять всякий раз, когда изменяется файл /etc/exports.

    Перезапустить службы

    По умолчанию portmap привязывается только к петлевому интерфейсу. Чтобы разрешить доступ к карте портов с удаленных машин, вам нужно изменить /etc/default/portmap, чтобы избавиться от «-l» или «-i 127.0.0.1».

    Если файл /etc/default/portmap был изменен, необходимо перезапустить portmap:

    Сервер ядра NFS также потребует перезагрузки:

    Примечание о безопасности

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

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

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

    Установка

    Блокировка карты порта

    Добавьте следующую строку в /etc/hosts.deny:

    Если сначала заблокировать всех клиентов, доступ к серверу будет разрешен только клиентам из /etc/hosts.allow ниже.

    Теперь добавьте следующую строку в /etc/hosts.allow:

    Где "IP-адрес сервера NFS" — это IP-адрес сервера. Это должно быть числовое значение! Так работает карта портов.

    Имена хостов

    необязательно, если используется DNS

    Добавьте имя сервера в /etc/hosts. Это гарантирует, что монтирование NFS будет работать, даже если DNS выйдет из строя. Вы можете положиться на DNS, если хотите, решать вам.

    Маунты

    Проверьте, все ли работает

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

    Подключать при запуске

    Монтирование NFS может быть смонтировано автоматически при доступе с помощью autofs или может быть настроено с помощью статического монтирования с помощью записей в /etc/fstab. Оба они объясняются ниже.

    Автомонтаж

    В следующем примере конфигурации домашние каталоги настраиваются для автоматического подключения к серверу NFS при входе в систему. Другие каталоги также можно настроить для автоматического подключения при доступе.

    Добавьте следующую строку в конец /etc/auto.master:

    Теперь создайте /etc/auto.home и вставьте следующее:

    Перезапустите autofs, чтобы активировать конфигурацию:

    Статические объекты

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

    В /etc/fstab добавьте строки для общих ресурсов, например:

    rw монтирует его для чтения/записи. Очевидно, что если сервер использует его только для чтения, клиент не сможет смонтировать его как нечто большее. жесткий монтирует общий ресурс таким образом, что если сервер становится недоступным, программа будет ждать, пока он не станет доступным. Альтернативой является мягкий. intr позволяет прервать/убить процесс. В противном случае он будет игнорировать вас. Документацию по ним можно найти в разделе Параметры монтирования для nfs раздела man mount.

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

    Примечания

    Минималистичная настройка NFS

    Использование групп с общими ресурсами NFS

    При использовании групп в общих ресурсах NFS (NFSv2 или NFSv3) помните, что это может не сработать, если пользователь является членом более 16 групп. Это связано с ограничениями протокола NFS. Дополнительную информацию можно найти на Launchpad («Отказано в доступе, когда пользователь принадлежит к группе, которая владеет каталогами, доступными для записи или setgid, смонтированными через nfs») и в этой статье: «Что делать с ограничением 16 идентификаторов групп в NFS?»

    Примечания к IPSec

    Если вы используете IPSec, порядок выключения по умолчанию в Breezy/Dapper приводит к зависанию клиента при завершении работы, потому что IPSec отключается раньше, чем NFS. Чтобы исправить это, выполните:

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

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

    ufw — простой брандмауэр

    Инструментом настройки брандмауэра по умолчанию для Ubuntu является ufw. Разработанный для упрощения настройки брандмауэра iptables, ufw предоставляет удобный способ создания брандмауэра на базе хоста IPv4 или IPv6.

    ufw по умолчанию изначально отключен. Со страницы руководства ufw:

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

    Ниже приведены примеры использования ufw:

    Во-первых, необходимо включить ufw. В командной строке терминала введите:

    Чтобы открыть порт (в данном примере SSH):

    Правила также можно добавлять в формате нумерованные:

    Аналогично, чтобы закрыть открытый порт:

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

    Также можно разрешить доступ к порту с определенных хостов или сетей. В следующем примере разрешается доступ по SSH с хоста 192.168.0.2 к любому IP-адресу на этом хосте:

    Замените 192.168.0.2 на 192.168.0.0/24, чтобы разрешить доступ по SSH из всей подсети.

    ufw можно отключить:

    Чтобы увидеть состояние брандмауэра, введите:

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

    Чтобы просмотреть формат нумерованный:

    Примечание

    Если порт, который вы хотите открыть или закрыть, определен в /etc/services , вы можете использовать имя порта вместо номера. В приведенных выше примерах замените 22 на ssh.

    Это краткое введение в использование ufw. Пожалуйста, обратитесь к справочной странице ufw для получения дополнительной информации.

    Интеграция приложений ufw

    Приложения, которые открывают порты, могут включать профиль ufw, в котором указаны порты, необходимые для правильной работы приложения. Профили хранятся в /etc/ufw/applications.d и могут быть отредактированы, если порты по умолчанию были изменены.

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

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

    Также доступен расширенный синтаксис:

    Замените Samba и 192.168.0.0/24 профилем используемого приложения и диапазоном IP-адресов вашей сети.

    Примечание

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

    Чтобы просмотреть сведения о том, какие порты, протоколы и т. д. определены для приложения, введите:

    Не все приложения, требующие открытия сетевого порта, поставляются с профилями ufw, но если вы профилировали приложение и хотите, чтобы файл был включен в пакет, отправьте сообщение об ошибке пакета в Launchpad.

    Маскарад IP

    Цель маскировки IP-адресов — разрешить компьютерам с частными немаршрутизируемыми IP-адресами в вашей сети получать доступ к Интернету через машину, выполняющую маскировку. Трафик из вашей частной сети, предназначенный для Интернета, должен обрабатываться, чтобы ответы можно было направить обратно на машину, которая сделала запрос. Для этого ядро ​​должно изменить исходный IP-адрес каждого пакета, чтобы ответы направлялись обратно на него, а не на частный IP-адрес, с которого был отправлен запрос, что невозможно в Интернете. . Linux использует отслеживание соединений (conntrack), чтобы отслеживать, какие соединения принадлежат каким машинам, и соответствующим образом перенаправлять каждый возвращаемый пакет. Таким образом, трафик, покидающий вашу частную сеть, «маскируется» под исходящий от вашего шлюза Ubuntu. Этот процесс упоминается в документации Microsoft как общий доступ к подключению к Интернету.

    Маскарад ufw

    Правила разделены на два разных файла: правила, которые должны выполняться перед правилами командной строки ufw, и правила, которые выполняются после правил командной строки ufw.

    Во-первых, в ufw должна быть включена пересылка пакетов. Необходимо будет изменить два файла конфигурации, в /etc/default/ufw измените DEFAULT_FORWARD_POLICY на «ACCEPT»:

    Затем отредактируйте /etc/ufw/sysctl.conf и раскомментируйте:

    Аналогично раскомментируйте для переадресации IPv6:

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

    Для каждой Table требуется соответствующий оператор COMMIT. В этих примерах показаны только таблицы nat и filter, но вы также можете добавить правила для raw и mangle таблицы.

    Примечание

    В приведенном выше примере замените eth0, eth1 и 192.168.0.0/24. с соответствующими интерфейсами и диапазоном IP-адресов для вашей сети.

    Наконец, отключите и снова включите ufw, чтобы изменения вступили в силу:

    Маскарад iptables

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

    Как и в случае с ufw, первым делом включите пересылку пакетов IPv4, отредактировав файл /etc/sysctl.conf и раскомментировав следующую строку:

    Если вы хотите включить переадресацию IPv6, также раскомментируйте:

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

    Маскарад IP-адресов теперь можно выполнить с помощью одного правила iptables, которое может немного отличаться в зависимости от конфигурации вашей сети:

    Приведенная выше команда предполагает, что ваше личное адресное пространство — 192.168.0.0/16, а ваше устройство с выходом в Интернет — ppp0. Синтаксис разбит следующим образом:

    -t nat — правило заходит в таблицу nat

    -A POSTROUTING – правило добавляется (-A) в цепочку POSTROUTING

    -s 192.168.0.0/16 — правило применяется к трафику, исходящему из указанного адресного пространства

    -o ppp0 — правило применяется к трафику, который планируется направить через указанное сетевое устройство

    -j MASQUERADE — трафик, соответствующий этому правилу, должен «перейти» (-j) к цели MASQUERADE, чтобы ею можно было манипулировать, как описано выше

    Кроме того, каждая цепочка в таблице фильтров (таблица по умолчанию, где происходит большая или вся фильтрация пакетов) имеет политику по умолчанию ACCEPT, но если вы создаете брандмауэр в дополнение к устройства шлюза, возможно, вы установили политики DROP или REJECT, и в этом случае ваш замаскированный трафик должен быть разрешен через цепочку FORWARD, чтобы приведенное выше правило работало:

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

    Если вы хотите, чтобы маскировка включалась при перезагрузке, что вы, вероятно, и делаете, отредактируйте файл /etc/rc.local и добавьте любые команды, использованные выше. Например, добавьте первую команду без фильтрации:

    Журналы брандмауэра необходимы для распознавания атак, устранения неполадок в правилах брандмауэра и обнаружения необычной активности в вашей сети. Тем не менее, вы должны включить правила ведения журнала в свой брандмауэр, чтобы они были сгенерированы, и правила ведения журнала должны предшествовать любому применимому правилу завершения (правило с целью, которая решает судьбу пакета, например ACCEPT, DROP или REJECT).

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

    Чтобы отключить вход в ufw, просто замените on на off в приведенной выше команде.

    Если вы используете iptables вместо ufw, введите:

    Тогда запрос на порт 80 с локального компьютера создаст журнал в dmesg, который выглядит следующим образом (одна строка разделена на 3, чтобы соответствовать этому документу):

    Вышеприведенный журнал также появится в /var/log/messages , /var/log/syslog и /var/log/kern.log . Это поведение можно изменить, соответствующим образом отредактировав /etc/syslog.conf или установив и настроив ulogd и используя цель ULOG вместо LOG. Демон ulogd — это сервер пользовательского пространства, который прослушивает инструкции по регистрации от ядра специально для брандмауэров и может записывать в любой файл, который вам нравится, или даже в базу данных PostgreSQL или MySQL. Анализ журналов брандмауэра можно упростить с помощью инструментов анализа журналов, таких как logwatch, fwanalog, fwlogwatch или lire.

    Другие инструменты

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

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

    Ссылки

    Вики-страница Ubuntu Firewall содержит информацию о разработке ufw.

    Кроме того, справочная страница ufw содержит очень полезную информацию: man ufw .

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

    К наиболее распространенным параметрам, предоставляемым DHCP-сервером DHCP-клиентам, относятся:

    IP-адрес и сетевая маска

    IP-адрес используемого шлюза по умолчанию

    IP-адреса DNS-серверов для использования

    Однако DHCP-сервер также может предоставлять такие параметры конфигурации, как:

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

    DHCP-сервер может предоставлять параметры конфигурации следующими способами:

    Ручное выделение (MAC-адрес)
    Этот метод предполагает использование DHCP для определения уникального аппаратного адреса каждой сетевой карты, подключенной к сети, а затем постоянное предоставление постоянной конфигурации каждый раз, когда DHCP-клиент делает запрос к DHCP. сервер, использующий это сетевое устройство. Это гарантирует, что сетевой карте будет автоматически назначен определенный адрес на основе ее MAC-адреса.

    Динамическое выделение (пул адресов)
    В этом методе DHCP-сервер будет назначать IP-адрес из пула адресов (иногда также называемого диапазоном или областью) на период времени или аренду, который настроен на сервере или пока клиент не сообщит серверу, что адрес ему больше не нужен. Таким образом, клиенты будут получать свои свойства конфигурации динамически и по принципу «первым пришел, первым обслужен». Когда DHCP-клиент больше не находится в сети в течение определенного периода, срок действия конфигурации истекает и возвращается в пул адресов для использования другими DHCP-клиентами. Таким образом, адрес можно арендовать или использовать в течение определенного периода времени. По истечении этого периода клиент должен пересмотреть договор аренды с сервером, чтобы сохранить использование адреса.

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

    Последние два метода можно считать «автоматическими», поскольку в каждом случае DHCP-сервер назначает адрес без необходимости дополнительного вмешательства. Единственная разница между ними заключается в том, как долго IP-адрес арендуется, другими словами, изменяется ли адрес клиента со временем. Сервер DHCP, доступный в Ubuntu, называется dhcpd (демон протокола динамической конфигурации хоста), который легко установить и настроить, и он будет автоматически запускаться при загрузке системы.

    Установка

    В терминале введите следующую команду для установки dhcpd:

    ПРИМЕЧАНИЕ: сообщения dhcpd отправляются в системный журнал. Найдите там диагностические сообщения.

    Конфигурация

    Возможно, вам потребуется изменить конфигурацию по умолчанию, отредактировав файл /etc/dhcp/dhcpd.conf в соответствии с вашими потребностями и конкретной конфигурацией.

    В большинстве случаев вам нужно назначить IP-адрес случайным образом. Это можно сделать с помощью следующих настроек:

    В результате DHCP-сервер будет предоставлять клиентам IP-адреса из диапазона 192.168.1.150–192.168.1.200. Он арендует IP-адрес на 600 секунд, если клиент не запрашивает определенный период времени. В противном случае максимальный (разрешенный) срок аренды составит 7200 секунд. Сервер также «посоветует» клиенту использовать 192.168.1.254 в качестве шлюза по умолчанию и 192.168.1.1 и 192.168.1.2 в качестве DNS-серверов.

    Вам также может понадобиться отредактировать /etc/default/isc-dhcp-server, чтобы указать интерфейсы, которые должен прослушивать dhcpd.

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