Рекомендуемые шаги для новых серверов FreeBSD 12.0

Вступление

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

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

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

Как настроить простой брандмауэр IPFW

Первая задача - настроить простой брандмауэр для защиты вашего сервера.

FreeBSD поддерживает и включает три отдельных межсетевых экрана. Они называются + pf +, + ipfw + и + ipfilter +. В этом руководстве мы будем использовать https://www.freebsd.org/doc/handbook/firewalls-ipfw.html [+ ipfw +] в качестве нашего брандмауэра. + ipfw + - это безопасный межсетевой экран с сохранением состояния, написанный и поддерживаемый как часть FreeBSD.

Настройка основного брандмауэра

Почти вся ваша конфигурация будет размещена в файле + / etc / rc.conf +. Для изменения конфигурации вы будете использовать команду + sysrc +, которая позволяет пользователям безопасно изменять конфигурацию в + / etc / rc.conf +. Внутри этого файла вы добавите несколько разных строк, чтобы включить и контролировать работу брандмауэра + ipfw +. Вы начнете с основных правил; для начала выполните следующую команду:

sudo sysrc firewall_enable="YES"

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

Outputfirewall_enable: NO -> YES

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

Теперь запустите следующее:

sudo sysrc firewall_quiet="YES"

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

Два фактора объединяются, чтобы сделать это важным вариантом. Во-первых, сценарий настройки брандмауэра выполняется в текущей среде оболочки, а не в качестве фоновой задачи. Во-вторых, когда команда + ipfw + читает сценарий конфигурации без флага “ quiet ”, она читает и выводит каждую строку, в свою очередь, в стандартный формат. Когда он выводит строку, он * немедленно * выполняет соответствующее действие.

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

После этих двух строк вы можете приступить к настройке поведения брандмауэра. Теперь выберите " рабочая станция " в качестве типа брандмауэра, который вы будете настраивать:

sudo sysrc firewall_type="workstation"

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

Файл + / etc / rc.conf + также позволяет вам настроить службы, к которым клиенты должны иметь доступ, используя опции + firewall_myservices + и + firewall_allowservices +.

Выполните следующую команду, чтобы открыть порты, которые должны быть доступны на вашем сервере, такие как порт + 22 + для вашего SSH-соединения и порт + 80 + для обычного веб-сервера HTTP. Если вы используете SSL на своем веб-сервере, обязательно добавьте порт + 443 +:

sudo sysrc firewall_myservices="22/tcp  "

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

Опция + firewall_allowservices + перечисляет элементы, которым должен быть разрешен доступ к предоставленным сервисам. Следовательно, он позволяет вам ограничить доступ к вашим службам (от + firewall_myservices +) для определенных машин или диапазонов сети. Например, это может быть полезно, если вы хотите, чтобы на компьютере размещался веб-контент для внутренней сети компании. Ключевое слово " any " означает, что любые IP-адреса могут получить доступ к этим службам, делая их полностью открытыми:

sudo sysrc firewall_allowservices="any"

Опция + firewall_logdeny + указывает + ipfw + регистрировать все попытки подключения, которые запрещены, в файл, расположенный в + / var / log / security +. Выполните следующую команду, чтобы установить это:

sudo sysrc firewall_logdeny="YES"

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

grep 'firewall' /etc/rc.conf

Эта часть файла + / etc / rc.conf будет выглядеть так:

Outputfirewall_enable="YES"
firewall_quiet="YES"
firewall_type="workstation"
firewall_myservices="22  "
firewall_allowservices="any"
firewall_logdeny="YES"

Не забудьте настроить параметр + firewall_myservices + для ссылки на сервисы, которые вы хотите предоставить клиентам.

Разрешение соединений UDP (необязательно)

Порты и службы, перечисленные в опции + firewall_myservices + в файле + / etc / rc.conf +, разрешают доступ для TCP-соединений. Если у вас есть службы, которые вы хотите использовать, которые используют UDP, вам нужно отредактировать файл + / etc / rc.firewall +:

sudo vi /etc/rc.firewall

Вы настроили брандмауэр на использование типа брандмауэра "" workstation "`, поэтому найдите раздел, который выглядит следующим образом:

/etc/rc.firewall

. . .

[Ww][Oo][Rr][Kk][Ss][Tt][Aa][Tt][Ii][Oo][Nn])

. . .

В этом блоке есть раздел, посвященный обработке установленных вами значений + firewall_allowservices + и + firewall_myservices +. Это будет выглядеть так:

/etc/rc.firewall

for i in ${firewall_allowservices} ; do
 for j in ${firewall_myservices} ; do
   ${fwcmd} add pass tcp from $i to me $j
 done
done

После этого раздела вы можете добавить любые сервисы или порты, которые должны принимать пакеты UDP, добавив такие строки:

${fwcmd} add pass udp from  to me

В + vi +, нажмите + i +, чтобы переключиться в режим + INSERT + и добавьте свой контент, затем сохраните и закройте файл, нажав + ESC +, напечатав +: wq + и нажав + ENTER + , В предыдущем примере вы можете оставить ключевое слово " any ", если соединение должно быть разрешено для всех клиентов, или изменить его на определенный IP-адрес или диапазон сети. + Port_num + следует заменить номером порта или именем службы, к которой вы хотите разрешить доступ UDP. Например, если вы используете DNS-сервер, вы можете захотеть иметь строку, которая выглядит примерно так:

for i in ${firewall_allowservices} ; do
 for j in ${firewall_myservices} ; do
   ${fwcmd} add pass tcp from $i to me $j
 done
done

${fwcmd} add pass udp from  to me

Это позволит любому клиенту из сетевого диапазона + 192.168.2.0 / 24 + получить доступ к DNS-серверу, работающему на стандартном порту + 53 +. Обратите внимание, что в этом примере вы также хотели бы открыть этот порт для TCP-соединений, так как он используется DNS-серверами для более длинных ответов.

Сохраните и закройте файл, когда вы закончите.

Запуск брандмауэра

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

sudo service ipfw start

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

Вы также хотите настроить ограничение на количество отказов на IP-адрес, которое вы будете регистрировать. Это предотвратит заполнение ваших журналов одним постоянным пользователем. Вы можете сделать это в файле + / etc / sysctl.conf:

sudo vi /etc/sysctl.conf

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

/etc/sysctl.conf

...
net.inet.ip.fw.verbose_limit=5

Сохраните и закройте файл, когда вы закончите. Это настроит этот параметр при следующей загрузке.

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

sudo sysctl net.inet.ip.fw.verbose_limit=5

Это должно немедленно реализовать ограничение для этой загрузки.

Как установить часовой пояс для вашего сервера

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

FreeBSD поставляется с инструментом на основе меню + tzsetup + для настройки часовых поясов. Чтобы установить часовой пояс для вашего сервера, вызовите эту команду с привилегиями + sudo +:

sudo tzsetup

Сначала вам будет предложено выбрать регион мира, в котором расположен ваш сервер:

изображение: https: //assets.digitalocean.com/articles/freebsd_recommended/region.png [регион мира FreeBSD]

Вам нужно будет выбрать субрегион или страну следующим образом:

изображение: https: //assets.digitalocean.com/articles/freebsd_recommended/country.png [страна FreeBSD]

Наконец, выберите часовой пояс, подходящий для вашего сервера:

изображение: https: //assets.digitalocean.com/articles/freebsd_recommended/time.png [часовой пояс FreeBSD]

Подтвердите выбор часового пояса, который представлен на основе вашего выбора.

На этом этапе часовой пояс вашего сервера должен соответствовать выбранным вами вариантам.

Как настроить NTP, чтобы сохранить точное время

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

Опять же, вы можете включить службу NTP на вашем сервере, настроив файл + / etc / rc.conf +. Выполните следующую команду, чтобы добавить в файл строку + ntpd_enable =" YES "+:

sudo sysrc ntpd_enable="YES"

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

sudo sysrc ntpd_sync_on_start="YES"

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

Вы можете запустить службу + ntpd +, набрав:

sudo service ntpd start

Это сохранит время вашего сервера благодаря синхронизации с NTP-серверами, перечисленными в + / etc / ntp.conf +.

Как настроить дополнительное пространство подкачки

На серверах FreeBSD, настроенных на DigitalOcean, 1 гигабайт swap space автоматически настраивается независимо от размера вашего сервера. Вы можете увидеть это, набрав:

sudo swapinfo -g

Это должно показать что-то вроде этого:

OutputDevice          1G-blocks     Used    Avail Capacity
/dev/gpt/swapfs         1        0        1     0%

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

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

Мы поместим файл подкачки в + / swapfile + для этого урока, но вы можете поместить файл куда угодно, например, + / var / swapfile +. Этот файл предоставит дополнительно 1 гигабайт пространства подкачки. Вы можете изменить это число, изменив значение, данное параметру + -s +:

sudo truncate -s  /swapfile

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

sudo chmod 0600 /swapfile

Затем свяжите псевдо-устройство с вашим файлом и настройте его для монтирования при загрузке, набрав:

echo "md99 none swap sw,file=/swapfile,late 0 0" | sudo tee -a /etc/fstab

Эта команда добавляет строку, которая выглядит следующим образом, в файл + / etc / fstab +:

md99 none swap sw,file=/swapfile,late 0 0

После добавления строки в ваш файл + / etc / fstab + вы можете активировать файл подкачки для сессии, набрав:

sudo swapon -aqL

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

sudo swapinfo -g

Вы должны увидеть дополнительное устройство (+ / dev / md99 +), связанное с вашим файлом подкачки:

OutputDevice          1G-blocks     Used    Avail Capacity
/dev/gpt/swapfs         1        0        1     0%
/dev/md99               1        0        1     0%
Total                   2        0        2     0%

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

Заключение

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

Related