On Thu, Oct 13, 2022 at 10:11:39PM +1000, Jonathan Matthew wrote:
> While working on ypconnect(2), Theo suggested that ypldap(8) should
> not default to plaintext LDAP connections, since the data it's dealing with
> is pretty important to the security of the system.  Here's a straightforward
> diff implementing that, defaulting to what was previously called 'tls'
> (STARTTLS on port 389), and adding a 'notls' option for plaintext.
> 
> ok?  other opinions on what this option should be called?

Given TLS and STARTTLS, "plain" might be a tad clearer as "notls" could
still be understood as no-TLS-but-try-STARTTLS.

Given the existing "tls" and "ldaps" keywords, I thnk "ldap" would be
most clear and consistent.


> Index: parse.y
> ===================================================================
> RCS file: /cvs/src/usr.sbin/ypldap/parse.y,v
> retrieving revision 1.36
> diff -u -p -u -p -r1.36 parse.y
> --- parse.y   13 Oct 2022 04:55:33 -0000      1.36
> +++ parse.y   13 Oct 2022 08:13:21 -0000
> @@ -107,7 +107,7 @@ typedef struct {
>  %token       SERVER FILTER ATTRIBUTE BASEDN BINDDN GROUPDN BINDCRED MAPS 
> CHANGE DOMAIN PROVIDE
>  %token       USER GROUP TO EXPIRE HOME SHELL GECOS UID GID INTERVAL
>  %token       PASSWD NAME FIXED LIST GROUPNAME GROUPPASSWD GROUPGID MAP
> -%token       INCLUDE DIRECTORY CLASS PORT ERROR GROUPMEMBERS LDAPS TLS CAFILE
> +%token       INCLUDE DIRECTORY CLASS PORT ERROR GROUPMEMBERS LDAPS TLS NOTLS 
> CAFILE
>  %token       BIND LOCAL PORTMAP BINDEXT CERTFILE KEYFILE
>  %token       <v.string>      STRING
>  %token  <v.number>   NUMBER
> @@ -366,9 +366,10 @@ diropt           : BINDDN STRING                         
> {
>               }
>               ;
>  
> -ssl          : /* empty */                           { $$ = 0; }
> +ssl          : /* empty */                           { $$ = F_STARTTLS; }
>               | LDAPS                                 { $$ = F_SSL; }
>               | TLS                                   { $$ = F_STARTTLS; }
> +             | NOTLS                                 { $$ = 0; }
>               ;
>  
>  directory    : DIRECTORY STRING port ssl {
> @@ -556,6 +557,7 @@ lookup(char *s)
>               { "map",                MAP },
>               { "maps",               MAPS },
>               { "name",               NAME },
> +             { "notls",              NOTLS },
>               { "passwd",             PASSWD },
>               { "port",               PORT },
>               { "portmap",            PORTMAP },
> Index: ypldap.conf.5
> ===================================================================
> RCS file: /cvs/src/usr.sbin/ypldap/ypldap.conf.5,v
> retrieving revision 1.28
> diff -u -p -u -p -r1.28 ypldap.conf.5
> --- ypldap.conf.5     13 Oct 2022 04:55:33 -0000      1.28
> +++ ypldap.conf.5     13 Oct 2022 08:13:21 -0000
> @@ -119,15 +119,19 @@ directory are used to construct YP map e
>  .Bl -tag -width Ds
>  .It Ic directory Ar hostname Oo Ic port Ar port Oc Oo tls Oc Brq ...
>  Defines a directory by hostname and optionally port number.
> -If the
> +The
>  .Ar tls
> -argument is not specified, no transport-level security will be used.
> +argument specifies the transport-level security used for the connection.
>  Valid options are:
>  .Bl -tag -width Ds
>  .It Ic tls
> -Use STARTTLS to negotiate TLS, by default on port 389.
> +Use STARTTLS to negotiate TLS on port 389 unless an alternate port is
> +specified.
> +This is the default.
>  .It Ic ldaps
> -Connect with TLS enabled, by default on port 636.
> +Connect with TLS enabled on port 636 unless an alternate port is specified.
> +.It Ic notls
> +Connect with no transport-level security.
>  .El
>  .El
>  .Pp
> 

Reply via email to