Mar 212013
 

seafilelogoSeafile is a cool project about building a private “Dropbox-like” system.

Although young, it looks VERY promising and it is well documented.

The only shadow part is that if you follow the manual step by step you end up in having an HTTP web server frontend which is definitely not perfect if you’re looking for security.

Info about how to decently configure Apache2 are a bit dispersed on multiple sites, hence I’ve decided to detail in this post the few simple steps you need to achieve a Seafile based private cloud where even the  web frontend works in HTTPS.

Let’s pick up from where you end up if you follow the instructions published by Seafile Team.

Continue reading »

Apr 062011
 

Few notes to myself, to avoid forgetting a cool thing I’ve just learned.

The need is to implement radius based authentication to access a directory on Apache2 Web server.

Here’s how to proceed (instructions have been tested on an Ubuntu 10.10).

First, you need to install the needed module for Radius authentication on Apache2, using the command:

apt-get install libapache2-mod-auth-radius

Then, you need to enable it with command:

a2enmod auth_radius

You need now to make your apache web server aware of where to send authentication requests for Radius. There are two ways, depending if you want to make this configuration apache-wide (therefore edit /etc/apache2/http.conf) or if you want to limit it to a specific virtual host (thus you’ll edit /etc/apache2/sites-enabled/<yoursitename>.conf).

Add the line:

AddRadiusAuth <IP address of the Radius server>:<port where Radius service is listening> <shared secret> [timeout [:retries]]

Assuming you want to protect a specific directory called auth-test, you can insert the following directive in your site/virtualhost configuration file (/etc/apache2/sites-enabled/<yoursitename>.conf):

<Directory “/var/www/testmyauth”>
Options Indexes FollowSymlinks
AuthType Basic
AuthName “Roarin RADIUS Authentication”
AuthBasicAuthoritative Off
AuthBasicProvider radius
AuthRadiusAuthoritative on
AuthRadiusActive On
Require valid-user
</Directory>

 

Naturally you might add the above directives also in a .htaccess file in the directory you want to protect with Radius based authentication…

Finally, restart or reload you apache2 using one of the commands:

service apache2 reload

service apache2 restart

Enjoy 😉

Dec 092008
 

I’ve finally managed to get this working, so now I need to write some note in case I have to redo it in the future 🙂

This is short howto about enabling https and multiple virtual hosts on Apache 2.0.

Much of the instructions are copypasted from Debian Admin Website where I found great guide I’ve successfully followed.

First of all let’s check that we have all the needed components, or proceed to install them as follows:

Install apache2 in debian etch

#apt-get install apache2

Install openssl using the following command

#apt-get install openssl ssl-cert

Install PHP5 support for apache2 in debian etch

#apt-get install libapache2-mod-php5 php5-cli php5-common php5-cgi

Once you install apache server you need to Generate a certificate,Enable Apache SSL support and Configure your SSL options.

Generate A certificate

Generating a certificate will provide to protect the traffic exchanged between clients and your server, however it will be unsigned by a trusted certificate authority so it will generate warnings.

If you want to avoid these warning messages you need to get a trusted certificate from SSL certificate vendors.If you want to Generating an SSL certificate for Apache2 you need to use the openssl. This will ask you questions interactively then generate the certificate file appropriately.

Note:-For generating certificate you might have used the apache2-ssl-certificate command in debian sarge but in debian etch this command not available.If you want to generate certificates you need to use openssl from you command prompt Use the following command to generate certificates

#openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/apache.pem -keyout /etc/apache2/apache.pem

Now you’ll be prompted to configure the Certificate details. Answers are reflecting MY environment… yours might be different…

Generating a 1024 bit RSA private key
………………………………………….++++++
…………………………………….++++++
writing new private key to ‘/etc/apache2/apache.pem’
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [AU]:IT
State or Province Name (full name) [Some-State]: Italy
Locality Name (eg, city) []:Milan
Organization Name (eg, company) [Internet Widgits Pty Ltd]:The RoarinPenguin Inc.
Organizational Unit Name (eg, section) []: Certification Department
Common Name (eg, YOUR name) []: The RoarinPenguin
Email Address []:roarinpenguin@roarinpenguin.com

You ahould now have our certificate ready, thus you’ll proceed in setting the proper permissions:

#chmod 600 /etc/apache2/apache.pem

By default the server will listen for incoming HTTP requests on port 80 – and not SSL connections on port 443. So you need to enable SSL support by entering the following entry to the file /etc/apache2/ports.conf save and exit the file.

Listen 443

Enable SSL Support

If you want to enable SSL support for your apache web server you need to use the following command:

#a2enmod ssl
Module ssl installed; run /etc/init.d/apache2 force-reload to enable.

Now you need to restart the apache2 server using the following command

#/etc/init.d/apache2 restart

Configuring SSL Certificate to Virtual Hosts in Apache2

First you need to edit the /etc/apache2/sites-available/default file change

NameVirtualHost *
to

NameVirtualHost *:80
NameVirtualHost *:443

Now you need to configure Virtual hosts using port 80

My apache2.conf reads the following at file end:

# Include generic snippets of statements
Include /etc/apache2/conf.d/

NameVirtualHost *:80
NameVirtualHost *:443

# Include the virtual host configurations:
Include /etc/apache2/sites-enabled/
AddDefaultCharset utf-8
DefaultLanguage it
ServerAdmin
marco@rottigni.net
UseCanonicalName off
DocumentRoot /var/www
ServerName webby.rottigni.net

And my /etc/apache2/sites-available/default reads:

<VirtualHost *:80>
DocumentRoot /var/www/
ServerName
www.rottigni.net
<Directory "/var/www">
allow from all
Options +Indexes
</Directory>
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/www/
ServerName
www.rottigni.net
<Directory "/var/www">
allow from all
Options +Indexes
</Directory>
    SSLEngine on
    SSLCertificateFile /etc/apache2/apache.pem
</VirtualHost>

Then I’ve enabled several websites using command

a2ensite followed by site name you want to enable.

Configuration files for VirtualHosts are stored in

/etc/apache2/sites-available#

and the configuration for one of my blog reads

<VirtualHost *:80>
DocumentRoot /var/www/myblog
<Directory "/var/www/myblog">
allow from all
Options +Indexes
</Directory>
ServerName myblog.rottigni.net
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/www/myblog
<Directory "/var/www/myblog">
allow from all
Options +Indexes
</Directory>
ServerName myblog.rottigni.net
    SSLEngine on
    SSLCertificateFile /etc/apache2/apache.pem
</VirtualHost>

That should be everything… oh, and don’t forget to reload your Apache config:

# /etc/init.d/apache2 reload