jueves, 8 de noviembre de 2018

Como generar mi propio certificado digital auto firmado

Problema: Necesito instalar un certificado digital en mi servidor web, para darle seguridad a la comunicación de los usuarios de mi sitio web. Y así evitar enviar en texto plano el usuario y contraseña por internet.

Solución: Implemetar certificados digitales auto firmados.
Los certificados digitales deben ser generados por una entidad CA (Certificate Authority), la cual garantiza que los certificados son válidos. De lo contrario podría ser un certificado apócrifo. Para evitar esto último, habrá que invertir algunos dolares y solicitar un certificado a un CA oficial.
En mi caso, mi servidor web no brinda servicio para todo público, por lo que el grupo de usuarios que lo utiliza el limitado. Entonces tengo la opción de firmar mis propios certificados.

Nota: Por ejemplo si en el navegador Firefox vas a Preferencias > Privacidad y seguridad > Certificados > Ver certificados y ahí en la solapa Autoridades, verás una lista larga de entidades CA.

Por lo tanto ahora explicaré como montar mi propio servidor de sertificados CA y como firmarlos.

1. Instalar openssl para crear mi CA.
sudo apt-get install openssl

2. Editar la configuración básica de openssl. Buscar y reemplazar.
sudo nano /usr/lib/ssl/openssl.cnf

Buscar:

[ CA_default ]

dir  = ./demoCA 

Poner:
[ CA_default ]                                                                                 
                                                                                               
dir             = /root/ca

3. Crear el directorio /root/ca
sudo mkdir /root/ca

4. Crear la estructura para luego generar los certificados:

cd /root/ca
sudo mkdir newcerts certs crl private requests
sudo touch index.txt
sudo echo '1234' > serial

5. Generar la llave privada principal "cakey.pem" y solicita definir una contraseña para luego firmar certificados:
sudo openssl genrsa -aes256 -out private/cakey.pem 4096

6. Generar el certificado principal "cacert.pem", aquí solicitará la contraseña de la llave privada principal y datos básicos:
openssl req -new -x509 -key /root/ca/private/cakey.pem -out cacert.pem -days 3650 -set_serial 0

7. Ahora se genera una llave privada, con una contraseña, para generar un certificado.
cd /root/ca/requests/
sudo openssl genrsa -aes256 -out mi_server_key.pem 2048

8. Luego se genera una solicitud de certificado, y se debe cargar los datos solicitados para el certificado que se requiera.
sudo openssl req -new -key mi_server_key.pem -out mi_server.csr

9. Como paso final se firma el requerimiento anterior con el CA generado.
sudo openssl ca -in mi_server.csr -out mi_server.pem

10. Podemos descartar el archivo con extensión scr.
sudo rm mi_server.scr

11.  Con estos pasos ahora ya tenemos un certificado digital para instalar en nuestro servidor.


Fuente 1
Fuente 2

sábado, 27 de octubre de 2018

Instalar servidor LDAP y phpldapadmin

Problema: Necesito instalar un servidor ldap para la gestión unificada de usuarios. Tengo varios servicios como NAS y aplicaciones web (GLPI, Redmine, etc...) que para cada uno de estos hay que crear las credenciales de acceso y creo que con un LDAP lo podré resolver.

Solución: En un servidor con ubuntu 18.04 LTS instalo un servidor LDAP junto a un administrador web del servidor, para facilitar la gestión y configuración.

0. Como siempre, antes de comenzar a instalar cosas en nuestro servidor, es bueno actualizar lo que está, así que actualizo paquetes a la última versión.
sudo apt-get update && sudo apt-get upgrade

1. Instalo servidor openldap y herramientas.
sudo apt-get install slapd ldap-utils

2. En en proceso de instalación se deberán configurar la contraseña del administrdor 'admin'. Anotala en un papelito!

3. Al terminar el proceso de instalación (el prompt de linux listo para recibir un nuevo comando), verificamos que el servicio está corriendo. Y veremos que 'Active: active (running)'.
sudo systemctl status slapd.service
 
4.  Realizamos la configuración básica del servidor LDAP, con el siguiente comando.
sudo dpkg-reconfigure slapd

5. Ahora respondemos de la siguiente manera a las preguntas o parámetros que van surgiendo.

Omit OpenLDAP server configuration? --> NO
DNS Domain name --> ldap.sudoriento.com
Organization name --> sudoriento
Administrator password --> [clave creada en el punto 2]
Database backend to use --> MDB
Do you want the database to be removed when slapd is purged? --> NO
Move old database? --> YES

6. Editamos el archivo de configuración principal del servicio. Y modificamos las líneas 'BASE' y 'URI'.
sudo nano /etc/ldap/ldap.conf

BASE    dc=ldap,dc=sudoriento,dc=biz
URI     ldap://localhost/

7. Chequeamos que los cambios se aplicaron
ldapsearch -x

Si en la salida del comando muestra result: 0 Success, está todo bien. De lo contrario habrá que verificar desde el inicio del procedimiento.

8. Instalamos phpLDAPadmin.
IMPORTANTE: es necesario disponer de un servidor web (ej: apache2) instalado en el mismo servidor ldap para poder utilizar esta aplicación web.
sudo apt-get install phpldapadmin

9. Editamos la configuración de la aplicación web phpldapadmin para acceder al servidor ldap instalado anteriormente.
sudo nano -c /etc/phpldapadmin/config.php

Vamos a las líneas 293, 296, 300, 326, 335 y 453 (con 'nano' es: Ctrl+w, Ctrl+t colocamos el número de línea y luego ENTER).

Las siguientes líneas deben quedar de esta manera:

$servers->setValue('server','host','127.0.0.1');
$servers->setValue('server','port',389);
//$servers->setValue('server','base',array('dc=example,dc=com'));

$servers->setValue('login','bind_id','cn=admin,dc=ldap,dc=sudoriento,dc=biz');
$servers->setValue('server','tls',false);
$servers->setValue('login','anon_bind',false);

10. Ahora con un navegador web podrás ingresar a phpldapadmin:
http://[IP de servidor LDAP]/phpldapadmin

11. Hacer click en conectar (barra lateral izquierda).

12. En la ventana de autenticación el usuario será Login : cn=admin,dc=ldap,dc=sudoriento,dc=biz y la Contraseña:  [clave creada en el punto 2].

Fuente

Ya logré montar un servidor ldap con su herramienta de administración... ¿Y ahora que hago con esto? No lo se... pero en cuanto lo aprenda lo postéo.

miércoles, 13 de diciembre de 2017

Actualizar DMSF en mi Redmine

Problema: Luego de actualizar mi Redmine a la versión 3.4.3 quiero actualizar el plugin DMSF.

Solución: En este momento DMSF está en la versión 1.6.0.

NOTA: es recomendable que el usuario con el que realices este proceso pertenezca al grupo 'www-data', para evitar problemas con los permisos. No utilizar el usuario 'root' ya que algunos comandos no funcionan con él.
sudo nano /etc/group 
Buscar el grupo 'www-data' y agregar al final de la línea tu usuario.

1. Agregar al final del archivo Gemfile la siguiente línea:
gem 'activerecord-deprecated_finders', require: 'active_record/deprecated_finders'

nano /opt/redmine/redmine-3.4.3/Gemfile

2. Instalar paquetes requeridos.
sudo apt-get install xapian-omega libxapian-dev xpdf poppler-utils antiword unzip catdoc libwpd-tools libwps-tools gzip unrtf catdvi djview djview3 uuid uuid-dev xz-utils libemail-outlook-message-perl

3. Descargar la DMSF versión 1.6.0. Y luego descomprimirlo en el directorio de plugins.
cd /opt/redmine/redmine-3.4.3/plugins/
wget https://github.com/danmunn/redmine_dmsf/archive/v1.6.0.zip
unzip v1.6.0.zip
mv redmine_dmsf-1.6.0 redmine_dmsf

4. Instalar dependencias.
sudo chmod 777 -R Gemfile.lock
bundle install
bundle exec rake redmine:plugins:migrate RAILS_ENV="production"

5. Reiniciar servidor.
sudo reboot

6. Para activar el 'full-text search'.
sudo apt-get install xapian-omega ruby-xapian



Quiero actualizar mi Redmine y no perdar datos en el intento

Problema: Quiero actualizar mi redmine v2.5.3 a v.3.4.3 y no perder mis datos en el intento...

Solución: Esta solución se plantea instalando desde cero un Redmine v.3.4.3 (nuevo) y luego migro la información de mi Redmine v.2.5.3 (viejo). Para esto necesito instalar todo desde cero...

Instalo Apache2 + MySQL + Ruby + Passenger + Redmine + tools

1. Actualizo paquetes del servidor a la última versión.
sudo apt-get update && sudo apt-get upgrade

2. Instalo paquetes necesarios y otros útiles para trabajar más cómodo.
sudo apt-get install apache2 mysql-server mysql-client libmysqlclient-dev gcc build-essential zlib1g zlib1g-dev zlibc ruby-zip libssl-dev libyaml-dev libcurl4-openssl-dev ruby gem libapache2-mod-passenger apache2-dev libapr1-dev libxslt1-dev checkinstall libxml2-dev ruby-dev vim libmagickwand-dev imagemagick

3. Descargar redmine, en este momento será el siguiente link:
wget http://www.redmine.org/releases/redmine-3.4.3.tar.gz

4. Crear directorio para extraer redmine y lo configuro:
sudo mkdir -p /opt/redmine && sudo cp redmine-3.4.3.tar.gz /opt/redmine/. && cd /opt && sudo chown -R $your_user redmine
tar xzf redmine-3.4.3.tar.gz
cd redmine-3.4.3

5. Acceder a mysql y crear base de datos y usuario (definir contraseña en 'my_password'):

mysql -u root -p 'mysql_root_password'

CREATE DATABASE redmine CHARACTER SET utf8;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'my_password';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';

6. Copiamos archivo de configuración:
cp config/database.yml.example config/database.yml

7. Editar el archivo config/database.yml agregando la contraseña definida en el punto anterior.
nano config/database.yml

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: my_password

8. Instalar bundler.
sudo gem install bundler
bundle install --without development test
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake redmine:load_default_data

9. Configuración de Apache2.
sudo chown -R www-data files log tmp public/plugin_assets
sudo chmod -R 755 files log tmp public/plugin_assets
sudo chown www-data:www-data Gemfile.lock
sudo ln -s /opt/redmine/redmine-X.X.X/public/ /var/www/html/redmine

10. Agregar Location para redmine en 000-default.conf:
sudo nano /etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>
ServerAdmin admin@example.com
Servername hostname
DocumentRoot /var/www/html/
        <Location /redmine>
                RailsEnv production
                RackBaseURI /redmine
                Options -MultiViews
        </Location>
</VirtualHost>

11. Agregar línea al final del archivo passenger.conf.
sudo nano /etc/apache2/mods-available/passenger.conf

PassengerUser www-data

12. Habilitar Passenger.
sudo a2enmod passenger

13. Reiniciar Apache2.
sudo /etc/init.d/apache2 restart

14. Desde un navegador web abrir la URL http://IP/redmine.

15. El usuario por defecto es "admin" con clave "admin".

16. Realizo backup de la base de datos de Redmine viejo.
/usr/bin/mysqldump --user=redmine --password='redmine_password' --skip-extended-insert $DATABASE > redmine.sql

17. Eliminar las tablas de la BBDD redmine nueva. Utilizando PhpMyAdmin se eliminan las tablas.

18. Importar la base de datos de Redmine viejo en Redmine Nuevo.
/usr/bin/mysql --user=redmine --password='redmine_password' redmine < redmine.sql

19. Aplicar migración, el directorio en el que se debe ejecutar el comando es /opt/redmine/redmine-3.4.3/.
rake db:migrate RAILS_ENV=production

20. Copiar desde el Redmine viejo el directorio 'files' al Redmine nuevo.




martes, 13 de junio de 2017

Backuppc - Xfer errors: unknown date format

Problema: En la gestión de backuppc veo errores (en este caso 5) al realizar un incremental. Y al observar el log encuentro el siguiente mensaje:

/bin/tar: Substituting -9223372036854775807 for unknown date format '2017-06-13\\ 09:16:53'


Solución: En la GUI de backuppc ir a Edit Config > Xfer > TarIncrArgs > Quitar los símbolos + > Save.
Antes: --newer=$incrDate+ $fileList+
Después: --newer=$incrDate $fileList



Fuente

martes, 8 de diciembre de 2015

¿Que instalar después de haber instalado Ubuntu?

Problema: Ya tengo mi sistema operativo linux andando (en este caso Ubuntu 14.04.3 LTS) y ahora.... ¿qué más necesito?

Solución: Está claro que esto no es un problema concreto, sino una personalización de nuestro nuevo OS. Por lo que describiré las herramientas que instalo yo, para disponer de lo básico y disfrutar de mi PC.

1. Como no me agrada el Gnome 3 y prefiero el GNOME 2, instalo Gnome Fallback:

sudo apt-get install gnome-session-fallback

De esta manera al cerrar sesión y reabrirla elijo "GNOME Fallback (Compiz)" y mantengo mi interfaz ya conocida.

2. Instalo TILDA, una consola emergente al alcance de una combinación de teclas:

sudo apt-get install tilda

La cual se puede personalizar en colores, en tamaño, en tecla para mostrarla y ocultarla, etc...
Hay que agregarla al inicio de sesión para que se ejecute siempre.

3. Como soy muy amigo de las consolas, también instalo TERMINATOR, la cual me permite disponer de varias consolas en una misma pantalla y del tamaño que quiera sin tener que estar cambiando de ventanas:

sudo apt-get install tilda

4. Instalo el comando NMAP, un comando muy útil para analizar equipos en red, puertos, etc...

sudo apt-get install nmap

5. Como me aburren los wallpapers estáticos y tengo muchas fotos, instalo VARIETY, el cual me va cambiando los fondos cada cierto tiempo desde mi directorio con imágenes o desde otras fuentes que permite configurar, es necesario agregar el repositorio primero:

sudo add-apt-repository ppa:peterlevi/ppa
sudo apt-get update
sudo apt-get install variety

6. Instalo el COMPIZ con sus agregados. No utilizo todas las funcionalidades que dispone, pero si utilizo 2 principalmente. Una es el zoom  (enhanced zoom desktop) que se puede hacer sobre la pantalla y otra es el cambio de escritorios (desktop wall):

sudo apt-get install compiz compiz-plugins compiz-plugins-extra

Y también instalo la herramienta de gestión del Compiz:

sudo apt-get install compizconfig-settings-manager

 
7. Para asegurarme de poder ver una película, video, escuchar música o radio online, instalo el VLC:

sudo apt-get install vlc

8. Como también suelo descargar desde torrent, instalo el TRANSMISSION, permitiéndome descargar los archivos torrent desde el momento que arranco la PC, ya que esta en modo demonio y gestionarlo vía web, desde cualquier lugar:

sudo apt-get install transmission-gtk transmission-daemon

9. También instalo el GOOGLE CHROME y VIRTUALBOX, como paquetes que descargo directamente de sus páginas web.

10. Para realizar conexiones seguras, por ejemplo a la oficina utilizo OpenVPN y lo integro al Network Manager de Gnome:

sudo apt-get install openvpn network-manager-openvpn 


Continuará... a medida que vaya instalando otras aplicaciones.

XEV ¿Qué tecla estoy apretando?

Problema: Quiero saber que tecla estoy presionando para poder configurar un atajo en mi Ubuntu, Compiz, etc...

Solución:
1. Ejecutar en una consola el comando xev:
xev
2. Sobre el cuadro que aparece en pantalla presionar la tecla/botón que quiero identificar.
3. Observar el mensaje por consola que genera la tecla presionada, ej:

Hice clic con el botón izquierdo del mouse:

ButtonRelease event, serial 40, synthetic NO, window 0x2e00001,
    root 0x2d5, subw 0x0, time 23507683, (60,108), root:(1126,160),
    state 0x110, button 1, same_screen YES

Presioné el Control Izquierdo del teclado:

KeyRelease event, serial 40, synthetic NO, window 0x2e00001,
    root 0x2d5, subw 0x0, time 23506815, (60,108), root:(1126,160),
    state 0x14, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False