Re: freeradius installation considerations

2002-08-15 Thread Ilguiz Latypov


On Thu, 15 Aug 2002, Marcel wrote:

 The only way I am thinking is that they have to start
 a browser and just serve to
 http://www.whatever.they.want.com and a basic homepage
 shows up to authenticate themafter they are
 authenticated they will be forwarded to the homepage
 the enteredor they are denied of course.

This can be done by employing the port forwarding feature of Linux 
Netfilter and other OS'es similar tools.  I heard of the NoCat open source 
project at 

http://nocat.net/

There is also a paper on a similar design at

http://www.nas.nasa.gov/Groups/Networks/Projects/Wireless/index.html

Ilguiz



- 
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html



Re: Using Mgetty And freeRadius

2002-08-04 Thread Ilguiz Latypov


Bikrant,

On Sun, 4 Aug 2002, Bikrant Neupane wrote:

 Now, I want to authenticate dialin users against the
 freeradius while still using mgetty to receive the
 incoming calls.

I think the mgetty program only handles indications of incoming calls by
accessing serial port.  Once the CONNECT or CARRIER string is found, 
mgetty will fork and execute /bin/login which will inherit the serial port 
file handle as its stdin/stdout.

I believe it is /bin/login that outputs user name and password prompts and 
reads user input.  If your /bin/login is linked against libpam (type ldd 
/bin/login to find out), then /etc/pam.d/login contains the names of 
dynamically loaded PAM modules that get invoked through /bin/login's calls 
to libpam functions.

My /etc/pam.d/login shows indirect use of /etc/pam.d/system-auth which in 
turn will call /lib/security/pam_unix with the shadow parameter.  The 
latter will verify the hash of user password against /etc/shadow.

It seems you want to pass user name and password to a RADIUS server.  
There is software that glues serial input/output with RADIUS interaction.  
I was told portslave can do that.  I guess such direct coupling allows for
better control over services that can be started on serial port.  I.e. the
RADIUS server can send a text of menu to display, and initiate different
authentication methods based on user answer.

I understand there is another approach where RADIUS server is used 
strictly for user authentication.  It is sufficient to encapsulate the 
RADIUS protocol into a pluggable authentication module.  This technique 
would line up well with other authentication PAMs and will have a clear 
scope of action.

I think that pam_radius pluggable authentication module can be found in
FreeRADIUS repository.  I wonder if it is possible to put pam_radius into
the password line in /etc/pam.d/login instead of (or in addition to) the
indirect invokation of pam_unix.  I had no personal experience though.

Ilguiz


- 
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html



Re: promiscuous authentication

2002-07-16 Thread Ilguiz Latypov


On Tue, 16 Jul 2002, Alan DeKok wrote:

   In addition, why would you want to expose a key piece of software to
 any random packet from the internet?  Is it *really* that hard to type
 in the 10-100 client IP addresses?

I was testing the perl Authen::Radius module with its make test command
and typed in the external IP address of the FreeRadius host instead of
internal one at the prompt.

In a bigger picture, I was concerned about how much the Radius client can
be separated from the Radius server in terms of networking.  Again, I
didn't bother to read documentation and only searched the latest mail list
archive.  I am in the early learning stage here!

Ilguiz


- 
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html



Re: Trouble with 20020715 snapshot

2002-07-16 Thread Ilguiz Latypov


I do have libltdl installed on my system as part of RedHat's libtool RPM 
package.  However, the configure script fails to find the header file 
which exists:

===
$ ./configure --without-snmp \
  --with-system-libtool --disable-ltdl-install \
  --with-ltdl-lib=/usr/lib --with-ltdl-include=/usr/include
[...]
checking for lt_dlinit in -lltdl... yes
checking for ltdl.h... no
configure: warning: libltdl not installed, but installation disabled
[...]

$ rpm -qf /usr/include/ltdl.h 
libtool-1.4.2-5
===

I hacked up the top level configuration files from yesterday's CVS
checkout to reuse the latest auto tools (mine are autoconf 2.53 and
automake 1.6.1).  With those modifications I was able to get rid of link
failure in src/main.  

The bootstrap script allows to remove automatically generated files from
the CVS repository.  However, some constructs in the updated configure.in
are valid only with the newer autoconf.  Perhaps, putting AC_PREREQ(2.53)  
into configure.in could be a good precaution.

Another small problem was due to the sql_fetch_row() prototypes in 

  freeradius/radiusd/src/modules/rlm_sql/drivers/rlm_sql_postgresql/sql_postgresql.h

and

  freeradius/radiusd/src/modules/rlm_sql/drivers/rlm_sql_unixodbc/sql_unixodbc.h

not synchronized with their .c counterparts.  Does the patch included
below fix those prototypes correctly?  Thank you,

Ilguiz

On Tue, 16 Jul 2002, Alan DeKok wrote:

   If you don't have libltdl onyour system already, then the build
 won't find *any* ltdl.h, and will die.


===
The following file was modified in freeradius/radiusd/src/include:

NameOld version New version Comment
--- --- ---
autoconf.h.in   1.1.1.1 Removed

The accompanying log:

remove automatically generated file

---
The following file was modified in freeradius/radiusd/src/modules/rlm_eap:

NameOld version New version Comment
--- --- ---
Makefile1.1.1.1 Removed

The accompanying log:

remove automatically generated file

---
The following file was modified in 
freeradius/radiusd/src/modules/rlm_eap/types/rlm_eap_tls:

NameOld version New version Comment
--- --- ---
Makefile1.1.1.1 Removed

The accompanying log:

remove automatically generated file

---
The following file was modified in freeradius/radiusd/src/modules:

NameOld version New version Comment
--- --- ---
rules.mak   1.1.1.1 1.2 

The accompanying log:

Specify full path when copying files

The diff of the modified file(s):

--- rules.mak   15 Jul 2002 18:33:26 -  1.1.1.1
+++ rules.mak   16 Jul 2002 17:50:14 -  1.2
 -109,11 +109,11 
 ###
 static: $(TARGET).a  $(RLM_UTILS)
[ x$(RLM_SUBDIRS) = x ] || $(MAKE) $(MFLAGS) WHAT_TO_MAKE=static common
-   cp $ $(top_builddir)/src/modules/lib
+   cp $ $(abs_top_srcdir)/src/modules/lib
 
 dynamic: $(TARGET).la $(RLM_UTILS)
[ x$(RLM_SUBDIRS) = x ] || $(MAKE) $(MFLAGS) WHAT_TO_MAKE=dynamic common
-   cp $ $(top_builddir)/src/modules/lib
+   cp $ $(abs_top_srcdir)/src/modules/lib
 
 ###
 #

---
The following file was modified in 
freeradius/radiusd/src/modules/rlm_eap/types/rlm_eap_md5:

NameOld version New version Comment
--- --- ---
Makefile1.1.1.1 Removed

The accompanying log:

remove automatically generated file

---
The following file was modified in 
freeradius/radiusd/src/modules/rlm_sql/drivers/rlm_sql_unixodbc:

NameOld version New version Comment
--- --- ---
sql_unixodbc.h  1.1.1.1 1.2 

The accompanying log:

Syncronize function prototypes

The diff of the modified file(s):

--- sql_unixodbc.h  15 Jul 2002 18:33:26 -  1.1.1.1
+++ sql_unixodbc.h  16 Jul 2002 17:51:18 -  1.2
 -28,7 +28,7 
 intsql_store_result(SQLSOCK * sqlsocket, SQL_CONFIG *config);
 int

Re: Trouble with 20020715 snapshot

2002-07-16 Thread Ilguiz Latypov


On Tue, 16 Jul 2002, Ilguiz Latypov wrote:

 The bootstrap script allows to remove automatically generated files from
 the CVS repository.

I forgot to attach the new files:

   acinclude.m4

which is former aclocal.m4 without libtool.m4 and AC_CHECK_TYPE_INCLUDE 
and the

   bootstrap

script.

=
dnl See whether we need a declaration for a function.
dnl RADIUSD_NEED_DECLARATION(FUNCTION [, EXTRA-HEADER-FILES])
AC_DEFUN(RADIUSD_NEED_DECLARATION,
[AC_MSG_CHECKING([whether $1 must be declared])
AC_CACHE_VAL(radius_cv_decl_needed_$1,
[AC_TRY_COMPILE([
#include stdio.h
#include string.h
#ifdef HAVE_UNISTD_H
#include unistd.h
#endif
#ifdef HAVE_CRYPT_H
#include crypt.h
#endif
#ifdef HAVE_ERRNO_H
#include errno.h
#endif
#ifdef HAVE_RESOURCE_H
#include resource.h
#endif
#ifdef HAVE_GETOPT_H
#include getopt.h
#endif
#ifdef HAVE_MALLOC_H
#include malloc.h
#endif
#ifdef HAVE_UTMP_H
#include utmp.h
#endif
#ifdef HAVE_UTMPX_H
#include utmpx.h
#endif
#ifdef HAVE_SYS_SELECT_H
#include sys/select.h
#endif
#ifdef HAVE_DLFCN_H
#include dlfcn.h
#endif
#ifdef HAVE_REGEX_H
#include regex.h
#endif
#ifdef HAVE_SYSLOG_H
#include syslog.h
#endif
#ifdef HAVE_INTTYPES_H
#include inttypes.h
#endif
#ifdef HAVE_STDINT_H
#include stdint.h
#endif
#ifdef HAVE_ARPA_INET_H
#include arpa/inet.h
#endif
$2],
[char *(*pfn) = (char *(*)) $1],
eval radius_cv_decl_needed_$1=no, eval radius_cv_decl_needed_$1=yes)])
if eval test \`echo '$radius_cv_decl_needed_'$1`\ = yes; then
  AC_MSG_RESULT(yes)
  radius_tr_decl=NEED_DECLARATION_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
  AC_DEFINE_UNQUOTED($radius_tr_decl)
else
  AC_MSG_RESULT(no)
fi
])dnl

dnl Check multiple functions to see whether each needs a declaration.
dnl RADIUSD_NEED_DECLARATIONS(FUNCTION... [, EXTRA-HEADER-FILES])
AC_DEFUN(RADIUSD_NEED_DECLARATIONS,
[for ac_func in $1
do
RADIUSD_NEED_DECLARATION($ac_func, $2)
done
])

dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
dnl The program must properly implement --version.
AC_DEFUN(AM_MISSING_PROG,
[AC_MSG_CHECKING(for working $2)
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf.  Sigh.
if ($2 --version)  /dev/null  /dev/null 21; then
   $1=$2
   AC_MSG_RESULT(found)
else
   $1=$3/missing $2
   AC_MSG_RESULT(missing)
fi
AC_SUBST($1)])


dnl Checks to see if this is SUNPro we're building with
dnl Usage:
dnl AC_PROG_CC_SUNPRO
AC_DEFUN(AC_PROG_CC_SUNPRO,
[AC_CACHE_CHECK(whether we are using SUNPro C, ac_cv_prog_suncc,
[dnl The semicolon is to pacify NeXT's syntax-checking cpp.
cat  conftest.c EOF
#ifdef __SUNPRO_C
  yes;
#endif
EOF
if AC_TRY_COMMAND(${CC-cc} -E conftest.c) | egrep yes /dev/null 21; then
  ac_cv_prog_suncc=yes
else
  ac_cv_prog_suncc=no
fi])])

dnl ###
dnl #
dnl #  Look for SNMP in a variety of places.
dnl #
AC_DEFUN(SNMP_CHECKS, [
AC_SUBST(SNMP_LIBS)
AC_SUBST(SNMP_INCLUDE)

AC_MSG_CHECKING([for asn1.h])

dnl #
dnl #  First, see if we can build it WITHOUT using any special includes
dnl #
AC_TRY_COMPILE([
#ifdef HAVE_SYS_TYPES_H
#include sys/types.h
#endif
#ifdef HAVE_STDINT_H
#include stdint.h
#endif
#ifdef HAVE_STDIO_H
#include stdio.h
#endif
#ifdef HAVE_NETDB_H
#include netdb.h
#endif
#ifdef HAVE_UNISTD_H
#include unistd.h
#endif
#include asn1.h],
   [ int a = 1;],
   SNMP_INCLUDE=,
   SNMP_INCLUDE=)

dnl #
dnl #  If not, look for it in a number of directories.
dnl #
if test x$SNMP_INCLUDE = x; then
  old_CFLAGS=$CFLAGS
  for try in /usr/include/ucd-snmp /usr/local/include/ucd-snmp $snmp_include_dir; do
CFLAGS=$old_CFLAGS -I$try
AC_TRY_COMPILE([
#ifdef HAVE_SYS_TYPES_H
#include sys/types.h
#endif
#ifdef HAVE_STDINT_H
#include stdint.h
#endif
#ifdef HAVE_STDIO_H
#include stdio.h
#endif
#ifdef HAVE_NETDB_H
#include netdb.h
#endif
#ifdef HAVE_UNISTD_H
#include unistd.h
#endif
#include asn1.h],
   [ int a = 1;],
   SNMP_INCLUDE=-I$try,
   SNMP_INCLUDE=)
if test x$SNMP_INCLUDE != x; then
  break;
fi
  done
  CFLAGS=$old_CFLAGS
fi

if test x$SNMP_INCLUDE = x; then
  AC_MSG_RESULT(no)
else
  AC_MSG_RESULT(yes)
  AC_DEFINE(HAVE_ASN1_H)
  
dnl #
dnl #  Check for the rest of the SNMP headers.
dnl #
  old_CFLAGS=$CFLAGS
  CFLAGS=$CFLAGS $SNMP_INCLUDE

  AC_MSG_CHECKING(for snmp.h)
AC_TRY_COMPILE([
#ifdef HAVE_SYS_TYPES_H
#include sys/types.h
#endif
#ifdef HAVE_STDINT_H
#include stdint.h
#endif
#ifdef HAVE_STDIO_H
#include stdio.h
#endif
#ifdef HAVE_NETDB_H
#include netdb.h
#endif
#ifdef HAVE_UNISTD_H
#include unistd.h
#endif
#ifdef HAVE_ASN1_H
#include asn1.h
#endif
#include snmp.h],
   [ int a = 1;],
   [AC_DEFINE(HAVE_SNMP_H) ac_cv_header_snmp_h=yes])
if test x

Re: Trouble with 20020715 snapshot

2002-07-16 Thread Ilguiz Latypov


Alan,

On Tue, 16 Jul 2002, Alan DeKok wrote:

   My thoughts are that the patches are a nice idea, but there's no way
 I'm going to re-write the autoconf stuff just before 0.6.1 is
 released.

My patch is only a suggestion, and thanks for even paying any attention to 
it.

   Also, I'm *never* going to willingly use automake.

I understand that one of the drawbacks of automake is its build rules
based on naming conventions.  This is difficult to comprehend.  On the
positive side, automake would probably help reduce areas for human errors.

Luckily, automake is not employed in radiusd tree and the patch didn't
introduce implicit automake rules.

I only wanted automake to create symlinks install-sh, mkinstalldirs and
missing.  It turns out the same can be achieved without adding 
AM_INIT_AUTOMAKE to configure.in.

   So what, exactly, are the benefits of your patches?  Fixing some
 ltdl installation issues?  If so, why not supply a minimal patch to do
 just that?

The only benefit of the patch as I see is supposedly increased
portability of the radiusd build process.  I admit this is far from any 
reasonable application.

The configure scripts in subdirectories were not taken care of.

   I'd rather see a series of small patches to add functionality
 piecemeal, than one large patch which changes everything, and adds a
 large number of new things.

Agree.

Ilguiz


- 
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html



promiscuous authentication

2002-07-15 Thread Ilguiz Latypov


Hello,

Is this a good idea to allow testing of a given user name/password pair
from anywhere in internet?  I modified the latest conffile.c to accept
authentication requests from anywhere by using the following directive:

  client 0.0.0.0/0 {
  secret  = XXX
  shortname   = superbt.ca
  }

As you see, the significant part of netmask is reduced to 0 leftmost bits.  
Is this a safe approach?  The patch is enclosed.

-- 
Ilguiz Latypov
computer programmer
SuperBT Canada, Inc
153 Union St. E.
Waterloo, Ontario N2J 1C4
Canada

GMT-4 day time tel.   +1 (519) 569-7818
GMT-4 night time tel. +1 (519) 569-7193

==
diff -u ../../../radiusd.orig/src/main/conffile.c ./conffile.c
--- ../../../radiusd.orig/src/main/conffile.c   Mon Jun 10 11:06:16 2002
+++ ./conffile.cTue Jul  9 19:47:58 2002
 -1145,15 +1145,16 
int i, mask_length;
 
mask_length = atoi(netmask + 1);
-   if ((mask_length = 0) || (mask_length  32)) {
+   if ((mask_length  0) || (mask_length  32)) {
radlog(L_ERR, %s[%d]: Invalid value '%s' for IP 
network mask.,
filename, cs-item.lineno, netmask + 
1);
return -1;
}

-   c-netmask = (1  31);
-   for (i = 1; i  mask_length; i++) {
-   c-netmask |= (c-netmask  1);
+   c-netmask = 0;
+   for (i = 1; i = mask_length; i++) {
+   c-netmask = 1;
+   c-netmask |= (1  31);
}
 
*netmask = '\0';
==



- 
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html



Re: promiscuous authentication

2002-07-15 Thread Ilguiz Latypov


I agree that promiscuous authentication is not how FreeRadius was supposed
to work.  Sorry for not reading the documentation first.  I thought that 
communication between Radius clients and servers is secure by design.  Is 
this not always true?

Ilguiz

On Mon, 15 Jul 2002, Alan DeKok wrote:

  Is this a good idea to allow testing of a given user name/password pair
  from anywhere in internet?
 
   I would say no.  I'm not sure why it would be necessary, and it's a
 bad idea to expose a RADIUS server to anyone's traffic.


- 
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html