authpf does authenticate but gives no shell

Marco van Lienen marco+freebsd-pf at lordsith.net
Tue May 31 03:28:58 PDT 2005


Hello list,

I'm trying to setup authpf on a RELENG_5_4 box.
After setting up the environment for authpf, when I try to logon to this box
as a user which should be given /usr/sbin/authpf as the login shell I get the
"Hello $user, You are authenticated from host "$user_ip" but then I don't get
a prompt.
When I logon to the same box as a regular user I do see the authpf user logged
in making use of authpf.

Usernames changed for example purposes:

$ ps auxww|grep authpf
foo  1383  0.0  0.4  1540   952  p0  S+   12:26PM   0:00.00 grep authpf
bar  1361  0.0  0.5  1672  1376  p1  Ss+  12:24PM   0:00.01 -authpf:
bar at 10.31.12.165 (authpf)

The authpf box is a box with 1 NIC and it has regular and admin users (admin users
need to receive less restrictive access into the network).
All users are allowed to ssh into the box but only the admin users should be
allowed to ssh further into the network.
Regular users may login but are only allowed to do local work.

Here is how I've setup the environment.

In /etc/pf.conf I have:

# interface definitions
#
if_loop = "lo0"
if_pub = "em0"
if_log = "em0"

#
# TCP services
sshd = "22"

block in log
block out

#
# pass all loopback traffic
pass quick on $if_loop

# ICMP
pass in quick inet proto icmp icmp-type 8 code 0 keep state
pass in quick inet proto icmp icmp-type 3 code 4 keep state
pass in quick inet proto icmp icmp-type 11       keep state

pass out quick inet proto icmp keep state

#
# input rules
pass in log quick on $if_pub proto tcp from any port > 1023 to port $sshd
flags 
S/SA keep state
anchor authpf

pass out quick on $if_pub proto udp keep state

In /etc/authpf/ I've created:

authpf.allow (contains 1 admin user only)
authpf.conf (empty zero-byte file)
authpf.message (additional text which is being echoed upon login)
authpf.rules

authpf.rules:
# interface definitions
#
if_pub = "em0"

#
# input rules
pass in quick on $if_pub proto tcp from $user_ip to port = ssh flags S/SA keep
state

#
# output rules
pass out log quick on $if_pub proto tcp to 10.31.12.165 port = ssh flags S/SA
modulate state
pass out quick on $if_pub proto udp keep state

As you can see, the 1 admin user is allowed to establish an ssh connection to
host: 10.31.12.165.

A `pfctl -a anchor -sr` shows that the anchor is being picked up and the
authpf.rules file has been parsed and activated:

# pfctl -a authpf -sr
No ALTQ support in kernel
ALTQ related functions disabled
pass in quick on em0 inet proto tcp from 10.31.12.165 to any port = ssh flags
S/SA keep state
pass out log quick on em0 inet proto tcp from any to 10.31.12.165 port = ssh
flags S/SA modulate state
pass out quick on em0 proto udp all keep state

I've setup an additional login class through login.conf(5):

authpf:\
        :shell=/usr/sbin/authpf:\
        :tc=default:

I've ran cap_mkdb /etc/login.conf and there is a new login.conf.db.

I've tried only changing the class entry via chpass(1) to authpf and keeping
the admin users' original shell (/usr/local/bin/bash (according to
/var/log/messages this wouldn't allow me onto the box; it was warning about wrong
shell or something)).
After then changing the user shell to /usr/sbin/authpf it atleast echoes the
Welcome text with the contents of /etc/authpf/authpf.message but then I don't
get a prompt to input shell commands.

Hope someone can help me out here.

Cheers.
Marco

-- 

WINDOWS: "Where do you want to go today?"
LINUX: "Where do you want to go tomorrow?"
BSD: "Are you guys coming or what?"


More information about the freebsd-pf mailing list