Почти все знают, что с помощью ~/.ssh/authorized_keys можно разрешить пользователю с определенным RSA/DSA ключем логиниться через ssh. Но мало кто знает, что там же можно ограничить возможности ssh для пользователя. :)
если строчку с ключем, которая обычно выглядит так:
ssh-rsa многобукав user@hostname
поправить на
command="/bin/date" ssh-rsa многабукав ...
То при логине с этим ключем автоматически запустится /bin/date и произойдет logout из системы. Другую команду пользователь запустить не сможет (удобно, если ваш скрипт ходит зачем-то на этот хост - для ограничения его возможностей на всякий пожарный).
from="192.168.1.1" - ключ сработает, только если пользователь пришел с хоста 192.168.1.1, иначе спросит пароль. Умеет маски.
no-port-forwarding - запретит случайно использовать опцию -L для проброса портов.
permitopen="google.com:80" - ограничивает возможности ssh -L только форвардингом порта на google.com:80
Опции можно разделять запятыми:
from="backup.example.com",no-port-forwarding,no-X11-forwarding ssh-rsa AAAAA3Nza.... LiPK== user@backup.example.com
Подробности сего действа можно вычитать в man sshd, секция "AUTHORIZED_KEYS FILE FORMAT". Там есть еще пара опций.
Показаны сообщения с ярлыком freebsd. Показать все сообщения
Показаны сообщения с ярлыком freebsd. Показать все сообщения
вторник, 3 августа 2010 г.
четверг, 28 февраля 2008 г.
Как включить и настроить Routed в BSD-системах
Тема эта - больше классика, чем практически полезная, потому что routed морально устарел. Но мне очень хотелось попробовать. )
Итак, чтобы включить routed в BSD-системе, необходимо в случае FreeBSD добавить вот такие строки в /etc/rc.conf:
Либо, в случае OpenBSD - достаточно просто исправить "routed_flags="NO"" на что-то другое, например просто убрать "NO" в том же /etc/rc.conf:
Можно, конечно, в соответстии с man routed, задать все опции в этих самых кавычках, но так как нам нужен RIP-демон, мы оставим конфигурацию по-умолчанию без ключей и будем пользоваться /etc/gateways для для его настройки. Routed сам определит, что он запущен на маршрутизаторе и начнет распространять маршруты. (Условия для этого - gateway="yes" и наличие более одного сетевого интерфейса).
Кроме RIP этот демон поддерживает и другие методы настройки маршрутизации, например, протокол ICMP, а точнее - сообщения, которые отвечают за анонс/поиск/объявление маршрутизатора. Но так как эти функции пока выходят за пределы рассказа про RIP, рассматривать их я не буду. Да и они, опять же - мало применимы практически и больше относятся к старой доброй классике...
Итак, судя по топологии из предыдущих постов, у нас есть по крайней мере один интерфейс, на котором мы RIP использовать не должны.
Поэтому наш /etc/gateways у нас будет выглядеть вот так:
Он в первую очередь отключает рассылку обновлений через интерфейс lnc4, во вторых - отключает ICMP-функции по работе с маршрутами.
Но на OpenBSD такой метод запрета рассылки анонсов почему-то не прокатил. Поэтому в hostname.pcn3 к настойкам интерфейса я просто добавил метрику 16, что сделало маршрут в сеть на этом интерфейсе недоступным для RIP.:
Да, и надо не забыть запустить routed:
Для отладки полезно использовать ключи -d и -t:
Еще один метод отладки - это использование tcpdump:
Все это позволяет увидеть и то, что рассылает routed, и то, что он получает от соседей. В tcpdump мы видим как раз один из пакетов, которые выслала Quagga на linux-роутере, с маршрутами в известные ей сети.
Иными словами, настройка routed практически тривиальна и не сулит ничего сложного. Кроме RIPv1 он поддерживает и RIPv2. Кроме того, в нем отстутвуют настройки поведения протокола. И почему-то он ведет себя иногда довольно-таки странно. В общем, я так и не понял его местами. Например, в openbsd он почему-то не хочет делать ращепление горизонта, хотя в мануале написано - что он просто не умеет не делать этого.
Итак, чтобы включить routed в BSD-системе, необходимо в случае FreeBSD добавить вот такие строки в /etc/rc.conf:
router_flags=""
router="/sbin/routed"
router_enable="YES"
Либо, в случае OpenBSD - достаточно просто исправить "routed_flags="NO"" на что-то другое, например просто убрать "NO" в том же /etc/rc.conf:
router_flags=""
Можно, конечно, в соответстии с man routed, задать все опции в этих самых кавычках, но так как нам нужен RIP-демон, мы оставим конфигурацию по-умолчанию без ключей и будем пользоваться /etc/gateways для для его настройки. Routed сам определит, что он запущен на маршрутизаторе и начнет распространять маршруты. (Условия для этого - gateway="yes" и наличие более одного сетевого интерфейса).
Кроме RIP этот демон поддерживает и другие методы настройки маршрутизации, например, протокол ICMP, а точнее - сообщения, которые отвечают за анонс/поиск/объявление маршрутизатора. Но так как эти функции пока выходят за пределы рассказа про RIP, рассматривать их я не буду. Да и они, опять же - мало применимы практически и больше относятся к старой доброй классике...
Итак, судя по топологии из предыдущих постов, у нас есть по крайней мере один интерфейс, на котором мы RIP использовать не должны.
Поэтому наш /etc/gateways у нас будет выглядеть вот так:
if=lnc4 no_rip passive
no_rdisc
Он в первую очередь отключает рассылку обновлений через интерфейс lnc4, во вторых - отключает ICMP-функции по работе с маршрутами.
Но на OpenBSD такой метод запрета рассылки анонсов почему-то не прокатил. Поэтому в hostname.pcn3 к настойкам интерфейса я просто добавил метрику 16, что сделало маршрут в сеть на этом интерфейсе недоступным для RIP.:
# cat /etc/hostname.pcn3
inet 10.0.0.5 255.0.0.0 NONE description "Control Interface" metric 16
Да, и надо не забыть запустить routed:
# routed
Для отладки полезно использовать ключи -d и -t:
# routed -d -t
-- 08:25:51 --
Tracing actions started
Add interface lo0 -->/32 <loopback> <passive>
RCVBUF=61440
Add interface pcn0 127.0.0.1 -->/24
turn on RIP
Add interface pcn1 192.168.1.0 -->/24
Add interface pcn2 192.168.249.0 -->/24
Add interface pcn3 192.168.255.0 -->/8 metric=16 <passive>
start suppying routes
Add 127.0.0.1 -->10.0.0.0 metric=16 <if> pcn3 08:25:51
Add 192.168.1.1 -->192.168.255.0 metric=0 <if> pcn2 08:25:51
Add 192.168.249.1 -->192.168.249.0 metric=0 <if> pcn1 08:25:51
Add 10.0.0.0 -->192.168.1.0 metric=0 <if> pcn0 08:25:51
Add 10.0.0.5/32 -->127.0.0.1 metric=0 <if> lo0 08:25:51
Еще один метод отладки - это использование tcpdump:
# tcpdump -s 512 -i pcn1 -n udp port 520
tcpdump: listening on pcn1, link-type EN10MB
08:29:45.192544 192.168.249.2.520 > 192.168.249.255.520: RIPv1-resp [items 9]:
{192.168.2.0}(3) {192.168.3.0}(4) {192.168.4.0}(2) {192.168.6.0}(1)
{192.168.250.0}(1) {192.168.251.0}(2) {192.168.252.0}(2) {192.168.253.0}(2)
{192.168.254.0}(3) (DF)
Все это позволяет увидеть и то, что рассылает routed, и то, что он получает от соседей. В tcpdump мы видим как раз один из пакетов, которые выслала Quagga на linux-роутере, с маршрутами в известные ей сети.
Иными словами, настройка routed практически тривиальна и не сулит ничего сложного. Кроме RIPv1 он поддерживает и RIPv2. Кроме того, в нем отстутвуют настройки поведения протокола. И почему-то он ведет себя иногда довольно-таки странно. В общем, я так и не понял его местами. Например, в openbsd он почему-то не хочет делать ращепление горизонта, хотя в мануале написано - что он просто не умеет не делать этого.
среда, 6 февраля 2008 г.
Поднимаем маршрутизатор на FreeBSD
Самый свежий дистрибутив, который у меня оказался - это FreeBSD 6.2. На его примере и опишу установку маршрутизатора.
Вставляем диск, загружаемся с него и имеем перед собой утилиту sysinstall - надежду и гордость всего народа, пользующегося FreeBSD. =)
Первое, что нам предлагают выбрать - это страну, регион или группу. Я выбираю "Украина".
Второе - умолчательный драйвер консоли. Я выбрал Ukrainian KOI8-U keymap. Если на первом этапе выбрать другой регион, будут доступны другие варианты.
Теперь мы попали в главное меню sysinstall и здесь мы должны выбрать, а чо собсно делать дальше? Выбираем - Standard - обычную инсталляцию системы. )
И нам сразу же, сходу, предлагают разбить жесткий диск. Опять же, для этих целей не замораичваясь особо, выбираем - A = Use Entire Disk, и Q = Finish.
А затем - выбор загрузчика для системы. Выбираем BootMgr - обычный загрузчик FreeBSD.
Далее нам предлагают создать разделы для системы. Можно, конечно, извернуться и создавать разделы вручную. Для того чтобы показать пример настройки маршрутизатора это делать необязательно, поэтому выбираем A = Auto Defaults, и disklabel автоматически создаст 5 разделов - /, swap, /var, /usr, /tmp. Все будут с FS - UFS и включенными SoftUpdates, кроме /.
Q = Finish.
Переходим к выбору пакетов для установки. На маршрутизаторе вряд-ли пригодится что-то кроме User-раздела. Отмечаем его и жмем OK.
Так как мы устанавливаем систему с CD-ROM, выбираем источник для установки - CD/DVD. ОК.
Отвечаем утвердительно на предупреждение системы о локадьном конце света в пределах нашего жесткого диска. Иными словами, что мы в уме и здравии позволяем программе установки удалить все содержимое с жесткого диска. =)
Теперь система сама создаст файловые системы и установит выбранные пакеты. Можно пока покурить или выпить чего-нибудь. =)
Вот. В конце концов, после долгого шуршания винтов, нас поздравят, что система была установлена и зададут несколько контрольных вопросов в голову. Это так-называемая, пост-инсталляционная настройка системы.
1. Хотим ли мы настроить какие-нибудь Ethernet или SLIP/PPP интерфейсы? Очевидно, да. Подтягиваем свою схему сети и выделенные маршрутизатору адреса поближе.
Выбираем из списка каждый интерфейс и вводим в диалоговом окне его настройки - IP и маски. Но, гг, после настройки первого попавшегося интерфейса, нас сразу выкинет к следующему вопросу...
2. Должна ли эта машина работать маршрутизатором? Однозначно, да, ради этого мы ее и настраиваем.
3. Нужно ли настроить inetd и сетевые сервисы, которые он предоставляет. Вообще, inetd - замечательная штука, но простому маршрутизатору все его сервисы, среди которых echo, quote of the day и т.д. - не нужны. =) Поэтому, отказываемся.
4. Нужно ли разрешить вход через SSH. Да, надо. Для удобства настройки.
5. Нужен ли анонимный FTP-доступ к машине. Нет, не нужен. Если что-то понадобится записать или скачать - мы воспользуемся scp - копированием файлов через ssh.
6. Нужно ли настроить машину как NFS-сервер. NFS - это сервер для предоставления доступа к локальным директориям через сеть. Тут он не нужен, отказываемся.
7. Настраивать ли установки консоли - скорее да, чем нет. )
8. Выбираем шрифт - IBM 866.
9. Keymap - Russia KOI8-R.
10. Repeat - Fast (скорость повтора клавиатуры).
11. Saver - Blank (хранитель экрана)
12. ScreenMap - KOI8-R to 866
13. TTY - KOI8-R. Exit. )
14. Установить часовой пояс - да, выбрать свой. ) На вопрос, установлены ли часы в BIOS в UTC, скорее всего нужно ответить - нет. Если вы знаете, что это не так, вы ответите "Да". Если не знаете вообще что это значит - скорее "Нет", чем "Да". Я выбираю "Нет". Потому что часы у меня установлены по местному времени.
15. Нужно ли включать бинарную совместимость с Linux. Иными словами - включить ли возможность запускать приложения, скомпилированные для Linux в FreeBSD. На этом маршрутизаторе это не пригодится. В крайнем случае, можно настроить потом. Так что - нет.
16. Есть ли мышь в системе - скорее да, чем нет. Если настроить, можно получить полезную возможность выделять и копировать в консоли мышью.
17. Нам предоставлена возможность установки программного обеспечения из пакетов. Если у вас дистрибутив на паре CD, можете выбрать, что нужно. Я ставлю vim-lite из пакетов, потому что работать с обычным vi мне очень тяжело.
18. Добавление пользователей в систему. Можно создать для себя отдельного пользователя и добавить его в группу wheel.
19. И - финальный аккорд - установка пароля root. Требует пароля посложнее, поэтому лучше постараться. Ввод не отображается на экране никак.
20. Финальный вопрос - отвечаем "нет", если все настроили. Я сказал "да", вернулся и донастроил остальные 4 сетевых карты. Это можно сделать и после перезагрузки, введя в консоли команду "sysinstall" в любое время.
После перезагрузки займемся настройкой маршрутов.
синтаксис команды route в freebsd мало отличается от синтаксиса аналогичной команды в других *nix системах. Прописываются статические маршруты в /etc/rc.conf:
т.е. в строке static_routes мы указываем список названий маршрутов, а в route_имямаршрута - аргументы команды route, для добавления этого маршрута.
После правки выполним sh /etc/netstart для перезапуска сети.
В результате мы должны получить правильную таблицу маршрутизации. Просмотреть ее можно в FreeBSD командой netstat -rn:
Вот и все. Сделаем "connectivity test", пропинговав все интерфейсы уже работающих маршрутизаторов, и можем считать свою работу законченной, если все работает.
Вставляем диск, загружаемся с него и имеем перед собой утилиту sysinstall - надежду и гордость всего народа, пользующегося FreeBSD. =)
Первое, что нам предлагают выбрать - это страну, регион или группу. Я выбираю "Украина".
Второе - умолчательный драйвер консоли. Я выбрал Ukrainian KOI8-U keymap. Если на первом этапе выбрать другой регион, будут доступны другие варианты.
Теперь мы попали в главное меню sysinstall и здесь мы должны выбрать, а чо собсно делать дальше? Выбираем - Standard - обычную инсталляцию системы. )
И нам сразу же, сходу, предлагают разбить жесткий диск. Опять же, для этих целей не замораичваясь особо, выбираем - A = Use Entire Disk, и Q = Finish.
А затем - выбор загрузчика для системы. Выбираем BootMgr - обычный загрузчик FreeBSD.
Далее нам предлагают создать разделы для системы. Можно, конечно, извернуться и создавать разделы вручную. Для того чтобы показать пример настройки маршрутизатора это делать необязательно, поэтому выбираем A = Auto Defaults, и disklabel автоматически создаст 5 разделов - /, swap, /var, /usr, /tmp. Все будут с FS - UFS и включенными SoftUpdates, кроме /.
Q = Finish.
Переходим к выбору пакетов для установки. На маршрутизаторе вряд-ли пригодится что-то кроме User-раздела. Отмечаем его и жмем OK.
Так как мы устанавливаем систему с CD-ROM, выбираем источник для установки - CD/DVD. ОК.
Отвечаем утвердительно на предупреждение системы о локадьном конце света в пределах нашего жесткого диска. Иными словами, что мы в уме и здравии позволяем программе установки удалить все содержимое с жесткого диска. =)
Теперь система сама создаст файловые системы и установит выбранные пакеты. Можно пока покурить или выпить чего-нибудь. =)
Вот. В конце концов, после долгого шуршания винтов, нас поздравят, что система была установлена и зададут несколько контрольных вопросов в голову. Это так-называемая, пост-инсталляционная настройка системы.
1. Хотим ли мы настроить какие-нибудь Ethernet или SLIP/PPP интерфейсы? Очевидно, да. Подтягиваем свою схему сети и выделенные маршрутизатору адреса поближе.
Выбираем из списка каждый интерфейс и вводим в диалоговом окне его настройки - IP и маски. Но, гг, после настройки первого попавшегося интерфейса, нас сразу выкинет к следующему вопросу...
2. Должна ли эта машина работать маршрутизатором? Однозначно, да, ради этого мы ее и настраиваем.
3. Нужно ли настроить inetd и сетевые сервисы, которые он предоставляет. Вообще, inetd - замечательная штука, но простому маршрутизатору все его сервисы, среди которых echo, quote of the day и т.д. - не нужны. =) Поэтому, отказываемся.
4. Нужно ли разрешить вход через SSH. Да, надо. Для удобства настройки.
5. Нужен ли анонимный FTP-доступ к машине. Нет, не нужен. Если что-то понадобится записать или скачать - мы воспользуемся scp - копированием файлов через ssh.
6. Нужно ли настроить машину как NFS-сервер. NFS - это сервер для предоставления доступа к локальным директориям через сеть. Тут он не нужен, отказываемся.
7. Настраивать ли установки консоли - скорее да, чем нет. )
8. Выбираем шрифт - IBM 866.
9. Keymap - Russia KOI8-R.
10. Repeat - Fast (скорость повтора клавиатуры).
11. Saver - Blank (хранитель экрана)
12. ScreenMap - KOI8-R to 866
13. TTY - KOI8-R. Exit. )
14. Установить часовой пояс - да, выбрать свой. ) На вопрос, установлены ли часы в BIOS в UTC, скорее всего нужно ответить - нет. Если вы знаете, что это не так, вы ответите "Да". Если не знаете вообще что это значит - скорее "Нет", чем "Да". Я выбираю "Нет". Потому что часы у меня установлены по местному времени.
15. Нужно ли включать бинарную совместимость с Linux. Иными словами - включить ли возможность запускать приложения, скомпилированные для Linux в FreeBSD. На этом маршрутизаторе это не пригодится. В крайнем случае, можно настроить потом. Так что - нет.
16. Есть ли мышь в системе - скорее да, чем нет. Если настроить, можно получить полезную возможность выделять и копировать в консоли мышью.
17. Нам предоставлена возможность установки программного обеспечения из пакетов. Если у вас дистрибутив на паре CD, можете выбрать, что нужно. Я ставлю vim-lite из пакетов, потому что работать с обычным vi мне очень тяжело.
18. Добавление пользователей в систему. Можно создать для себя отдельного пользователя и добавить его в группу wheel.
19. И - финальный аккорд - установка пароля root. Требует пароля посложнее, поэтому лучше постараться. Ввод не отображается на экране никак.
20. Финальный вопрос - отвечаем "нет", если все настроили. Я сказал "да", вернулся и донастроил остальные 4 сетевых карты. Это можно сделать и после перезагрузки, введя в консоли команду "sysinstall" в любое время.
После перезагрузки займемся настройкой маршрутов.
синтаксис команды route в freebsd мало отличается от синтаксиса аналогичной команды в других *nix системах. Прописываются статические маршруты в /etc/rc.conf:
static_routes="Stub1 Stub3 Stub4 Stub5 Stub6 net249 net250 net252 net253"
route_Stub1="-net 192.168.1.0/24 192.168.255.1"
route_Stub3="-net 192.168.3.0/24 192.168.254.2"
route_Stub4="-net 192.168.4.0/24 192.168.251.1"
route_Stub5="-net 192.168.5.0/24 192.168.251.1"
route_Stub6="-net 192.168.6.0/24 192.168.255.1"
route_n249="-net 192.168.249.0/24 192.168.255.1"
route_n250="-net 192.168.250.0/24 192.168.255.1"
route_n252="-net 192.168.252.0/24 192.168.251.1"
route_n253="-net 192.168.253.0/24 192.168.254.2"
т.е. в строке static_routes мы указываем список названий маршрутов, а в route_имямаршрута - аргументы команды route, для добавления этого маршрута.
После правки выполним sh /etc/netstart для перезапуска сети.
В результате мы должны получить правильную таблицу маршрутизации. Просмотреть ее можно в FreeBSD командой netstat -rn:
beasty-router# netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
10 link#5 UC 0 0 lnc4
10.0.0.1 00:0c:29:b5:59:3b UHLW 2 38 lnc4 1196
127.0.0.1 127.0.0.1 UH 0 0 lo0
192.168.1 192.168.255.1 UGS 0 0 lnc0
192.168.2 link#4 UC 0 0 lnc3
192.168.3 192.168.254.2 UGS 0 0 lnc2
192.168.4 192.168.251.1 UGS 0 0 lnc1
192.168.5 192.168.251.1 UGS 0 0 lnc1
192.168.6 192.168.255.1 UGS 0 0 lnc0
192.168.249 192.168.255.1 UGS 0 0 lnc0
192.168.250 192.168.255.1 UGS 0 0 lnc0
192.168.251 link#2 UC 0 0 lnc1
192.168.251.1 link#2 UHLW 4 0 lnc1
192.168.252 192.168.251.1 UGS 0 0 lnc1
192.168.253 192.168.254.2 UGS 0 0 lnc2
192.168.254 link#3 UC 0 0 lnc2
192.168.254.2 00:0c:29:29:ba:92 UHLW 3 0 lo0
192.168.255 link#1 UC 0 0 lnc0
192.168.255.1 link#1 UHLW 5 0 lnc0
Вот и все. Сделаем "connectivity test", пропинговав все интерфейсы уже работающих маршрутизаторов, и можем считать свою работу законченной, если все работает.
Подписаться на:
Сообщения (Atom)