В первой части мы установили свежую версию Freebsd 10.1. Теперь нам необходимо сделать некоторые минимальные системные настройки, которые позволят эффективно, удобно и в некотором смысле безопасно пользоваться сервером.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
Содержание:
Настройка SSH сервера
Перво наперво нужно настроить sshd для удаленного подключения. Если сейчас попробовать подключиться к серверу, то ничего не выйдет. Мы увидим окно приветствия, но залогиниться не получится. Это из-за того, что в системе у нас нет ни одного пользователя, кроме root. А этому пользователю по-умолчанию запрещено подключаться через ssh. Соответственно, у нас два пути, либо разрешить подключаться руту, либо добавить других пользователей. Сделаем и то, и другое. Сначала разрешаем пользователю root подключаться по ssh. Для этого редактируем файл /etc/ssh/sshd_config. Пока у нас голая система, воспользуемся для этого редактором ee. Открываем файл на редактирование:
# ee /etc/ssh/sshd_config
Находим строчку PermitRootLogin, раскомментируем ее и ставим напротив yes. По-умолчанию там стоит no.
Здесь же я рекомендую изменить стандартный порт ssh 22 на что-то более экзотическое. Делается это для того, чтобы роботы, которые постоянно сканируют интернет и пытаются залогиниться на серваки, остались не у дел. На 22 порт постоянно кто-то ломится с несуществующими учетками и подбирает пароли. Все это отражается в логах и может мешать. Сменив порт на нестандартный, мы частично избавляемся от этой проблемы. Ищем строчку со словом Port и меняем значение с 22, например, на 11222.
Сохраняем изменения и выходим из редактора. Теперь нам необходимо перезапустить sshd для принятия изменений. Делаем это командой:
# service sshd restart
Демон sshd перезапустится. Можно пробовать подключаться по ssh, должно получиться зайти под root.
Многие считают небезопасным подключаться удаленно под учетной записью рута. Это вопрос неоднозначный, все зависит от конкретной ситуации. Добавим одного пользователя для удаленного подключения. Воспользуемся командой:
# adduser
Заполняем необходимые данные пользователя. Обязательно в качестве добавочной группы укажите wheel. Если пользователя не добавить в эту группу, то он не сможет зайти потом рутом. После добавления пользователя, подключаемся им по ssh. После логина используем команду:
# su -l
Вводим пароль рута и оказываемся в учетной записи root.
Как подключаться и работать решайте для себя сами.
Установка Midnight Commander
Следующим шагом я всегда устанавливаю MC и делаю редактором по-умолчанию mcedit. Мне так удобно и проще делать дальнейшие настройки сервера. Установить можно как из портов, так и из пакетов. На вопрос, как лучше, однозначного ответа нет, каждый решает для себя сам. Я обычно MC ставлю из пакетов, а все остальное уже из портов. Почему именно так, да потому, что Midnight Commander ставится очень долго из портов, тянет кучу зависимостей, а у нас в настоящий момент порты даже не обновлены. На все про все уйдет минут 15-20. Так что я предпочитаю поставить сразу из пакетов. Делаем это командой:
# pkg install mc
Так как у нас система голая, увидим сообщение:
The package management tool is not yet installed on your system. Do you want to fetch and install it now? [y/N]:
Соглашаемся. После установки pkg начнется установка MC. Перед этим будет выведен список зависимостей, отмечено, сколько места все это займет. Со всем соглашаемся и начинаем установку. После окончания запускаем файловый менеджер:
# mc
Если у вас вместо прямых линий крякозябры, то закрываем putty и в ее настройках меняем кодировку. Идем в Windows -> Translation и выбираем KOI8-U, сохраняем и заходим снова. Теперь все должно быть в порядке.
Дальше устанавливаем редактор по умолчанию mcedit. Если этого не сделать, то в качестве редактора будет выступать vi. Если вы случайно окажетесь в нем, то не сразу сможете банально выйти из него, я не говорю уже о том, что бы что-то там отредактировать и сохранить. Так что идем в домашнюю директорию пользователя, находим там файл .cshrc, открываем, ищем строку
setenv EDITOR vi
меняем vi на mcedit, сохраняем, закрываем.
Настройка ntp для синхронизации времени
Минимально необходимый инструментарий для настройки мы получили, продолжаем работу. Чтобы время на сервере всегда было актуальным, его надо регулярно синхронизировать. Можно пойти двумя путями. Либо запускать через определенные промежутки времени утилиту ntpdate с ключами, либо настроить и запустить службу ntpd, которая будет постоянно работать и синхронизировать время. Более правильный вариант, использовать службу, но он чуть сложнее в настройке. Чтобы синхронизировать время через ntpdate, достаточно просто ввести команду:
# ntpdate -b europe.pool.ntp.org
и время будет синхронизировано. Можно запускать эту команду через cron с определенной периодичностью. Если у вас уже запущена служба ntpd, то ntpdate не сработает, выдаст ошибку:
the NTP socket is in use, exiting
Настроим в таком случае ntpd. Если она у вас уже запущена, то в файле /etc/rc.conf уже есть строчка
ntpd_enable="YES"
если ее нет, добавьте.
Дальше отредактируем файл /etc/ntp.conf В качестве серверов синхронизации укажем:
server 0.pool.ntp.org server 1.pool.ntp.org server 2.pool.ntp.org server 3.pool.ntp.org
и добавим две строчки в конец:
driftfile /var/db/ntpd.drift logfile /var/log/ntpd.log
Сохраняем, перезапускаем ntpd командой:
# killall ntpd && ntpd
Теперь наш сервер будет автоматически синхронизировать свое время.
Установка и настройка ipfw
Настройка фаервола сервера это тема отдельной статьи, тут я подробно останавливаться на этом не буду. Мы просто запустим фаервол на нашей freebsd 10, установим скрипт для безопасного редактирования правил. А дальше каждый уже сам по своему желанию сможет безопасно настраивать удаленно фаервол, не боясь потерять доступ к серверу.
Для работы ipfw необходимо либо пересобрать ядро с нужными функциями, любо подгружать модуль во время загрузки. Второй вариант проще и быстрее, воспользуемся им. Добавим в /etc/rc.conf строку:
firewall_enable="YES"
Если нам не нужен NAT, forward портов, то больше ничего делать не нужно, ipfw подключится во время загрузки сервера. Если мы оставим только эту строку и перезагрузим сервер, то удаленно мы к нему больше не подключимся, фаервол заблокирует все соединения. Чтобы того не произошло, указываем путь к файлу с правилами:
firewall_script="/usr/local/etc/ipfw/rc.firewall"
Идем в указанную папку и создаем файл следующего содержания:
#!/bin/sh - fwcmd="/sbin/ipfw" ${fwcmd} -f flush ${fwcmd} -f queue flush ${fwcmd} -f pipe flush ${fwcmd} add allow ip from any to any
Это полностью открытый фаервол, который разрешает все подключения. Делаем файл исполняемым. Перезагружаем сервер. После перезагрузки подключаемся удаленно. Проблем не должно возникнуть, фаервол у нас ничего не блокирует. Убеждаемся в этом, запустив команду:
# ipfw show
В ответ получаем:
00100 115 15052 allow ip from any to any 65535 0 0 deny ip from any to any
На первом месте наше правило, которое все разрешает, на втором, запрещающее. Все пакеты попадают под первое правило. В Freebsd есть замечательный скрипт, с помощью которого можно безопасно настраивать ipfw. Работает он просто. Вы запускаете скрипт, редактируете правила, потом сохраняете их и принимаете изменения. Скрипт после применения правил выводит сообщение о том, что все ли в порядке, записываем правила или нет. Если вы где-то ошиблись и вас отключило от сервера, вы не сможете положительно ответить на вопрос. Скрипт ждет 30 секунд ответа и если его не получает, откатывается на предыдущую версию правил. Вы спокойно подключаетесь и смотрите, где ошиблись.
Копируем себе скрипт:
# cp /usr/share/examples/ipfw/change_rules.sh /usr/local/etc/ipfw_change_rules
и делаем его исполняемым:
# chmod 0700 ipfw_change_rules
Теперь можно экспериментировать. При запуске скрипта будет открываться файл с правилами ipfw. После сохранения файла и выхода из него, скрипт спросит, применить или нет новые правила. Дальше я уже описал его логику.
Обновление портов
Основные настройки сделали. Теперь подготовим нашу систему к установке софта. обновим дерево портов с помощью утилиты portsnap. При первом запуске используем команду:
# portsnap fetch extract
Утилита скачает и распакует порты в папку /usr/ports. Последующее обновление будет производиться командой:
# portsnap fetch update
Добавим ее в cron для регулярного обновления портов раз в сутки. Для этого идем в /var/cron/tabs и создаем там файл root.
# touch /var/cron/tabs/root
Файл должен быть следующего содержания:
SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin 0 3 * * * portsnap cron
Обращаю внимание, что команда в планировщике записана не так, как мы запускали из консоли. Это сделано специально, чтобы не грузить сервера обновлений по крону в одно и то же время. Для обновления через планировщик используется специальная команда porsnap cron, которая делает небольшой случайный разброс по времени для обновления, чтобы все клиенты обновлялись в разное время, а не строго по часам.
На этом наша настройка системы закончена, переходим к следующей части, в которой займемся настройкой непосредственно компонентов web-сервера.
Помогла статья? Подписывайся на telegram канал автора
Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.Дополнительные материалы по Freebsd
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Рекомендую полезные материалы по Freebsd: |
Описание установки Freebsd 11 на одиночный диск, либо на софтовый raid1, сделанный средствами zfs, которые поддерживает стандартный установщик.
Базовая настройка Freebsd, которую можно выполнить после установки сервера общего назначения. Представлены некоторые рекомендации по повышению удобства пользования и безопасности.
Описание и нюансы обновления системы Freebsd с помощью утилиты freebsd-update. Показано пошагово на конкретном примере обновления.
Настройка Freebsd шлюза для обеспечения выхода в интернет. Используется ipfw и ядерный нат, dnsmasq в качестве dhcp и dns сервера. Мониторинг сетевой активности с помощью iftop.
Подробная настройка на Freebsd прокси сервера squid + sams2 - панели управления для удобного администрирования.
Настройка максимально быстрого web сервера на базе Freebsd и nginx + php-fpm. Существенный прирост производительности по сравнению с классическим apache.
Настройка web сервера на Freebsd в связке с apache, nginx, php и mysql. Пошаговая установка и настройка каждого компонента.
|
после сохранения в редакторе появляется ошибка: unable to create file
- Делаем файл исполняемым chnod 0700 ....
Может лучше chmod +x?
ИМХО в /etc/rc.conf не помешало бы
firewall_quiet="YES"
Процитирую:
... когда команда ipfw читает конфигурационный скрипт без флага quiet, она выводит каждую прочитанную строку в standard out. Выведя строку, ipfw сразу же выполняет соответствующее действие.
Большинство конфигурационных файлов брандмауэра сбрасывают текущие правила в начало сценария. Если фаервол ipfw находит такие строки без флага quiet, он немедленно сбрасывает все правила и возвращается к политике по умолчанию, которая, как правило, блокирует все соединения. Если брандмауэр настроен по SSH, соединение будет прервано, текущий сеанс оболочки закроется, и фаервол перестанет обрабатывать правила, открывающие вам доступ на сервер, то есть, вы будете заблокированы на собственном сервере. Флаг quiet помогает брандмауэру воспринимать и обрабатывать правила как набор (не как отдельные, несвязанные правила).
обьясните чайнику! Куда скрипты прописывать? только засел за юниксовые системы....Спасибо!
Какие скрипты? Не понял, о чем речь идет.
фаервол заблокирует все соединения. Чтобы того не произошло, указываем путь к файлу с правилами:
firewall_script="/usr/local/etc/ipfw/rc.firewall"
куда прописывать эту строчку?
В /etc/rc.conf
Благодарю! И за пошаговую инструкцию тоже!
Привет
А почему сначала ставите MC, а затем обновляете дерево портов? Может надо наоборот?
Так я же MC из пакетов ставил, а не из портов.
Привет! А почему вы не когда ядро не собираете или не навастриваете?
Да я не работаю последнее время с freebsd. Так то собирал раньше и настраивал.
приветствую. подскажите, пжл, как не попасть в просак с кириллицей в именах файлов и каталогов? тот же tar может изуродовать навсегда кодировку. были ли у вас проблемы с этим?
Использую везде utf8. Давно уже нет проблем с кодировками.