Server Administration

Securing Apache and PHP in Ubuntu

Many of us know that Linux is a very secure system and Ubuntu is nowadays one of the most chosen options by many system administrators, however, a basic installation is not always perfect and we need to “touch things” in order to make it as good as possible.

The problem in Linux, specially in version 12.04, is that a basic installation of Apache 2 and PHP leaves a lot of clues about what we are actually using, so the ideal scenario would be to hide such information to avoid as much as possible an external attack because we have provided, for example, the PHP version that the system is using. Image that, for some reason, tomorrow somebody discovers a lack of security in our PHP version and we are announcing widely in the server’s headers that this version is the one we use. This could potentially be used by hackers in order to attack our systems.

As an example of this just use the following command agains the IP address of a plan Ubuntu installation with just Apache and PHP:

curl -X https://direcciondelservidor

you would probably get something like this:

Date: Fri, 19 Sep 2014 13:09:20 GMT

Server: Apache/2.2.22 (Ubuntu)
X-Powered-By: PHP/5.3.10-1ubuntu3.11

Obviously we are giving “too much” information to any possible attacker so what we need to do is to remove it. To do that we need to do the following steps:

Edit the file /etc/php5/apache2/php.ini and add or modify the following lines:

disable_functions = exec,system,shell_exec,passthru
register_globals = Off
expose_php = Off
display_errors = Off
track_errors = Off
html_errors = Off
magic_quotes_gpc = Off

Following that edit the file /etc/php5/apache2/conf.d/security and do the same operation but with the following lines:

ServerTokens Prod
ServerSignature Off
TraceEnable Off
Header unset ETag
FileETag None

Finally we need to edit the Apache config file where you have defined your website. If you have not changed the default one then it should be /etc/apache2/sites-available/default, and as before we need to add/edit some lines. These ones need to go where you have defined your VirtualHost block:

RewriteEngine On
RewriteCond %{REQUEST_METHOD} !^(GET|POST|HEAD)
RewriteRule .* – [R=405,L]

These lines require to have the Apache’s module mod_rewrite activated, so in order to make sure it is being used, execute the following command:

sudo a2enmod rewrite

And finally…

sudo service apache2 restart

If everything went fine we can execute again the curl command against our server and we will see something similar to this:

Date: Fri, 19 Sep 2014 13:17:29 GMT
Server: Apache
X-Frame-Options: SAMEORIGIN

Much better now, isn’t it?

 

Fixing Shellshock vulnerability in Ubuntu

These days we have heard about the Shellshock vulnerability that affects to many unix based OSs. Well, of course Linux is among them so it’s affected.

The first step is to check if you Linux (Ubuntu) version is affected, so in order to make a quick test open a terminal and run thefollowing commands (3 in total):

1)

env X='() { :;}; echo' /bin/cat /etc/passwd; echo 'Welcome to he Simple ShellShock Tester By Svieg';echo 'Your infos are at risk';

2)

env x='() { :;}; echo Your system is vulnerable update ASAP' bash -c "echo Visit svieg.wordpress.com for update info"
3)

env X='() { (a)=>\' bash -c "echo date"

If for some reason any of the commands return the text saying that the computer is vulnerable or in the 3rd one you get the date instead of an error message, then your computer is in risk.

Ubuntu has fixed the problem the 25th of September, so expect fixing the problem with the typical:

sudo apt-get update; apt-get upgrade

Microsoft and the updates… They did it again

I’ve been all this week trying the get myself comfortable with Windows 2008 Server. Yes, I know that this system came out 4 years ago, but until TODAY I haven’t felt the need to change.

Anyway, the first steps have been very good, perhaps better than I thought at the begining. Windows 2008 is fast, really fast when you have multicore processors, the problem is the huge amount of memory it likes to eat. Yes, at least 4GB is more than recommended, specially if you are dealing with the 64 bit version, which is, in my honest opinion, the best you can do.

For my testing purposes I am using a brand new HP Proliant DL120 server. The installation time took about 1 hour. After that I could install WITH NO PROBLEMS the Hyper-V service and have a virtual machine with Windows 2003, because there are still some programs we need which refuse to work in Windows 2008.

Everything went fine until I had to install Service Pack and a lot of KB updates. After that, my “loved” RDP service (Terminal Server) to control the server remotelly stop working… HOW? WHAT? Yes, after the needed reboot to complete the installation of updates RDP stopped working and that obviouslly a problem for a System Administrator like me, who likes to control everything from a desk and not having to move to the room where all the servers are. Luckily I found the solution… and yes, as always a mistake from Microsoft: KB2667402.

What happened was that this KB never has to be installed before Service Pack 1 and the installer did that. It was installed and then Service Pack. The solution is to uninstall this KB from the command line and then leave Windows Update to search for it again. To do such thing the command from a shell is:

wusa /uninstall /kb:2667402

Voila!!! The server will reboot and Terminal Server will work again.

 


Implementando un servidor Radius para WIFI

La verdad es que es casi de vergüenza que en la época en la que estamos aún no me haya metido en el fregado de montar una Wifi en condiciones en la empresa. Hasta la fecha, como no demasiada gente se conectaba a nuestra Wifi, usábamos una encriptación WPA2 con clave fija. Evidentemente con poca gente esto no supone muchos riesgos, ya que en caso de despido y cese en la empresa de alguno de los usuarios que usan la Wifi con cambiarla y dar la nueva contraseña es suficiente. El problema es cuando este número de usuarios crece, y crece…

Evidentemente hoy en día con el auge de las tabletas, móviles con Wifi, portátiles, etc etc.. es casi imposible que no haya nadie que te diga “¿Me puedes dar la contraseña de la Wifi?”… Solución: Wifi por usuarios, ¿el método? Autenticación con Radius.

Para este pequeño experimento he utilizado un punto de acceso DLINK DWL-2100AP y un servidor Proliant al que primeramente instalé FreeRadius y a continuación TekRadius. Las pruebas con FreeRadius fueron realmente satisfactorias. Mi pobre iPhone acabo harto de que cada dos por tres estuviera entrando y saliendo de la Wifi. Finalmente opté por dejar el servicio con TekRadius, ya que la versión de FreeRadius que hay ahora mismo en Windows 2008 tiene un Bug y solo funciona en modo DEBUG, lo cual no es deseable en entornos de producción.

En fin… Para configurar este invento hay que hacer lo siguiente:

Primeramente descargarnos TekRadius de la web: www.tekradius.com

Existen dos versiones, una que guarda los datos en SQL y otra que utiliza SQL Lite y que no necesita de una base de datos externa. Yo me he descargado la versión para SQL Lite, ya que para hacer pruebas realmente no tengo por qué estar complicándome demasiado.

Es importante también bajarse el programa TekCert de la misma web ya que con él crearemos el certificado de seguridad que incluiremos con nuestra conexión e instalarlo, ya que lo primero que haremos será crear un certificado que se utilizará en los clientes que tengan capacidad de utilizar PEAP usando un certificado, más seguro.

Como ya he comentado anteriormente lo primero es abrir TekCert. Y rellenar los campos para crear un certificado. En la siguiente captura de pantalla podemos ver cómo quedaría uno que he creado yo:

Deberéis de rellenarlo con vuestros datos.Quizás lo único que habría que tener en cuenta es la duración del certificado “Valid for”. Yo le he puesto 9999, lo que hace que el certificado sea válido para este número de días. Eso ya a ha gusto de cada uno.

Tras haber creado el certificado con “Generate Certificate” podemos salir del programa e irnos al TkRadius Manager. Lo primero de todo es dejar el programa bien configurado antes de meternos en líos. Para ello pulsamos sobre la pestaña Setting y a continuación Service Parameters. Veremos que aparece algo así:

Y lo configuraremos de la siguiente manera:

Listen IP Address: La dirección IP de nuestra máquina servidora, es decir, donde está instalado el programa

Startup: Automatic, así en caso de reiniciar la máquina el servicio Radius arrancará solo

Logging: Yo uso debug para obtener logs de todo, en caso de no querer ponéis none o un nivel inferior.

Authentication Port: 1812. Es el usado por defecto para Radius.

PEAP Inner Auth Method: Hay varios. Yo con EAP-MS-CHAP he conseguido que se me autenfiquen iPhones y Blackberrys. Con otros puede daros problemas. Es cuestión de ir probando.

Accounting Enabled Port: Se marca solo si vuestro punto de acceso requiere este dato. Por lo normal es el puerto Radius + 1, por lo que si el puerto era 1812 este será 1813. En mi caso tuve que usarlo o mis clientes no se autentificaban corréctamente.

Grabamos con “Save Settings” y a continuación nos vamos a la pestaña “Users” donde definiremos los usuarios que podrán conectarse a nuestra Wifi. He creado un usuario llamado “pruebita”, con contraseña igualmente “pruebita”. En la siguiente pantalla podeis ver cómo quedaría:

Para dar de alta los usuarios hay que hacer lo siguiente:

En la parte izquierda añadimos el nombre de usuario. Cuando esté hecho pinchamos sobre él y en los “Attribute” de la derecha activamos:

  • Check User-Password: Y en la casilla de la derecha ponemos la contraseña que va a tener dicho usuario. Vereis que queda oculta con asteriscos
  • Check TLS-Server-Certificate: Al pulsar sobre el desplegable de la derecha os aparecerá el certificado que habéis creado con TkCert.

Con esto ya tenemos nuestro usuario creado. Ya estamos casi, falta solamente definir al punto de acceso. Para ello pulsamos sobre la pestaña “Clients” y aparecerá algo parecido a lo siguiente:

 

Para dar de alta nuestro punto de acceso (En nuestro caso el DLINK) rellenaremos los campos de la siguiente manera:

  • NAS: IP que tiene actualmente el punto de acceso. Esto es importante. En caso de cambiar alguna vez la IP del punto de acceso también deberemos de cambiarla aquí.
  • Secret: Contraseña con la que el punto de acceso se conectará a nuestro Radius. Poned una cualquiera , que sea segura, y es la que usaréis a la hora de configurar el punto de acceso.
  • Vendor: por lo normal usad ietf
  • Enabled: Yes

Ya tendremos TkRadius configurado. Para más seguridad de que funcione corréctamente debereis de reiniciar el servicio o incluso reiniciar el ordenador completamente. El último paso sería configurar el punto de acceso. En el caso de mi DLINK quedaría de la siguiente manera:

Tanto en Radius server como Accounting Server debéis de poner la dirección IP de vuestro servidor Radius. Aplicad los cambios y lo siguiente es coger un dispositivo Wifi y conectaros a la red. ¡A mí me ha funcionado incluso con un iPhone!

¿Es que somos tontos?

Si hay una profesión que de verdad está mal definida es sin duda la de técnico informático o informático a secas. Pues sí señores, por suerte o por desgracia esa es mi profesión, ¿y qué es lo que hace un informático? Según me contaron, dijeron o explicaron cuando estaba haciendo la carrera: un informático es una persona que, con los medios informáticos de los que dispone, crea soluciones a problemas dados. Pues bien, ¿me quiere alguien explicar qué tiene que ver un paquete de folios con un problema informático?….

Esta deshonra e indignación viene dada porque un iluminado de mi empresa el otro día me pidió que bajara 10 paquetes de folios para la fotocopiadora. Mi pregunta instantánea fue preguntar ¿y por qué yo? Y la respuesta del susidicho subnormal fue: porque tú te encargas de que funcione la fotocopiadora cuando se acaba el tóner ¿no?

Punto UNO: Le cambio el tóner yo porque sois unos manazas y siempre acaba tirado por el suelo

Punto DOS: La arreglo si puedo, y si no llamo al servicio oficial

Punto TRES: Nadie dice que yo sea un esclavo porteador de material, y menos de paquetes de folios.

En fin. Supongo que tonterías de estas le habrán pasado a más de uno. Luego encima tenemos la dichosa mala suerte que si hay una profesión con intrusión es la nuestra.

Calentico que vengo esta semana…