Главная | Контакты



Главная > Операционные системы > UNIX > BSD > FreeBSD

Роемся в конфигах rc.conf и ssh config

Как продолжение предыдущей статьи приведу пример того, что можно еще сделать с FreeBSD после ее установки. Займемся основными конфигурационными файлами: /etc/rc.conf /etc/ssh/ssd_config и т.д.

/etc/rc.conf - в этом файле задаются начальные параметры загрузки системы. Точнее задаются они в дефолтовом файле /etc/defaults/rc.conf, однако дефолтовый файл править нерекомендуется. Если хотите что-то поменять в запуске системы, пишите это в /etc/rc.conf Директивы в /etc/rc.conf перекрывают аналогичные в /etc/defaults/rc.conf.

Пример:

# rc.conf for Crawler by Daemony
#

# Задаем шлюз по-умолчанию
 defaultrouter="XXX.XXX.XXX.XXX"

# Устанавливаем имя хоста
 hostname="crawler.daemony.org"

# Прописываем конфигурацию сети
 ifconfig_lnc0="inet XX.XX.XX.XX netmask X.X.X.X"

# Вешаем, если необходимо, алиас
# ifconfig_lnc0_alias0="inet X.X.X.X netmask X.X.X.X"

# Принудительное выполнение проверки дисков при старте системы программой fsck с опцией -y
 fsck_y_enable="YES"

# Не обновлять файл приветствия
 update_motd="NO"

# Включаем квоты (требуется пересборка ядра)
# enable_quotas="YES"

# Проверяем квоты при старте?
# check_quotas="NO"

# Будем ли давать доступ в сеть другим"?
 gateway_enable="NO"

# Включаем NAT если нужно
# natd_enable="YES"

# Если включили NAT, укажем какой интерфейс внешний
# natd_interface="xl0?

# Дополнительные параметры NAT'у
# natd_flags="-f /etc/natd.conf"

# Включаем супердемона
 inetd_enable="YES"

# Включаем кеширующий DNS, если нужно
 named_enable="YES"

# и задаем ему доп. параметры
 named_program="/usr/sbin/named"
 named_flags="-u bind"

# Запускаем дополнительные сервисы
# Сендмейл
 sendmail_enable="YES"
 sendmail_flags="-bd -q1m"

# SSH сервер
 sshd_enable="YES"
# Параметры локализации и настройки консоли
 keymap="ru.koi8-r"
 keyrate="normal"
 mousechar_start="3?
 moused_enable="NO"
 moused_port="/dev/psm0?
 moused_type="auto"
 saver="logo"
 scrnmap="koi8-r2cp866?
 font8?14="cp866-8?14?
 font8?16="cp866b-8?16?
 font8?8="cp866-8?8?

# "Тюнинг" нулевой консоли (требуется пересборка ядра)
 allscreens_flags="-g 160?60 -c destructive MODE_27?

Если Вы желаете, чтобы при входе в систему отображалось Ваш собственное сообщение вместо стандартного, отредактируйте файл /etc/motd. Кроме того, если Вы хотите, чтобы после передачи имени пользователя и до передачи пароля выдавалось еще какое-либо сообщение, раскомментируйте в конфиге /etc/ssh/sshd_config строку:

#Banner /some/path

А вместо /some/path укажите путь к Вашему текстовому файлу с "баннером". После редактирования sshd_config следует дать демону ssh перечитать его. Сделать это можно, послав процессу сигнал HUP:

сrawler# killall -HUP sshd

Правда, в этом случае у Вас отвалятся все активные ssh сессии. Лучше сделать это так:

сrawler# /etc/rc.d/sshd restart

Теперь при входе в систему мы увидим:

login as: daemony
Well, tell me your password?

Password:
Last login: Tue Jan 29 23:51:51 2008 from somehost
Welcome to Crazy Crawler!
Here's all for good job.
$ _

Мелочь, но красиво. Через /etc/motd я как-то вешал публичные объявления для пользователей на одном из серверов. Вполне юзабельно. Тем более, что motd для этого и задумывался.

Кроме баннера, в /etc/ssh/sshd_config можно поправить еще несколько опций.

AllowGroups sshusers

При этом следует добавить соответсвующую группу в /etc/group. Например:

crawler# pw group add sshusers

И прописать в эту группу всех пользователей, которые могут иметь возможность входить на этот сервер удаленно по ssh. Достаточно просто изменить (добавить или удалить) список пользователей группы sshusers как эти изменения вступят в силу.

Замечание: если Вам вдруг взбредет в голову дать пользователю root возможность удаленно входить на сервер по ssh, Вам не только прийдется добавить его в группу sshusers, Вам также прийдется добавить в /etc/ssh/sshd_config строчку:

 PermitRootLogin yes

Но это конечно же не самое лучшее решение. : В /etc/ssh/sshd_config можно исправить еще несколько полезных опций.

# Здесь можно задать другой номер порта, указав нестандартный. Иногда спасает от брутфорса
 Port 22
# Можно sshd заставить слушать какой-то конкретный интерфейс
# ListenAddress 0.0.0.0
# Максимальное количество попыток ввести пароль при входе
 MaxAuthTries 3
# Можно задать время (в секундах), в течении которого, если не ввели пароль,
# сеанс связи будет закрыт сервером.
 LoginGraceTime 20

Естественно, это опции далеко не все. Но это то, чем пользуюсь обычно я.

* * *

В предыдущей статье рассказывалось о том, как задать начальные параметры конфигурации (переменные окружения пользователя). Так вот, изначально, когда Вы создаете нового пользователя его профиль создается из набора файлов, находящихся в /usr/share/skel. В данном каталоге помещены файлы вида:

 dot.cshrc
 dot.login
 dot.login_conf
 dot.mail_aliases
 dot.mailrc
 dot.profile
 dot.rhosts
 dot.shrc

Все что Вы поместите в /usr/share/skel, будет скопировано по-умолчанию в домашний каталог каждого нового пользователя при его создании в системе. Естественно, имена файлов будут без приставки "dot.". Она будет заменена на точку, то есть будет создан скрытый файл.

* * *

Обычно сразу после установки BSD нам приходится сталкиваться с вопросом коммуникации FreeBSD с машинами Windows. Обязательно найдется что-то, что нужно будет скопировать с одной машины на другую. И тут нам поможет открытие банального FTP сервера, но не на Windows, а в FreeBSD. Это очень просто и быстро. Для того, чтобы заставить FreeBSD запустить стандартного демона ftpd, нам всего лишь в файле /etc/inetd.conf нужно раскоментировать всего одну строку:

ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l

После запуска/перезапуска inetd сервера (killall -HUP inetd), он запустит FTP демона и посадит слушать его на порт 21. То, что это так легко проверить:

crawler# sockstat | grep 21<br>root inetd 1135 5 tcp4 *:21 *:*

Все работает. Прекрасно. К слову сказать, иногда для экономии ресурсов рекомендуется не только ftpd запускать из-под inetd сервера. Например, SSH. Если надумали запускать sshd через inetd, то прежде всего Вам
понадобится раскомментировать строку в /etc/inetd.conf

ssh stream tcp nowait root /usr/sbin/sshd sshd -i -4

А потом скоммандовать:

 crawler# /etc/rc.d/sshd stop ; killall -HUP inetd

При этом Ваши активные SSH сессии не отвалятся. При следущем входе в систему мы увидим:

crawler# sockstat | grep 22
root inetd 1135 8 tcp4 *:22 *:*

Не забудьте установить sshd_enable="NO" в файле /etc/rc.conf. Иначе при следущем старте системы в логи посыпятся ошибки, мол "не могу слушать порт, поскольку порт уже занят." Это будут одновременно inetd и "автономный" sshd пытаться слушать один и тот же порт.

Что ж, думаю, по данной теме говорить пока достаточно.


Главная > Операционные системы > UNIX > BSD > FreeBSD