{"id":8466,"date":"2022-05-02T08:58:00","date_gmt":"2022-05-02T14:58:00","guid":{"rendered":"https:\/\/ugit.siua.ac.cr\/?p=8466"},"modified":"2022-10-11T06:04:40","modified_gmt":"2022-10-11T12:04:40","slug":"instalacion-servidor-mysql-ct-ubunut-20-04","status":"publish","type":"post","link":"https:\/\/sada.services\/?p=8466","title":{"rendered":"Revisi\u00f3n de servidores 2022. Seguridad V4"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Modificaci\u00f3n de usuarios<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Modificamos la contrase\u00f1a del usuario root de CA3 a A0<\/li><li>Ingresamos como el usuario root<\/li><li>Ejecutamos el comando<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>passwd<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Resultado<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>#Resultado\nIntroduzca la nueva contrase\u00f1a de UNIX: A0\nVuelva a escribir la nueva contrase\u00f1a de UNIX: A0\npasswd: contrase\u00f1a actualizada correctamente<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Eliminamos el usuario ugit<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>userdel -r ugit<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Verificamos que no existe el usuario ugit<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>less \/etc\/passwd<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Crea el usuario orion<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>adduser orion<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Resultado<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>A\u00f1adiendo el usuario `orion' ...\nA\u00f1adiendo el nuevo grupo `orion' (1000) ...\nA\u00f1adiendo el nuevo usuario `orion' (1000) con grupo `orion' ...\nCreando el directorio personal `\/home\/orion' ...\nCopiando los ficheros desde `\/etc\/skel' ...\nIntroduzca la nueva contrase\u00f1a de UNIX: V1\nVuelva a escribir la nueva contrase\u00f1a de UNIX: V1\npasswd: contrase\u00f1a actualizada correctamente\nCambiando la informaci\u00f3n de usuario para orion\nIntroduzca el nuevo valor, o pulse INTRO para usar el valor predeterminado\n\tNombre completo &#91;]: UGIT\n\tN\u00famero de habitaci\u00f3n &#91;]: \n\tTel\u00e9fono del trabajo &#91;]: \n\tTel\u00e9fono de casa &#91;]: \n\tOtro &#91;]: \n\u00bfEs correcta la informaci\u00f3n? &#91;S\/n] <\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>A\u00f1adimos el usuario al grupo \u00abroot\u00bb<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>adduser orion root<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Resultado<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>A\u00f1adiendo al usuario `orion' al grupo `root' ...\nA\u00f1adiendo al usuario orion al grupo root\nHecho.<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Abrimos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/ssh\/sshd_config<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Modificamos el acceso de ssh para dar permiso a orion<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>AllowUsers root ugit\nX\nAllowUsers root orion<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Reiniciamos el servicio<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/etc\/init.d\/ssh restart<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Verificamos que podemos ingresar con ambos usuarios<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh root@10.20.200.15 -p 44 A0\nssh orion@10.20.200.15 -p 44 V1<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Actualizaci\u00f3n del sistema<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Si es basado en debian<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>apt update\napt upgrade\napt dist-upgrade\napt autoremove<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Problemas Principales<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Debian 10: NO_PUBKEY 467B942D3A79BD29<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>d<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Dependencias<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Instalamos dependencias<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>apt-get install make build-essential net-tools git -y<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Instalaci\u00f3n y configuraci\u00f3n de SSH<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Instalamos el servicio:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install openssh-server openssh-client -y<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Abrimos el archivo:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/ssh\/sshd_config<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Modificamos el n\u00famero de puerto<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>#Port 22\nX\nPort 44<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Por defecto cualquier usuario del sistema que tenga permisos de shell se puede conectar por SSH, indicamos que nos podemos conectar por root<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>#PermitRootLogin prohibit-password\nX\nPermitRootLogin yes<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Aplicamos las siguientes configuraciones:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>-----------------------------------------------------------------------\n#Tiempo para introducir la contrase\u00f1a\n-----------------------------------------------------------------------\n#LoginGraceTime 2m\nX\nLoginGraceTime 45\n\n-----------------------------------------------------------------------\n#N\u00famero de sesiones m\u00e1xima por usuario permitida\n-----------------------------------------------------------------------\n#StrictModes yes\nX\nStrictModes yes\n\n-----------------------------------------------------------------------\n#N\u00fameros de intentos permitidos de introducir la contrase\u00f1a antes de desconectarnos\n-----------------------------------------------------------------------\n#MaxAuthTries 6\nX\nMaxAuthTries 3\n\n-----------------------------------------------------------------------\n#N\u00famero de sesiones m\u00e1xima por usuario permitida\n-----------------------------------------------------------------------\n#MaxSessions 10\nX\nMaxSessions 8 \n\n-----------------------------------------------------------------------\n#Si queremos habilitar el acceso ssh de usuarios del sistema con usuario y clave\n#yes\n#Si lo queremos impedir: no\n-----------------------------------------------------------------------\n#PubkeyAuthentication yes\nX\nPubkeyAuthentication yes\n-----------------------------------------------------------------------\n#PasswordAuthentication yes\nX\nPasswordAuthentication yes\n-----------------------------------------------------------------------\n\n\n-----------------------------------------------------------------------\n#Agregamos al final del archivo: usuarios permitidos para conexi\u00f3n ssh\n-----------------------------------------------------------------------\nAllowUsers root orion \n\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Para brindar una mayor seguridad, vamos a indicarle a openssh cuales algoritmos de intercambio de claves, cifrado sim\u00e9trico y configuraci\u00f3n de HMAC para la comprobaci\u00f3n de la integridad deseamos utilizar.<\/li><li>Vamos a\u00f1adir tambi\u00e9n al final del archivo:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512\nCiphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr\nMACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,umac-128-etm@openssh.com\nHostKeyAlgorithms ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-rsa,ssh-dss,ssh-ed25519<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Reiniciamos el servicio<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/etc\/init.d\/ssh restart<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Configuraci\u00f3n de postfix \u2013 gmail<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Guia: <a rel=\"noreferrer noopener\" href=\"\/?p=11119\" target=\"_blank\">\/?p=11119<\/a><\/li><li>para probar<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \"Contenido\" | mail -s \"nombre_servidor\" gustavo.matamoros@gmail.com<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Instalaci\u00f3n clamav<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Instalamos el software<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install clamav clamav-daemon -y<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Detenemos el servicio para actualizar la base de datos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl stop clamav-freshclam.service<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Modificamos la configuraci\u00f3n para que vea el servidor local de clamav<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/clamav\/freshclam.conf<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Comentamos las lineas<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>DatabaseMirror db.local.clamav.net\nDatabaseMirror database.clamav.net<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Agregamos al final<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>DatabaseMirror clamav.siua.ac.cr\nPrivateMirror clamav.siua.ac.cr\nDatabaseCustomURL http:\/\/clamav.siua.ac.cr\/main.cvd\nDatabaseCustomURL http:\/\/clamav.siua.ac.cr\/daily.cvd\nDatabaseCustomURL http:\/\/clamav.siua.ac.cr\/bytecode.cvd\nDatabaseCustomURL http:\/\/clamav.siua.ac.cr\/safebrowsing.cvd<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Actualizamos la base de datos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>freshclam<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Si da el error<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>Clamd was NOT notified: Can't connect to clamd through \/var\/run\/clamav\/clamd.ctl<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>1-&gt;Reiniciamos el servidor<\/li><li>2-&gt;Si no funciona ejecutamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>service clamav-daemon restart<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Establecemos que el servicio arranque con el sistema<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl enable clamav-freshclam<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Iniciamos el servicio<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl start clamav-freshclam<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>NOTA: El directorio \/sys de problemas de permisos pero como ning\u00fan cliente va acceder por tanto lo podemos excluir<\/li><li>Escaneamos el sistema excluyendo sys (Omitir solo para conocimiento)<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>clamscan -ri --exclude-dir=\/sys\/ \/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Donde:<ul><li>r: recursivo<\/li><li>i: busque infecciones<\/li><li>\u2013exclude-dir: excluya el directorio<\/li><li>\/ = cual directorio ra\u00edz<\/li><\/ul><\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Envi\u00f3 de correo por parte de clamav<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Vamos a configurar el escaneo autom\u00e1tico a las 11:30pm por parte de clamav<\/li><li>Y vamos hacer que si detecta una infecci\u00f3n envi\u00e9 los archivos a cuarentena<\/li><li>Primero debemos garantizar que el servidor puede enviar correos por la terminal con los pasos anteriores<\/li><li>Creamos la carpeta de cuarentena dentro del directorio de root<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir \/root\/clamav<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Creamos las carpetas \u201ccuarentena\u201d y \u201clogs\u201d dentro de clamav<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir \/root\/clamav\/cuarentena\nmkdir \/root\/clamav\/logs<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Creamos el script<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/usr\/local\/bin\/clamav.sh<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Agregamos el c\u00f3digo<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n# ClamAV_Scan_Script\n# Script que ejecuta un escaneo con ClamAV del dir o archivo seleccionado\n# editado del original en \"http:\/\/www.taringa.net\/comunidades\/ubuntuparataringeros\/1327480\/&#91;Tip]-Script-para-escanear-f\u00e1cilmente-con-ClamAV.html\"\n# -----------------------------------------------------------------------------\n# Crear la carpeta \"clamav\" dentro del directorio \"$HOME\" y dentro de la misma\n# crear las carpetas \"cuarentena\" y \"logs\" dentro de \"clamav\"\n# ----------------------------------------------------------------------------\n# Ubicar el Script en \"\/usr\/local\/bin\" y darle permisos de ejecucion\n# \"chmod +x \/usr\/local\/bin\/clamav\"\n# Ubicarlo en el \"crontab\" para su ejecucion el dia seleccionado\n# ---------------------------------------------------------------------------\n#\n# --Carpetas de Configuracion -- #\nclamfolder=\"clamav\"\nlogfolder=\"logs\"\ncuarentenafolder=\"cuarentena\"\nlogfile=\"clamscan-`date +%F_%T`.log\"\ndirs=\"\/ \" #directorios a verificar\nscan=\/usr\/bin\/clamscan\nuserhome=\"$HOME\"\nuser=`whoami`\n\n# -- Codigo de arranque -- #\necho \"ClamAV scan Iniciado el dia\" `date` \"por el usuario\" ${user} \"- Guardado como\" \\\n${userhome}\/${clamfolder}\/${logfolder}\/${logfile}\\ &gt; ${userhome}\/${clamfolder}\/${logfolder}\/${logfile}\n\necho \"Iniciando escaneo con ClamAV...\"\n$scan --infected --recursive --log=${userhome}\/${clamfolder}\/${logfolder}\/${logfile} \\\n--move=${userhome}\/${clamfolder}\/${cuarentenafolder} --exclude-dir=\/sys\/ $dirs\necho \"Finalizado escaneo con Clamav\" `date`<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Le otorgamos permisos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod +x \/usr\/local\/bin\/clamav.sh<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Probamos el funcionamiento (Opcional)<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>. \/usr\/local\/bin\/clamav.sh<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ahora creamos una tarea crontab<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>crontab -e<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Agregamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>30 23 * * * \/usr\/local\/bin\/clamav.sh 2&gt;&amp;1 | tee \/root\/clamav\/output.txt | mail -s \"clamav: $(hostname -s)\" log@siua.ac.cr<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Verificaci\u00f3n de instalaci\u00f3n rkhunter<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Primero verificamos si lo tiene instalado<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>rkhunter --update<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Verificamos el script <\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/cron.monthly\/rkhunter.sh<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Debe estar as\u00ed<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/sh\n(\nrkhunter --update --check --sk --nocolors --rwo --pkgmgr dpkg\n) | mail -s 'rkhunter: SERVIDOR' log@siua.ac.cr<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Si lo tiene instalado y actualiza correctamente escanee el sistema como:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>rkhunter -c<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Si lo tiene instalado y da el siguiente error<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>Invalid WEB_CMD configuration option: Relative pathname: \"\/bin\/false\"<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Abra el archivo<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/rkhunter.conf<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Y modifique<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>UPDATE_MIRRORS=0\nX\nUPDATE_MIRRORS=1\n\nMIRRORS_MODE=1\nX\nMIRRORS_MODE=0\n\nWEB_CMD=\"\/bin\/false\"\nX\nWEB_CMD=\"\"<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Y proceda a actualizarlo<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>rkhunter --update<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Y luego verifique el sistema<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>rkhunter -c<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Si no lo tiene instalado aplique la secci\u00f3n siguiente<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Instalaci\u00f3n de rkhunter<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>Instalamos rkhunter&nbsp;que es un esc\u00e1ner que analiza y busca en nuestro ordenador, backdoors, exploits, sniffers y por supuesto rootkits, realizando diferentes pruebas a nuestro sistema.<\/li><li>Ingresamos a tmp para que despu\u00e9s del siguiente reinicio se eliminen los archivos:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/tmp<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Descargamos el fichero:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>wget \/wp-content\/uploads\/2019\/09\/rkhunter-1.4.6.tar.gz<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Lo descomprimimos:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>tar -zxf rkhunter-1.4.6.tar.gz<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ingresamos a la carpeta:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>cd rkhunter-1.4.6<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Lo instalamos:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/installer.sh --install<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Podemos verificar la versi\u00f3n:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>rkhunter --versioncheck<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Actualizamos la base de datos:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>rkhunter --update<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Crear el archivo rkhunter.dat<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>rkhunter --propupd<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ahora podemos verificar el sistema (Opcional)<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>rkhunter -c<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ahora creamos un cron mensual para que verifique nuestro sistema<\/li><li>Creamos una archivo en:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/cron.monthly\/rkhunter.sh<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Agregamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/sh\n(\nrkhunter --update --check --sk --nocolors --rwo --pkgmgr dpkg\n) | mail -s 'rkhunter: SERVIDOR' log@siua.ac.cr<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Le damos permisos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod +x \/etc\/cron.monthly\/rkhunter.sh<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Podemos verificar el funcionamiento con<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>. \/etc\/cron.monthly\/rkhunter.sh<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Verificaci\u00f3n de Chkrootkit (Contenedor no se instala)<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>NOTA: si el servidor es un contenedor este programa no se debe instalar<\/li><li>Primero verificamos si se encuentra instalado, para esto<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>chkrootkit -q<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Si da el siguiente error<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>can't exec .\/strings-static,<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ejecute<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>apt remove chkrootkit\napt install chkrootkit\n\n# Vuelva a intentarlo\nchkrootkit -q<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Si no es un contenedor y no se encuentra instalado, en la siguiente secci\u00f3n explica como realizar el proceso<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Chkrootkit (si es contenedor debian no se instala)<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Programa que permite&nbsp;buscar rootkits<\/li><li>Ingresamos a \/tmp para que los archivos sean eliminados despu\u00e9s de reiniciar<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/tmp<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Descargamos el archivo: <a href=\"\/wp-content\/uploads\/2019\/09\/chkrootkit.tar.gz\">chkrootkit053<\/a><\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>wget \/wp-content\/uploads\/2019\/09\/chkrootkit.tar.gz<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Lo descomprimimos:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>tar xvfz chkrootkit.tar.gz<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ingresamos a la carpeta:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>cd chkrootkit-0.53\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Lo&nbsp;compilamos:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>make sense<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Regresamos un nivel en la capeta:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>cd ..<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Movemos el contenido a \/usr\/local\/chkrootkit<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>mv chkrootkit-0.53\/ \/usr\/local\/chkrootkit<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ingresamos a la carpeta para verificar que existen los archivos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/usr\/local\/chkrootkit\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Creamos una enlace simb\u00f3lico<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>ln -s \/usr\/local\/chkrootkit\/chkrootkit \/usr\/local\/bin\/chkrootkit<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Verificamos el servidor:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>#Muestra todo la salida\nchkrootkit \n\n#Muestra solo las detecciones\nchkrootkit -q<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Creamos un cron que se ejecute todos los meses<\/li><li>Ejecutamos:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>crontab -e<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Le agregamos el siguiente contenido<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>@monthly \/usr\/local\/chkrootkit\/chkrootkit -q | mail -s \"chkrootkit: $(hostname -s)\" log@siua.ac.cr<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Verificaci\u00f3n de logwatch<\/h2>\n\n\n\n<ul class=\"wp-block-list\" id=\"block-e9d53407-d54d-4afe-b24c-fd60d3c35ad8\"><li>Logwatch es un sistema de monitoreo de logs personalizable. Su funci\u00f3n es revisar los logs del sistema en un per\u00edodo 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 \u00fatil para monitorear la actividad de los servidores y detectar posibles abusos, intentos de intrusi\u00f3n, consumo de recursos, etc.<\/li><li>Es importante saber que logwatch se instala en \u00ab\/usr\/share\/logwatch\u00bb pero crea una estructura de archivos en \/etc\/logwatch, la idea es que toda configuraci\u00f3n \u00abadicional\u00bb la hagamos aqu\u00ed y esta sobreescriba a la de \/usr\/share\/logwatch<\/li><li>Abrimos el archivo<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/logwatch\/conf\/logwatch.conf<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Verificamos que tenga la siguiente configuraci\u00f3n<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>Output = mail\n\nFormat = html\n\nMailTo = log@siua.ac.cr\n\nMailFrom = Logwatch_SERVIDOR\n\nDetail = 8<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Es probable que si sigui\u00f3 esta gu\u00eda al momento de reinstalar postfi se haya eliminado logwatch por lo que lo reinstalamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install logwatch -y<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Probamos el funcionamiento<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>logwatch<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Si no lo tiene instalado siga la siguiente secci\u00f3n.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Instalar logwatch<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><\/li><li>Los instalamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>apt-get install logwatch -y<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Copiamos el archivos de&nbsp;configuraci\u00f3n de \u00abf\u00e1brica\u00bb<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>cp \/usr\/share\/logwatch\/default.conf\/logwatch.conf \/etc\/logwatch\/conf\/logwatch.conf<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Creamos una carpeta requerida:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir \/var\/cache\/logwatch<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Abrimos el archivo: (CAMBIO PLANTILLA)<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/logwatch\/conf\/logwatch.conf<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Modificamos:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>-------------------------------------------------------------- \nOutput = stdout \nX \nOutput = mail \n-------------------------------------------------------------- \n\n-------------------------------------------------------------- \nFormat = text \nX \nFormat = html \n-------------------------------------------------------------- \nMailTo = root \nX \nMailTo = log@siua.ac.cr\n-------------------------------------------------------------- \nMailFrom = Logwatch \nX \nMailFrom = Logwatch_NOMBRE_SERVIDOR -------------------------------------------------------------- \nDetail = Low \nX \nDetail = 8 \n--------------------------------------------------------------<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Si fuera necesario modificar el archivo:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/cron.daily\/00logwatch<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Instalar Fail2ban<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Instalamos:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>apt-get install fail2ban -y<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Copiamos el archivo<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>cp \/etc\/fail2ban\/jail.conf \/etc\/fail2ban\/jail.local<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Abrimos el archivo<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/fail2ban\/jail.local<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Buscamos y remplazamos:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>ignoreip = 127.0.0.1\/8 \nX \nignoreip = 127.0.0.1 10.20.190.0\/24 10.20.200.0\/24 181.193.87.0\/28 10.30.240.0\/24 201.237.206.56 \n\n-------------------------------------------------------------- \nbantime  = 10m \nX \nbantime = 172800 \n-------------------------------------------------------------- \nmaxretry = 5 \nX \nmaxretry = 3 \n-------------------------------------------------------------- \ndestemail = root@localhost \nX \ndestemail = ataques@siua.ac.cr <\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Guardamos el archivo y cerramos<\/li><li>Remplazamos el contenido dependiendo de los servicios que desea controlar<\/li><li>Podemos saber los servicios corriendo con alguno de los siguientes comandos:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>ps -axf\nlsof -i -P -n\nlsof -i -P -n | grep LISTEN<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ahora abrimos el archivo de jail para habilitar servicios<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/fail2ban\/jail.d\/defaults-debian.conf<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Agregamos la jail de SSHD<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>#***********************************\n#*********** SSH  ******************\n#***********************************\n&#91;sshd]\nenabled = true\n\n&#91;sshd-ddos]\nenabled = true<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Como nevia correos agregamos la jail de postfix<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>#***********************************\n#**********  POSTFIX ***************\n#***********************************\n&#91;postfix]\nenabled  = true\n\n&#91;postfix-rbl]\nenabled = true<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>MYSQL<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>#***********************************\n#*********  MYSQL   ****************\n#***********************************\n&#91;mysqld-auth]\nenabled = true<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Apache<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>#*********************************** \n#********** APACHE **************** \n#***********************************\n&#91;apache-auth]\nenabled = true\n\n&#91;apache-badbots]\nenabled = true\n\n&#91;apache-noscript]\nenabled = true\n\n&#91;apache-overflows]\nenabled = true\n\n&#91;apache-nohome]\nenabled = true\n\n&#91;apache-botsearch]\nenabled = true\n\n&#91;apache-fakegooglebot]\nenabled = true\n\n&#91;apache-modsecurity]\nenabled = true\n\n&#91;apache-shellshock]\nenabled = true<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>NGINX<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>#***********************************\n#**********  NGINX  ****************\n#***********************************\n&#91;nginx-http-auth]\nenabled = true<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Reiniciamos fail2ban:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>service fail2ban restart<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Limpiamos el log<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>fail2ban-client flushlogs<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Modificar el tiempo de banea a 2 d\u00edas (2880 segundos)<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>fail2ban-client set dbpurgeage 2880<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Centralizaci\u00f3n UGIT &#8211; BLACKLIST<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Instalamos dependencias<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>apt-get install mysql-client curl jq -y<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ingresamos al directorio<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/etc\/fail2ban\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Abrimos el archivo<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/fail2ban\/jail.local<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Buscamos la linea<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># The simplest action to take: ban only<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Y antes de esta linea insertamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>############################################################################################################################################\n################ ACCION UGIT: Banea la Ip, envia un mail, Inserta en BD y la incluye en el IPSET de PROMOX ################################\n############################################################################################################################################\n\naction_ugit = %(banaction)s&#91;name=%(__name__)s, bantime=\"%(bantime)s\", port=\"%(port)s\", protocol=\"%(protocol)s\", chain=\"%(chain)s\"]\n              %(mta)s-whois&#91;name=%(__name__)s, sender=\"%(sender)s\", dest=\"%(destemail)s\", protocol=\"%(protocol)s\", chain=\"%(chain)s\"]\n              ip-to-blacklist-ugit<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ahora cambiamos la accion defecto por buscamos y remplazamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>action = %(action_)s\nX\naction = %(action_ugit)s<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Creamos el archivo<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/fail2ban\/action.d\/ip-to-blacklist-ugit.conf<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Agregamos el siguiente contenido<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;INCLUDES]\n\nbefore = iptables-common.conf\n\n&#91;Definition]\n\nactionban = \/etc\/fail2ban\/agrega_ip_blacklist-ugit.sh &lt;ip&gt;\n\n&#91;Init]<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Reiniciamos fail2ban<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>service fail2ban restart<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Creamos el archivo<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/fail2ban\/agrega_ip_blacklist-ugit.sh<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Agregamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>#! \/bin\/bash\n\n#######################################################################\n#################           PARAMETROS             ####################\n#######################################################################\n#ip_ban=\"119.94.116.145\"\n#Le pasamos el primer parametro del script\nip_ban=$1\n\n\n\n#######################################################################\n################     VARIABLES: IP                 ####################\n#######################################################################\nFecha_Hora=`date +\"%Y-%m-%d %T\"`\nservidor_atacado=$(hostname -s)\n\n\n\n\n\n###########################################################################################################\n###########################################################################################################\n###########                        FUNCION Comprobar si ya existe la IP                   #################\n###########################################################################################################\n###########################################################################################################\nfunction verificaExiste () {\n    RESPUESTA=$(mysql --defaults-file=\/root\/conexionmysql.ini -s &lt;&lt;&lt;\"SELECT IP_SAE_SIGESTIC_BLIP FROM tab_sae_sigetic_blacklist_ips WHERE IP_SAE_SIGESTIC_BLIP = '$ip_ban'\")\n    #printf $RESPUESTA\n    #Ejemplos 124.7.227.112 (si)\n    #124.7.227.113 (no)\n    if &#91;&#91; $RESPUESTA ]]\n    then\n      #Existe\n      true\n    else\n      #No existe\n      false\n    fi\n}\n\n###########################################################################################################\n###########################################################################################################\n######################            Funcion: guardarSigetic                                  ################\n###########################################################################################################\n###########################################################################################################\n#Esta funci\u00f3n obtiene los datos de la IP atacante desde Whois\n\nfunction guardarSigetic () {\n\n  ##########################################################################\n  #####################  P6: Inserta en MYSQL      #########################\n  ##########################################################################\n  #NOTA: IP va sin comillas ya que se obtienen desde la obtenci\u00f3n de datos\n  mysql --defaults-file=\/root\/conexionmysql.ini -e \"\n  insert into tab_sae_sigetic_blacklist_ips\n    (\n      IP_SAE_SIGESTIC_BLIP,\n      Nombre_Red_SAE_SIGESTIC_BLIP,\n      Organizacion_SAE_SIGESTIC_BLIP,\n      Codigo_Pais_SAE_SIGESTIC_BLIP,\n      Nombre_Pais_SAE_SIGESTIC_BLIP,\n      Codigo_Region_SAE_SIGESTIC_BLIP,\n      Nombre_Region_SAE_SIGESTIC_BLIP,\n      Ciudad_SAE_SIGESTIC_BLIP,\n      CIDR_SAE_SIGESTIC_BLIP,\n      Latitud_SAE_SIGESTIC_BLIP,\n      Longitud_SAE_SIGESTIC_BLIP,\n      Fecha_Hora_SAE_SIGESTIC_BLIP,\n      Servidor_SAE_SIGESTIC_BLIP\n    ) values(\n      $ip,\n      '$nombre',\n      '$organizacion',\n      '$country_code',\n      '$country_name',\n      '$region_code',\n      '$region_name',\n      '$city',\n      '$cidr',\n      '$latitude',\n      '$longitude',\n      '$Fecha_Hora',\n      '$servidor_atacado'\n    );\" $1 &amp;&gt; \/dev\/interuniversitariadealajuela\n\n    true\n}\n\n\n###########################################################################################################\n###########################################################################################################\n######################            Funcion: obtenerInformacionIPFreeGEOIP                   ################\n###########################################################################################################\n###########################################################################################################\n#Esta funci\u00f3n obtiene los datos de la IP atacante desde freegeoip\n\nfunction obtenerInformacionIPFreeGEOIP () {\n\n\n  #############################################################\n  #PASO01: Obtenemos los datos desde https:\/\/reallyfreegeoip.org\n  #y creamos un json con el resultado se guarda en nano \/etc\/fail2ban\/freegeoip.json\n  #############################################################\n  curl -sS https:\/\/reallyfreegeoip.org\/json\/$ip_ban &gt; freegeoip.json\n\n\n\n  #############################################################\n  #PASO02: Obtenemos la informaci\u00f3n desde el JSON\n  #############################################################\n  freegeoip=$(cat freegeoip.json)\n\n  printf \"******************************************\\n\"\n  printf \"***** RESULTADOS DE: freegeoip   *********\\n\"\n  printf \"******************************************\\n\"\n  echo $freegeoip\n\n  #############################################################\n  #PASO03: Verificamos los valores\n  #############################################################\n  #-z: string is null, that is, has zero length\n  \n  \n  #************************************************************\n  #************************************************************\n  #OBTENER: IP \n  #************************************************************\n  #************************************************************\n  ip=$(echo ${freegeoip} | jq '.ip')\n  if &#91; ! -z \"$ip\" ]\n  then\n    ip=$ip\n  else\n    ip=\"DESCONOCIDA\"\n  fi\n\n  #************************************************************\n  #************************************************************\n  #OBTENER: country_code \n  #************************************************************\n  #************************************************************\n  country_code=$(echo ${freegeoip} | jq -r '.country_code')\n  if &#91; ! -z \"$country_code\" ]\n  then\n    country_code=$country_code\n  else\n    country_code=\"VACIO\"\n  fi\n\n  #************************************************************\n  #************************************************************\n  #OBTENER: country_name \n  #************************************************************\n  #************************************************************\n  country_name=$(echo ${freegeoip} | jq -r '.country_name')\n  if &#91; ! -z \"$country_name\" ]\n  then\n    country_name=$country_name\n  else\n    country_name=\"DESCONOCIDO\"\n  fi\n\n  #************************************************************\n  #************************************************************\n  #OBTENER: region_code \n  #************************************************************\n  #************************************************************\n  region_code=$(echo ${freegeoip} | jq -r '.region_code')\n  if &#91; ! -z \"$region_code\" ]\n  then\n    region_code=$region_code\n  else\n    region_code=\"VACIO\"\n  fi\n\n  #************************************************************\n  #************************************************************\n  #OBTENER: region_name \n  #************************************************************\n  #************************************************************\n  region_name=$(echo ${freegeoip} | jq -r '.region_name')\n  if &#91; ! -z \"$region_name\" ]\n  then\n    region_name=$region_name\n  else\n    region_name=\"DESCONOCIDO\"\n  fi\n\n  #************************************************************\n  #************************************************************\n  #OBTENER: city \n  #************************************************************\n  #************************************************************\n  city=$(echo ${freegeoip} | jq -r '.city')\n  if &#91; ! -z \"$city\" ]\n  then\n    city=$city\n  else\n    city=\"DESCONOCIDO\"\n  fi\n\n  #************************************************************\n  #************************************************************\n  #OBTENER: latitude \n  #************************************************************\n  #************************************************************\n  latitude=$(echo ${freegeoip} | jq -r '.latitude')\n  if &#91; ! -z \"$latitude\" ]\n  then\n    latitude=$latitude\n  else\n    latitude=\"0.000000\"\n  fi\n\n  #************************************************************\n  #************************************************************\n  #OBTENER: longitude \n  #************************************************************\n  #************************************************************\n  longitude=$(echo ${freegeoip} | jq -r '.longitude')\n  if &#91; ! -z \"$longitude\" ]\n  then\n    longitude=$longitude\n  else\n    longitude=\"0.000000\"\n  fi\n\n\n\n  printf \"******************************************\\n\"\n  printf \"******* DATOS FINALES: FREEGEOIP *********\\n\"\n  printf \"******************************************\\n\"\n  printf \"ip:${ip}\\n\"\n  printf \"country_code:${country_code}\\n\"\n  printf \"country_name:${country_name}\\n\"\n  printf \"region_code:${region_code}\\n\"\n  printf \"region_name:${region_name}\\n\"\n  printf \"city:${city}\\n\"\n  printf \"latitude:${latitude}\\n\"\n  printf \"longitude:${longitude}\\n\"\n\n  #Resultado\n  true\n}\n\n\n\n###########################################################################################################\n###########################################################################################################\n######################            Funcion: obtenerInformacionIPWhois                       ################\n###########################################################################################################\n###########################################################################################################\n#Esta funci\u00f3n obtiene los datos de la IP atacante desde Whois\n\nfunction obtenerInformacionIPWhois () {\n\n  #############################################################\n  #PASO01: Obtenemos los datos desde whois.arin.net\n  #y creamos un archivo con el resultado se guarda en nano \/etc\/fail2ban\/whois.txt\n  #############################################################\n  whois $ip_ban -h whois.arin.net &gt; whois.txt\n\n  #############################################################\n  #PASO02: Obtenemos la informaci\u00f3n desde el TXT\n  #############################################################\n \n  #Obtenemos la linea deseada -i: Ignorar mayusculas y minusculas -m 1 solo el primer resultado\n  netname=`cat whois.txt | grep -i -m 1 NetName: | tail -n 1`\n  #Recortamos el valor\n  netname=${netname#\"NetName:        \"}\n  \n\n  #organization\n  organization=`cat whois.txt | grep -i organization: | tail -n 1`\n  organization=${organization#\"Organization:   \"}\n\n\n  #responsible\n  responsible=`cat whois.txt | grep -i responsible: | tail -n 1`\n  responsible=${responsible#\"responsible: \"}\n\n  #role\n  role=`cat whois.txt | grep -i role: | tail -n 1`\n  role=${role#\"role:           \"}\n\n\n  #cidr\n  cidr=`cat whois.txt | grep -i cidr: | tail -n 1`\n  cidr=${cidr#\"CIDR:           \"}\n\n\n  #route\n  route=`cat whois.txt | grep -i route: | tail -n 1`\n  route=${route#\"route:          \"}\n\n  #############################################################\n  #PASO03: DETERMINAR VALORES CORRECTOS\n  #############################################################\n  \n\n\n  #************************************************************\n  #Nombre\n  #************************************************************\n  if &#91; ! -z \"$netname\" ]\n  then\n    nombre=$netname\n  else\n    if &#91; ! -z \"$organization\" ]\n    then\n      nombre=$organization\n    else\n      if &#91; ! -z \"$responsible\" ]\n      then\n        nombre=$responsible\n      else\n        if &#91; ! -z \"$role\" ]\n        then\n          nombre=$role\n        else\n          nombre=\"No existe\"\n        fi\n      fi\n    fi\n  fi\n\n  #************************************************************\n  #Nombre\n  #************************************************************\n  if &#91; ! -z \"$organization\" ]\n  then\n    organizacion=$organization\n  else\n    if &#91; ! -z \"$netname\" ]\n    then\n      organizacion=$netname\n    else\n      if &#91; ! -z \"$responsible\" ]\n      then\n        organizacion=$responsible\n      else\n        if &#91; ! -z \"$role\" ]\n        then\n          organizacion=$role\n        else\n          organizacion=\"No existe\"\n        fi\n      fi\n    fi\n  fi\n\n  #************************************************************\n  #cidr\n  #************************************************************\n  if &#91; ! -z \"$route\" ]\n  then\n    cidr=$route\n  else\n    if &#91; ! -z \"$cidr\" ]\n    then\n      cidr=$cidr\n    else\n      cidr=\"\"\n    fi\n  fi\n\n\n  printf \"******************************************\\n\"\n  printf \"***********     DATOS: WHOIS     *********\\n\"\n  printf \"******************************************\\n\"\n  printf \"netname:${netname}\\n\"\n  printf \"organization:${organization}\\n\"\n  printf \"responsible:${responsible}\\n\"\n  printf \"role:${role}\\n\"\n  printf \"cidr:${cidr}\\n\"\n  printf \"route:${route}\\n\"\n\n  #Resultado\n  true\n\n}\n\n###########################################################################################################\n###########################################################################################################\n######################            Funcion: enviacorreo                       ################\n###########################################################################################################\n###########################################################################################################\n\nfunction enviacorreo(){\n\n      correoDestino=\"ataques@siua.ac.cr\"\n      correoSender=\"servidores@siua.ac.cr\"\n      logo=\"https:\/\/www.siua.ac.cr\/img\/logo.png\"\n\n      correo=\"&lt;!DOCTYPE&gt;\"\n      correo=\"$correo&lt;html&gt;\"\n      correo=\"$correo&lt;head&gt;\"\n      correo=\"$correo&lt;meta http-equiv='Content-Type' content='text\/html; charset=utf-8'&gt;\"\n      correo=\"$correo&lt;meta name='viewport' content='width=device-width, initial-scale=1'&gt;\"\n      correo=\"$correo&lt;title&gt;&#91;F2B: $servidor_atacado\/$ip_ban] &lt;\/title&gt;\"\n      correo=\"$correo&lt;style type='text\/css'&gt;\"\n      correo=\"$correo table, th, td {border: 1px solid black; padding:5px}a{text-decoration: none;}.link:hover {text-decoration: none !important;}@media screen and (min-width: 650px) {.des-pt50 {padding-top: 50px !important;}.des-pb50 {padding-bottom: 50px !important;}.des-mauto {margin: 0px !important;}.des-pb0 {padding-bottom: 0px !important;}.td, .tfoot, .thead {display: table-cell !important;}.table {display: table; width: 100%;}}\"\n      correo=\"$correo&lt;\/style&gt;\"\n      correo=\"$correo&lt;\/head&gt;\"\n      correo=\"$correo&lt;body style='margin:0;padding:0;background: #F8F8F8;' id='body'&gt;\"\n      correo=\"$correo&lt;div class='tac pt10 pb10 pl10 pr10' style='padding-top:10px;padding-bottom:10px;padding-right:10px;padding-left:10px;text-align:center;background: #015289;'&gt;\"\n      correo=\"$correo&lt;div class='table' style='max-width: 600px; margin:0 auto;'&gt;\"\n      correo=\"$correo&lt;div class='td w50p vam' style='vertical-align:middle;'&gt;\"\n      correo=\"$correo&lt;img alt='SIUA' border='0' class='pb10 des-mauto des-pb0' src='${logo}' style='display:block;border:0;padding-bottom:10px;margin:0 auto; display: block; color: #ffffff; ' width='125'&gt;\"\n      correo=\"$correo&lt;\/div&gt;\"\n      correo=\"$correo&lt;div class='td w50p vam des-tar' style='vertical-align:middle;'&gt;\"\n      correo=\"$correo&lt;p class='white' style='margin:0;font-size:16px;font-family: Helvetica, Arial, sans-serif;color:#ffffff;'&gt;\"\n      correo=\"$correo Unidad de Gesti\u00f3n e Innnovaci\u00f3n Tecnol\u00f3gica\"\n      correo=\"$correo&lt;\/p&gt;\"\n      correo=\"$correo&lt;\/div&gt;\"\n      correo=\"$correo&lt;\/div&gt;\"\n      correo=\"$correo&lt;\/div&gt;\"\n      correo=\"$correo&lt;div class='frame' style='background:#F8F8F8;'&gt;\"\n      correo=\"$correo&lt;div class='pl15 pr15 pt35 des-pt50 pb25 des-pb50' style='padding-right:15px;padding-left:15px;padding-bottom:25px;padding-top:35px;'&gt;\"\n      correo=\"$correo&lt;div class='wrapper pt35 pb35 pl35 pr35 box' style='padding-top:35px;padding-bottom:35px;padding-right:35px;padding-left:35px;max-width:600px;margin:0 auto;text-align:center;mso-element-frame-width:800px;mso-element:para-border-div;mso-element-left:center;mso-element-wrap:no-wrap-beside;mso-padding-top-alt:50px;background:#ffffff;border-radius:10px;'&gt;\"\n      correo=\"$correo&lt;h2 class='fsz30 lh36 bold pt25 pb15 mso-mb15' style='font-family:Helvetica, Arial, sans-serif;margin:0;padding-bottom:15px;padding-top:25px;color:#353a3e;font-family:Helvetica, Arial, sans-serif;font-weight:bold;font-size:30px;line-height:36px;mso-margin-bottom-alt:15px;'&gt;\"\n      correo=\"$correo IPs Incluidas en BD\"\n      correo=\"$correo&lt;\/h2&gt;\"\n      correo=\"$correo&lt;p class='fsz16 lh24 mso-mb25' style='margin:0;color:#777777;font-family:Helvetica, Arial, sans-serif;font-size:16px;line-height:24px;mso-margin-bottom-alt:25px;'&gt;\"\n      correo=\"$correo&lt;table style='width:100%; background-color:#FFFFFF;border-collapse: collapse;align:center'&gt;\"\n      \n      correo=\"$correo&lt;tr&gt;\"\n      correo=\"$correo&lt;td style='text-align:center; background-color:#015289;color:#ffffff;'&gt;IP&lt;\/td&gt;\"\n      correo=\"$correo&lt;td&gt;${ip_ban}&lt;\/td&gt;\"\n      correo=\"$correo&lt;\/tr&gt;\"\n\n      correo=\"$correo&lt;tr&gt;\"\n      correo=\"$correo&lt;td style='text-align:center; background-color:#015289;color:#ffffff;'&gt;Fecha y Hora&lt;\/td&gt;\"\n      correo=\"$correo&lt;td&gt;${Fecha_Hora}&lt;\/td&gt;\"\n      correo=\"$correo&lt;\/tr&gt;\"\n\n      correo=\"$correo&lt;tr&gt;\"\n      correo=\"$correo&lt;td style='text-align:center; background-color:#015289;color:#ffffff;'&gt;Country Code&lt;\/td&gt;\"\n      correo=\"$correo&lt;td&gt;${country_code}&lt;\/td&gt;\"\n      correo=\"$correo&lt;\/tr&gt;\"\n\n      correo=\"$correo&lt;tr&gt;\"\n      correo=\"$correo&lt;td style='text-align:center; background-color:#015289;color:#ffffff;'&gt;Country Name&lt;\/td&gt;\"\n      correo=\"$correo&lt;td&gt;${country_name}&lt;\/td&gt;\"\n      correo=\"$correo&lt;\/tr&gt;\"\n\n      correo=\"$correo&lt;tr&gt;\"\n      correo=\"$correo&lt;td style='text-align:center; background-color:#015289;color:#ffffff;'&gt;Region Code&lt;\/td&gt;\"\n      correo=\"$correo&lt;td&gt;${region_code}&lt;\/td&gt;\"\n      correo=\"$correo&lt;\/tr&gt;\"\n\n      correo=\"$correo&lt;tr&gt;\"\n      correo=\"$correo&lt;td style='text-align:center; background-color:#015289;color:#ffffff;'&gt;Region Name&lt;\/td&gt;\"\n      correo=\"$correo&lt;td&gt;${region_name}&lt;\/td&gt;\"\n      correo=\"$correo&lt;\/tr&gt;\"\n\n      correo=\"$correo&lt;tr&gt;\"\n      correo=\"$correo&lt;td style='text-align:center; background-color:#015289;color:#ffffff;'&gt;City&lt;\/td&gt;\"\n      correo=\"$correo&lt;td&gt;${city}&lt;\/td&gt;\"\n      correo=\"$correo&lt;\/tr&gt;\"\n\n      correo=\"$correo&lt;tr&gt;\"\n      correo=\"$correo&lt;td style='text-align:center; background-color:#015289;color:#ffffff;'&gt;Latitude&lt;\/td&gt;\"\n      correo=\"$correo&lt;td&gt;${latitude}&lt;\/td&gt;\"\n      correo=\"$correo&lt;\/tr&gt;\"\n\n      correo=\"$correo&lt;tr&gt;\"\n      correo=\"$correo&lt;td style='text-align:center; background-color:#015289;color:#ffffff;'&gt;Longitude&lt;\/td&gt;\"\n      correo=\"$correo&lt;td&gt;${longitude}&lt;\/td&gt;\"\n      correo=\"$correo&lt;\/tr&gt;\"\n\n\n      correo=\"$correo&lt;tr&gt;\"\n      correo=\"$correo&lt;td style='text-align:center; background-color:#015289;color:#ffffff;'&gt;Netname&lt;\/td&gt;\"\n      correo=\"$correo&lt;td&gt;${netname}&lt;\/td&gt;\"\n      correo=\"$correo&lt;\/tr&gt;\"\n\n\n      correo=\"$correo&lt;tr&gt;\"\n      correo=\"$correo&lt;td style='text-align:center; background-color:#015289;color:#ffffff;'&gt;Organization&lt;\/td&gt;\"\n      correo=\"$correo&lt;td&gt;${organization}&lt;\/td&gt;\"\n      correo=\"$correo&lt;\/tr&gt;\"\n\n      correo=\"$correo&lt;tr&gt;\"\n      correo=\"$correo&lt;td style='text-align:center; background-color:#015289;color:#ffffff;'&gt;Responsible&lt;\/td&gt;\"\n      correo=\"$correo&lt;td&gt;${responsible}&lt;\/td&gt;\"\n      correo=\"$correo&lt;\/tr&gt;\"\n\n      correo=\"$correo&lt;tr&gt;\"\n      correo=\"$correo&lt;td style='text-align:center; background-color:#015289;color:#ffffff;'&gt;cidr&lt;\/td&gt;\"\n      correo=\"$correo&lt;td&gt;${cidr}&lt;\/td&gt;\"\n      correo=\"$correo&lt;\/tr&gt;\"\n\n      correo=\"$correo&lt;tr&gt;\"\n      correo=\"$correo&lt;td style='text-align:center; background-color:#015289;color:#ffffff;'&gt;route&lt;\/td&gt;\"\n      correo=\"$correo&lt;td&gt;${route}&lt;\/td&gt;\"\n      correo=\"$correo&lt;\/tr&gt;\"\n\n      \n      correo=\"$correo&lt;\/table&gt;\"\n      correo=\"$correo&lt;\/p&gt;\"\n      correo=\"$correo&lt;\/div&gt;\"\n      correo=\"$correo&lt;\/div&gt;\"\n      correo=\"$correo&lt;\/div&gt;\"\n      correo=\"$correo&lt;\/body&gt;\"\n      correo=\"$correo&lt;\/html&gt;\"\n\n\n\n\n\n      echo $correo | mail \\\n      -a \"From: $correoSender\" \\\n      -a \"MIME-Version: 1.0\" \\\n      -a \"Content-Type: text\/html; charset=UTF-8\" \\\n      -s \"&#91;F2B: $servidor_atacado\/$ip_ban]\" \\\n      $correoDestino\n}\n\n\n\nprintf \"\\n\"\nprintf \"*********************************************\\n\"\nprintf \"RESULTADO de la IP: $ip_ban\\n\"\nprintf \"*********************************************\\n\"\n\n#P1: Verificar si la ip ya existe en sigetic\nif verificaExiste\n  then \n    #Error01: La IP Existe en SIGETIC\n      printf \"ERROR01: La IP ya EXISTE en SIGETIC, nada que hacer..!!\\n\\n\"\n      exit  \n  else\n\n    #P2: Obtenemos los datos de freegeoip\n    if obtenerInformacionIPFreeGEOIP\n    then\n\n      if obtenerInformacionIPWhois\n        then\n          if guardarSigetic\n          then\n            enviacorreo\n            printf \"\\n\"\n            printf \"*********************************************\\n\"\n            printf \"La IP ha sido INCLUIDA correctamente!!\\n\\n\"\n            printf \"*********************************************\\n\"\n          else\n            #Error04: Error al guadar en la BD\n            printf \"ERROR04: Ha ocurrido al guardar en la base de datos!!\\n\\n\"\n            exit    \n          fi\n          \n        else\n          #Error03: Whois\n          printf \"ERROR03: Ha ocurrido un error al obtener los datos de whois!!\\n\\n\"\n          exit    \n        fi\n    else\n      #Error02: Fregeoip\n      printf \"Error02: Ha ocurrido un error al obtener los datos de freegeoip!!\\n\\n\"\n      exit\n    fi\nfi<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ahora de damos permisos de ejecuci\u00f3n<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod 777 \/etc\/fail2ban\/agrega_ip_blacklist-ugit.sh<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ahora creamos el archivo de conexi\u00f3n a la BD utilizado por el archivo<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/root\/conexionmysql.ini<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Agregamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;client]\nhost=10.20.200.165\nuser=sissigetic\npassword=$!.Bd.SIS.SissGETC.$.!\ndatabase=bd_sae_sigetic_ugit<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Le damos permisos necesarios<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod 600 \/root\/conexionmysql.ini<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Aqu\u00ed puede probar ejecutando<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/etc\/fail2ban\/agrega_ip_blacklist-ugit.sh 124.7.227.107<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Abrimos el archivo<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/fail2ban\/action.d\/sendmail-whois.conf <\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Modificamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>            Hola UGIT,\\n\n            **************************************************\n            La IP &lt;ip&gt; ha sido baneada por Fail2ban despues de:\n            &lt;failures&gt; intentos fallidos por &lt;name&gt;.\\n\\n\n            **************************************************\n            Aqui hay mas informacion acerca de la ip: &lt;ip&gt; :\\n\n            `\/usr\/bin\/whois &lt;ip&gt; || echo missing whois program`\\n\n            Saludos,\\n\n            UGIT\" | \/usr\/sbin\/sendmail -f &lt;sender&gt; &lt;dest&gt;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Reiniciamos el servicio<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>service fail2ban restart<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Modificamos el tiempo de acci\u00f3n<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>fail2ban-client set sshd action ip-to-blacklist-ugit timeout 300<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ahora creamos una nuevo aliases<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/aliases<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Agregamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>fail2ban: root<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Actualizamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>newaliases<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Reiniciamos el servicio<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>service fail2ban restart<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Si es un servidor de bases de datos MYSQL<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Instalamos el software<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install mysql-server -y<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Lo mandamos a configurar<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>mysql_secure_installation<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>RESULTADO<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>Securing the MySQL server deployment.\n\nConnecting to MySQL using a blank password.\n\nVALIDATE PASSWORD COMPONENT can be used to test passwords\nand improve security. It checks the strength of password\nand allows the users to set only those passwords which are\nsecure enough. Would you like to setup VALIDATE PASSWORD component?\n\nPress y|Y for Yes, any other key for No: N\nPlease set the password for root here.\n\nNew password: L0\n\nRe-enter new password: L0\nBy default, a MySQL installation has an anonymous user,\nallowing anyone to log into MySQL without having to have\na user account created for them. This is intended only for\ntesting, and to make the installation go a bit smoother.\nYou should remove them before moving into a production\nenvironment.\n\nRemove anonymous users? (Press y|Y for Yes, any other key for No) : Y\nSuccess.\n\n\nNormally, root should only be allowed to connect from\n'localhost'. This ensures that someone cannot guess at\nthe root password from the network.\n\nDisallow root login remotely? (Press y|Y for Yes, any other key for No) : N\n\n ... skipping.\nBy default, MySQL comes with a database named 'test' that\nanyone can access. This is also intended only for testing,\nand should be removed before moving into a production\nenvironment.\n\n\nRemove test database and access to it? (Press y|Y for Yes, any other key for No) : Y\n - Dropping test database...\nSuccess.\n\n - Removing privileges on test database...\nSuccess.\n\nReloading the privilege tables will ensure that all changes\nmade so far will take effect immediately.\n\nReload privilege tables now? (Press y|Y for Yes, any other key for No) : Y\nSuccess.\n\nAll done! \n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Cambiar el m\u00e9todo de autenticaci\u00f3n<\/li><li>A partir de la versi\u00f3n 5.7 de MySQL, el <strong>usuario ra\u00edz de<\/strong> MySQL est\u00e1 configurado para autenticarse a trav\u00e9s del <strong>complemento auth_socket<\/strong> de forma predeterminada en lugar de una contrase\u00f1a.<\/li><li>Para usar una contrase\u00f1a para conectarse a MySQL como usuario root, necesita cambiar el m\u00e9todo de autenticaci\u00f3n, de <strong>auth_socket<\/strong> a <strong>mysql_native_password<\/strong>.<\/li><li>Para verificar el m\u00e9todo de autenticaci\u00f3n asociado con las cuentas mysql:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT user,authentication_string,plugin,host FROM mysql.user;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>RESULTADO<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>+------------------+------------------------------------------------------------------------+-----------------------+-----------+\n| user             | authentication_string                                                  | plugin                | host      |\n+------------------+------------------------------------------------------------------------+-----------------------+-----------+\n| debian-sys-maint | XXX | caching_sha2_password | localhost |\n| mysql.infoschema | XXX | caching_sha2_password | localhost |\n| mysql.session    | $XXX | caching_sha2_password | localhost |\n| mysql.sys        | XXX | caching_sha2_password | localhost |\n| root             |     | auth_socket           | localhost |\n+------------------+------------------------------------------------------------------------+-----------------------+-----------+<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Para utilizar la autenticaci\u00f3n de contrase\u00f1a para la cuenta ra\u00edz, realice los siguientes cambios:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'L0';<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Resultado<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>Query OK, 0 rows affected (0.03 sec)<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Actualizar las tablas:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>FLUSH PRIVILEGES;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Verificamos el m\u00e9todo <\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT user,authentication_string,plugin,host FROM mysql.user;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Resultado<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>| root             | XXX                              | mysql_native_password | localhost |<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Le damos acceso a conexi\u00f3n remota<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>RENAME USER 'root'@'localhost' TO 'root'@'%';<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Salimos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>exit;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Volvemos a ingresar<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>mysql -u root -p<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Creaci\u00f3n de usuario secundario (nivel 2)<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE USER 'tauro'@'%' IDENTIFIED BY 'A1';\nCREATE USER 'tauro'@'localhost' IDENTIFIED BY 'A1';<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ahora, asocie los privilegios de administraci\u00f3n con el usuario reci\u00e9n creado:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>GRANT ALL PRIVILEGES ON *.* TO 'tauro'@'localhost' WITH GRANT OPTION;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Le damos acceso a conexi\u00f3n remota (si no se creo con %)<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>RENAME USER 'tauro'@'localhost' TO 'tauro'@'%';<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Creaci\u00f3n de usuario (nivel 3)<\/li><li>Si desea crear un usuario para administraci\u00f3n de sistema o sitio<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE USER 'situgit'@'%' IDENTIFIED BY 'XX';<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Le damos acceso a conexi\u00f3n remota (si no se creo con %)<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>RENAME USER 'situgit'@'situgit' TO 'tauro'@'%';<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Configuramos que se puede acceder desde cualquier hosts<\/li><li>Abrimos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/mysql\/mysql.conf.d\/mysqld.cnf<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Buscar y comentar<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>bind-address\t\t= 127.0.0.1\nX\n#bind-address\t\t= 127.0.0.1<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Guardamos y salimos<\/li><li>Reiniciar MYSQL<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>service mysql restart<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ingresamos con workbeach y le damos permisos correspondientes<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"541\" src=\"\/wp-content\/uploads\/2022\/05\/Seleccion_128-1024x541.png\" alt=\"\" class=\"wp-image-8500\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/05\/Seleccion_128-1024x541.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/05\/Seleccion_128-300x159.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/05\/Seleccion_128-768x406.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/05\/Seleccion_128-1536x812.png 1536w, https:\/\/sada.services\/wp-content\/uploads\/2022\/05\/Seleccion_128.png 1706w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Si es un servidor Web &#8211; Apache<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Apache2<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>Instalamos apache<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install apache2 acl -y<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Desactivamos el listado de archivos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/apache2\/apache2.conf<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Modificamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Directory \/var\/www\/&gt;\n        Options Indexes FollowSymLinks\n        AllowOverride None\n        Require all granted\n&lt;\/Directory&gt;\n\n----------------------------- X -----------------------------------------\n&lt;Directory \/var\/www\/&gt;\n        Options -Indexes\n        AllowOverride None\n        Require all granted\n&lt;\/Directory&gt;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Para establecer la codificaci\u00f3n UTF-8 por defecto. Abrimos el archivo:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/apache2\/conf-available\/charset.conf<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Modificamos las p\u00e1ginas de error<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/apache2\/conf-available\/localized-error-pages.conf <\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Agregamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>ErrorDocument 403 https:\/\/403.siua.ac.cr\nErrorDocument 404 https:\/\/404.siua.ac.cr\nErrorDocument 500 https:\/\/500.siua.ac.cr<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Para ocultar la informaci\u00f3n del versi\u00f3n del servidor, IP, puerto, sistema operativo. Modificamos a producci\u00f3n \u00abProd\u00bb<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/apache2\/conf-available\/security.conf<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Modificamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>ServerTokens OS\nX\nServerTokens Prod<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Para ocultar la firma (email del administrador)<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>ServerSignature On\nX\nServerSignature Off<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Permisos de carpeta y usuario \u00aborion\u00bb<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Lo primero que vamos hacer es a\u00f1adir al usuario \u00aborion\u00bb al grupo \u00abwww-data\u00bb, para que podamos modificar los datos con el usuario ugit<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>usermod -a -G www-data orion<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ahora establecemos que todo los que este en \/var\/www\/html pertenezca al grupo www-data<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>chgrp -R www-data \/var\/www\/html<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ahora le damos permisos para que los usuarios del grupo \u00abwww-data\u00bb puedan escribir<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod -R g+w \/var\/www\/html<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ahora le damos permisos a los directorios y archivos de (lectura, escritura y ejecuci\u00f3n para usuario y grupo 7 lectura y ejecuci\u00f3n para el resto)<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>find \/var\/www -type d -exec chmod 2775 {} \\;\nfind \/var\/www -type f -exec chmod ug+rw {} \\;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ahora asignamos el \u00absticky bit\u00bb para el grupo (para que los archivos y directorios que se creen arrastren la propiedad del grupo www-data)<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod g+s \/var\/www\/html\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Asigna los permisos por defecto (para que los directorios que se creen arrastren los mismos permisos)<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>setfacl -d -m g::rwx \/var\/www\/html\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Comprobamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>getfacl \/var\/www\/html\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>RESULTADO<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">getfacl: Eliminando '\/' inicial en nombres de ruta absolutos<br># file: var\/www\/html\/<br># owner: root<br># group: www-data<br># flags: -s-<br>user::rwx<br>group::rwx<br>other::r-x<br>default:user::rwx<br>default:group::rwx<br>default:other::r-x<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Deshabilitar el site defecto<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>a2dissite 000-default.conf <\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Instalaci\u00f3n de m\u00f3dulos<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Modulo SSL<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>Para habilitar el soporte de SSL<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>a2enmod ssl<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">M\u00f3dulo Headers<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>Para firmar las paginas con la directiva Header add Author<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>a2enmod headers<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">M\u00f3dulo Expires<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>Para mejorar la experiencia del usuario y chachear las paginas est\u00e1ticas y no que se descarguen cada vez que se ingresa<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>a2enmod expires<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Creamos un archivo de configuraci\u00f3n para el m\u00f3dulo<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/apache2\/mods-available\/expires.conf<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Le agregamos lo siguiente<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;IfModule mod_expires.c&gt;\n          ExpiresActive on\n          ExpiresByType image\/jpg \"access plus 60 days\"\n          ExpiresByType image\/png \"access plus 60 days\"\n          ExpiresByType image\/gif \"access plus 60 days\"\n          ExpiresByType image\/jpeg \"access plus 60 days\"\n          ExpiresByType text\/css \"access plus 1 days\"\n          ExpiresByType image\/x-icon \"access plus 1 month\"\n          ExpiresByType application\/pdf \"access plus 1 month\"\n          ExpiresByType audio\/x-wav \"access plus 1 month\"\n          ExpiresByType audio\/mpeg \"access plus 1 month\"\n          ExpiresByType video\/mpeg \"access plus 1 month\"\n          ExpiresByType video\/mp4 \"access plus 1 month\"\n          ExpiresByType video\/quicktime \"access plus 1 month\"\n          ExpiresByType video\/x-ms-wmv \"access plus 1 month\"\n          ExpiresByType application\/x-shockwave-flash \"access 1 month\"\n          ExpiresByType text\/javascript \"access plus 1 days\"\n          ExpiresByType application\/x-javascript \"access plus 1 dyas\n          ExpiresByType application\/javascript \"access plus 1 days\"\n&lt;\/IfModule&gt;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Una vez creado le creamos un enlace simb\u00f3lico dentro de mods-enabled para habilitarlo<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>ln -s \/etc\/apache2\/mods-available\/expires.conf \/etc\/apache2\/mods-enabled\/<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">M\u00f3dulo deflate<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>Permite enviar informaci\u00f3n de forma comprimida<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>a2enmod deflate <\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Este m\u00f3dulo ya viene habilitado y con un archivo de configuraci\u00f3n, abrimos:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/apache2\/mods-available\/deflate.conf<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Agregamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>SetOutputFilter DEFLATE\nSetEnvIfNoCase Request_URI \\.(?:gif|jpe?g|png)$ no-gzip dont-vary\nSetEnvIfNoCase Request_URI \\.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary\nSetEnvIfNoCase Request_URI \\.pdf$ no-gzip dont-vary\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Donde le decimos que comprima todo excepto im\u00e1genes, archivos ya comprimidos y pdf\u2019s<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">M\u00f3dulo rewrite<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>Para el direccionamiento de sitio de&nbsp;<a href=\"http:\/\/www.web1\/\">www.web1.siua.ac.cr<\/a>&nbsp;a web1.siua.ac.cr es necesario<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>a2enmod rewrite<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Recargamos la configuraci\u00f3n<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl restart apache2<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Configurar fecha<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Para ver la hora<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>date\n#universal\ndate -u \n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Para configurar la hora<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>dpkg-reconfigure tzdata<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Seleccionamos america<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>Am<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2019\/09\/selecci%C3%B3n082_3_o.png\" alt=\"undefined\" class=\"wp-image-2255\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Seleccionamos Costa Rica<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2019\/09\/selecci%C3%B3n083_3_o.png\" alt=\"undefined\" class=\"wp-image-2256\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Obtener la zona hoaraia<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>timedatectl<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Si esta incorrecta<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>timedatectl set-timezone America\/Costa_Rica<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Si es un servidor Web &#8211; Apache &#8211; PHP<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Instalamos los pasos anteriores (Apache)<\/li><li>Podemos consultar la versi\u00f3n de php disponible por apt<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt show php<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Instalamos dependencias<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install software-properties-common ca-certificates apt-transport-https software-properties-common<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Agregamos el repositorio<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>add-apt-repository ppa:ondrej\/php<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Actualizamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>apt update<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Instalaci\u00f3n de PHP 5.6<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>apt-get install php5.6 php5.6-mysql php5.6-gd php5.6-ldap php5.6-odbc php5.6-pgsql php5.6-curl php5.6-json php5.6-sqlite3 php5.6-xml php5.6-mbstring php5.6-cli php5.6-common libapache2-mod-php5.6 php5.6-zip<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Instalaci\u00f3n de PHP 7.4<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install php7.4 libapache2-mod-php7.4 php7.4-common php7.4-cli php7.4-curl php7.4-json php7.4-gd php7.4-mbstring php7.4-intl php7.4-bcmath php7.4-bz2 php7.4-readline php7.4-zip php7.4-mysql php7.4-dom php7.4-ldap php7.4-bcmath php7.4-bz2 php7.4-intl php7.4-mbstring  php7.4-apcu php7.4-igbinary php7.4-imagick php7.4-odbc php7.4-pgsql php7.4-readline php7.4-redis php7.4-sqlite3 php7.4-xml php7.4-xsl php7.4-OPcache php7.4-gmp -y<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Instalaci\u00f3n de PHP 8<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install php7.4 libapache2-mod-php7.4 php7.4-common php7.4-cli php7.4-curl php7.4-json php7.4-gd php7.4-mbstring php7.4-intl php7.4-bcmath php7.4-bz2 php7.4-readline php7.4-zip php7.4-mysql php7.4-dom php7.4-ldap php7.4-bcmath php7.4-bz2 php7.4-intl php7.4-mbstring  php7.4-apcu php7.4-igbinary php7.4-imagick php7.4-odbc php7.4-pgsql php7.4-readline php7.4-redis php7.4-sqlite3 php7.4-xml php7.4-xsl php7.4-OPcache php7.4-gmp -y<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Modificaci\u00f3n de usuarios Modificamos la contrase\u00f1a del usuario root de CA3 a A0 Ingresamos como el usuario root Ejecutamos el comando Resultado Eliminamos el usuario ugit Verificamos que no existe el usuario ugit Crea el usuario orion Resultado A\u00f1adimos el usuario al grupo \u00abroot\u00bb Resultado Abrimos Modificamos el acceso de ssh para dar permiso a [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,396],"tags":[49,397],"class_list":["post-8466","post","type-post","status-publish","format-standard","hentry","category-mysql","category-servidores","tag-mysql","tag-servidores"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":6}},"_links":{"self":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/8466","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8466"}],"version-history":[{"count":77,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/8466\/revisions"}],"predecessor-version":[{"id":11549,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/8466\/revisions\/11549"}],"wp:attachment":[{"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8466"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8466"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8466"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}