Мы уже давно использовали связку OpenBSD+OpenBGPD+bgplg для предоставления публичного сервера bgp looking glass. Было принято обновить OpenBSD до свежей версии.

В процессе настройки выяснилось несколько ньюансов, не раскрытых в полной мере в официальной документации. В результате получилась вот такая инструкция по настройке сервиса BGP looking glass на базе свежеустановленной OpenBSD 6.1

0. Устанавливаем OpenBSD

1. Кладем SSL-ключ в /etc/ssl/private/server.key и цепочку сертификатов в /etc/ssl/server.crt

2. Настраиваем /etc/httpd.conf

ext_addr="0.0.0.0"
ext_addr6="::"
prefork 2
domain="lg.example.net"

server $domain {
        listen on $ext_addr port 80
        listen on $ext_addr6 port 80
        block return 301 "https://$domain$REQUEST_URI"
}
server $domain {
        listen on $ext_addr tls port 443
        listen on $ext_addr6 tls port 443
        tls {
                certificate "/etc/ssl/server.crt"
                key "/etc/ssl/private/server.key"
        }
        location "/cgi-bin/*" {
                fastcgi
                root ""
        }
        location "/" {
                block return 302 "/cgi-bin/bgplg"
        }
}

3. Настраиваем /etc/bgpd.conf

AS XXX
fib-update no
listen on 0.0.0.0
route-collector yes
router-id A.B.C.D

socket "/var/www/run/bgpd.rsock" restricted

neighbor D.E.F.G {
 remote-as XXX
 descr "r1"
 announce none
}
neighbor D:E:F::G {
 remote-as XXX
 descr "r1v6"
 announce none
}

4. Выставляем права, настраиваем chroot. Последней командой вы разрешаете выполнение ping и traceroute с вашего сервиса, однако при этом устанавливаете флаг SUID на исполняемые файлы.

chmod 0555 /var/www/cgi-bin/bgplg
chmod 0555 /var/www/bin/bgpctl
mkdir /var/www/etc
cp /etc/resolv.conf /var/www/etc
chmod 4555 /var/www/bin/ping* /var/www/bin/traceroute*

5. Если на предыдущем шаге вы включали ping и traceroute, то проверьте /etc/fstab на отсутствие флага nosuid для /var. Не забудьте перемонтировать /var либо перезагрузиться.

6. Настраиваем pf.conf

ext_if = "vio0"

table <admins> { 192.168.0.0/24 2001:67c:aaaa::/64 }
table <routers> { 192.168.2.0/24 2001:67c:bbbb::/64 }

set block-policy drop
set skip on lo

#block return   # block stateless traffic
#pass           # establish keep-state

match in all scrub (no-df random-id max-mss 1440)

block all

pass out quick
pass in on egress proto tcp from <admins> to (egress) port { 22 }
pass in on egress proto tcp from <routers> to (egress) port { 179 }
pass in on egress proto tcp from any to (egress) port { 80 443 }
pass in on egress proto icmp from any to (egress)
pass in on egress proto icmp6 from any to (egress)

7. Запускаем демоны

rcctl enable httpd
rcctl enable slowcgi
rcctl enable bgpd
rcctl start httpd
rcctl start slowcgi
rcctl start bgpd
pfctl -f /etc/pf.conf

8. Вуаля!
Поделиться с друзьями
-->

Комментарии (0)