Modificamos la contraseña del usuario root de CA3 a A0
Ingresamos como el usuario root
Ejecutamos el comando
passwd
Resultado
#Resultado
Introduzca la nueva contraseña de UNIX: A0
Vuelva a escribir la nueva contraseña de UNIX: A0
passwd: contraseña actualizada correctamente
Eliminamos el usuario ugit
userdel -r ugit
Verificamos que no existe el usuario ugit
less /etc/passwd
Crea el usuario orion
adduser orion
Resultado
Añadiendo el usuario `orion' ...
Añadiendo el nuevo grupo `orion' (1000) ...
Añadiendo el nuevo usuario `orion' (1000) con grupo `orion' ...
Creando el directorio personal `/home/orion' ...
Copiando los ficheros desde `/etc/skel' ...
Introduzca la nueva contraseña de UNIX: V1
Vuelva a escribir la nueva contraseña de UNIX: V1
passwd: contraseña actualizada correctamente
Cambiando la información de usuario para orion
Introduzca el nuevo valor, o pulse INTRO para usar el valor predeterminado
Nombre completo []: UGIT
Número de habitación []:
Teléfono del trabajo []:
Teléfono de casa []:
Otro []:
¿Es correcta la información? [S/n]
Añadimos el usuario al grupo «root»
adduser orion root
Resultado
Añadiendo al usuario `orion' al grupo `root' ...
Añadiendo al usuario orion al grupo root
Hecho.
Abrimos
nano /etc/ssh/sshd_config
Modificamos el acceso de ssh para dar permiso a orion
AllowUsers root ugit
X
AllowUsers root orion
Reiniciamos el servicio
/etc/init.d/ssh restart
Verificamos que podemos ingresar con ambos usuarios
apt-get install make build-essential net-tools git -y
Instalación y configuración de SSH
Instalamos el servicio:
apt install openssh-server openssh-client -y
Abrimos el archivo:
nano /etc/ssh/sshd_config
Modificamos el número de puerto
#Port 22
X
Port 44
Por defecto cualquier usuario del sistema que tenga permisos de shell se puede conectar por SSH, indicamos que nos podemos conectar por root
#PermitRootLogin prohibit-password
X
PermitRootLogin yes
Aplicamos las siguientes configuraciones:
-----------------------------------------------------------------------
#Tiempo para introducir la contraseña
-----------------------------------------------------------------------
#LoginGraceTime 2m
X
LoginGraceTime 45
-----------------------------------------------------------------------
#Número de sesiones máxima por usuario permitida
-----------------------------------------------------------------------
#StrictModes yes
X
StrictModes yes
-----------------------------------------------------------------------
#Números de intentos permitidos de introducir la contraseña antes de desconectarnos
-----------------------------------------------------------------------
#MaxAuthTries 6
X
MaxAuthTries 3
-----------------------------------------------------------------------
#Número de sesiones máxima por usuario permitida
-----------------------------------------------------------------------
#MaxSessions 10
X
MaxSessions 8
-----------------------------------------------------------------------
#Si queremos habilitar el acceso ssh de usuarios del sistema con usuario y clave
#yes
#Si lo queremos impedir: no
-----------------------------------------------------------------------
#PubkeyAuthentication yes
X
PubkeyAuthentication yes
-----------------------------------------------------------------------
#PasswordAuthentication yes
X
PasswordAuthentication yes
-----------------------------------------------------------------------
-----------------------------------------------------------------------
#Agregamos al final del archivo: usuarios permitidos para conexión ssh
-----------------------------------------------------------------------
AllowUsers root orion
Para brindar una mayor seguridad, vamos a indicarle a openssh cuales algoritmos de intercambio de claves, cifrado simétrico y configuración de HMAC para la comprobación de la integridad deseamos utilizar.
#!/bin/bash
# ClamAV_Scan_Script
# Script que ejecuta un escaneo con ClamAV del dir o archivo seleccionado
# editado del original en "http://www.taringa.net/comunidades/ubuntuparataringeros/1327480/[Tip]-Script-para-escanear-fácilmente-con-ClamAV.html"
# -----------------------------------------------------------------------------
# Crear la carpeta "clamav" dentro del directorio "$HOME" y dentro de la misma
# crear las carpetas "cuarentena" y "logs" dentro de "clamav"
# ----------------------------------------------------------------------------
# Ubicar el Script en "/usr/local/bin" y darle permisos de ejecucion
# "chmod +x /usr/local/bin/clamav"
# Ubicarlo en el "crontab" para su ejecucion el dia seleccionado
# ---------------------------------------------------------------------------
#
# --Carpetas de Configuracion -- #
clamfolder="clamav"
logfolder="logs"
cuarentenafolder="cuarentena"
logfile="clamscan-`date +%F_%T`.log"
dirs="/ " #directorios a verificar
scan=/usr/bin/clamscan
userhome="$HOME"
user=`whoami`
# -- Codigo de arranque -- #
echo "ClamAV scan Iniciado el dia" `date` "por el usuario" ${user} "- Guardado como" \
${userhome}/${clamfolder}/${logfolder}/${logfile}\ > ${userhome}/${clamfolder}/${logfolder}/${logfile}
echo "Iniciando escaneo con ClamAV..."
$scan --infected --recursive --log=${userhome}/${clamfolder}/${logfolder}/${logfile} \
--move=${userhome}/${clamfolder}/${cuarentenafolder} --exclude-dir=/sys/ $dirs
echo "Finalizado escaneo con Clamav" `date`
Le otorgamos permisos
chmod +x /usr/local/bin/clamav.sh
Probamos el funcionamiento (Opcional)
. /usr/local/bin/clamav.sh
Ahora creamos una tarea crontab
crontab -e
Agregamos
30 23 * * * /usr/local/bin/clamav.sh 2>&1 | tee /root/clamav/output.txt | mail -s "clamav: $(hostname -s)" log@siua.ac.cr
UPDATE_MIRRORS=0
X
UPDATE_MIRRORS=1
MIRRORS_MODE=1
X
MIRRORS_MODE=0
WEB_CMD="/bin/false"
X
WEB_CMD=""
Y proceda a actualizarlo
rkhunter --update
Y luego verifique el sistema
rkhunter -c
Si no lo tiene instalado aplique la sección siguiente
Instalación de rkhunter
Instalamos rkhunter que es un escáner que analiza y busca en nuestro ordenador, backdoors, exploits, sniffers y por supuesto rootkits, realizando diferentes pruebas a nuestro sistema.
Ingresamos a tmp para que después del siguiente reinicio se eliminen los archivos:
#Muestra todo la salida
chkrootkit
#Muestra solo las detecciones
chkrootkit -q
Creamos un cron que se ejecute todos los meses
Ejecutamos:
crontab -e
Le agregamos el siguiente contenido
@monthly /usr/local/chkrootkit/chkrootkit -q | mail -s "chkrootkit: $(hostname -s)" log@siua.ac.cr
Verificación de logwatch
Logwatch es un sistema de monitoreo de logs personalizable. Su función es revisar los logs del sistema en un período de tiempo determinado y elaborar un resumen con el nivel de detalle que se desee. Luego es capaz de enviar el resumen por mail en forma de reporte. Es muy útil para monitorear la actividad de los servidores y detectar posibles abusos, intentos de intrusión, consumo de recursos, etc.
Es importante saber que logwatch se instala en «/usr/share/logwatch» pero crea una estructura de archivos en /etc/logwatch, la idea es que toda configuración «adicional» la hagamos aquí y esta sobreescriba a la de /usr/share/logwatch
Abrimos el archivo
nano /etc/logwatch/conf/logwatch.conf
Verificamos que tenga la siguiente configuración
Output = mail
Format = html
MailTo = log@siua.ac.cr
MailFrom = Logwatch_SERVIDOR
Detail = 8
Es probable que si siguió esta guía al momento de reinstalar postfi se haya eliminado logwatch por lo que lo reinstalamos
apt install logwatch -y
Probamos el funcionamiento
logwatch
Si no lo tiene instalado siga la siguiente sección.
Instalar logwatch
Los instalamos
apt-get install logwatch -y
Copiamos el archivos de configuración de «fábrica»
--------------------------------------------------------------
Output = stdout
X
Output = mail
--------------------------------------------------------------
--------------------------------------------------------------
Format = text
X
Format = html
--------------------------------------------------------------
MailTo = root
X
MailTo = log@siua.ac.cr
--------------------------------------------------------------
MailFrom = Logwatch
X
MailFrom = Logwatch_NOMBRE_SERVIDOR --------------------------------------------------------------
Detail = Low
X
Detail = 8
--------------------------------------------------------------
Modificar el tiempo de banea a 2 días (2880 segundos)
fail2ban-client set dbpurgeage 2880
Centralización UGIT – BLACKLIST
Instalamos dependencias
apt-get install mysql-client curl jq -y
Ingresamos al directorio
cd /etc/fail2ban/
Abrimos el archivo
nano /etc/fail2ban/jail.local
Buscamos la linea
# The simplest action to take: ban only
Y antes de esta linea insertamos
############################################################################################################################################
################ ACCION UGIT: Banea la Ip, envia un mail, Inserta en BD y la incluye en el IPSET de PROMOX ################################
############################################################################################################################################
action_ugit = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
%(mta)s-whois[name=%(__name__)s, sender="%(sender)s", dest="%(destemail)s", protocol="%(protocol)s", chain="%(chain)s"]
ip-to-blacklist-ugit
Ahora cambiamos la accion defecto por buscamos y remplazamos
Hola UGIT,\n
**************************************************
La IP <ip> ha sido baneada por Fail2ban despues de:
<failures> intentos fallidos por <name>.\n\n
**************************************************
Aqui hay mas informacion acerca de la ip: <ip> :\n
`/usr/bin/whois <ip> || echo missing whois program`\n
Saludos,\n
UGIT" | /usr/sbin/sendmail -f <sender> <dest>
Reiniciamos el servicio
service fail2ban restart
Modificamos el tiempo de acción
fail2ban-client set sshd action ip-to-blacklist-ugit timeout 300
Ahora creamos una nuevo aliases
nano /etc/aliases
Agregamos
fail2ban: root
Actualizamos
newaliases
Reiniciamos el servicio
service fail2ban restart
Si es un servidor de bases de datos MYSQL
Instalamos el software
apt install mysql-server -y
Lo mandamos a configurar
mysql_secure_installation
RESULTADO
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: N
Please set the password for root here.
New password: L0
Re-enter new password: L0
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : N
... skipping.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.
All done!
Cambiar el método de autenticación
A partir de la versión 5.7 de MySQL, el usuario raíz de MySQL está configurado para autenticarse a través del complemento auth_socket de forma predeterminada en lugar de una contraseña.
Para usar una contraseña para conectarse a MySQL como usuario root, necesita cambiar el método de autenticación, de auth_socket a mysql_native_password.
Para verificar el método de autenticación asociado con las cuentas mysql:
SELECT user,authentication_string,plugin,host FROM mysql.user;