How to Install and Configure vsftpd on Ubuntu 14.04 LTS

FTP (File Transfer Protocol) is probably the most popular method of uploading files to a server; a wide array of FTP servers, such as vsftpd, and clients exist for every platform.

Pre-Flight Check

  • These instructions are intended specifically for installing the vsfptd on Ubuntu 14.04 LTS.
  • I’ll be working from a Liquid Web Core Managed Ubuntu 14.04 LTS server, and I’ll be logged in as root.

 

Step 1: Install vsftpd

Warning: FTP data is insecure; traffic is not encrypted, and all transmissions are clear text (including usernames, passwords, commands, and data). Consider securing your FTP connection with SSL/TLS.

First, you’ll follow a simple best practice: ensuring the list of available packages is up to date before installing anything new.

apt-get update

Then let’s install vsftpd and any required packages:

apt-get -y install vsftpd

Step 2: Configure vsftpd

For a refresher on editing files with vim see: New User Tutorial: Overview of the Vim Text Editor

Let’s edit the configuration file for vsftpd:

vim /etc/vsftpd.conf

Disallow anonymous, unidentified users to access files via FTP; change the anonymous_enable setting to NO:

anonymous_enable=NO

Allow local uses to login by changing the local_enable setting to YES:

local_enable=YES

If you want local user to be able to write to a directory, then change the write_enable setting to YES:

write_enable=YES

Local users will be ‘chroot jailed’ and they will be denied access to any other part of the server; change the chroot_local_user setting to YES:

chroot_local_user=YES

Exit and save the file with the command :wq.

Restart the vsftpd service:

service vsftpd restart

Step 3: Configure the User’s Home Directory

With certain version of vsftpd you may receive the following error: 500 OOPS: vsftpd: refusing to run with writable root inside chroot().

Not to worry! Create a new directory for the user receiving the error (user2 in this case) that is a subdirectory of their home directory (/home/user2). For example:

Fix permissions for user2‘s home directory:

chmod a-w /home/user2/

Make a new directory for uploading files:

mkdir /home/user2/files
chown user2:user2 /home/user2/files/

Activar SSL en Apache2 (Ubuntu 10.04)

# Instalamos Apache
sudo aptitude install apache2

# Habilitamos el módulo SSL
sudo a2enmod ssl

# Habilitamos la configuración SSL por default

sudo a2ensite default-ssl

# Reiniciamos el servidor
sudo /etc/init.d/apache2 restart

Ya con esto queda habilitado, puedes probarlo entrando al localhost con https://127.0.0.1
Para crear  nuestro certificado, debemos seguir los siguientes pasos

# Creamos las llaves

cd /etc/apache2

sudo openssl genrsa -des3 -out server.key 1024

# Creamos el certificado con la llave
sudo openssl req -new -key server.key -out server.csr

# Creamos nuestro certificado, contestando las preguntas que nos indique recordando la contraseña


sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

#Cambiamos de carpeta la llave y certificado

sudo cp server.crt /etc/ssl/certs/
sudo cp server.key /etc/ssl/private/

# Abrimos el archivo de configuracion default-ssl

cd /etc/apache2/sites-available
sudo vim default-ssl

# reemplazamos y habilitamos la siguiente configuracion
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key

# habilitamos el archivo

sudo a2ensite default-ssl

# Reiniciamos apache y listo!!
sudo /etc/init.d/apache2 restart

How to Install Microsoft Security Essentials on Windows Server 2012 and 2012 R2

You can install Microsoft Security Essentials on Server 2012, below is how to do so.

  1. Download a copy of MSE from Microsoft: http://windows.microsoft.com/en-us/windows/security-essentials-all-versions
  2. Right Click on the mseinstall.exe
  3. Click on Properties
  4. Click on the Compatibility tab
  5. Locate the Compatibility section
  6. Check Run this program in compatibility mode for
  7. Select From the drop down menu Windows 7
  8. Open a Command Prompt as Administrator
  9. Navigate to your Downloads folder (ie. cd C:Users%username%Downloads)
  10. Run mseinstall /disableoslimit and follow the installer prompts to install MSE on your Windows Server 2012.

MySQL Tunning

C:\ProgramData\MySQL\MySQL Server 5.6

Dentro de [mysqld]

innodb_buffer_pool_size=1024M

wait_timeout = 350

Por defecto mysql cierra una conexión después de 8 horas sin recibir ninguna petición del cliente y sin que el cliente sea notificado de las mismas. En una aplicación web puede ser normal abrir un pool de conexiones desde un servidor (Tomcat p.ej) de forma que siempre haya conexiones de sobra sin usar. Esto en la práctica se traduce en que debemos hacer una de dos: - bien reconfigurar mysql (/etc/mysql/my.cnf) para aumentar el wait_timeout - o bien "refrescar" periodicamente las conexiones del pool para resetear el contador interno de timeout de mysql.

Los servidores de aplicaciones suelen tener también parámetros de configuración que nos ayudan: P.ej, Tomcat incluye también un sistema automático de pool de conexiones que en principio soluciona el problema. En la práctica lo minimiza pero aleatoriamente cada 2 o 3 semanas, por experiencia del que escribe estas líneas, vuelve a fallar (Tomcat versión 5).

Por tanto puede ser una buena opción el desabilitar el wait_timeout editando /etc/mysql/my.conf añadiendo la linea wait_timeout=0.
max_allowed_packet = 20M

En algunos casos se desea grabar archivos en MySQL. Por defecto el motor esta configurado para almacenar archivos con un tamaño máximo de 1MB, este valor se encuentra almacenado en la variable max_allowed_packets la cual determina el tamaño máximo de un paquete. El buffer de paquete se inicializa en net_buffer_lenght , pero puede crecer hasta max_allowed_packet cuando se necesita. Por defecto tiene un valor pequeño de 1MB. A partir de la versión 4 de MySQL, se puede incrementar el valor hasta 1 GB. El valor debe ser múltiplo de 1024. Para cambiar el valor solo se debe ejecutar un comando, es algo muy simple. En este caso se asigna un valor de 100MB

mysql> SET GLOBAL  max_allowed_packet=100*1024*1024;
Query OK, 0 rows affected (0.00 sec)

Después de ejecutar el comando si deseas verificar el valor de la variable max_allowed_packet se debe ejecutar el siguiente comando:

mysql> show variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
1 row in set (0.00 sec)

Se debe reiniciar el servicio de MySQL y listo ya puedes almacenar archivos con tamaño máximo de 100MB.
skip-name-resolve

deshabilita la resolución de nombres, por lo que veremos al iniciar MySQL Warnings como los siguientes:

101202 15:43:44 [Warning] 'user' entry '@penny.systemadmin.es' ignored in --skip-name-resolve mode.

Nos esta indicando que no podrá aplicar los GRANTs relacionados con nombres al no poder resolver las IPs de los clientes: deberemos usar la IP en lugar del nombre en los GRANTs.

Al conectarse un cliente, primero va a buscar la inversa de la IP que se ha conectado al resolver, esperará al timeout y luego dejará seguir. En el caso de una aplicación web un tráfico moderado, veremos que se empezarán a colapsar tanto MySQL como Apache ya que se acumularán conexiones esperando el timeout del resolver.

Desactivación de validación de agrupamiento ONLY_FULL_GROUP_BY verificar que exista en el archivo de configuracion la siguiente linea activa:

sql-mode = "STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

Eliminar cola de mensajes QMail Plesk

En primer lugar comprobamos el número de mensajes en la cola mediante la herramienta qmail-qstat:

# /var/qmail/bin/qmail-qstat
messages in queue: 13221
messages in queue but not yet preprocessed: 64

Para eliminar los mensajes deberemos parar el servicio qmail:

service qmail stop

Una vez el servicio está parado ejecutamos los siguientes comandos en orden. Dependiendo del número de mensajes en cola puede tardar un poco:

find /var/qmail/queue/mess -type f -exec rm {} ;
find /var/qmail/queue/info -type f -exec rm {} ;
find /var/qmail/queue/local -type f -exec rm {} ;
find /var/qmail/queue/intd -type f -exec rm {} ;
find /var/qmail/queue/todo -type f -exec rm {} ;
find /var/qmail/queue/remote -type f -exec rm {} ;

Para acabar volvemos a arrancar el servicio de correo y comprobamos nuevamente la cola para verificar que se hayan eliminado:

service qmail start

Detectar si se está realizando envíos de Spam desde Qmail

Lo primero que tendremos que hacer es conectarnos por consola a nuestro servidor por medio de algún programa SSH como puede ser Putty. Una vez dentro el siguiente paso será consultar las estadísticas de Qmail para ver el número de mensajes que hay en cola. Esto se realiza con el siguiente comando:

/var/qmail/bin/qmail-qstat

El resultado que obtendríamos sería algo parecido a lo siguiente:

# /var/qmail/bin/qmail-qstat

messages in queue: 975

messages in queue but not yet preprocessed: 0

Esto nos indica que tenemos 975 mensajes en cola que aún no han sido procesados. El siguiente paso será ver el listado de todos los que están en la cola pendiente de ser enviados. Esto lo podemos hacer de la siguiente forma:

/var/qmail/bin/qmail-qread

Esto nos mostrará un listado con registros parecidos al ejemplo que os ponemos a continuación:

30 Jan 2013 12:23:36 GMT #69238542 840 <nombre@nombre-dominio.com>

remote nombre@otro-dominio.com

En la cadena anterior, lo más importante es el identificador del mail. Este identificador corresponde al que aparece al lado del símbolo “#”, en nuestro caso 69238542.

Una vez que hemos visto sospechoso este correo, el siguiente paso es localizar la ubicación del mismo. Para ello utilizamos el comando “find”.

find /var/qmail/queue/mess/ -name 162504751

La ejecución de la instrucción anterior nos devolverá la ruta dónde está ese mensaje, en nuestro ejemplo sería:

/var/qmail/queue/mess/22/162504751

En este archivo podremos ver la información correspondiente al mensaje y podremos obtener el ppid del usuario que lo ha enviado. Para ver la información del fichero podemos hacer uso del comando “cat” o “more”.

more /var/qmail/queue/mess/22/162504751

De la información que nos muestra nos quedamos con la parte de la etiqueta “Received”

Received: (qmail 28319 invoked by uid 10007); 30 Jan 2013 12:20:58 +0100

Esa información nos indica que el correo con id 28319 ha sido enviado por el usuario (uid) 10003. Sabiendo el id del usuario es hora de localizar quien está haciendo ese envío, para ello ejecutamos la siguiente instrucción:

cat /etc/passwd | grep 10007

De esta forma sabremos quien ha realizado el envío y podremos tomar las medidas necesarias para solucionar este problema.

Postfix – Comandos básicos

Para aquellos que se estén iniciando en el mundo del MTA Postfix, ahí van unos comandos útiles para el manejo de la cola de correo:

postsuper -d numero (eliminar el mensaje)
postsuper -d ALL (eliminar todos los mensajes)
postsuper -r Number (Encolar de nuevo el mensaje)
postsuper -r ALL (Encolar de nuevo todos los mensajes)
postqueue -p (Mostrar la cola de correo por pantalla)
postqueue -f (Hacer un flush de la cola de correo, intentar enviar todos los correos)