Hello Stuart,

thank you for fixing and feedback on the tacacs+ port.  I've learned a lot here.

Sorry for late response, I was missing some commmands in accounting log
and command denies were not enforced properly and I needed to find out
why. I was missing part of config on the catalyst side, so the port
works ok.

Re-tested:
  - acls 
  - password backend (running as root)
  - cleartext backend
  - bcrypt backend
  - command permit/deny

I've also tested this with HP5800 Series switch and both logging and
command enforcement work.

There's a minor typo in tac_plus.rc, there's slash missing after
${TRUEPREFIX}

--- tac_plus.rc.orig    Thu Oct 25 14:21:34 2018
+++ tac_plus.rc Thu Oct 25 14:21:43 2018
@@ -2,7 +2,7 @@
 #
 # $OpenBSD$

-daemon="${TRUEPREFIX}sbin/tac_plus"
+daemon="${TRUEPREFIX}/sbin/tac_plus"
 daemon_flags="-C ${SYSCONFDIR}/tac_plus.conf -Q _tacacs -U _tacacs"

 . /etc/rc.d/rc.subr
###

What is the case with:
${MODPY_BIN} ${MODPY_LIBDIR}/compileall.py ${PREFIX}/share/tacacs/do_auth.py ?

/usr/ports/infrastructure/bin/portcheck complained:

Python module without compiled version, consider using ${MODPY_BIN}
${MODPY_LIBDIR}/compileall.py: share/tacacs/do_auth.py

is this the case where packages don't provide compiled python by
default?

Would a more minimal config as sample make sense? (please see attachment:)

Thank you again,
Jan



> : daemon="/usr/local/sbin/tac_plus"
> 
> should use ${TRUEPREFIX}, see all other rc scripts in ports
> 
> : daemon_flags="-C /etc/tac_plus.conf -Q _tacacs -U _tacacs"
> 
> should use ${SYSCONFDIR}
> 
> : Before running tac_plus, a configuration file needs to be created.
> : Copy the provided ${PREFIX}/share/tacacs/tac_plus.conf.sample to
> : /etc/tac_plus.conf and modify as necessary.
> 
> should use @sample to copy the file, so it's registered in the package
> database (e.g. used by sysmerge -p, sysclean, pkg_delete -c) and you can
> set permissions/ownership appropriately.
> 
> editing the config file is expected, it doesn't really need a MESSAGE
> for this.
> 
> : encrypt(1) could be used to generate hashes for login = des $HASH
> : directives.
> 
> encrypt(1) doesn't generate des hashes, so by itself this adds confusion.
> I'd modify the sample config to explain it better and get rid of MESSAGE
> completely.
> 
> :    # use `encrypt -p' to get blowfish hash (see: man encrypt(1))
> :    # test123
> :    login = des $2b$10$rhfyMY/VeB7Tm1nCy4hDpeJNcfI32EcEZBYZ1sy/qpQf5YhAahVqG
> 
>      # "login = des" actually uses the OS crypt() function, it is not really
>      # using DES encryption. On OpenBSD this uses bcrypt. See encrypt(1) to
>      # generate suitable hashes.
> 
> :         ${MODPY_BIN} ${MODPY_LIBDIR}/compileall.py 
> ${PREFIX}/share/tacacs/do_auth.py
> 
> that's not needed here, but on the other hand the #! line does need fixing
> (MODPY_ADJ_FILES = do_auth.py) and it's not marked as executable.
> 
> : CONFIGURE_ENV =         YACC="${LOCALBASE}/bin/bison -y"
> : YACC =                  bison -y
> : 
> : pre-configure:
> :         ln -sf ${LOCALBASE}/bin/bison ${WRKDIR}/bin/yacc
> 
> I think this whole lot can just be replaced by
> 
> CONFIGURE_ENV =         YACC=bison
> 
> : COMMENT =       version of Cisco System's TACACS+ AAA service
> 
> "the name of Cisco Systems, Inc. not be used in advertising or publicity
> pertaining to distribution of the program without specific prior
> permission"
> 
> Other things, the old tacacs+ package version was tacacs+-4.0.4ap1
> which compares as "newer" than 4.0.4.28, so needs EPOCH.
> 
> Picks up libwrap if present at build time.
> 
> Some patch parts are no longer needed.
> 
> Simpler to just remove the built tac_pwd rather than do a more complex
> patch to an automake-generated Makefile.
> 
> Above are addressed in the tar attached, does that still work ok for you?
> 
> 


# $OpenBSD$

key = "your key here"
accounting file = /var/log/tac_plus/tac.acct
# authentication users not appearing elsewhere via
# the file /etc/passwd
# 
# passwd backend needs tac_plus running a root,
# `cleartext' and `des' backends can run as 
# _tacacs:_tacacs
# 


acl = management_networks_acl {
        permit = ^192\.168\.50\.
        deny = .*
}

acl = monitoring_acl {
        permit = 192\.168\.10\.
        deny = .*
}

# administrators with direct enable mode access
group = admin {
        default service = permit
        service = exec {
            priv-lvl = 15
        }

        acl = management_networks_acl
}

# group for monitoring
group = monitoring {
        default service = deny

        service = exec {
            priv-lvl = 15
        }

        # COMWARE example
        cmd = display {
                permit mac-address
                deny .*
        }

        # IOS example
        cmd = show {
                permit version
                deny .*
        }

        acl = monitoring_acl
}

user = fred {
    # "login = des" actually uses the OS crypt() function, it is not really
    # using DES encryption. On OpenBSD this uses bcrypt. See encrypt(1) to
    # generate suitable hashes.   test123
    login = des $2b$10$rhfyMY/VeB7Tm1nCy4hDpeJNcfI32EcEZBYZ1sy/qpQf5YhAahVqG
    name = "Fred Flintstone"
    member = admin
}

user = wilma {
    login = cleartext test123
    name = "Wilma Flinstone"
    member = monitoring
}

# this would need tac_plus to run as root
user = homer  {
    login = file /etc/passwd
    member = monitoring
}

Reply via email to