[Koha] Securing login pages

Jason Stephenson jstephenson at mvlc.org
Sat Aug 23 03:11:11 NZST 2008


Quoting "Joe Atzberger" <ohiocore at gmail.com>:

> Chris --
>
> I think Jason means just serve the whole site as HTTPS, which is what we do
> and it works fine.  No template modifications are required.  The Apache
> config looks like:

Actually, no, I don't, but for what I mean to work, you will need to  
serve the whole site as SSL.

What we do on our mail server is force everyone using the Horde email  
client to use a SSL session. One way to do it is to use a rewrite rule  
in your *:80 virtual host:

<VirtualHost *:80>
         ServerName host.domain.tld
         Options +Includes
         RewriteEngine On
         RewriteRule ^/?(horde|dspam)/?(.*)$ https://host.domain.tld/$1/$2
         DirectoryIndex index.html index.php
</VirtualHost>

The above could be modified to work with a single page as well.

RewriteRule ^/?(login.pl)$ https://host.domain.tld/$1

That assumes, of course, that your page is in the document root for your site.

The above essentially rewrites the URL to force SSL on. You can also  
set certain locations so that they Require SSL.

When I sent my short message before, I neglected to mention that it is  
easiest to set up with a RewriteRule.

Note that I have not tried any of this with Koha, yet, so I don't know  
exactly what magic sauce you'd need in httpd.conf to make the login  
pages force SSL connections, but the above is 1 way that it is  
generally done.

Settings can get more complicated, and more useful, as I mention below.

>
> <VirtualHost *:443>
>    ServerName whoever.kohalibrary.com
>    SSLEngine on
>    SSLCertificateFile /etc/apache2/ssl.crt/whoever.kohalibrary.com.crt
>    SSLCertificateKeyFile
> /etc/apache2/ssl.key/whoever.kohalibrary.com.plainkey
> ....
>
> SSL protects against the exposure of data in transit, like say, during
> update of a borrower's password on the staff interface.  Nothing special
> gets done to that data, so it is just POSTed like any other form.  But SSL
> keeps it from being readily sniffable.  It can also be used for more
> advanced forms of authentication like client side certs (but if you're not a
> government contractor, it's unlikely your library needs to be *that* locked
> down).


SSL does 3 things:

1. It encrypts data in transit to prevent eavesdropping.
2. It can verify that the site you are connecting to is the site that  
it claims to be, but only if you trust the certifying authority.
3. It can verify that the person visiting the site is the person that  
they claim to be, again, only if you trust the certifying authority.

I have a server set up where a private location on the main site  
requires that anyone connecting to it use SSL and that they present a  
certificate that has been signed by my personal certificate authority.  
If you don't have it, you don't get in. This not only stops  
eavesdropping and assures that the users are connecting to the proper  
site, it also guarantees that only "authorized" people are using the  
site. It is also a very simple thing to revoke someone's certificate  
to block future access if their certificate has been abused.

I have long thought that SSL has been way underutilized for  
authentication scenarios such as I describe above. Many sites still  
rely on passwords and account names. Properly configured, a web site  
can even determine a particular user from information in the  
certificate, thus eliminating the need for a username/password  
combination when a certificate is used for authentication.

Of course, the user can (and should) use a password when importing  
their certificate into their certificate store if they fear their  
computer being stolen or used by someone else.

Sorry for the digression, but SSL has been one of my pet issues lately.

Cheers,
Jason

>
> --Joe Atzberger,
> LibLime, Systems Administrator
>
> On Fri, Aug 22, 2008 at 9:42 AM, Chris Cormack  
> <chris at bigballofwax.co.nz>wrote:
>
>> Hi Jason
>>
>> Yep that would work fine, if the login pages were separate urls,
>> instead they can be the same url as a page you might not want to
>> server ssl. Eg opac-main.pl :)
>>
>> So you would have to rejig some timeplates too.
>>
>> Chris
>>
>> On Sat, Aug 23, 2008 at 1:01 AM, Jason Stephenson <jstephenson at mvlc.org>
>> wrote:
>> > If you are using Apache to serve your Koha pages, then you can
>> > configure individual pages to force SSL.
>> >
>> > Check the Apache documentation for Location and SSL.
>> >
>> >
>> >
>> >
>> > _______________________________________________
>> > Koha mailing list
>> > Koha at lists.katipo.co.nz
>> > http://lists.katipo.co.nz/mailman/listinfo/koha
>> >
>> _______________________________________________
>> Koha mailing list
>> Koha at lists.katipo.co.nz
>> http://lists.katipo.co.nz/mailman/listinfo/koha
>>
>



More information about the Koha mailing list