我在 FreeBSD 9 上使用 pf。sshd 已启动并且仅在环回上监听(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_配置(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 连接通过 rdr 规则重定向到 127.0.0.1 - SYN 数据包被发送到 127.0.0.1:tcp/22 (SYN_SENT)
但是127.0.0.1:tcp/22并未打开,显示为CLOSED。