pf - правило перенаправления не работает

Я использую pf на FreeBSD 9. sshd работает и слушает только loopback (127.0.0.1).

Попытка использовать правило перенаправления, чтобы разрешить сетевым хостам соединяться через ssh.

set block-policy drop
set skip on lo0
scrub in

no rdr on lo0 all
rdr on fxp0 inet proto tcp from any to (fxp0) port = ssh -> 127.0.0.1

block drop in log quick on ! lo inet from 127.0.0.0/8 to any
block drop log on fxp0 all
pass in quick on fxp0 inet proto tcp from any to 127.0.0.1 port ssh
pass out quick on fxp0 all keep state

По какой-то причине это не работает, и я не вижу связанных сообщений в pflog.

Пробовал также с rdr pass с тем же результатом.

Я вижу этот статус от pfctl -ss:

all tcp 127.0.0.1:22 (192.168.0.40:22) <- 192.168.0.252:65105   CLOSED:SYN_SENT

Когда я включаю запись для rdr, я вижу это:

rdr in on fxp0: 192.168.0.252.65105 > 127.0.0.1.22: Flags [S], seq 1927917349, win 65535, options [mss 1460,nop,wscale 3,sackOK,TS[|tcp]>

Что не так с моей настройкой?

Как получить больше вывода журнала?

1 ответ

Вы проверили свои прослушивающие адреса sshd?

$ netstat -a | grep ssh
tcp4       0      0 *.ssh                  *.*                    LISTEN
tcp6       0      0 *.ssh                  *.*                    LISTEN

Первый * означает, что sshd прослушивает все локальные адреса на машине, включая 127.0.0.1.

Sshd_config (5)

 ListenAddress
         Specifies the local addresses sshd(8) should listen on.  The fol-
         lowing forms may be used:

               ListenAddress host|IPv4_addr|IPv6_addr
               ListenAddress host|IPv4_addr:port
               ListenAddress [host|IPv6_addr]:port

         If port is not specified, sshd will listen on the address and all
         prior Port options specified.  The default is to listen on all
         local addresses.  Multiple ListenAddress options are permitted.
         Additionally, any Port options must precede this option for non-
         port qualified addresses.

Если sshd не прослушивает адрес 127.0.0.1, он отображается как CLOSED:SYN_SENT in pfctl -ss выход.

netstat вывод после создания sshd слушать только на 192.168.10.114.

$ netstat -a | grep ssh
tcp4       0      0 192.168.10.114.ssh     *.*                    LISTEN

При попытке ssh к этой машине, pfctl -ss вывод как ниже.

$ pfctl -ss
all tcp 127.0.0.1:22 (192.168.10.114:22) <- 192.168.10.107:50701       CLOSED:SYN_SENT

ssh-соединение перенаправляется на 127.0.0.1 по правилу rdr - пакет SYN отправляется на 127.0.0.1:tcp/22 (SYN_SENT)

Однако 127.0.0.1:tcp/22 не открыто, оно отображается как ЗАКРЫТО.

Другие вопросы по тегам