Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2015-03-17 17:20:07

  meciarz - Użytkownik

meciarz
Użytkownik
Zarejestrowany: 2010-06-08

FreeBSD z mac_portacl i problem z unbound

Witam,
mam u siebie postawione FreeBSD 10.1

Kod:

# uname -a
FreeBSD gw.lan 10.1-RELEASE-p6 FreeBSD 10.1-RELEASE-p6 #0: Tue Feb 24 19:00:21 UTC 2015     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64

Potrzebuję zablokować bindowania na porty wszystkim użytkownikom na wszystkich portach i zezwolić tylko na wybrane.
Doszukałem się modułu mac_portacl. Domyślnie ostatni możliwy port to:

Kod:

net.inet.ip.portrange.last: 65535

więc pomyślałem sobie, że włącze portacl i ustawie wskazany nr portu, jako ostatni chroniony

Kod:

# sysctl security.mac.portacl
security.mac.portacl.enabled: 1
security.mac.portacl.suser_exempt: 1
security.mac.portacl.autoport_exempt: 1
security.mac.portacl.port_high: 65535

Sprawdzam na użytkoniku, np. nc -l 8080, no wszystko fajnie Operation not permitted.

Na tej maszynce potrzebuję mieć uruchomiony lokalny cache dns - domyślny w systemie - unbound.
Dodałem więc regułkę o bindowanie na portach 53 tcp i udp dla użytownika unbound (uid 59), wygląda to tak:

Kod:

security.mac.portacl.rules=uid:59:tcp:53,uid:59:udp:53

ok, unbound się uruchamia i nasłuchuje na porcie 53.

Kod:

sockstat -4l
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
unbound  unbound    65917 3  udp4   *:53                  *:*
unbound  unbound    65917 4  tcp4   *:53                  *:*

no ale

Kod:

# host dug.net.pl
Host dug.net.pl not found: 2(SERVFAIL)

Unbound nie potrafi odpytać podanego forwarda, w logach można zobaczyć:

Kod:

# tail /var/log/debug.log
unbound: [78958:0] debug: failed address 0.0.0.0 port 40476
unbound: [78958:0] debug: failed address 0.0.0.0 port 12003
unbound: [78958:0] debug: failed address 0.0.0.0 port 38110

Dobra, spróbuję zmusić unbound aby korzystał przy tym z konkretnych portów zamiast losowych, więc dodałem w configu na sztywno ok 10-ciu portów

Kod:

cat /var/unbound/unbound.conf
server:
    ...
    outgoing-port-permit: 47681
    outgoing-port-permit: 55655
    outgoing-port-permit: 36989
    ...

Rozszerzyłem stosownie regułkę (na tcp i udp dla podanych)

Kod:

security.mac.portacl.rules=uid:59:tcp:53,uid:59:udp:53,uid:59:udp:47681,uid:59:tcp:47681,...

No i jak się domyślacie w niczym mi to nie pomaga, więc mam do Was pytanie jak to ogarnąć?
Jak zmusić unbound do działania w takich warunkach lub też jak inaczej zabronić bindowania na porty wszystkim użytkownikom?
Przy założeniu takim, że wykorzystujemy tylko to co oferuje domyślna instalacja FreeBSD

Wyszło przydługawo, ale starałem się opisać krok po kroku co próbowałem.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.010 seconds, 12 queries executed ]

Informacje debugowania

Time (s) Query
0.00012 SET CHARSET latin2
0.00007 SET NAMES latin2
0.00150 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.189.170.17' WHERE u.id=1
0.00099 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.189.170.17', 1713245113)
0.00058 SELECT * FROM punbb_online WHERE logged<1713244813
0.00073 DELETE FROM punbb_online WHERE ident='47.128.32.34'
0.00075 SELECT topic_id FROM punbb_posts WHERE id=284797
0.00095 SELECT id FROM punbb_posts WHERE topic_id=27183 ORDER BY posted
0.00060 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=27183 AND t.moved_to IS NULL
0.00007 SELECT search_for, replace_with FROM punbb_censoring
0.00089 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=27183 ORDER BY p.id LIMIT 0,25
0.00095 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=27183
Total query time: 0.0082 s