Я использую 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]>
Что не так с моей настройкой?
Как получить больше результатов журнала?
Вы проверили свои адреса прослушивания 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 в 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 не открыт, он отображается как ЗАКРЫТО.