Planeta Sysadmin

de sysadmins para sysadmins

October 18, 2018

Sobre bits

PowerCLI one-liners: Listar identificador naa de un datastore

Cuando nos encontramos en la situación de tener que realizar algún tipo de troubleshooting en el storage de una solución VMware vSphere lo más típico es que tanto en la salida de comandos de PowerCLI o esxcli como en los logs del propio sistema se haga referencia a nuestros datastores por su identificador naa.*. En la entrada de hoy veremos un par one-liners con los que obtener el identificador naa de un datastore con PowerCLI.

One-liner 1: Buscando un datastore con su identificador naa

Uno de los casos típicos en los que podemos necesitar este one-liner es cuando un log hace referencia a un cambio de estado en un datastore y nos devuelve su identificador naa. Para encontrarlo rápido:

Get-Datastore | Where-Object {$_.ExtensionData.Info.Vmfs.Extent.DiskName -like “*ID_A_BUSCAR*”}

Vamos a repasar el one-liner:

  • Get-Datastore: Evidentemente, listamos todos los datastores del datacenter.
  • Where-Object {$_.ExtensionData.Info.Vmfs.Extent.DiskName: Filtramos por la propiedad DiskName (bien escondida debajo de ExtensionData) que nos devuelve el identificador naa del datastore.
  • -like “*ID_A_BUSCAR*”}: Buscamos el datastore que tenga como ID parte o toda la cadena que le facilitemos.

Un ejemplo en productivo:

Identificador naa de un datastore

One-liner 2: Obteniendo el identificador naa de todos los datastores

Si necesitamos hacer más de una consulta de la relación ID naa.* con su nombre de datastore, es posible que nos salga a cuenta sacarlos todos y guardarlos en vez de estar haciendo la consulta constantemente. Como ya sabemos cómo sacar el ID naa.* de un datastore con su propiedad de ExtensionData esto va a estar chupado:

Get-Datastore | Select-Object -Property Name,@{Name = 'Naa'; Expression = {$_.ExtensionData.Info.Vmfs.Extent.DiskName}}

Veamos qué hace el one-liner:

  • Get-Datastore: Evidentemente, volvemos a listar todos los datastores del datacenter.
  • Select-Object -Property Name: Seleccionamos la propiedad Name para formar el objeto de salida de nuestra línea.
  • @{Name = ‘Naa’; Expression = {$_.ExtensionData.Info.Vmfs.Extent.DiskName}: Seleccionamos para nuestro objeto de salida su segunda propiedad mediante una expresión.
    • En la propiedad Name indicamos el nombre de dicha propiedad. En este caso, en un alarde de originalidad, ‘Naa’.
    • En la propiedad Expression hacemos la misma query que en el anterior one-liner para sacar el identificador naa de los datastores mediante el objeto que nos viene del pipe.

Y por último vamos a ver cómo quedaría la salida del one-liner:

PS C:\Get-Datastore | Select-Object -Property Name,@{Name = 'Naa'; Expression = {$_.ExtensionData.Info.Vmfs.Extent.DiskName}}

Name             Naa
----             ---
datastore103     naa.123456789123c9d12366666dd7af1dc6d
datastore104     naa.123456789123123456fd66666b41e924
datastore105     naa.123456789123809ffa44b7766666a91a
datastore106     naa.12345678912397340a666668898e3133
datastore107     naa.123456789123b9c46d85196666632bd5
datastore108     naa.12345678912345bab066666d92b70b8f
datastore109     naa.123456789123c3945fef8666663772e6
datastore110     naa.12345678912304e5666663a38cedbd46

¡Espero que os sirvan estos one-liners de hoy!

La entrada PowerCLI one-liners: Listar identificador naa de un datastore aparece primero en Sobrebits.

by Marc Meseguer at October 18, 2018 07:00 AM

October 16, 2018

Sobre bits

Detectar VMs no respaldadas por Veeam con PowerCLI (Parte 2)

En esta segunda y última parte de la entrada seguiremos justo donde lo dejamos en la anterior y añadiremos un poco más de funcionalidad a nuestro script buscador de máquinas virtuales fuera de backup. Concretamente veremos cómo gestionar excepciones y cómo enviar notificaciones de correo periódicas.

  1. Detectar VMs no respaldadas por Veeam con PowerCLI (Parte 1).
  2. Detectar VMs no respaldadas por Veeam con PowerCLI (Parte 2).

En la entrada anterior nos quedamos con un pequeño script con el que ya conseguíamos sacar las máquinas virtuales sin backup pero poco más:

# Obtenemos todas las máquinas virtuales de la infraestructura que estén encendidas
$Vms = Get-VM | Where-Object PowerState -eq 'PoweredOn'

# Declaramos un array vacío donde almacenar los nombres de las VMs fuera de backup
$VmsSinBackup = @()

# Recorremos la colección de VMs
ForEach ($Vm in $Vms) {
    # Si la VM tiene el Custom Attribute "Sobrebits" sin contenido...
    If (!$Vm.CustomFields.Item("Sobrebits")) {
        # ... añadimos dicha VM a nuestra array de VMs no respaldadas por Veeam
        $VmsSinBackup += $Vm.Name
    }
}
# Mostramos las $VmsSinBackup
$VmsSinBackup

Gestionando las excepciones

Tarde o temprano utilizando este script os encontraréis con la situación en la que se reporta una máquina virtual fuera de backup que realmente debería estarlo, ya sea porque es una máquina de test, una demo o cualquier otra situación. En esta parte vamos a añadir de una forma extremadamente sencilla un archivo de excepciones donde iremos añadiendo el nombre de dichas máquinas virtuales fuera de backup.

Lo primero que haremos será guardar nuestro script en una carpeta, para este ejemplo será C:\Scripts\Get-VmNoBackup.ps1. Un ejemplo de la salida del script sin excepciones sería este:

Máquinas virtuales fuera de backupSabiendo la salida del script podemos proceder a crear el archivo de excepciones, con el que quitaremos las VMs de test de nuestro listado. Nuestro archivo de excepciones simplemente será un archivo .txt ubicado en la misma carpeta del script:  C:\Scripts\Get-VmNoBackup_Excepciones.txt.

PS C:\Scripts> Get-ChildItem
Get-VmNoBackup.ps1
Get-VmNoBackupExcepciones.txt

La idea es que en dicho archivo de excepciones añadamos un nombre de VM por línea, en nuestro caso quedaría así:

Excepciones máquinas virtuales fuera de backupA partir de ahí solo nos queda leer el contenido de dicho archivo utilizando Get-Content y añadir este criterio al if en el que checkeamos si existe el Custom Attribute:

# Leemos el archivo de excepciones
$Excepciones = Get-Content -Path "$PSScriptRoot\Get-VmNoBackup_Excepciones.txt"

# Obtenemos todas las máquinas virtuales de la infraestructura que estén encendidas
$Vms = Get-VM | Where-Object PowerState -eq 'PoweredOn'

# Declaramos un array vacío donde almacenar los nombres de las VMs fuera de backup
$VmsSinBackup = @()

# Recorremos la colección de VMs
ForEach ($Vm in $Vms) {
    # Si la VM tiene el Custom Attribute "Sobrebits" sin contenido...
    If (!$Vm.CustomFields.Item("Sobrebits") -and $Excepciones -notcontains $Vm.Name) {
        # ... añadimos dicha VM a nuestra array de VMs no respaldadas por Veeam
        $VmsSinBackup += $Vm.Name
    }
}
# Mostramos las $VmsSinBackup
$VmsSinBackup

Repasemos las modificaciones:

  • En la línea 2 leemos mediante Get-Content el contenido del archivo de excepciones y lo añadimos a la variable $Excepciones.
  • En la línea 13 añadimos una nueva condición al if en la que el nombre de la VM ($Vm.Name) no debe estar dentro del array de $Excepciones.

Y este es el resultado de ejecutar el script con las últimas modificaciones:

Máquinas virtuales sin backup con excepcionesComo podemos ver ya no aparecen las VMs Sobrebits-Test1 y Sobrebits-Test2.

Otra aproximación para gestionar las excepciones podría ser utilizar tags de vSphere sobre las máquinas virtuales que podrían ser leídos por nuestro script, poner excepciones de carpetas o básicamente cualquier criterio que se os ocurra.

Enviando el resultado del script vía correo electrónico

Para brindar un poco más de funcionalidad al script podemos hacer que éste nos envíe un reporte con las máquinas virtuales fuera de backup por correo electrónico tal como vimos en la entrada “Enviar correo desde PowerShell”.

Para ello necesitaremos de un servidor SMTP desde el que estemos autorizados a enviar correo y hacer unas pequeñas modificaciones a nuestro script.

En primer lugar deberemos configurar los parámetros para la conexión smtp:

# Establecemos configuración SMTP
$from = "[email protected]"
$to = "[email protected]"
$subject = "Máquinas virtuales fuera de backup"
$smtpserver = "mail.sobrebits.com"
$smtpport = 25

Y al final del script, en vez de mostrar el contenido enviamos el correo electrónico (siempre y cuando existan máquinas virtuales fuera de backup):

# Si existen máquinas virtuales fuera de backup...
if ($VmsSinBackup) {
    # ... enviamos correo
    Send-MailMessage -From $from -To $to -Subject $subject -Body $($whitelist -join "`n") -SmtpServer $smtpserver -Port $smtpport
}

Aquí no hay mucho que explicar puesto que no hemos hecho nada que no hicieramos ya en “Enviar correo desde PowerShell”, simplemente aclarar que en el parámetro -Body concatenamos el array y lo juntamos con retornos de carro puesto que esta variable espera un string.

Últimos retoques

Lo último que queda para dar por finalizado nuestro script es programar su ejecución. No voy a explicar al detalle cómo hacerlo puesto que ya se ha tratado en anteriores entradas, aquí os dejo las referencias:

Por último decir que con este método si eliminamos una máquina de backup va a seguir reportándose como máquina dentro de backup puesto que el Custom attribute no se borra al quitar la máquina de Veeam. Es por ello que os recomiendo periódicamente eliminar el contenido del Custom Attribute mediante Set-Annotation sobre todas las máquinas virtuales del entorno.

Poniéndolo todo junto

Después de seguir el proceso de las dos partes de esta entrada debería quedar un script parecido a este:

# Conectamos a vCenter
$vcenter_ip = "192.168.168.168"
$vcenter_creds = Import-Clixml -Path "$PSScriptRoot\VMware_creds.xml"
Connect-VIServer -Server $vcenter_ip -Credential $vcenter_creds -WarningAction SilentlyContinue | Out-Null

# Establecemos configuración SMTP
$from = "[email protected]"
$to = "[email protected]"
$subject = "Máquinas virtuales fuera de backup"
$smtpserver = "mail.sobrebits.com"
$smtpport = 25

# Leemos el archivo de excepciones
$Excepciones = Get-Content -Path "$PSScriptRoot\Get-VmNoBackup_Excepciones.txt"

# Obtenemos todas las máquinas virtuales de la infraestructura que estén encendidas
$Vms = Get-VM | Where-Object PowerState -eq 'PoweredOn'

# Declaramos un array vacío donde almacenar los nombres de las VMs fuera de backup
$VmsSinBackup = @()

# Recorremos la colección de VMs
ForEach ($Vm in $Vms) {
    # Si la VM tiene el Custom Attribute "Sobrebits" sin contenido...
    If (!$Vm.CustomFields.Item("Sobrebits") -and $Excepciones -notcontains $Vm.Name) {
        # ... añadimos dicha VM a nuestra array de VMs no respaldadas por Veeam
        $VmsSinBackup += $Vm.Name
    }
}

# Si existen máquinas virtuales fuera de backup...
if ($VmsSinBackup) {
    # ... enviamos correo
    Send-MailMessage -From $from -To $to -Subject $subject -Body $($whitelist -join "`n") -SmtpServer $smtpserver -Port $smtpport
}

# Desconectamos del vCenter
Disconnect-VIServer -Confirm:$false

¡Espero que esta doble entrada os sirva para ahorraros disgustos de cara a futuro!

La entrada Detectar VMs no respaldadas por Veeam con PowerCLI (Parte 2) aparece primero en Sobrebits.

by Marc Meseguer at October 16, 2018 07:00 AM

October 10, 2018

Sobre bits

Detectar VMs no respaldadas por Veeam con PowerCLI (Parte 1)

Si hay algo que absolutamente siempre debemos tener controlado al dedillo en nuestra infraestructura es el backup, puesto que es ese salvavidas del que siempre vamos a poder tirar en caso de desastre. Una problemática habitual cuando los entornos vSphere empiezan a crecer y cuando muchas manos tocan un mismo entorno es la posibilidad de quedarnos con VMs fuera de backup y, lo más peligroso, sin que nadie se de cuenta de ello. Es por ello que en la entrada de hoy veremos cómo detectar VMs no respaldadas por Veeam Backup de forma automatizada mediante, como no, PowerCLI.

Dejando huella en las VMs respaldadas con Veeam

El primer paso antes de ponernos a picar código de PowerCLI será pasarnos por nuestro (o nuestros) servidor de Veeam para reconfigurar los jobs de backup y hacer que éstos dejen huella en las máquinas virtuales que respalde. La “huella” que dejará en nuestras máquinas virtuales respaldadas será un Custom Attribute de VMware que utilizaremos posteriormente para hacer querys desde PowerCLI.

Editar job de Veeam

Posteriormente nos dirigimos al apartado Storage y pulsamos sobre el botón Advanced.

Veeam editar storage

Una vez aquí debemos desplazarnos a la pestaña Notifications. En la parte inferior encontraremos el campo “Set succesful backup details to this VM attribute”. Deberemos habilitar esta opción y añadir un nombre en el campo de texto correspondiente, que será el nombre del Custom Attribute que se añadirá a la VM.

Custom Attribute Veeam

La forma en que funciona este parámetro es que cuando un backup ha finalizado de forma exitosa sobre una máquina virtual Veeam añade a la misma un nuevo Custom Attribute (si no lo hubiera) y le añade la fecha de dicho backup. Si miramos los Custom Attribute de una VM con backup correcto deberíamos ver algo parecido a esto:

Custom Attribute VM Veeam

Buscando el Custom Attribute con PowerCLI

Vale, ya tenemos funcionando la base sobre la que nuestro script buscará VMs no respaldadas por Veeam, ahora tenemos que construir la query que necesitamos para encontrar dichas VMs.

Para ello vamos a empezar obteniendo todas las VMs que queremos revisar y vamos a ponerlas en una variable para gestionarlas de forma más fácil en el futuro:

$Vms = Get-VM | Where-Object PowerState -eq 'PoweredOn'

En este caso unicamente saco las VMs encendidas, pero podemos hacer la query por un determinado cluster, host o lo que necesitemos.

Ahora que ya tenemos las VMs a escanear en nuestra variable pasaremos a recorrerlas todas en busca de las que no tengan nuestro Custom Attribute lleno. Aquí va el código que os propongo con sus respectivos comentarios:

# Declaramos un array vacío donde almacenar los nombres de las VMs fuera de backup
$VmsSinBackup = @()

# Recorremos la colección de VMs
ForEach ($Vm in $Vms) {
    # Si la VM tiene el Custom Attribute "Sobrebits" sin contenido...
    If (!$Vm.CustomFields.Item("Sobrebits")) {
        # ... añadimos dicha VM a nuestra array de VMs no respaldadas por Veeam
        $VmsSinBackup += $Vm.Name
    }
}

Con esto ya tenemos una variable $VmsSinBackup con todas las VMs no respaldadas en nuestra infraestructura.

Conclusión

Hasta aquí la primera parte de esta entrada. En la segunda parte aplicaremos un poco más de inteligencia a nuestro script añadiendo la posibilidad de añadir excepciones y notificaciones por correo. ¡Muy pronto en Sobrebits!

La entrada Detectar VMs no respaldadas por Veeam con PowerCLI (Parte 1) aparece primero en Sobrebits.

by Marc Meseguer at October 10, 2018 08:00 AM

October 05, 2018

MagMax Blog

Hosting

En el mundo hay distintas soluciones para albergar tus proyectos en internet. Aquí tenéis un pequeño repaso a algunas de las que he probado.

Leer más… (quedan 4 minutos de lectura)

by Miguel Ángel García at October 05, 2018 03:23 AM

October 04, 2018

RooTeando

Diario de Aprendizaje: 01 Libreta de conocimiento y desarrollo

Presentación de un nuevo proyecto en formato minipodcast, 5 minutos de duración, donde hablaré sobre aprendizaje y programación.

Primer episodio de este minipodcast donde hablare sobre estas dos libretas (de papel), que son y para que las utilizo.


Métodos de contacto, los mismo que para el podcast Tomando Un Cafe.

Correo [email protected]

Twitter https://twitter.com/Tomando_Un_Cafe


RSS
Anchor.fm http://anchor.fm/s/18c0860/podcast/rss
Blog(post y audios) https://rooteando ...

October 04, 2018 10:42 PM

ARM para TODOS: 04 Placas pequeñas para ARM

En este audio hablaré sobre placas con un tamaño pequeño, he realizado una lista con las siguientes placas.

🔹Cubox-i y Cubox pulse: página web
https://www.solid-run.com/product/cubox-i4x4/
https://www.solid-run.com/nxp-family/cubox-pulse/

Disponible en Amazon Cubox-i versión 2 GB RAM
https://amzn.to/2zsHycm

🔹 Vocore2: página web 
https://vocore.io/

Disponible en Amazon
https://amzn.to/2Ocm1gi

🔹Nanopi: Dispone de una familia de producto que destaca por su pequeño tamano. Un ...

October 04, 2018 10:25 PM

ARM para TODOS: 03 Almacenamiento en ARM

Nuevo audio donde hablaré de las diferentes opciones de almacenamiento disponible para nuestras pequeñas placas ARM
Lo he dividido en tres categorías

🔹Almacenamiento externo: Tarjetas SD y microSD, eMMC y USB.
🔹 SATA y mSATA: Incluye SATA nativo como mediante conversores USB a SATA.
🔹  PCI-Express:  Memorias M.2, con adaptador puertos SATA.


Música: The Freak Fandango Orchestra - Tales of a dead fish- 01. Requiem for a Fish http://freemusicarchive.org


Si quieres apoyarme  de forma económica ...

October 04, 2018 10:10 PM

October 03, 2018

Sobre bits

Versión de PowerShell según sistema operativo

Uno de los factores determinantes a la hora de diseñar una tarea de automatización con PowerShell es asegurarnos de que los cmdlets que vamos a utilizar estén disponibles en la versión de PowerShell que corre en la máquina que ejecuta el código. En la entrada de hoy me gustaría compartir con vosotros un par de chuletas que he creado para hacer la consulta más sencilla.

Versión de PowerShell por defecto y máxima según sistema operativo

A continuación os pongo una tabla con el resumen de la versión por defecto de PowerShell de cada versión de sistema operativo Windows así como la versión máxima a la que se puede actualizar:

Versión de PowerShell por defecto
*Hay que instalar la característica a través de Server Manager.

Sistemas operativos soportados según versión de PowerShell

Básicamente se trata de la misma tabla anterior pero girada para poder ver rápidamente los sistemas operativos que soportan una determinada versión de Windows PowerShell:

Versión windows segun PowerShell*Hay que instalar la característica a través de Server Manager.

Bola extra: Cómo determinar la versión instalada de PowerShell

Por último, si queremos determinar la versión actual de PowerShell de nuestra máquina deberemos abrir una sesión de terminal y consultar la variable $PSVersionTable.

Versión actual PowerShellEsta variable está disponible en todas las versiones de PowerShell (incluido PowerShell Core) así como en todas las versiones de sistema operativo que pueden correr la shell.

La entrada Versión de PowerShell según sistema operativo aparece primero en Sobrebits.

by Marc Meseguer at October 03, 2018 07:00 AM

September 27, 2018

Sobre bits

PowerShell one-liners: Contraseña nunca expira en usuario local

Después de tres meses desde la última entrada retomamos la sección de PowerShell one-liners. En la entrada de hoy veremos cómo configurar un usuario local para habilitar el flag “La contraseña nunca expira” con PowerShell, y lo haremos siguiendo donde nos quedamos en la entrada anterior, utilizando WMI.

Contraseña nunca expira

¿Por qué modificar un usuario local con WMI y PowerShell?

Si después de leer la introducción de la entrada os ha dado por abrir una terminal de PowerShell con una máquina Windows 10 o 2016 y habéis buscado cmdlets relacionados con usuarios locales habréis visto algo parecido a esto:

Password usuario local no caduque PowerShell

No me he vuelto loco, no voy a complicar las cosas con WMI por gusto, el problema de estos cmdlets es que fueron introducidos en PowerShell 5.1, por lo que una máquina recién instalada sólo dispondrá de ellos a partir de Windows 10/2016. Es por ello que, si nos queremos asegurar la retrocompatibilidad con versiones anteriores de sistema operativo, es mejor que lo hagamos con WMI y aseguremos el tiro.

Impedir que el password de un usuario local caduque con PowerShell

Una vez hecha esta pequeña aclaración vamos directos al one-liner:

Get-CimInstance -ClassName Win32_UserAccount | Where Name -eq Administrador | Set-CimInstance -Argument @{PasswordExpires=0}

Y como siempre vamos a desglosar la línea:

  • Get-WmiObject -Class Win32_UserAccount: Consultamos la clase Win32_UserAccount, que nos muestra los usuarios locales de nuestra máquina.
  • Where Name -eq Administrador: Filtramos por el usuario administrador.
  • Set-CimInstance: Modificamos el objeto que proviene del pipeline.
  • -Argument @{PasswordExpires=0}: Establecemos la propiedad PasswordExpires a 0 (false).

Si quisieramos hacerlo con los cmdlets de WMI en vez de los de CIM para asegurar aún más la compatibilidad hacia atrás nuestro one-liner sería así:

Get-WmiObject -ClassName Win32_UserAccount | Where Name -eq Administrador | Set-WmiInstance -Argument @{PasswordExpires=0}

Y hasta aquí el one-liner de hoy, ¡espero que os ayude en vuestras automatizaciones!

La entrada PowerShell one-liners: Contraseña nunca expira en usuario local aparece primero en Sobrebits.

by Marc Meseguer at September 27, 2018 07:00 AM

September 25, 2018

Sobre bits

Utilizando CIM y WMI con PowerShell

Si bien los cmdlets incorporados en PowerShell nos ofrecen la posibilidad de interactuar con multitud de aspectos de una máquina, hay veces que podemos necesitar consultar o modificar un determinado atributo y nos encontramos con que ningún cmdlet nos lo permite. En la entrada de hoy vamos a ver cómo utilizar CIM y WMI con PowerShell para intentar combatir estas situaciones.

¿Qué son CIM y WMI?

CIM (Common Information Model) es un estándar abierto creado por la organización DMTF orientado a proveer una definición común para el intercambio de información entre sistemas, redes, aplicaciones y servicios.

WMI (Windows Management Instrumentation) es la implementación de Microsoft de CIM, con la que se proveen métodos para consultar y modificar la configuración de una máquina Windows. Si bien el primer sistema operativo de Microsoft que traía WMI instalado fue Windows 2000 la simplificación de su uso vino con PowerShell donde desde la versión 1 se dispuso del primer cmdlet con el que consultar los métodos de una forma muy sencilla.

¿Cmdlets CIM o WMI?

Si bien no vamos a entrar al detalle existen dos juegos de cmdlets relacionados con CIM/WMI:

WMI con PowerShell

Los cmdlets Wmi* fueron los que aparecieron primero pero a partir de Windows PowerShell 3 fueron sustituidos por los CimCmdlets. Si bien estos cmdlets aún son accesibles se espera que tarde o temprano desaparezcan de PowerShell por lo que es mejor usar los “nuevos” CimCmdlets. Algunas de las mejoras incorporadas por los CimCmdlets son las siguientes:

  • Utilizan WinRM (WS-Man) para la comunicación con máquinas remotas, un protocolo mucho más moderno y “Firewall friendly” que DCOM, utilizado por Wmi*.
  • Permite el uso de sesiones mediante New-CimSession con el que poder invocar comandos remotos reutilizando dicha conexión.
  • Mejoran la gestión de la información devuelta.

Un muy buen post sobre las diferencias entre ellos es este.

Cómo listar todas las clases disponibles de WMI con PowerShell

Una vez sabemos lo que es WMI/CIM y hemos visto las diferencias entre los cmdlets CIM* y WMI* podemos pasar de una vez a la acción (sí, en este post me he alargado bastante con los preliminares). Para listar todas las clases de WMI/CIM que tenemos disponibles podemos valernos del cmdlet Get-CimClass:

Clases WMI con PowerShell

Como podemos ver por la salida del segundo comando existen en mi máquina 1202 clases disponibles con las que jugar.

Si vemos el detalle, por ejemplo, de Win32_OperatingSystem podemos ver que esta clase dispone de métodos que podemos invocar y propiedades que podemos consultar y en algunos casos modificar:

Detalle CIM Class con PowerShell

Consultando clases WMI con PowerShell

Siguiendo con el ejemplo de Win32_OperatingSystem vamos a instanciar la clase para ver qué información nos devuelve. Para instanciar una clase nos valdremos de Get-CimInstance:

Detalle CIM Class 2

(La salida del comando saca mucha más información, pero para la entrada con esto nos vale)

Como podemos ver en la captura el comando nos muestra mucha información que con cmdlets corrientes podría ser difícil o imposible de sacar, como la fecha de instalación del sistema operativo, y no solo eso, sino que además lo hace a gran velocidad.

Modificar propiedades WMI con PowerShell

Más allá de consultar las propiedades WMI de una máquina podemos, siempre y cuando dicha propiedad lo permita, modificar su valor utilizando el cmdlet Set-CimInstance.

Antes que nada buscaremos una propiedad que podamos escribir. Para ello volveremos a recurrir a Get-CimClass y veremos el detalle de las propiedades de Win32_UserAccount filtrando por las que no tienen el flag ReadOnly:

Propiedades WMI con PowerShell

Como vemos disponemos de, por ejemplo, la propiedad FullName que utilizaremos para ver cómo realizar modificaciones con Set-CimInstance (deberemos abrir PowerShell como administrador):

Modificando WMI con PowerShell

Conclusión

Aprender a interactuar con WMI/CIM desde PowerShell puede ayudarnos a multiplicar sustancialmente la cantidad de cosas que podemos realizar con nuestros sistemas operativos, por lo que espero que os haya sido de utilidad esta entrada para ampliar aún más vuestras posibilidades con PowerShell.

En futuras entradas intentaremos sacar partido de esta interfaz y ahondaremos más en sus posibilidades.

La entrada Utilizando CIM y WMI con PowerShell aparece primero en Sobrebits.

by Marc Meseguer at September 25, 2018 08:00 AM

September 20, 2018

Sobre bits

Cómo utilizar el historial de PowerShell

Algo que nos pasa a todos cuando utilizamos cualquier tipo de shell es encontrarnos con la necesidad de consultar comandos escritos minutos o días atrás e incluso volver a ejecutarlos. En GNU/Linux disponemos del comando history, y en la entrada de hoy veremos qué opciones tenemos para trabajar con el historial de PowerShell.

Comandos relacionados con el historial de PowerShell

Como siempre, cuando queremos descubrir cmdlets relacionados con una determinada acción debemos acudir al comando Get-Command, con el que consultar dentro de nuestros módulos disponibles. En este caso queremos interactuar con el historial de PowerShell, por lo que la búsqueda es sencilla:

PS C:\ Get-Command -Noun history

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Add-History                                        3.0.0.0    Microsoft.PowerShell.Core
Cmdlet          Clear-History                                      3.0.0.0    Microsoft.PowerShell.Core
Cmdlet          Get-History                                        3.0.0.0    Microsoft.PowerShell.Core
Cmdlet          Invoke-History                                     3.0.0.0    Microsoft.PowerShell.Core

Consultando el historial de PowerShell

Empecemos el repaso por consultar el histórico de comandos ejecutados. Para tal efecto, como podemos deducir de los cmdlets mostrados anteriormente nos valdremos de Get-History:

Consultar historial de PowerShell

Es importante tener en cuenta algunas cosas acerca de Get-History:

  • Con Get-History unicamente podremos ver los comandos ejecutados en la sesión actual de PowerShell. Esto quiere decir que si cerramos la terminal y volvemos a abrirla veremos un historial vacío.
  • Get-History dispone de un máximo de entradas “retenidas” en el historial que, a partir de PowerShell 3.0 es de 4096 entradas. Se puede consultar y cambiar dicha configuración desde la variable $MaximumHistoryCount.
  • Disponemos de un alias con el que ejecutar este cmdlet: h.

Volviendo a ejecutar entradas del historial

Como hemos visto en el punto anterior con Get-History obtenemos dos parámetros: un ID y el comando ejecutado. Con Invoke-History (y su utilísimo alias r) podemos utilizar esta relación ID-comando para ejecutar comandos de nuestro historial. La ejecución es muy simple:

Ejecutar historial de PowerShellDe no facilitar un Id se ejecutará la última entrada de nuestro historial.

Ejecutando entradas del historial aún mejor

Si bien utilizar el método para ejecutar entradas del historial de PowerShell anteriormente mostrado es rápido (sobretodo utilizando los alias h y r) disponemos de una forma aún mejor de buscar y ejecutar entradas anteriores. Si desde nuestra terminal pulsamos la combinación Ctrl+R podremos acceder a la función de búsqueda de nuestro historial:

Búsqueda en historial de PowerShellComo podemos ver en la captura, dado que yo recordaba haber ejecutado un comando que contenía la palabra “test” al escribirla después de la combinación Ctrl+R se ha rellenado mi línea de comandos actual con dicho comando. Algunas cosas interesantes que saber sobre este método:

  • La búsqueda se realiza de forma inversa, es decir, el primer resultado que aparecerá será el que hayamos ejecutado último.
  • Podemos desplazarnos por la búsqueda con Ctrl+R (seguiremos avanzando de forma inversa) y Ctrl+S (retrocederemos en la búsqueda inversa).
  • Una vez nos hayamos desplazado hasta el comando buscado con apretar la tecla Enter ejecutaremos dicho comando.
  • Los resultados que obtendremos del historial son de la propia sesión de PowerShell que estamos ejecutando o de anteriores, al contrario que con Get-History que únicamente obtendremos resultados de la sesión activa.

Exportando, borrando e importando el historial

Otra de las cosas interesantes que podemos hacer con el historial es transportarlo a otra máquina o guardarlo para examinarlo en otro momento. Esto puede ser interesante si hemos realizado un procedimiento y queremos acabar de documentarlo a posteriori o queremos replicarlo en otra máquina.

Para exportar el historial de PowerShell lo que tenemos que hacer es listarlo con Get-History y pasarlo a csv o xml con Export-Csv o Export-CliXml respectivamente.

PS C:\> Get-History | Export-Clixml -Path 'C:\Export\history.xml'

Una vez hecho podemos pasar a borrar el historial de nuestra sesión con Clear-History:

Borrar historial de PowerShellEn este caso borramos el historial entero, pero si indicamos un parámetro -Id podemos borrar de forma selectiva una entrada concreta.

Por último vamos a ver cómo importar el historial previamente exportado. Para ello utilizaremos Import-CliXml para importar el archivo previamente exportado y Add-History para poner su contenido en el historial.

Importar historial de PowerShell

La entrada Cómo utilizar el historial de PowerShell aparece primero en Sobrebits.

by Marc Meseguer at September 20, 2018 08:00 AM

September 19, 2018

blogofsysadmins.com

OVH: Configurar red modo bridge en VM UBUNTU 18

Buenas tardes señores y señoras. Después de un par de tickets intercambiados con el soporte de OVH, he dado con la configuración válida para configurar la red de una máquina virtual. Deciros que no actualmente a fecha de 19 de septiembre 2018 no hay guía en español para configurar Ubuntu 18 en una máquina virtual, …

by GhOsTi at September 19, 2018 06:36 PM

RooTeando

Tomando Un Café 42: Aprendizaje y programación con Alfonso Rovira.

Este es un audio especial, porque lo he grabado con un invitado, Alfonso Rovira, y con una duración bastante mas grande de lo habitual. Tenemos un charla informal donde hablamos de nuestra preferencias a la hora de aprender un lenguaje de programación.  


Si quieres apoyarme  de forma económica para mis podcast y canales, puedes realizarlo de diferentes formas:
PayPal   https://paypal.me/JoseAJimenez
Programa afiliado de Amazon  https://amzn.to/2Myjet8, si ...

September 19, 2018 12:04 AM

September 18, 2018

soyadmin.com

Convertir la salida del comando man a PDF

El comando man nos permite tener un manual de uso o instrucciones de uso de otro comando por ejemplo “man top” nos mostrará un manual de uso y toda la información explicativa del comando top.

Existe una manera de exportar el contenido de man a PDF. Esto podría ser de utilidad para leer el contenido de un comando fuera de la consola, imprimirlo o bien archivarlo en nuestra pc para tenerlo a mano y facilitarnos la lectura cuando no estamos trabajando en la consola.

El proceso es sencillo:

# man -t top | ps2pdf - > top.pdf

Donde:
man: abre el manual
-t: llama a groff un editor de textos que preformatea documentos y transforma el manual a PS (postscript)
ps2pdf: hacemos legible el PS y lo transformamos a pdf
top.pdf: elegimos el nombre que deseamos ponerle al documento en formato PDF

by Mauro at September 18, 2018 01:43 PM

September 17, 2018

soyadmin.com

¿Como limitar cantidad de conexiones FTP por IP?

Hay una manera muy sencilla de controlar la cantidad de conexiones múltiples de FTP usando pure-FTP como servidor.

Editamos el archivo de configuración de nuestro FTP:

# vi /etc/pure-ftpd.conf
## Editamos el valor de MaxClientsPerIP por el valor que queramos colocar.
MaxClientsPerIP 8

Simple y al dedo!

by Mauro at September 17, 2018 06:59 PM

www.rootzilopochtli.com

Resolviendo el #SysArmyMx Challenge Part Deux

¿De qué sirve saber algo, si usted no comparte lo que sabe?
Rubén Blades

Después de 211 visitas al post y 46 descargas de la imagen KVM (Gracias a todos los que participaron!), les comparto la solución, con su debida explicación al #SysArmyMx Challenge:

  • Configuramos nuestra VM con la imagen del disco descargada y la arrancamos; tecleamos F2 o Esc para ver los mensajes de arranque (durante la carga de plymouth). Un par de segundos después, empezaremos a ver los errores en la carga del SO
  • Al terminar, parece mostrarnos el login correctamente, pero al tratar de acceder, nos muestra el mensaje de error que nos proporciona una pista de lo que sucede
  • Al tratar de montar la partición linux, el modo de rescate nos indica que no lo encuentra, por lo que procedemos a montarlo manualmente
  • Al ejecutar chroot sobre la partición de rescate montada, observamos claramente el error

    • Entonces, como podemos observar, el comportamiento al arranque se debía a que la shell (intérprete de comandos) con la que debía levantar el sistema (/bin/bash) no se encontraba disponible. Esto mismo se nos mostraba al inicio de la carga de la VM, cuando, después del intento de login, el sistema nos mandaba el mensaje de error:
--- root: no shell: No such file or directory

Uno de los conceptos principales y básicos como SysAdmin, y que nos ayuda a comprender mejor este comportamiento, es el arranque del sistema. Tradicionalmente, las versiones basadas en System V, realizaban el arranque siguiendo el flujo mostrado hasta que el kernel ejecuta el proceso init, con el que se inicializan todos los procesos del sistema:

Actualmente, los sistemas basados en Systemd, realizan el arranque de manera similar, pero el primer proceso que ejecuta el kernel es systemd, quién se encarga de arrancar todos los procesos y servicios de forma simultánea:

El intéprete de comandos (bash) es el medio que utiliza el kernel para continuar el flujo del arranque, por lo que, como lo mencionamos anteriormente, los mensajes de error relacionados con la carga de unit files de systemd, más el mensaje de error en el login nos daban el indicio de la falla, la cual comprobamos con el proceso de rescate.

  • Para solucionar esta falla, simplemente restauramos el archivo y validamos que podamos ejecutar chroot:
  • Con la partición montada y enjaulada, configuramos la contraseña de root:

  • Al reiniciar, conforme nos mando mensaje de error originalmente, el sistema realizará el re-etiquetado de SELinux:

  • Después de este proceso, el arranque es correcto y podemos hacer login en el sistema:

  • Con el sistema funcionando, podemos realizar la configuración que nos han solicitado:

hostname

# hostnamectl set-hostname host01.sysarmy.mx

kernel

Para actualizar el kernel a la versión solicitada, había que actualizar el SO; éste, es uno de los pasos más recomendados, pero a veces (debido a alguna aplicación hecha en casa o restricciones en las políticas de seguridad para la aplicación de patches) no se aplica. Lo mejor, conforme a las mejores prácticas, es hacerlo al menos dos veces por año en la medida de lo posible. Para esto ejecutamos:

# yum update

network

Para realizar la configuración de la red, conforme un post de hace algunos años, modificamos el archivo de configuración de la nic (/etc/sysconfig/network-scripts/ifcfg-eth0):

DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
PREFIX=24
IPADDR=192.168.122.10
DNS1=192.168.122.1
GATEWAY=192.168.122.1

webpage

Esta parte del reto, tiene dos partes en la solución: la más obvia y sencilla (instalar el servidor web [apache]), y, si queremos hacerlo más pro: configurar el firewall del sistema, para que sólo permita conexiones por el puerto de servicio del servidor web:

* apache*

Para instalar el servidor web apache, simplemente se ejecuta:

# yum install httpd

Para posteriormente crear la página de inicio del servicio:

# echo "Hola Mundo" > /var/www/html/index.html

Habilitamos y arrancamos el servicio y validamos que la página de inicio sea visible:

# systemctl enable httpd; systemctl start httpd
# curl http://127.0.0.1
Hola Mundo

firewall*

Para instalar el firewall, se ejecuta:

# yum install firewalld

Después de habilitar y arrancar el servicio, configuramos los servicios y puertos de acceso que deseamos:

# systemctl enable firewalld; systemctl start firewalld
# firewall-cmd --permanent --add-port={22/tcp,80/tcp,443/tcp}
# firewall-cmd --permanent --add-service={http,https,ssh}
# systemctl restart firewalld.service

# firewall-cmd --list-ports
22/tcp 80/tcp 443/tcp

Y validamos nuevamente que la página de inicio sea visible:

# curl http://127.0.0.1 
Hola Mundo

  • Al finalizar la configuración, reiniciamos el sistema y comprobamos que ésta perduren:

 

Además de la complejidad observada, la imagen KVM está configurada con el teclado en “Español Latinoamericano” lo cual, al conectarse por la consola, ocasionaba un pequeño inconveniente al teclear algunos comandos; se podía cambiar el teclado, pero no sentí que fuera un gran obstáculo 😉

Les comparto las evidencias de quienes terminaron el reto y mandaron su captura de pantalla:

Nuevamente, muchas gracias por participar, espero les haya gustado 🙂

P.D.: Que les pareció la lista de Blades en Spotify? 😉

by Alex Callejas at September 17, 2018 05:28 PM

soyadmin.com

Detectando rootkits con Chkrootkit

Según la Wikipedia: “Chkrootkit (Check Rootkit) es un programa informático de consola, común en sistemas operativos Unix y derivados. Permite localizar rootkits conocidos, realizando múltiples pruebas en las que busca entre los binarios modificados por dicho software. Este guion de consola usa herramientas comunes de UNIX/Linux como las órdenes strings y grep para buscar las bases de las firmas de los programas del sistema y comparar un transversal del archivo /proc con la salida de la orden ps (estado de los procesos (process status) para buscar discrepancias. Básicamente hace múltiples comprobaciones para detectar todo tipo de rootkits y ficheros maliciosos.”

Es decir es una herramienta que nos permite escanear nuestra PC/Servidor buscando archivos infectados. Sobre todo los rootkits/malware que tanto daño pueden causar.

NOTA: Seguramente muchos dirán “Pero si linux no tiene estos problemas” “linux no tiene virus” “yo no puedo infectarme” la idea es que en caso de ser portador elimines esta amenaza para que no sigas repartiéndola a otros usuarios ya sea por un pendrive o cualqueira de los métodos de infección. Incluso si posees una página web y tu servidor o sitio está con alguna infección, tus clientes o visitantes pueden también resultar infectados. La idea es evitar la propagación.

¿Como lo instalamos?
1) Instalación en CentOS RHEL y Fedora

# wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
# tar xvzf chkrootkit.tar.gz
# cd chkrootkit*
# make sense

2) Instalación en Debian, Ubuntu, Mint y derivados

# sudo apt-get install chkrootkit

¿Como funciona?
1) Ejecutarlo en CentOS RHEL y Fedora
Desde la carpeta de la herramienta ejecutamos:

# ./chkrootkit
# ./chkrootkit -q (solo muestra en pantalla los archivos infectados)
# ./chkrootkit > reporte.txt (crea un archivo .txt con los resultados del escaneo para así poder revizar luego de finalizado)

2) Ejecutarlo en Debian, Ubuntu, Mint y derivados

# sudo chkrootkit
# sudo chkrootkit -q (solo muestra en pantalla los archivos infectados)
# sudo chkrootkit > reporte.txt (crea un archivo .txt con los resultados del escaneo para así poder revizar luego de finalizado)

Como cada herramienta de detección tiene sus falsos/positivos, se debe estudiar cada archivo detectado para así no cometer un error.

by Mauro at September 17, 2018 02:52 PM

September 15, 2018

soyadmin.com

LIBRO: Desarrollo de aplicaciones con Python, PyGTK y Glade

Título: DESARROLLO DE APLICACIONES CON PYTHON, PYGTK Y GLADE
Autor: Marco Antonio Islas Cruz
Páginas: 340 Páginas
Tamaño: 2 MB
Fomato: PDF

 

 

 

Contenido:

El mundo de la informática crece día tras día, lo que se conocia hace 30 años ha cambiado mucho de una manera tan rápida que nos sorprendería ver cómo ha cambiado en los últimos 10 años.

En un principio los programas se escribían para una computadora en especial, en un lenguaje que se desarrollaba para cada máquina, es decir, un lenguaje máquina para cada computadora. Gracias a Ken Thompson y Dennis Ritchie se comenzó a utilizar un lenguaje que permitía escribir código de manera fácil podía ser portado a otra computadora, este lenguaje es el lenguaje de programación C.

El mercado de los sistemas operativos estaba tan marcado que la mayoría de los informáticos solo escribían programas para una de las plataformas populares. Actualmente el panorama es muy diferente, existen básicamente los mismos tipos de sistemas operativos, pero se han equiparado en popularidad y, el lograr que una aplicación se extienda, depende en gran medida de que tan disponible se encuentre.

Este trabajo demostrará lo sencillo que es crear aplicaciones multiplataforma utilizando el lenguaje de programación orientado a objetos Python, el conjunto de herramientas para interfaces gráficas de GTK+ y sus bindings, así como el generador de interfaces Glade y su biblioteca principal Libglade, como manejador de base de datos se utilizará MySQL y el modulo mysql-python para conectar ella; herramientas que de igual forma son multiplataforma, evitándonos así quebraderos de cabeza al portar nuestras aplicaciones.

Fuente: openlibra.com

by Mauro at September 15, 2018 01:14 PM

September 14, 2018

soyadmin.com

SOLUCIÓN A: unable to launch “cinnamon-session-cinnamon” X session al iniciar sesión en Linux Mint 19

Luego de una actualización me topé con un error al intentar iniciar sesión. Valla uno a saber que fue lo que se “rompió” el tema es que luego de loguearme aparecía este error:

unable to launch "cinnamon-session-cinnamon" X session
"cinnamon-session-cinnamon" not found; falling back to default session.

Supuestamente este tema está relacionado a Virtualbox y a sus Guests, sospechosamente es un software que habia instalado recientemente.

Buscando en los foros de Mint me topé con la solución y descubrí que es algo que le pasó a mucha gente, por eso este post.

La solución que funcionó en mi caso puntual fue esta:
1) En lugar de loguearnos, ingresamos a nuestra consola
Presionamos ctrl+alt+f1 y nos logueamos directamente ahí (veremos que la contraseña no muestra caracteres o los clásicos * cuando la escribimos)

2) Con este comando reinstalaremos cinnamon

# apt install --reinstall cinnamon

 

3) Reiniciamos luego que termine el proceso:

# sudo systemctl restart mdm

Fuente: https://forums.linuxmint.com

by Mauro at September 14, 2018 07:25 PM

Trabajando con Directorios (copiar, mover y renombrar) desde la consola

Muchas veces sobre todo para los principiantes manejar directorios por la consola suele se un poco complejo, hoy dejaré en un post simple y consizo como copiar, mover y renombrar directorios usando la terminal.

1) Copiar:

# cp -r directorio/ nuevodestino/nombre_copia

Donde:
Cp crea la copia, con el -r le pasamos recurisvidad por lo que copiará la carpeta y todo su contenido.
El nombre del directorio siempre debe tener el / al final de esa manera le  indicamos que es un directorio, sino lo tomará como archivo.

Ejemplos:
Para copiar el directorio imagenes al directorio imagenes 2 en una carpeta por encima de la actual:
# cp -r imagenes/ ../imagenes2

Para copiar el directorio imagenes al directorio imagenes2 en la misma carpeta
# cp -r imagenes/ imagenes2

2) Mover:

# mv directorio/ nuevodestino/nombre_directorio

Donde:
Con mv moveremos el directorio, lo elimina de donde estaba y lo traslada al destino que elijamos, no es necesario hacerlo recursivo.

Ejemplos:
Mover el directorio imgagenes a un nivel por encima sin cambiarle el nombre)
# mv imagenes ../imagenes

Mover el directorio imagenes a la carpeta interna files cambiandole el nombre a images
# mv imagenes files/images

 

3) Renombrar

# mv directorio nuevonombre

Para renombrar un directorio utilizaremos el mismo comando mv, dado que es como el traspaso del directorio de un lugar a otro. Directamente y sin necesidad de la / colocamos el nombre actual y luego el nombre nuevo.

Ejemplo:
# mv imagenes imagenlistas

by Mauro at September 14, 2018 11:34 AM

September 13, 2018

soyadmin.com

Jugando con md5sum para comprobar/proteger archivos desde nuestra Consola

Según nuestra amiga la wikipedia:md5sum es un programa originario de los sistemas Unix que tiene versiones para otras plataformas, realiza un hash MD5 de un archivo. La función de hash devuelve un valor que es único para cada archivo, con la particularidad que una pequeña variación en el archivo provoca una salida totalmente distinta, lo que ayuda a detectar si el archivo sufrió alguna variación. Es una herramienta de seguridad que sirve para verificar la integridad de los datos.

Es muy utilizado en la actualidad y en el mundo Linux es muy habitual encontrar las sumas de control MD5 de todos los paquetes que componen una distribución. También hay algunas aplicaciones que utilizan su algoritmo para encontrar archivos duplicados.”

Seguramente alguna vez han descargado un archivo o programa y este incluía en la descripción o por ahí el MD5 que es una combinación larguísima de letras y números el cual es un identificador único del archivo que estamos descargando, esto nos da seguridad de que el archivo no está corrupto o no ha sido modificado o tocado por un intermediario y comparando los 2 MD5 podremos verificar la integridad del mismo.

Podemos ver el ejemplo en la imagen:

Para entender mejor, vamos con un ejemplo:
Creamos un archivo llamado soyadmin.txt que tenga dentro la palabra Web y verificamos su MD5

# echo "Web" > soyadmin.txt
# md5sum soyadmin.txt
9d3fd68b70346ac3fa7e8e196ac24f64     soyadmin.txt

Ahora para verificar que si modificamos el archivo cambia el MD5 editaremos el archivo soyadmin.txt

# nano soyadmin.txt (cambiamos Web por Wev)
# md5sum soyadmin.txt
21f57aa1ab56a6ebaaae3b2612376363 soyadmin.txt

Vemos con claridad que el MD5 cambió lo cual nos indica que el archivo fue modificado. Esto es un algoritmo único de cada archivo el cual no se puede repetir ni siendo que el archivo vuelva a su estado original.

Una herramienta muy útil y eficiente para mantener un archivo Original. Resguardándonos de un dolor de cabeza por instalar un software modificado por terceros.

Si tenemos que entregar un archivo o programa podemos adjuntar el MD5 y de esa manera estamos asegurando una versión original.

Como verán estas opciones que doy son para Linux, utilizando la consola. Existen alternativas para verificar el MD5 también para Windows como lo es: MD5Cheker el cual nos permitirá controlar el hash MD5 de un archivo.

También posee una utilidad de encriptación de contraseñas en el diseño en PHP. Aquí hay muchas opciones y su utilización MD5 en PHP

by Mauro at September 13, 2018 07:55 PM

CPANEL & RHEL: Ubicación de los Logs, logs y más logs. cPanel, email, apache, base de datos etc!

Siempre sucede que cuando necesitamos ver un log decimos DONDE ESTA!!!!

Les dejo un listado con la ubicación de los principales logs de nuestro server CentOS y WHM:

Log individual por dominio     /usr/local/apache/domlogs
Log de acceso por dominio     /usr/local/apache/domlogs/{DOMINIO}
Errorlog de Apache     /usr/local/apache/logs/error_log
Log de control de suPHP     /usr/local/apache/logs/suphp_log
Log de Mailman     /usr/local/cpanel/3rdparty/mailmain/logs
Log de accesos a cPanel y WHM     /usr/local/cpanel/access_log
Registro de errores de cPanel     /usr/local/cpanel/error_log
cPanel license log     /usr/local/cpanel/license_log
Log de acceso de usuarios a cPanel     /usr/local/cpanel/login_log
Registro de estadísticas de cPanel     /usr/local/cpanel/stats_log
Log de acceso y registro de cambios de cPanel     /usr/local/cpanel/logs/access_log
Registro de cambios a la base de clietnes     /usr/local/cpanel/logs/build_locale_database_log
Log de respaldos     /usr/local/cpanel/logs/cpbackup
Registro de errores en Webdisk     /usr/local/cpanel/logs/cpdavd_error_log
Registro de la protección de fuerza bruta (CPHULK)     /usr/local/cpanel/logs/cphulkd.log
Log de DNS     /usr/local/cpanel/logs/dnsadmin_log
Log del rebuild de apache (EASYAPACHE)     /usr/local/cpanel/logs/easy/apache/
Registros de alertas     /usr/local/cpanel/logs/panic_log
Log de procesamiento de tareas     /usr/local/cpanel/logs/queueprocd.log
Reinicio de Apache desde WHM     /usr/local/cpanel/logs/safeapcherestart_log
Log de la base de datos local     /usr/local/cpanel/logs/setupdbmap_log
Log de estadísticas del sitio     /usr/local/cpanel/logs/stats_log
Log del tailwatch     /usr/local/cpanel/logs/tailwatch_log
Registro de actualizaciones     /usr/local/cpanel/logs/updated_analysis/{TIMESTAMP}.log
Registro de cuentas en cPanel     /var/cpanel/accounting.log
Log de consumo de Bandwith por usuario     /var/cpanel/bandwidth.cache/{USERNAME}
Log de consumo de Bandwith     /var/cpanel/bandwidth/{USERNAME}
Logs de Horde     /var/cpanel/horde/log/
Registro de movimiento de cuentas y transferencias     /var/cpanel/logs
Logs de Roundcube     /var/cpanel/roundcube/log/
Logs de Squirremail     /var/cpanel/squirrelmail/
Log de actualizaciones de cPanel     /var/cpanel/updatelogs/updated.{TIMESTAMP}.log
Log de errores de mysql     /var/lib/mysql/{SERVER_NAME}.err
Logs del Ancho de banda total del server     /var/log/bandwidth
Log de estado de servicios     /var/log/chkservd.log
Registro del Antivirus ClamAV     /var/log/clamav
Log de instalación de cPanel     /var/log/cpanel
Log de actualizaciones de cPanel     /var/log/cpupdate.log
Registro de movimientos de Exim     /var/log/exim_mainlog
Registro de errores de Exim     /var/log/exim_paniclog
Registro de rebotes de Exim     /var/log/exim_rejectlog
Registro de problemas con Exim     /var/log/maillog [or] /var/log/messages
Registro de accesos a base de datos     /var/log/slowqueries
Registro de correos electrónicos recibidos     /var/spool/exim/input/

by Mauro at September 13, 2018 01:18 PM

Sobre bits

Monitorizar la autenticación LDAP con PowerShell

Una vez tenemos en nuestra infraestructura una herramienta de monitorización como Nagios con la que comprobamos aspectos básicos de la misma como el uso de recursos o el estado de servicios, es el momento de plantearnos monitorizar otros aspectos que nos den una visión más real del estado de nuestro entorno. En la entrada de hoy vamos a ver cómo podemos monitorizar la autenticación LDAP con PowerShell para estar siempre seguros de que la validación en nuestros controladores de dominio está funcionando de forma correcta.

Monitorizar la autenticación LDAP con PowerShell

Compobar con PowerShell que un dominio autentica de forma correcta

La mejor forma para comprobar de forma inequívoca si algo funciona es probando su uso. Dado que nuestro objetivo es comprobar que la validación en un dominio está funcionando correctamente lo que vamos a hacer será realizar una query en el dominio en la que necesitemos validarnos con usuario y contraseña. Si dicha query devuelve el valor que estamos esperando podremos determinar que la autenticación está funcionando de forma correcta.

Para realizar la query una de las formas más sencillas y portables es valernos de una clase de .Net como System.DirectoryServices.DirectoryEntry. Con ella instanciaremos un objeto con el que haremos una query al root del dominio utilizando unas credenciales creadas para la ocasión:

PS C:\> New-Object System.DirectoryServices.DirectoryEntry('LDAP://192.168.168.168/DC=sobrebits,DC=local','test_dc','Password123.')


distinguishedName : {DC=beservices,DC=local}
Path              : LDAP://192.168.168.168/DC=sobrebits,DC=local

Vamos a repasar paso a paso la línea:

  • New-Object System.DirectoryServices.DirectoryEntry: Con New-Object instanciamos un objeto de la clase System.DirectoryServices.DirectoryEntry que, como hemos apuntado anteriormente, nos servirá para hacer nuestra query.
  • LDAP://192.168.168.168/DC=sobrebits,DC=local: El path del dominio al que vamos a hacer la query.
  • test_dc: El usuario con el que autenticaremos en el dominio.
  • Password123.: El password con el que autenticaremos en el dominio.

Si la ejecución del parámetro nos devuelve el objeto que vemos en las líneas anteriores con el distinguishedName y el Path implica que la autenticación se ha realizado correctamente y se ha podido ejecutar la query, si lo que se nos retorna es un error evidentemente tenemos algún problema de autenticación.

Aplicando un poco de lógica a la query

Por último vamos a crear un mini script como el que vimos en la creación de checks de Nagios. Utilizaremos la propiedad Name del objeto que nos devuelve la query para comprobar que realmente se llama como el dominio al que estamos atacando. De no ser así devolveremos un estado “Critical”.

# Declaramos las variables del dominio
$name = 'sobrebits'
$path = 'LDAP://192.168.168.168/DC=sobrebits,DC=local'
$user = 'test_dc'
$password = 'Password123.'

# Realizamos la query al servidor de dominio
$query = New-Object System.DirectoryServices.DirectoryEntry($path,$user,$password)

# Si el valor devuelto es el mismo que el de nuestra propiedad $name devolvemos un OK (0). De no serlo devolvemos un Critical (2).
if ($query.Name -eq $name) {
    Write-Host 'OK! La autenticación funciona.'
    Exit 0
}
else {
    Write-Host 'CRITICAL! Error de autenticación.'
    Exit 2
}

Con esto hecho ya somos capaces de monitorizar la autenticación LDAP con PowerShell en nuestros servidores de dominio y tener la certeza en todo momento de que no tenemos problemas en esta parte de la infraestructura. Replicar esto mismo a cualquier sistema de monitorización no debería ser un problema ya que solo deberíamos cambiar la salida del script.

La entrada Monitorizar la autenticación LDAP con PowerShell aparece primero en Sobrebits.

by Marc Meseguer at September 13, 2018 08:00 AM

September 12, 2018

soyadmin.com

Visualizar imágenes desde consola con Caca-utils

Hace unos días enseñábamos a optimizar y comprimir imágenes desde la terminal. La idea es ahora poder previsualizar cualquier imagen .jpg .png, con esta utilidad llamada Caca-utils.

Cacaview nos brinda una previsualización de una imagen (bastante precaria) utilizando la consola. Esta aplicación no utiliza servidor gráfico, sino que arma las imágenes mediante texto utilizando ASCII-art

Vamos a instalarlo y verificar su uso el cual es muy sencillo:
1) Debian, Ubuntu y derivados:

# sudo apt-get install caca-utils

2) Red Hat, Fedora y CentOS (es necesario tener el repositorio EPEL)

# yum install caca-utils

Para utilizarlo directamente colocamos

# cacaview imagen.jpg

Nos permitirá hacer acercamientos y alejamientos (+-) de la imagen, y algunas otras pequeñas opciones.

by Mauro at September 12, 2018 10:17 PM

Como instalar DirectAdmin en CentOS 5, 6 y 7

DirectAdmin es un panel de control para administrar los servicios de un servidor dedicado (web, correo electrónico, DNS, FTP…). Entre sus numerosas funcionalidades, encontraremos
– un completo sistema para revendedores (gestión de cuentas, estadísticas…),
– un sistema de tíquets de incidencia integrado en el panel,
– un sistema de actualizaciones.

Nos permite administrar sencillamente un servidor dedicado, es muy sencillo y facil de utilizar lo que hace que sea muy valorado junto a los grandes del mercado como lo son cPanel y Plesk.
Para más información sobre directAdmin: http://www.directadmin.com/

En este posteo enseñaremos como instalar DirectAdmin en un servidor dedicado sin uso y sin configuraciones especiales. La guía nos indica como instalarlo en cualquiera de las 3 versiones de CentOS (5, 6 y 7) tanto en 32 como 64 bits.

Empezaremos con la instalación, se supone que ya tenemos contratada la licencia de Directadmin.
1) Actualizamos centOS

# yum update

 

2) Instalamos las dependencias:

CENTOS 5 Y 6: # yum install wget gcc gcc-c++ flex bison make bind bind-libs bind-utils openssl openssl-devel perl quota libaio libcom_err-devel libcurl-devel gd zlib-devel zip unzip libcap-devel cronie bzip2 cyrus-sasl-devel perl-ExtUtils-Embed autoconf automake libtool which patch mailx db4-devel
CENTOS 7: # yum install wget gcc gcc-c++ flex bison make bind bind-libs bind-utils openssl openssl-devel perl quota libaio libcom_err-devel libcurl-devel gd zlib-devel zip unzip libcap-devel cronie bzip2 cyrus-sasl-devel perl-ExtUtils-Embed autoconf automake libtool which patch mailx psmisc net-tools systemd-devel libdb-devel

3) Descargaremos el instalador de Directadmin

# wget http://www.directadmin.com/setup.sh
# chmod 755 setup.sh
# ./setup.sh

Durante esta instalación nos irá solicitando algunos datos como la licencia, hostname, etc:

*****************************************************
*
* Have you run the pre-install commands? CTRL-C if not.
* http://help.directadmin.com/item.php?id=354
*
*****************************************************
Please enter your Client ID : xxxxx
Please enter your License ID : xxxxx
Please enter your hostname \(server.domain.com\)
It must be a Fully Qualified Domain Name
Do *not* use a domain you plan on using for the hostname:
eg. don't use domain.com. Use server.domain.com instead.
Do not enter http:// or www
Enter your hostname (FQDN) : xxxxx.xxxxx.com
Client ID: xxxxx
License ID: xxxxx
Hostname: xxxxx.xxxxx.com
Is this correct? (y,n) : y
The following ethernet devices/IPs were found.
Please enter the name of the device you wish to use:
eth0 xxx.xxx.xxx.xxx
eth1
Elegimos la tarjeta de red predeterminada en el servidor (podemos asegurarnos haciendo un ifconfig):

venet0:0
venet0:1
La instalación continua...

Enter the device name: xxx
Is xxx.xxx.xxx.xxx the IP in your license? (y,n) : y
DirectAdmin will now be installed on: Enterprise 5.7
Is this correct? (must match license) (y,n) : y
You now have 4 options for your apache/php setup.
1: customapache: end-of-life software. Includes Apache 1.3, php 4 and frontpage.
2: custombuild 1.1:end-of-life software. Apache 2.x, php 4, 5 or both in cli and/or suphp. Defaults to php 5.2
3: custombuild 1.2:Production version: Apache 2.x, php 5, 6, or both in cli and/or suphp. defaults to php 5.3
4: custombuild 2.0 BETA: Apache 2.4, mod_ruid2, php 5.5. Can be set to use php-FPM or fastcgi.

Post any issues with custombuild to the forum: http://www.directadmin.com/forum/forumdisplay.php?f=61

Enter your choice (1, 2, 3 or 4): 4
You have chosen custombuild 1.2.

2011-11-11 14:47:00 http://files.directadmin.com/services/custombuild/1.1/custombuild/build
Resolving files.directadmin.com
Connecting to files.directadmin.com|:80 connected.
HTTP request sent, awaiting response 200 OK
Length: 289046 (282K) [text/plain]
Saving to: `/usr/local/directadmin/custombuild/build'
100%[===========================================================================>] 289,046 855K/s in 0.3s
2011-11-11 14:47:01 (855 KB/s)  `/usr/local/directadmin/custombuild/build' saved [289046/289046]
Would you like the default settings of apache 2.2 and php 5 cli? (y/n): y *
Using the default settings for custombuild.
Would you like to search for the fastest download mirror? (y/n): y

 

4) Una vez finalizada la instalación podemos ingresar al panel de control mediante: http: //xx.xx.xx.xx: 2222 (por supuesto reemplazamos las xx por la dirección de IP del servidor).
Para acceder al panel usted recibirá unos datos de acceso defaults al finalizar la instalación, en caso de no recordarlos o no haber tomado nota, puede recuperarlos haciendo:

# cd /usr/local/directadmin
# ./directadmin i

U otra alternativa es verificar el log de la instalación de Directadmin aqui:
# vi /usr/local/directadmin/scripts/setup.txt

 

5) Por último y para finalizar podemos actualizar el servicio haciendo:

# cd /usr/local/directadmin/custombuild
# ./build clean
# ./build update
# ./build update_versions

Con esto finalizamos una instalación básica de DirectAdmin.

by Mauro at September 12, 2018 08:39 PM

September 11, 2018

soyadmin.com

10 pasos para acelerar Ubuntu

En este post detallaremos algunos pasos para optimizar nuestro sistema. Si bien la mayoría de las distribuciones ya tienen una configuración y prestaciones excelentes, podemos usar estos tips para exprimir y lograr sacarle un plus a nuestro equipo.

1) Modificar el tiempo de espera del Grub
Cuando prendes tu PC muestra el grub el cual espera que inicies el sistema que elijas o algunas de las opciones de recuperación que se presentan en el mismo. Ese tiempo puede modificarse y achicarse para que tu pc solo demore un par de segundos en lugar de los 10 que trae por default.

¿Cómo modificamos el tiempo de espera del Grub?

# sudo nano /etc/default/grub
Editamos GRUB_TIMEOUT = 10 al tiempo en segundos que deseamos (recomendado 2)
# sudo update-grub

Recuerda que esto hace que el grub pase rápido y en algunos casos no logres seleccionar otro SO para iniciar.

2) Instalar Preload
Preload es una aplicación o demonio que se ejecuta en segundo plano, la cual analiza el comportamiento del usuario detectando que aplicaciones usas con más frecuencia y de que manera “usas” tu PC.
A grandes razgos genera un listado de las aplicaciones que más usamos y alojará los binarios y dependencias de las mismas en la RAM del sistema, con lo cual tendremos una precarga de aplicaciones las cuales abrirán de manera casi instantánea.

¿Cómo se instala?

# sudo apt-get install preload

Reiniciamos el equipo y ya preload quedará recopilando información en segundo plano, no requiere de ninguna configuración especial y veremos con el transcurso de los días como se irán acelerando la apertura de aplicaciones en nuestro equipo.

3) Instalar TLP (Linux Advanced Power Management)
TLP (Linux Advanced Power Management) es un administrador de energía con el cual (sin ser un experto) puedes lograr que tu PC tenga mejor rendimiento, mejor gestión de recursos y energía y evitar el sobrecalentamiento.
¿Qué hace?
– Configura el CPU para un mejor rendimiento, evitar el sobrecalentamiento y ahorro de energía.
– Analiza del funcionamiento del disco duro y optimiza su funcionamiento.
– Suspende los dispositivos USB que no estén en uso.
– Define los dispositivos inalámbricos de frecuente uso y los habilita/deshabilita al inicio.

¿Cómo se instala?

# sudo add-apt-repository ppa:linrunner/tlp
# sudo apt-get update
# sudo apt-get install tlp tlp-rdw
# sudo tlp start

Para controlar que fue correctamente instalado y está funcionando ejecutamos:

# sudo tlp-stat -s

 

4) Aplicaciones al Inicio
Debemos verificar que aplicaciones se cargan al inicio, vas a menu y escribes “Aplicaciones al Inicio”
Existen aplicaciones que se configuran automáticamente al inicio, como el skype, anydesk, etc etc.

Si vemos que el rendimiento no es óptimo y podemos prescindir de estas aplicaciones al inicio del sistema, es recomendado desactivar el inicio automático.

5) Instalar los drivers propietarios de nuestra tarjeta de video
Dado que ubuntu y sobre todo Gnome hacen un arduo uso de los gráficos, es recomendable instalar los drivers privativos de tu Tarjeta gráfica. De esa manera mejoraremos la gestión gráfica.

Esto lo encontramos en el Menú de aplicaciones -> Software y actualización -> Controladores adicionales. Instalamos y deberemos reiniciar la PC para que tome los cambios.

También existe una manera de hacerlo con nuestra terminal tal cual lo explicamos en ESTE POST 

6) Controlar que procesos carga Systemd
Tal como lo explicamos en este POST https://soyadmin.com/analizar-el-tiempo-de-arranque-de-nuestro-equipo-linux/ podemos verificar que procesos tardan más durante el iniicio de nuestro Ubuntu y previa investigación podemos desactivarlo del iniicio para así acortar el mismo.

¿Cómo se usa?

# systemd-analyze blame

Si detectamos algún proceso innecesario al inicio podemos desactivarlo con:

# systemctl disable NOMBRE_DE_SERVICIO

IMPORTANTE: Estos cambios pueden ROMPER el sistema, actuar con cuidado e investigando cada proceso a desactivar


7) Utilizar espejos o repositorios de actualizaciones de nuestro país o región de software
En el Menú de aplicaciones -> Buscar software y actualización -> Software de Ubuntu buscaremos el servidor más cercano a nuestra ubicación.
Esto es sencillo, a más cerca mayor velocidad de descarga. (al menos así debería funcionar)

8) Limpiar nuestro sistema periódicamente.
Con el constante uso de nuestro equipo, vamos dejando “basura” o residuos de instalaciones, paquetes, repositorios y también archivos temporales del uso diario.

Podemos hacer una limpieza de nuestro equipo de esta manera:
LIMPIAR PAQUETES
LIMPIAR TEMPORALES Y MÁS CON BLEACHBIT
ELIMINAR REPOSITORIOS PPA QUE YA NO USEMOS

9) Borrar la caché de resultados de búsqueda
Ubuntu guarda un histórico de búsquedas realizadas para tener a “mano” rápido un resultado de nuevas búsquedas.
Tenemos que hacer una limpieza periódica de estos resultados en: Configuración del sistema> Seguridad y privacidad.

10) Sotware y hardware
Si notamos que nuestro sistema sigue lento aun configurando y realizando los pasos de arriba, tal vez no hemos elegido la distribución o escritorio correctos. Existen distintos escritorios y distros que pueden aprovechar mejor nuestro hardware, entre los desks livianos tenemos xfce, mate, lxde, budgie los cuales suelen tener un menor consumo al que muestra Genome.
En cuanto a nuestro hardware, ampliar la ram a 8 o 16GB e instalar un disco SSD (sólido) mejoraría enormemente la velocidad de nuestro sistema, logrando una performance impecable. Pero bueno esta sería una inversión la cual en algunos casos (como el mío) son costos económicos imposibles de alcanzar.

by Mauro at September 11, 2018 10:44 PM

LIBRO: Ataques a Bases de Datos: SQL Injection

Título: ATAQUES A BASES DE DATOS: SQL INJECTION
Autor: UOC
Páginas: 70 Páginas
Tamaño: 1,5 MB
Fomato: PDF

 

 

 

Contenido:

Inyección SQL es un método de infiltración de código intruso que se vale de una vulnerabilidad informática presente en una aplicación en el nivel de validación de las entradas para realizar consultas a una base de datos.

El origen de la vulnerabilidad radica en el incorrecto chequeo y/o filtrado de las variables utilizadas en un programa que contiene, o bien genera, código SQL. Es, de hecho, un error de una clase más general de vulnerabilidades que puede ocurrir en cualquier lenguaje de programación o script que esté embebido dentro de otro.

Se conoce como Inyección SQL, indistintamente, al tipo de vulnerabilidad, al método de infiltración, al hecho de incrustar código SQL intruso y a la porción de código incrustado.

En este módulo UOC perteneciente a su colección sobre Seguridad Informática, se analizan todos los aspectos relacionados con las inyecciones SQL. El temario es el siguiente:

SQL Injection: introducción
Blind SQL Injectión: seguridad basada en tiempos
Arithmetic Blind SQL Injection
Ficheros remotos en la inyección SQL
Consejos

Fuente: openlibra.com

by Mauro at September 11, 2018 12:07 PM

September 10, 2018

soyadmin.com

CentOS/RHEL: Liberar espacio en la partición /boot eliminando kernels viejos

Trabajando en un server CentOS me encontre con la imposibilidad de actualizar (hacer un update) debido a que la partición /boot no poseía el suficiente espacio.
Si bien no es algo super crítico, el servidor nos va quedando desactualizado y sin los últimos parches, kernels, etc. Tenía que hacer lugar en la partición /boot.

1) Lo primero fue ver cuantos kernels tenía para ver si eliminando o desinstalando algunos podía hacer espacio.

# rpm -q kernel
kernel-2.6.32-504.1.3.el6.x86_64
kernel-2.6.32-431.23.3.el6.x86_64
kernel-2.6.32-573.8.1.el6.x86_64
kernel-2.6.32-431.20.3.el6.x86_64
kernel-2.6.32-604.30.3.lve1.3.63.el6.x86_64

Walá! tenía varios para eliminar y de esa manera tema solucionado.

2) Para borrar kernels antiguos basta con ejecutar este comando:

# package-cleanup --oldkernels --count=2

Aqui limpiará los kernles viejos, dejando solamente los 2 más actuales.

3) Por último para evitar que el sistema guarde tantos kernels viejos hacemos:

# vi /etc/yum.conf
Acá agregamos o editamos esta línea
installonly_limit=2

by Mauro at September 10, 2018 09:10 PM

¿Como optimizar y comprimir imágenes JPG y PNG desde la Terminal?

Existen algunas herramientas para poder optimizar y comprimir imágenes, seguramente a la hora de realizar esto buscamos algún software específico con interfaz gráfica o alguna web que se encargue de hacer el retoque. Sucede que hay una manera sencilla y fácil de realizar estos procedimientos, directamente desde nuestra amada consola, casi sin gasto de recursos y sin subir imágenes a páginas o cuestiones raras.

Hoy les traigo 2 aplicativos para optimización y compresión de imágenes JPEG y PNG
1) OptiPNG nos permitirá reducir imágenes PNG sin perder calidad de las mismas.
2) JpegOptim otra útil herramienta para optimizar la calidad y comprimir JPEG’s sin perder calidad de las imágenes.

1) Empezamos por OptiPNG:
SU INSTALACIÓN:
a) Debian, ubuntu y derivados:

# apt-get install optipng

b) Red Hat, CentOS y derivados:

# yum install optipng (debemos tener el repo EPEL instalado)

c) Fedora:

# dnf install optipng

¿CÓMO SE USA?:
Utilizaremos una imagen cualquiera (soyadmin.png)
a) Para empezar veremos el tamaño de soyadmin.png

# ls -lh soyadmin.png
-rw-r--r-- 1 soyadmin soyadmin 113k Feb  5 09:05 soyadmin.png
*Vemos que la imagen pesa 113kb

b) Vamos ahora a comprimirla y luego ver nuevamente el espacio

# optipng soyadmin.png
OptiPNG 0.6.4: Advanced PNG optimizer.
Copyright (C) 2001-2010 Cosmin Truta.

** Processing: soyadmin.png
1006x1006 pixels, 4x8 bits/pixel, RGB+alpha
Input IDAT size = 115074 bytes
Input file size = 115320 bytes

Trying:
zc = 9  zm = 8  zs = 0  f = 0        IDAT size = 95250

Selecting parameters:
zc = 9  zm = 8  zs = 0  f = 0        IDAT size = 95250

Output IDAT size = 95250 bytes (19824 bytes decrease)
Output file size = 95460 bytes (19860 bytes = 17.22% decrease)

c) Chequeamos nuevamente el peso de la imagen para ver que ha sido optimizada correctamente

# ls -lh soyadmin.png
-rw-r--r-- 1 soyadmin soyadmin 94k Feb  5 09:05 soyadmin.png
*Vemos que la imagen ha sido reducida un 17.22% y ahora pesa 94kb

d) Vamos a optimizar varias imágenes en .png

# optipng *.png
OptiPNG 0.6.4: Advanced PNG optimizer.
Copyright (C) 2001-2010 Cosmin Truta.

** Processing: 1.png
2500x2248 pixels, 4x8 bits/pixel, RGB+alpha
Input IDAT size = 4375573 bytes
Input file size = 4384725 bytes

Trying:
zc = 9  zm = 8  zs = 1  f = 5        IDAT size = 4375573
zc = 9  zm = 8  zs = 3  f = 5        IDAT size = 4349273

Selecting parameters:
zc = 9  zm = 8  zs = 3  f = 5        IDAT size = 4349273

Output IDAT size = 4349273 bytes (26300 bytes decrease)
Output file size = 4352017 bytes (32708 bytes = 0.75% decrease)

** Processing: 3.png
993x805 pixels, 4x8 bits/pixel, RGB+alpha
Input IDAT size = 262492 bytes
Input file size = 262847 bytes

Trying:
zc = 9  zm = 8  zs = 1  f = 5        IDAT size = 261288

Selecting parameters:
zc = 9  zm = 8  zs = 1  f = 5        IDAT size = 261288

Output IDAT size = 261288 bytes (1204 bytes decrease)
Output file size = 261547 bytes (1300 bytes = 0.49% decrease)

e) Para más usos y posibles características podemos verificar su manual

# man optipng

 

2) Ahora utilizaremos jpegoptim
SU INSTALACIÓN:
a) Debian, Ubuntu y derivados:

# apt-get install jpegoptim

b) Red Hat, CentOS y derivados:

# yum install jpegoptim (debemos tener el repo EPEL instalado)

c) Fedora y derivados:

# dnf install jpegoptim

¿CÓMO SE USA?:
Utilizaremos una imagen cualquiera (soyadmin.jpg)
a) Para empezar veremos el tamaño de soyadmin.jpg

# ls -lh soyadmin.jpg
-rw-r--r-- 1 root root 141K Feb  5 10:02 soyadmin.jpg
*Vemos que la imagen pesa 141kb

b) La comprimimos y optimizamos

# jpegoptim soyadmin.jpg
soyadmin.jpg 1280x1024 8bit N JFIF  [WARNING] 143690 --> 55934 bytes (61.07%), optimized.

c) Volvemos a ver el tamaño de la imágen y vemos que fue reducida en un 61.07%

# ls -lh soyadmin.jpg
-rw-r--r-- 1 root root 55K Feb  5 10:04 soyadmin.jpg
*Ahora pesa 55Kb

d) Una interesante opción de esta herramienta que podemos elegir el tamaño aproximado al que queremos reducir la imágen, por ejemplo bajaremos soyadmin.jpg de 141kb a 100kb

# jpegoptim --size=100k soyadmin.jpg
soyadmin.jpg 1280x1024 8bit N JFIF  [WARNING] 143690 --> 105310 bytes (26.71%), optimized.

e) Vemos que ahora que su tamaño ronda los 100k

# ls -lh soyadmin.jpg
-rw-r--r-- 1 root root 103K Feb  5 10:22 soyadmin.jpg

f) Para más opciones y utilidades podemos ver el manual del aplicativo

# man jpegoptim

by Mauro at September 10, 2018 11:02 AM

MagMax Blog

DevOps: ¿Equipo, Rol o metodología?

Recientemente leí el artículo 6 DevOps mistakes to avoid, cuyo primer punto es "Creating a single DevOps team". Esto genero un pequeño hilo en twitter con @recena, donde colaboró también mi amigo @thejtoken.

Finalmente, @david_bonilla, en la última bonilista, ha escrito también en torno a este tema: ¿Es DevOps un rol o una metodología de trabajo?.

En este artículo doy mis argumentos a favor y en contra.

Leer más… (quedan 5 minutos de lectura)

by Miguel Ángel García at September 10, 2018 04:33 AM

September 07, 2018

soyadmin.com

LIBRO: Capacitación Digital Básica II

Título: CAPACITACIÓN DIGITAL BÁSICA II
Autor: UOC
Páginas: 466 páginas
Tamaño:  37.5 MB
Fomato: PDF

 

 

 

Contenido:

La guía de Capacitación Básica II trabaja el segundo nivel de los contenidos de los módulos de Tratamiento de texto y de Tratamiento multimedia y también introduce nuevos contenidos relativos a los módulos de Tratamiento de datos, Tratamiento numérico y Presentación digital.

De igual manera que en el primer material de capacitación básica, incluye el módulo de @ctitud digital que es tratado de una manera transversal a lo largo de los contenidos de los módulos principales.

Todos los módulos se estructuran en base a temas y subtemas que facilitan la adquisición gradual y progresiva de los contenidos que se trabajan.

Al final de cada tema se proponen actividades de autoevaluación que permiten la evaluación del grado de aprendizaje de los conceptos que se trabajan en ese tema.

Fuente: openlibra.com

by Mauro at September 07, 2018 09:00 PM

¿Cómo montar una imagen ISO desde nuestra consola?

Si queremos montar una imágen ISO como una unidad para usarla localmente, basta con un par de comandos en nuestra terminal para que quede montada.

1) Creamos el directorio donde quedará montada:

# mkdir /home/soyadmin    (lugar y nombre que querramos)

2) Cargamos el módulo loop

# modprobe loop

3) Montamos la imágen:

# mount  -t  iso9660  -o loop  archivo.iso  /home/soyadmin

Donde:
Montamos archivo.iso en /home/soyadmin
-t obliga a usar el tipo de archivo
iso9660 es el tipo de archivo
-o loop permite que se lea a sí mismo (por ejemplo cuando ejecutamos algo)

4) Como desmontar:

# cd /home
# umount /home/soyadmin

 

by Mauro at September 07, 2018 12:30 PM

RooTeando

Tomando Un Café 41: Reflexión sobre Telegram y sus usos.

En este audio tendre una pequeña reflexión sobre Telegram, el uso que podemos darle y para que no sirve Telegram.  También algunos errores de uso por parte de los usuarios.  


Música: Elephant Funeral-The Art of Living- 11. 40 Hours  https://freemusicarchive.org


Si quieres apoyarme  de forma económica para mis podcast y canales, puedes realizarlo de diferentes formas:
PayPal   https://paypal.me/JoseAJimenez
Programa afiliado de Amazon  https://amzn.to/2Myjet8, si ...

September 07, 2018 12:21 AM

September 06, 2018

soyadmin.com

Analizar el tiempo de arranque de nuestro equipo Linux

Con systemd-analize podemos verificar y medir el tiempo de arranque de nuestro equipo. Siempre y cuando nuestra distribución use systemd como gestor de arranque.

Nos muestra el tiempo de inicio de nuestro sistema y nos permite detallar la demora de cada proceso. Esto es muy util ya que si notamos lentitud al iniciar nuestro equipo podemos ver que procesos o servicios son los responsables y en todo caso luego desactivarlos.

Conocer el tiempo de inicio de nuestro sistema:

# systemd-analyze

El resultado está dividido en 2 (kernel y usuario)

Luego podemos detallar el tiempo de carga de los procesos o servicios:

# systemd-analyze blame

 

Buscamos en internet que insidencia tienen esos procesos que más consumen en nuestro Ubuntu y podemos desactivarlos con:

# systemctl disable NOMBRE_DE_SERVICIO

by Mauro at September 06, 2018 08:06 PM

Problema con Spool de IP’s en cPanel – Show/Edit Reserved IPs

Luego de un reinicio por mantenimiento de uno de nuestros servidores, nos encontramos que al volver este había perdido todas las IP asignadas que no estaban reservadas. Es decir que al realizar un Show/Edit Reserved IPs aparecían solamente las ip’s reservadas del servidor.
El problema grave fue que una de esas IP perdidas estaba declarada en el /etc/mailips como salida del caudal de correos, haciendo que los emails no tengan salida del servidor. 🙁 Siendo que uno cuando detecta problemas en el correo lo último que se fija es en que una de las IP del mailips este desaparecida…

 

Lo primero que hice fue tratar de agregar las IP’s nuevamente desde el WHM, esto devolvía este error:

Con esto verificamos que las IP estaban anexadas al servidor pero cPanel no las veía, chequeamos más a fondo y detectamos que las IP aparecían en estos archivos:

/etc/hosts
/etc/ips
/etc/mail_reverse_dns

Si vemos que las IP aparecen en alguno de estos archivos necesitaremos hacer un Rebuild del Spool de IP’s

# /etc/rc.d/init.d/ipaliases restart
Bringing up eth0:cp1                                       [  OK  ]
Routing 133.133.133.133                                     [  OK  ]
Bringing up eth0:cp2                                       [  OK  ]
Routing 133.133.133.134                                     [  OK  ]
Bringing up eth0:cp3                                       [  OK  ]
Routing 133.133.133.135                                    [  OK  ]
Bringing up eth0:cp4                                       [  OK  ]
Routing 133.133.133.136                                   [  OK  ]


Una vez finalizado el rebuild las IP aparecieron en nuestro cPanel, solucionando el problema.

by Mauro at September 06, 2018 12:21 PM

Sobre bits

Crear VLANs con PowerCLI de forma masiva

En más de una ocasión me he encontrado con la necesidad de crear rangos grandes de VLANs (realmente Virtual Machine Port Groups con tag de VLAN) en infraestructuras sin switches distribuidos y con varios nodos ESXi. Si bien crear unas pocas VLANs en algunos nodos es una tarea rápida que no entraña mucho misterio, cuando los números suben se puede volver una tarea tediosa y en la que es muy fácil cometer errores. Es por ello que en la entrada de hoy veremos cómo crear VLANs con PowerCLI de forma masiva de forma muy sencilla.

Usando New-VirtualPortGroup para crear VLANs con PowerCLI

Antes de empezar, como siempre, podemos consultar los cmdlets disponibles para la gestión de Virtual Port Groups (VLANs) con Get-Command:

Comandos_VirtualPortGroupLos cmdlets resultantes son bastante autoexplicativos, pero se puede consultar la lista de verbos aprobados y su significado en la documentación de Microsoft.

Tal como dice el título de la sección nos valdremos de New-VirtualPortGroup para crear una nueva VLAN. Este cmdlet es muy sencillito y, como se puede ver en la ayuda del mismo, dispone de muy pocos parámetros:

  • Name: El nombre que daremos al Virtual Port Group.
  • VirtualSwitch: El Virtual Switch sobre el que crearemos la VLAN.
  • VlanId: El tag de la VLAN.

Así que vamos a proceder a crear un nuevo Virtual Port Group de prueba llamado ‘sobrebits’ con VLAN tag 666:

PS C:\> New-VirtualPortGroup -Name sobrebits -VirtualSwitch vswitch0 -VLanId 666

Name                      Key                            VLanId PortBinding NumPorts
----                      ---                            ------ ----------- --------
sobrebits                 key-vim.host.PortGroup-sobr... 666

Crear rango de VLANs con PowerCLI

Visto como crear una VLAN con PowerCLI podemos proceder a utilizar el comando para generar VLANs de forma masiva. Para ello podemos valernos de un bucle for:

# Declaramos las variables de VLAN inicial, final y el vswitch sobre el que crearlas:
$Start = 667
$End = 675
$Vswitch = 'vswitch0'

# Recorremos el rango creando las VLAN:
for ($i=$Start; $i -le $End; $i++) {
    New-VirtualPortGroup -VirtualSwitch $Vswitch -Name "VLAN$i" -VlanID $i
}

Si ejecutamos el código podremos ver como se crean todos los Virtual Port Groups:

Name                      Key                            VLanId PortBinding NumPorts
----                      ---                            ------ ----------- --------
VLAN667                   key-vim.host.PortGroup-VLAN667 667
VLAN668                   key-vim.host.PortGroup-VLAN668 668
VLAN669                   key-vim.host.PortGroup-VLAN669 669
VLAN670                   key-vim.host.PortGroup-VLAN670 670
VLAN671                   key-vim.host.PortGroup-VLAN671 671
VLAN672                   key-vim.host.PortGroup-VLAN672 672
VLAN673                   key-vim.host.PortGroup-VLAN673 673
VLAN674                   key-vim.host.PortGroup-VLAN674 674
VLAN675                   key-vim.host.PortGroup-VLAN675 675

Usando el módulo New-VMHostVlan para crear VLANs masivamente con PowerCLI

Para acabar, me gustaría compartir un módulo que he creado y que yo mismo uso que básicamente utiliza lo visto en el punto anterior pero me permite ejecutarlo en modo comando y que siempre llevo cargado en mi sesión de PowerShell. Podéis descargar el módulo desde mi repositorio de GitHub.

Con New-VMHostVlan podemos utilizar los siguientes parámetros:

  • Start: VLAN de inicio.
  • End: VLAN final.
    • Si no se especifica una únicamente crea la VLAN de -Start.
  • Server: Servidor ESXi al que conectarse para crear las VLANs.
    • Si no se especifica intenta crearlo en el servidor al que ya se esté conectado. Si no se está conectado a ninguno devuelve error.
  • Vswitch: vSwitch en el que crear las VLANs.
  • Prefix: Prefijo a especificar para el campo Name de la VLAN.
    • Por defecto es ‘VLAN’.
    • Ejemplo: Si especificamos ‘-Prefix V’ crearía el nombre de las VLANs en formato V671, V672…

Así que la ejecución de la función es sencillisima, este podría ser un ejemplo:

PS C:\> New-VMHostVlan -Start 676 -End 680 -Vswitch 'vswitch0' -Prefix 'sobrebits'

Name                      Key                            VLanId PortBinding NumPorts
----                      ---                            ------ ----------- --------
sobrebits676              key-vim.host.PortGroup-sobr... 676
sobrebits677              key-vim.host.PortGroup-sobr... 677
sobrebits678              key-vim.host.PortGroup-sobr... 678
sobrebits679              key-vim.host.PortGroup-sobr... 679
sobrebits680              key-vim.host.PortGroup-sobr... 680

Después de todo lo ejecutado en la entrada esto es lo que podríamos ver en nuestro nodo:

Crear vlans con powercli

¡Espero que la entrada os sea útil y os ahorre algo de vuestro valioso tiempo!

La entrada Crear VLANs con PowerCLI de forma masiva aparece primero en Sobrebits.

by Marc Meseguer at September 06, 2018 08:00 AM

September 05, 2018

soyadmin.com

Eliminar paquetes obsoletos en Debian, Ubuntu y derivados

De tanto instalar, modificar, probar, instalar programas, etc… van quedando paquetes obsoletos o en desuso los cuales están ahi por estar.

Con un simple comando verificaremos si tenemos paquetes obsoletos:

# dpkg -l | grep -i ^rc

 

Esto los listará, luego para eliminarlos con este comando:

# dpkg -l |grep -i ^rc | cut -d " " -f 3 | xargs dpkg --purge

Siempre como root y desde nuestra consola preferida

by Mauro at September 05, 2018 07:50 PM

Bloquear/rechazar correos de un dominio en Exim

Esto es para casos donde un dominio peperulo.com envía miles y miles de correos hacia distintos clientes de  nuestro servidor, sabiendo que es spam y es necesario resguardarnos, podemos ponerles un bloqueo permanente desde el mismo Exim y de esa manera aseguramos de que no sigan molestando.

Esta es una excelente medida contra el SPAM, salvando a nuestro servidor de tener que procesar miles y miles de correos spam.

La solución es ingeniosa:
1) Crearemos un archivo donde anotaremos todos los dominios a bloquear:

# vi /etc/eximdominiobloqueado
Aqui colocaremos todos los dominios que deseamos bloquear uno debajo del otro, por ejemplo: peperulo.com

2) En nuestro WHM tendremos que activar el escaneo de este archivo a fin de bloquear todo lo que contiene
Home »Service Configuration »Exim Configuration Manager – Advanced Editor
Add additional configuration settingAqui agregamos:
domainlist exim_blacklist = lsearch;/etc/eximblacklist

3) Una vez que agregamos dicha linea, nos moveremos a:
ROUTERS CONFIGURATION
Aqui agregaremos el rebote que recibirá el remitente.

reject_domains:

driver = redirect
# RBL Blacklist incoming hosts
domains = +exim_blacklist
allow_fail
data = :fail: Conexión rechazada: Su $domain fue bloqueado por enviar SPAM.

Chequenado los logs de Exim, veremos como rechaza los emails de dicho dominio.

by Mauro at September 05, 2018 12:29 PM

September 04, 2018

soyadmin.com

3 maneras de instalar los drivers Nvidia en Ubuntu 18.04

Si cuentan con una tarjeta gráfica Nvidia ya sea integrada o como placa es necesario instalar drivers privativos de Nvidia para lograr un mejor rendimiento y calidad de imagen.

Lo primero que tendremos que hacer es verificar el modelo de nuestra tarjeta gráfica, con este comando lo podremos hacer perfectamente.

# lspci | grep VGA

Luego con otro comando verificaremos cual driver es el más actual para instalar:

# ubuntu-drivers devices

En mis resultados vemos que los drives recomendados son los nvidia-340 que luego usaremos para instalar directamente dichos drivers

 

1) Usando PPA
Usando repositorios de terceros

# sudo add-apt-repository ppa: graphics-drivers / ppa
# sudo apt-get update

Conociendo el driver recomendado instalaremos:

# sudo apt install nvidia-340

 

2) Instalación directa (RECOMENDADA)
Instalación conociendo el driver

# sudo apt install nvidia-340

Si no conocemos el driver podemos dejar que lo haga automático:

# sudo ubuntu-drivers autoinstall

 

3) Descargar e instalar los drivers directamente desde la web oficial de Nvidia
Ingresaremos a: https://la.nvidia.com/Download/index.aspx?lang=la
En el buscador colocaremos el modelo de nuestra placa o chip Nvidia y descargamos el driver oficial

Una vez descargado el “.run” procederemos a instalarlo:

# sh NVIDIA-xxxxxx-Linux.run

Y listo tendremos instalado el driver de nuestra placa corretamente.

by Mauro at September 04, 2018 10:02 PM

RooTeando

ARM para TODOS: 02 NAS económicos(II)

Segundo ,y último, audio de las serie sobre NAS económicos, en este episodio subimos la calidad y precio. Son soluciones para como mínimo  dos disco duros.

La lista de soluciones está compuesto por tres placas y cajas, mas otra placa de bonus.

🔹Helios4: Placa con Marvell ARMADA con 2 GB DDR4 ECC de RAM, USB 3.0/2.0, 3 SATA III,Ethernet Gigabit, lector de tarjetas... Caja con ventiladores ,tornillos, fuente y todo los ...

September 04, 2018 09:52 PM

ARM para TODOS: 01 NAS muy económicos(I)

Este audio es el primero de los dos que grabaré sobre NAS económicos para plataforma ARM, en este primer audio me centrare en la soluciones mas baratas para crear tu propio NAS.

La lista de soluciones son las siguiente, incluye un enlace referido en Amazon.

NAS Dock para NanoPi NEO/NEO2.
Página  y compra para la placa NEO2 en la página oficial de NanoPi. http://nanopi.org/NanoPi-NEO2_Feature.html
Caja NAS https://www.friendlyarm.com ...

September 04, 2018 09:47 PM

soyadmin.com

Manjaro vs Antergos, las mejores distros Arch

Si alguna vez trataste de instalar ArchLinux te habrás dado cuenta que no es una tarea un tanto dura, dado que no existe un asistente de instalación gráfico y esta debe realizarse mediante omandos, algo distinto pero no imposible gracias a la multiplicidad de manuales y tutoriales que están dando vueltas en la red. Arch es una distribución especial, se dice que es ideal para aquellos usuarios que ya vienen de distribuciones amigables como Mint o Ubuntu y desean aprender un poco más de Linux “puro”.

Por suerte para todos aquellos que quieren aprovechar la extrema estabilidad y usabilidad que posee Arch, sin tener que recurrir a  comandos o procesos especiales a la hora de instalar, existen distribuciones basadas en Archlinux que nos facilitan la vida.

En este post, vamos a mostrar 2 de las distribuciones basadas en Archlinux más utilizadas y mejor valoradas en este año, ojo esto a mi punto de vista y según las que he probado.

1) Manjaro
Manjaro hoy en día es una de las distribuciones basadas en Arch más utilizadas y con mayor distribución y aceptación por el usuario linux. Posee un grupo de desarrollo y comunidad altamente activos, una de las primeras distros derivadas de Arch.
Manjaro es una excelente opción rolling release fácil de instalar y usar, haciendo que la percepción de Arch sea más intuitiva sin perder el poder que nos dá la posibilidad de tener a Arch como núcleo.

Manjaro tiene sus orígenes en Alemania, si bien es mantenida y desarrollada por una comunidad de múltiples países y se ha ganado un puesto en el mundo de Linux, en la actualidad ocupa el puesto 2 de las distros más utilizadas según Distrowatch. Posee sus propios repositorios y además utiliza los repositorios de Arch y AUR.
Disponible en casi todos los escritorios o sabores del momento:

  • XFCE
  • KDE
  • E17
  • Canela / Gnome
  • Fluxbox
  • KDE / Razor-qt (un proyecto Manjaro Turquía)
  • LXDE
  • Ilustración
  • NETBOOK
  • LXQT
  • Pekwm

Siendo XFCE y KDE las recomendadas y oficiales para cualquier tipo de usuario.

Aparte de estos desktops manjaro trae una rama de características propias como lo son:
– Calamares como instalador
– Repositorios propios aparte de los repo de arch y el conocido AUR
– Gestion de paquetes Pacman y QT
– La simplicidad de Pamac que sería un Pacman con gráfica.
– El ultimo kernel LTS disponible.

Página oficial: https://manjaro.org/
Página de descargas: https://manjaro.org/get-manjaro/
Manjaro en español: http://manjaro-es.org/

 

2) Antergos
Antergos es una rolling release, basada en Archlinux, actualmente en modo prueba y con ganas de quedarse permanentemente en mi Notebook de uso diario.
Es un sistema que vendría a proporcionar un medio de instalación de Arch menos intimidante, prevaleciendo la estética pulida y muy bella gracias al tema Numix por defecto.

Viene con la mayoría de los escritorios actuales:

  • Cinnamon
  • Gnome
  • Lxde
  • KDE
  • Mate
  • Openbox
  • Xfce

Antergos viene con el instalador propio Cnchi muy elegante, sencillo e intuitivo,nos permitirá elegir el entorno de escritorio que deseemos soporte de impresión, cortafuegos, la suite Libreoffice, fuentes tipográficas añadidas o incluso habilitar el repositorio comunitario AUR.

Una vez instalado nos mostrará una visión muy pulida para el usuario final de Arch, es decir facilidad y estabilidad con un toque de madurez y belleza. Se dice que antergos es una de las vías más fáciles de instalar y disfrutar Archlinux.
Entre sus características principales están:
– Pequeño repositorio propio, ademas del de Arch y AUR
– Kernel LTS
– Pamac para administrar nuestra paquetería
– Escritorios a elección
– Comunidad en constante crecimiento.

Página Web oficial: https://antergos.com/
Descargas: https://antergos.com/try-it/

Conclusión: Hay de todo para todos, Arch se ha vuelto una importante distribución, brindando no solo estabilidad y funcionalidad esencial para los usuarios. Desde su base han nacido distribuciones que poseen peso propio dentro de linux, aportando  sistemas muy estables, funcionales y bellos. Ideales para usuarios noveles y con ganas de experimentar cosas nuevas.

Que distro basada en Arch utilizas?

by Mauro at September 04, 2018 12:22 PM

September 03, 2018

soyadmin.com

Crear USB booteable con el comando DD desde cualquier distribución

Con el comando dd podremos crear un USB booteable (live USB) de la imagen ISO que deseemos usando nuestra terminal. Al ser vía comando y terminal es utilizable en cualquier distribución que deseemos.

No es necesario instalar ningún software ni descargar librerías especiales, nada. Dd viene instalado de forma predeterminada en cualquier distro.

En este post enseñaremos a utilizar dd para grabar nuestra imagen ISO en nuestro USB o Pendrive

 

1) Identificaremos nuestro Pendrive, esto es primordial para no desdoblar la imagen en cualquier unidad.
Verificamos las unidades SIN el Pendrive conectado:

# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4

Conectamos el Pendrive y volvemos a tirar el comando

# ls /dev/sd*
/dev/sda /dev/sda2 /dev/sda4 /dev/sdb1
/dev/sda1 /dev/sda3 /dev/sdb /dev/sdb2

De esa manera identificamos que el Pendrive en nuestro caso es /dev/sdb

2) Una vez identificado nuestra unidad y descargada nuestra ISO tiramos la sentencia del comando dd
IMPORTANTE: Este procedimiento BORRA el contenido del Pendrive.

# sudo dd if=ubicacion_del_iso of=/dev/sdb

A no alarmarse, el comando dd no muestra salida o progreso del proceso, (parece que se queda tildado). Es un proceso que puede demorar 5 a 10 minutos dependiendo del tamaño del iso.

by Mauro at September 03, 2018 11:56 PM

Listar puertos abiertos en Windows Server con NetStat y findstr

Una manera fácil de ver que puertos están abiertos y que procesos los están utilizando o están asociados al mismo es usando NetStat, con este comando de “network status” podremos verificar detalladamente y con muchas opciones que esta pasando con nuestra conexión, dejándonos ver que puertos están siendo utilizados y su status.

1) Para ejecutar un netstat es necesario abrir nuestra consola de DOS y allí podremos ver que opciones nos trae netstat:

c:\>netstat -?

Muestra estadísticas del protocolo y conexiones TCP/IP actuales.

NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-v] [intervalo]

-a            Muestra todas las conexiones y puertos de escucha.
-b            Muestra el ejecutable que crea cada conexión o puerto
de escucha. En algunos casos, ejecutables muy conocidos alojan
múltiples componentes independientes, y, en algunos casos
se muestra la secuencia de componentes que crearon la conexión
o el puerto de escucha. En este caso, el nombre del ejecutable
está entre [] en la parte inferior, arriba está el componente
que llamó, y así hasta que se alcanza TCP/IP. Tenga en cuenta
que esta opción puede tomar tiempo y no se realizará
correctamente a menos de que tenga los permisos suficientes.
-e            Muestra las estadísticas Ethernet. Se puede combinar con la
opción -s.
-n            Muestra números de puertos y direcciones en formato
numérico.
-o            Muestra la Id. de proceso asociada con cada conexión.
-p proto      Muestra conexiones del protocolo especificado por "proto",
que puede ser TCP, UDP, TCPv6 o UDPv6. Si se usa con la opción
-s para mostrar estadísticas por protocolo, "proto" puede ser
TCP, UDP, TCPv6 o UDPv6.
-r            Muestra el contenido de la tabla de rutas.
-s            Muestra estadísticas por protocolo. De forma predeterminada,
se muestran para IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP y
UDPv; se puede utilizar la opción -p para especificar un
subconjunto de los valores predeterminados.
-v            Usado en conjunto con -b, mostrará la secuencia de los
componentes implicados en la creación de la conexión o puerto
de escucha para todos los ejecutables.
intervalo     Vuelve a mostrar las estadísticas seleccionadas, haciendo
pausas en el intervalo de segundos especificado entre cada
muestra. Presione Ctrl+C para detener la actualización de
estadísticas. Si se omite, netstat imprimirá la información
de configuración una vez.

 

2) Para poder ver las conexiones activas con formato numérico junto con el proceso o ID asociado al mismo, podemos hacer:

c:\>netstat -ano

Conexiones activas

Proto  Dirección local          Dirección remota        Estado           PID
TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       3888
TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       1304
TCP    0.0.0.0:443            0.0.0.0:0              LISTENING       3888
TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
TCP    0.0.0.0:17500          0.0.0.0:0              LISTENING       796
TCP    0.0.0.0:44613          0.0.0.0:0              LISTENING       3888
TCP    127.0.0.1:843          0.0.0.0:0              LISTENING       796
TCP    127.0.0.1:1065         0.0.0.0:0              LISTENING       1564
TCP    127.0.0.1:1865         127.0.0.1:1866         ESTABLISHED     1804
TCP    127.0.0.1:1866         127.0.0.1:1865         ESTABLISHED     1804
TCP    127.0.0.1:1868         0.0.0.0:0              LISTENING       1804
TCP    127.0.0.1:1870         127.0.0.1:1871         ESTABLISHED     1804
TCP    127.0.0.1:1871         127.0.0.1:1870         ESTABLISHED     1804
TCP    127.0.0.1:1873         0.0.0.0:0              LISTENING       1804
TCP    127.0.0.1:1910         127.0.0.1:1911         ESTABLISHED     796
TCP    127.0.0.1:1911         127.0.0.1:1910         ESTABLISHED     796
TCP    127.0.0.1:1915         127.0.0.1:1916         ESTABLISHED     796
TCP    127.0.0.1:1916         127.0.0.1:1915         ESTABLISHED     796
TCP    127.0.0.1:1919         127.0.0.1:1920         ESTABLISHED     2372
TCP    127.0.0.1:1920         127.0.0.1:1919         ESTABLISHED     2372
TCP    127.0.0.1:5939         0.0.0.0:0              LISTENING       1244
TCP    127.0.0.1:6342         0.0.0.0:0              LISTENING       2500
TCP    127.0.0.1:12025        0.0.0.0:0              LISTENING       1804
TCP    127.0.0.1:12110        0.0.0.0:0              LISTENING       1804
TCP    127.0.0.1:12119        0.0.0.0:0              LISTENING       1804
TCP    127.0.0.1:12143        0.0.0.0:0              LISTENING       1804
TCP    127.0.0.1:12465        0.0.0.0:0              LISTENING       1804
TCP    127.0.0.1:12563        0.0.0.0:0              LISTENING       1804
TCP    127.0.0.1:12993        0.0.0.0:0              LISTENING       1804
TCP    127.0.0.1:12995        0.0.0.0:0              LISTENING       1804
TCP    127.0.0.1:17600        0.0.0.0:0              LISTENING       796
TCP    127.0.0.1:27275        0.0.0.0:0              LISTENING       1804
TCP    192.168.80.166:139     0.0.0.0:0              LISTENING       4
TCP    192.168.80.166:1052    77.234.44.24:80        ESTABLISHED     1804
TCP    192.168.80.166:1174    192.168.80.111:1433    ESTABLISHED     2836
TCP    192.168.80.166:1175    192.168.80.111:1433    ESTABLISHED     2836
TCP    192.168.80.166:1253    108.160.172.225:443    CLOSE_WAIT      796
TCP    192.168.80.166:1666    5.45.58.147:80         CLOSE_WAIT      1804
TCP    192.168.80.166:1900    108.160.172.236:443    CLOSE_WAIT      796
TCP    192.168.80.166:1933    52.201.78.142:443      CLOSE_WAIT      796
TCP    192.168.80.166:2249    192.168.80.111:1433    ESTABLISHED     2836
TCP    192.168.80.166:2274    77.234.41.92:443       CLOSE_WAIT      2100
TCP    192.168.80.166:2342    209.126.108.61:22      ESTABLISHED     3736
TCP    192.168.80.166:2343    209.126.119.65:22      ESTABLISHED     1688
TCP    192.168.80.166:2344    209.126.119.202:22     ESTABLISHED     2792
TCP    192.168.80.166:2345    95.211.15.152:22       ESTABLISHED     2648
TCP    192.168.80.166:2346    95.211.160.52:22       ESTABLISHED     3064
TCP    192.168.80.166:2347    85.17.183.141:22       ESTABLISHED     1484
TCP    192.168.80.166:2348    95.211.178.222:22      ESTABLISHED     2616
TCP    192.168.80.166:2847    134.170.0.199:443      ESTABLISHED     3888

 

3) Ahora si queremos filtrar y que solo nos muestre los puertos abiertos, utilizaremos “findstr”

c:\>findstr -?
Busca cadenas en los archivos.FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P]
[/F:archivo]
[/C:cadena] [/G:archivo] [/D:lista de directorios] [/A:atributos de color] [/
OFF[LINE]]
[cadenas] [[unidad:][ruta]nombredearchivo[ ...]]/B        Hace coincidir los modelos si están al principio de la línea.
/E        Hace coincidir los modelos si están al final de la línea.
/L        Literalmente utiliza cadenas de búsqueda.
/R        Utiliza cadenas de búsqueda como expresiones regulares.
/S        Busca archivos que coinciden en el directorio actual y en todos
los subdirectorios.
/I        Especifica que la búsqueda no distingue mayúsculas de minúsculas.
/X        Imprime líneas que coinciden con exactitud.
/V        Sólo imprime líneas que no contienen una correspondencia.
/N        Imprime el número de la línea antes de la línea que coincide.
/M        Sólo imprime el nombre de archivo si el archivo contiene una
correspondencia.
/O        Imprime un carácter de desplazamiento antes de las líneas que
coinciden.
/P        Omite archivos con caracteres que no son imprimibles
/OFFLINE  No omite archivos con el atributo "sin conexión" establecido.
/A:attr   Especifica atributos de color con dos dígitos hexadecimales. Ver
"color /?"
/F:archivo  Lee la lista de archivos desde el archivo especificado
(/ significa consola).
/C:cadena   Utiliza una cadena especificada como una búsqueda de cadena
literal.
/G:archivo  Toma la búsqueda de archivos desde el archivo especificado
(/ significa consola).
/D:dir    Busca un signo de punto y coma de la lista delimitada de
directorios
cadenas   Texto que se debe buscar.
[unidad:][ruta]nombredearchivo
Especifica un archivo o  archivos que buscar.
Utiliza espacios para separar múltiples cadenas de búsqueda a no ser que
el argumento lleve un prefijo con /C.  Por ejemplo, 'FINDSTR "qué tal" x.y'
busca "qué" o "tal" en el archivo x.y.  'FINDSTR /C:"qué tal" x.y' busca
"qué tal" en el archivo x.y.

Expresión regular de referencia rápida:
.        Comodín: cualquier carácter
*        Repetir: cero o más ocurrencias de un carácter previo o de clase
^        Posición de línea: comienzo de la línea
$        Posición de línea: fin de línea
[clase]  Clase de carácter: cualquier carácter en la serie
[^class] Clase inversa: cualquier carácter que no esté en la serie
[x-y]    Intervalo: cualquier carácter que esté dentro del intervalo
especificado
\x       Escape: uso literal de un metacarácter x
\<xyz    Posición de palabra: principio de palabra
xyz\>    Posición de palabra: fin de palabra

Para obtener una información más completa sobre expresiones regulares de
FINDSTR referirse al Comando de referencia Command en línea.

 

4) Uniendo netstat junto con findstr tendremos la salida que necesitamos: Puertos Abiertos, junto con el ID del proceso asociado:

c:\>netstat -ano | findstr LIST
TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       3888
TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       1304
TCP    0.0.0.0:443            0.0.0.0:0              LISTENING       3888
TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
TCP    0.0.0.0:17500          0.0.0.0:0              LISTENING       796
TCP    0.0.0.0:44613          0.0.0.0:0              LISTENING       3888
TCP    127.0.0.1:843          0.0.0.0:0              LISTENING       796
TCP    127.0.0.1:1065         0.0.0.0:0              LISTENING       1564
TCP    127.0.0.1:1868         0.0.0.0:0              LISTENING       1804
TCP    127.0.0.1:1873         0.0.0.0:0              LISTENING       1804
TCP    127.0.0.1:5939         0.0.0.0:0              LISTENING       1244
TCP    127.0.0.1:6342         0.0.0.0:0              LISTENING       2500
TCP    127.0.0.1:12025        0.0.0.0:0              LISTENING       1804
TCP    127.0.0.1:12110        0.0.0.0:0              LISTENING       1804
TCP    127.0.0.1:12119        0.0.0.0:0              LISTENING       1804
TCP    127.0.0.1:12143        0.0.0.0:0              LISTENING       1804
TCP    127.0.0.1:12465        0.0.0.0:0              LISTENING       1804
TCP    127.0.0.1:12563        0.0.0.0:0              LISTENING       1804
TCP    127.0.0.1:12993        0.0.0.0:0              LISTENING       1804
TCP    127.0.0.1:12995        0.0.0.0:0              LISTENING       1804
TCP    127.0.0.1:17600        0.0.0.0:0              LISTENING       796
TCP    127.0.0.1:27275        0.0.0.0:0              LISTENING       1804
TCP    192.168.80.166:139     0.0.0.0:0              LISTENING       4

 

by Mauro at September 03, 2018 12:14 PM

September 01, 2018

soyadmin.com

Linux Mint Debian Edition 3 (LMDE 3) lanzada oficialmente.

Luego de un mes en estado Beta Linux Mint Debian Edition 3 (LMDE 3) “Cindy” ha sido oficialmente lanzada.

LMDE está basada en Debian “Stretch” Rolling Release y solamente disponible con Cinnamon 3.8.8 como escritorio.

Según lo que comenta el Lider del proyecto Mint Clem Lefebvre “LMDE tiene como objetivo principal que el equipo de Linux Mint vea cuán viable sería nuestra distribución y cuánto trabajo sería necesario si Ubuntu alguna vez desapareciera”.

Linux Mint Debian Edition no recibe versiones puntuales durante su ciclo de vida. Además de las correcciones de errores y las correcciones de seguridad, los paquetes básicos de Debian permanecen sin cambios, pero las herramientas de Mint y los componentes de escritorio se actualizan continuamente. Las funciones recientemente desarrolladas se integrarán directamente en LMDE a medida que se desplieguen para la próxima versión de Linux Mint

LMDE3 viene con 2 instaladores, además del conocido por todos cuando instalamos Linux Mint, incluye también el instalador Calamares el cual ofrece más funciones, encriptación completa del sistema y opciones avanzadas de particionamiento

Requerimientos Mínimos:
LMDE 3 está disponible en 32 y 64 bits.
1GB RAM (2GB si queremos un mejor rendimiento).
15GB de espacio en disco (20GB recomendado).
1024×768 de resolución

En la Web oficial de Linux Mint muestran como hacer un upgrade desde la versión LMDE2 la cual contará con soporte hasta el 1º de eneero del 2019, por lo tanto hay que actualizar sino queremos quedarnos con un sistema desactualizado.

¿Que pasa con los usuarios que usaban Mate en LMDE2? “Lamentablemente en Debian la versión de Mate es la 1.16 y esta no se puede actualizar en LMDE3” indica el equipo de LM y recomiendan hacer respaldo de sus archivos y realizar una reinstalación desde cero de la nueva LMDE3.

Notas de la versión: https://linuxmint.com/rel_cindy.php

by Mauro at September 01, 2018 01:42 PM

August 31, 2018

soyadmin.com

LIBRO: Análisis forense de sistemas informáticos

Título: ANÁLISIS FORENSE DE SISTEMAS INFORMÁTICOS
Autor: UOC
Páginas: 102 páginas
Tamaño:  3 MB
Fomato: PDF

 

 

 

 

Contenido:

El análisis forense es un área perteneciente al ámbito de la seguridad informática surgida a raíz del incremento de los diferentes incidentes de seguridad. En el análisis forense se realiza un análisis posterior de los incidentes de seguridad, mediante el cual se trata de reconstruir como se ha penetrado o vulnerado en el sistema. Por tanto, cuando se está realizando un análisis forense se intenta responder a las siguientes preguntas:

¿Quién ha realizado el ataque?
¿Cómo se realizo?
¿Qué vulnerabilidades se han explotado?
¿Qué hizo el intruso una vez que accedió al sistema?
El área de la ciencia forense es la que más ha evolucionado dentro de la seguridad, ya que (tal y como se muestra en las siguientes figuras) los incidentes de seguridad han incrementado en los últimos años. Además, los ataques son diferentes y por tanto hay que actualizar las técnicas de análisis en cada momento.

Fuente: openlibra.com

by Mauro at August 31, 2018 11:05 PM

Rotar Logs con log rotate en centOS y RHEL

La rotación de logs y su respaldo es algo primordial para cualquier administrador de sistemas.

Desarrollaremos a continuación uno de los métodos que uso para realizar la rotación completa de los logs en ssh.

Configuracion del logrotate:

# vi /etc/logrotate.conf
# rotar log semanalmente
weekly# mantener logs durante 4 semanas
rotate 4# rotar y crear nuevo log aunque este vacio el anterior
create# comprimir
compress

# ubicacion de paquetes para el rotado de logs
include /etc/logrotate.d

/var/log/wtmp {
monthly
create 0664 root utmp
rotate 4
}

Configuracion del script para ejecutarlo

# vi /etc/cron.weekly/logrotate
#!/bin/sh
export TMPDIR=/var/spool/logrotate/tmp
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
* Asegurarse que dentro de /var/log, existan estas 2 carpetas conman y conman.old

Esta rotación fija, deja 4 copias del log actual como respaldo del nuevo.

by Mauro at August 31, 2018 01:46 PM

Ubuntu ¿Cómo colocar la Papelera en nuestro Escritorio?

En Ubuntu 18.04 no viene activo el ícono de la Papelera en nuestro escritorio.

Esto junto a la carpeta personal o “Mis Documentos” Mi PC, unidades de red y las particiones montadas son anexos que pueden agregarse/sacarse de nuestro escritorio.

La modificación de estos iconos se realiza usando Gnome Tweaks o Retoques, el cual lo instalaremos desde nuestro Centro de Software.

Una vez instalado abrimos el programa y nos vamos a la sección Escritorio, ahi podremos marcar o desmarcar los íconos personales que deseamos aparezcan en nuestro escritorio.

Además de estas opciones vermeos que Gnome Tweaks tiene muchísimas otras opciones con la que podremos personalizar nuestro Ubuntu.

Hay una segunda manera de poner/sacar la papelera en nuestro escritorio y es usando la terminal bella terminal:
Para eliminar la papelera usaremos:

gsettings set org.gnome.nautilus.desktop trash-icon-visible false

Si queremos que aparezca colocamos:

gsettings set org.gnome.nautilus.desktop trash-icon-visible true

by Mauro at August 31, 2018 12:22 PM

August 30, 2018

soyadmin.com

Nmap, Netstat y lsof para detectar puertos abiertos o “bajo escucha” en centOS y RHEL

Lo primero que deberemos hacer es instalar el NMAP el cual es un mapeador de redes.

# yum install nmap

Con Nmap podemos verificar que puertos están abiertos, utilizados (escuchados) de manera confiable dado que es un escaner de puertos y lo realiza verificándolos sin pasar por las aplicaciones que los usan, sino que lo hace directamente sobre el mapa de puertos. Esto último garantiza que, si algún atacante se disfraza como aplicación que utiliza un puerto específico, no burle al netstat haciéndose ver como aplicación válida.

 

Una vez instalado el nmap podemos empezar a “jugar” con sus posibles comandos.

# nmap -sT -O localhost

Esto nos devuelve algo parecido a esto:
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2013-10-01 15:45 CEST
Interesting ports on localhost (127.0.0.1):
Not shown: 1664 closed portsPORT     STATE SERVICE
22/tcp   open  ssh
25/tcp   open  smtp
26/tcp   open  unknown
80/tcp   open  http
110/tcp  open  pop3
143/tcp  open  imap
443/tcp  open  https
465/tcp  open  smtps
993/tcp  open  imaps
995/tcp  open  pop3sNo exact OS matches for host (If you know what OS is running on it, see http://www.insecure.org/cgi-bin/nmap-submit.cgi).Uptime 21.313 days (since Tue Sep 10 08:14:51 2013)
Nmap finished: 1 IP address (1 host up) scanned in 9.972 seconds

En esta respuesta vemos un puerto abierto como unknown, si bien sabemos que es el puerto alternativo al SMTP, lo investigaremos como si fuera un posible puerto abierto en duda.

# cat /etc/services | grep 26

Esta búsqueda verificamos que realmente el puerto 26 no esta asignado por defecto a ningún servicio. Como medida extra utilizaremos el netstat el cual nos devolverá la info que queremos

# netstat -anp | grep 26
tcp        0      0 0.0.0.0:26            0.0.0.0:*        TIME_WAIT   -

Aquí vemos que existe una conexión hacia el puerto 26 de nuestro server lo cual nos acebera que dicho puerto NO es usado por un atacante y es validado mediante una conexión real.

 

Por último con lsof veremos a que servicio esta asociado el puerto 26

# lsof -i | grep 26

exim       4368        mailnull    5u  IPv4 1404540465      0t0  TCP *:26 (LISTEN)

Acá nos indica que el Exim (servicio de correos) es el servicio utilizado en el puerto 26, con lo cual nos podemos quedar tranquilos y felices!

Estas herramientas pueden revelar mucha información sobre el estado de los servicios ejecutándose en la máquina. Son flexibles y pueden proporcionar gran cantidad de información sobre los servicios de red y la configuración de estos últimos.

Para más información acerca de Nmap, Netstat y lsof podemos usar el comando man sobre ellos.

by Mauro at August 30, 2018 08:37 PM

¿Cómo activar la Compresión HTTP (Mod Deflate) y el Cacheo del Navegador (Leverage browser caching) en Plesk Linux?

1) COMPRESIÓN: Mod Deflate, el encargado de la compresión viene instalado por default en nuestro server plesk. Muchas veces esto viene desactivado en nuestro archivo de configuración httpd.conf
a- Para activarlo tenemos que ir a nuestro archivo de configuración de apache:

# vi /etc/httpd/conf/httpd.conf

b- Buscamos y descomentamos (#) la linea:

LoadModule deflate_module modules/mod_deflate.so

c- El paso siguiente es crear el archivo de configuración del módulo:

# vi /etc/httpd/conf.d/deflate.conf

Y anexaremos esta configuración:

SetOutputFilter DEFLATE

DeflateCompressionLevel 9
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE application/x-httpd-eruby
AddOutputFilterByType DEFLATE image/svg+xml

 

2) CACHEO Activamos y configuramos el cacheo:

a- Creamos el archivo de configuración para el cacheo:

# vi /etc/httpd/conf.d/expires.conf

Y anexamos esto al archivo:

ExpiresActive On
ExpiresByType image/jpg “access plus 1 year”
ExpiresByType image/jpeg “access plus 1 year”
ExpiresByType image/gif “access plus 1 year”
ExpiresByType image/png “access plus 1 year”
ExpiresByType text/css “access plus 1 month”
ExpiresByType application/pdf “access plus 1 month”
ExpiresByType text/x-javascript “access plus 1 month”
ExpiresByType text/javascript “access plus 1 month”
ExpiresByType application/x-shockwave-flash “access plus 1 month”
ExpiresByType image/x-icon “access plus 1 year”
ExpiresDefault “access plus 2 days”

 

Por último reiniciamos nuestro Apache y con eso tendremos activo ambas caracterísiticas por default para todo nuestro servidor.

by Mauro at August 30, 2018 02:42 PM

Reparar y Optimizar bases de datos Mysql con Mysqlcheck

Algunas veces existen problemas con las bases de datos de los sitios, y estas pueden llegar a quedar corruptas o con una tabla “rota”. Muchas veces esto se da por algun problema puntual durante la carga o durante el proceso de modificación de la tabla en cuestión. Esto puede influir en que todo el servicio de base de datos o mysql colapse, dado que hay un mal funcionamiento del mismo.

Nuestro sitio puede presentar errores de mysql donde se ve claramente que el problema es una tabla rota o crasheada.
“Table ‘./adminc/jos_session’ is marked as crashed and should be repaired”

Aqui vemos que la tabla jos_session quedo corrupta y marcada como dañada.

 

Mysqkchek optimiza y repara bases de datos corruptas para 1 base de datos o bien correr el comando para todas las bases de datos del servidor.. Los comandos más utilizados, y los que normalmente solucionan cualquier problema son estos:

# mysqlcheck -o --all-databases (optimiza todas las BD del server)
# mysqlcheck --all-databases -r (chequea y repara todas las BD del server)
# mysqlcheck -r nomb_base (repara solo la base de datos que coloquemos)
# mysqlcheck -o nomb_base (optimiza solo la base de datos que coloquemos)

by Mauro at August 30, 2018 01:00 PM

August 29, 2018

soyadmin.com

LIBRO: Capacitación Digital Básica I

Título: CAPACITACIÓN DIGITAL BÁSICA I
Autor: UOC
Páginas: 318 páginas
Tamaño:  22 MB
Fomato: PDF

 

 

 

Contenido:

¿Conoces algunos dispositivos portátiles? Seguro que sí. Pero, ¿qué dispositivos se conocen por este nombre?, ¿qué utilidad tienen?, ¿para qué te pueden servir? El tema 2 de este módulo de tecnología digital te ayudará a dar respuesta a estas preguntas.

¿Te gustaría poder personalizar la configuración del sistema operativo que utilizas? ¿Cómo puedes hacerlo? En el tema 3, sobre administración y personalización del sistema operativo, podrás encontrar estrategias que te permitirán llevarlo a cabo.

También descubrirás en este tema cómo instalar y desinstalar algunos programas en tu ordenador, además de poder localizar la versión de un programa que tengamos instalado, y cómo funciona la Ayuda de este programa. Cuando trabajamos con el ordenador, estamos trabajando con información. Esta información (archivos, páginas web…) debe estar bien organizada para que llegue a ser localizable y gestionable.

En relación al tema Redes de ordenadores y sus conexiones, en el tema 5 podrás abordar las siguientes cuestiones:

¿Cómo se instala un dispositivo?

¿Qué dispositivos tienes instalados en tu ordenador?

¿Cómo puedo utilizar mi red local para conectarme a otros equipos?

¿Qué debería conocer y qué consejos debería seguir?

Fuente: openlibra.com

by Mauro at August 29, 2018 09:51 PM

Instalación de Joomla no termina o vuelve al paso anterior

Este es un problema muy común, durante la instalación de Joomla, versiones 2.5 y sobre todo en 3.x.
El comportamiento era que durante el proceso de instalación de Joomla pasando del punto 3, la instalación esta nunca terminaba. En algunos casos quedaba infinitamente girando el logo de Joomla y en otros casos directamente regresaba al punto anterior.

Investigando un poco, en muchos lugares recomendaban duplicar o triplicar el tiempo de ejecución, max_excution_time dentro del PHP.INI, lo cual en mi caso no funcionaba.

La solución que funcionó en MI caso es:
Nos descargamos 2 archivos de nuestro instalador:

/instalation/sql/mysql/joomla.sql
/instalation/sql/mysql/sample_data.sql

 

Y luego los editamos (yo simplemente use el notepad)  y reemplazamos:

ENGINE = InnoDB
Por
ENGINE = MyISAM

 

Asegurarse de reemplazar todas las entradas, dado que hay un montón.

Supuestamente MyISAM es más compatible con estas versiones de joomla

by Mauro at August 29, 2018 02:32 PM

Diferencias entre los módulos de procesamiento de Apache: Prefork, Worker y Event

Apache MPM (Multi Procesing Module) maneja y procesa las solicitudes entrantes, Prefork, Worker y Event son los distintos módulos de procesamiento que podemos elegir a la hora de compilar nuestro Apache, es decir que son los diferentes tipos de procesamiento.

En este artículo detallaré las características de cada uno de los posibles MPM (Prefork, Worker y Event), esto con el fin de que podamos adecuar la versión según las necesidades de nuestro servidor.

1) MPM Prefork
Es el módulo por default que trae Apache al momento de la instalación, tiene la particularidad de que crea diferentes procesos independientes o hijos para procesar las peticiones que ingresan a nuestro servidor. Se denomina forking, por eso su nombre.
Un solo proceso de control crea múltiples subprocesos hijo, como si fuera en rama o tenedor. Se encarga de que siempre haya varios procesos abiertos libres que puedan usarse al recibir varias peticiones.

Esta es la configuración default de MPM Prefork

StartServers 10
MinSpareServers 5
MaxSpareServers 25
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4200

Dónde:
StartServers: Es el número de procesos hijo que se iniciarán.
MinSpareServers: Es el número mínimo de procesos que el servidor siempre tendrá disponibles o libres.
MaxSpareServers: Es el número máximo de procesos que el servidor siempre tendrá disponibles o libres.
MaxClients: Es el número máximo de procesos que atenderá el servidor.
MaxRequestsPerChild: Es el número máximo de procesos hijo que puede tener cada uno de los StartServers.

Es el módulo más compatible y estable, aunque tiene como contra que consume un alto valor de RAM y CPU ya que al tener tantos procesos hijo y en “reserva” conlleva un gasto necesarios de recursos.

 

2) MPM Worker
Utiliza subprocesos hijo al igual que el MPM Prefork y a su vez estos procesos hijo crean hilos de ejecución, también llamados threads que se encargan de procesar peticiones, organizándose y delegando peticiones a otros procesos que ya están ejecutándose. Esto le permite servir un gran número de peticiones a cada proceso hijo.
Un solo proceso de control crea múltiples procesos hijo, a su vez cada proceso hijo crea threads o hilos de procesamiento controlados por la directiva ThreadsPerChild. Cada vez que ingresa una petición es asignada a un thread que la procesa y ejecuta.
En lugar de crear múltiples procesos hijo como lo hace prefork, worker crea y deja en espera múltiples hilos bajo cada hijo, de esa manera se asegura tener la capacidad de atender múltiples peticiones.

Esta es la configuración default de MPM Worker:

StartServers 5
MaxClients 350
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0

Donde:
StartServers: Es el número de procesos hijo que se iniciarán.
MaxClients: Es el número máximo de procesos que atenderá el servidor.
MinSpareThreads: Es el número mínimo de subprocesos que el servidor siempre tendrá disponibles o libres.
MaxSpareThreads: Es el número máximo de subprocesos que el servidor siempre tendrá disponibles o libres.
ThreadsPerChild: Es el número de threads por hijo que se ejecutan simultaneamente.
MaxRequestsPerChild: Es el número máximo de procesos hijo que puede tener cada uno de los StartServers.

Mejora considerablemente el uso de CPU y RAM, dado que es menor la cantidad de procesos hijo que se emplean, dando de esta manera una mejor performance al procesamiento de peticiones. El problema que tiene es que si un subproceso hijo queda inutilizado por algún problema se cancelan multiples hilos de procesamiento, haciendo que worker sea un poco inestable o con ineficiencia a la hora de resolver un problema.

 

3) MPM Event
Es una mejora de mpm worker, optimizado para trabajar con un número de peticiones elevadas. Lo que hace es servir más peticiones simultáneas con la ayuda de Keep Alive y permite que un usuario mantenga el hilo en ejecución para así enviar múltiples peticiones sin necesidad de abrir nuevas conexiones tcp.
En sí el funcionamiento es igual al de MPM Worker con esta mejora, pero los pro y los contras siguen siento también igual.

Esta es la configuración default de MPM Event:

MinSpareThreads 75
MaxSpareThreads 150
ThreadsPerChild 75
MaxRequestsPerChild 21000

 

Conclusión ¿Como elegimos nuestro MPM?
Recursos: Si tenemos recursos de sobra en el servidor, prefork es nuestra elección que nos serviría perfectamente. Ahora si los recursos del servidor son escasos deberíamos tirarnos por Worker o Event que hacen un mejor aprovechamiento de la RAM y CPU.
Contenido alojado en el servidor: Si tenemos contenido estático mayormente, lo mejor sería utilizar Worker o Event. Por otro lado si tenemos contenido dinámico deberemos evaluar otros factores a la hora de elegir el MPM aunque siempre se tenga a Prefork como preferido en este sentido.
Tráfico o visitas: Si el servidor tendrá un alto tráfico o numerosas visitas, no deberíamos usar Prefork debido a los recursos que consume.

by Mauro at August 29, 2018 11:37 AM

Sobre bits

Cómo utilizar esxcli desde PowerCLI

Si frecuentemente administras algún tipo de infraestructura vSphere lo más probable es que hayas tenido que tirar en más de una ocasión de esxcli para realizar configuraciones avanzadas, automatizaciones o troubleshooting de algún tipo. En la entrada de hoy veremos cómo utilizar esxcli desde PowerCLI y así integrarlo en nuestros scripts o en nuestras sesiones con la terminal.

Invocando esxcli desde PowerCLI

Lo primero que deberemos hacer para empezar a utilizar la funcionalidad de esxcli desde PowerCLI es exponer su funcionalidad a nuestra sesión de terminal. Para ello nos valdremos del cmdlet Get-EsxCli:

$esxcli = Get-EsxCli -V2 -VMHost 192.168.100.131

Como podemos ver hemos pasado el resultado del cmdlet a una variable. Esto lo hacemos para, en las futuras invocaciones de esxcli, valernos de ella para utilizar su funcionalidad.

Repasemos un poco la línea:

  • -V2: Especificamos que utilice la versión 2 del cmdlet, que nos permite utilizar los argumentos de los métodos utilizando su nombre en vez de utilizar su posición. Por defecto se utiliza la versión 1, pero va a ser eliminada en futuras releases, por lo que mejor acostumbrarse a utilizar la 2.
  • -VMHost: El host contra el que utilizaremos los comandos de esxcli.

Cómo utilizar esxcli desde PowerCLI

Una vez tenemos expuesta la funcionalidad de esxcli a nuestra sesión de PowerCLI toca empezar a bregar con ella. Dado que tenemos la sesión en nuestra variable $esxcli podemos mostrar los namespaces de esxcli que tenemos disponibles:

esxcli desde powercliComo podemos ver son los mismos que tenemos disponibles desde la propia consola de esxcli. Si queremos ver los namespace anidados iremos profundizando en el objeto como lo haríamos con las propiedades de cualquier otro:

esxcli desde powercli namespaces anidadosAquí ya podemos ver algo nuevo, en la parte inferior vemos un apartado con los métodos de este namespace, en este caso Help. Pero aún podemos profundizar más en network:

esxcli desde powercli namespaces anidados2Ya aquí podemos probar a invocar uno de los nuevos métodos que han aparecido añadiendo su nombre y .Invoke() al final:

esxcli desde powercli métodosEn este caso es muy sencillo puesto que el método list no requiere de parámetros. Si quisiéramos utilizar un método que requiriera parámetros lo primero que deberíamos hacer sería ver los parámetros disponibles. Vamos a consultar los de $esxcli.network.diag.ping añadiendo .Help() al final:

esxcli desde powercli help
Como podemos ver lo primero que nos dice es qué hace el método, que en este caso es enviar una petición de ping desde el nodo al que estamos conectados (acción muy útil si queremos hacer troubleshooting de red). En nuestro caso nos interesa indicar a que destino enviamos los paquetes, por lo que utilizaremos el parámetro host, y diremos que queremos enviar 5 paquetes con el parámetro count:

esxcli desde powercli pingCabe añadir que aquí muestro directamente la propiedad Summary del objeto devuelto para ver un resumen de lo que ha pasado en la petición de ping. El resumen de la captura es que los 5 pings transmitidos han sido recibidos, por lo que se podría determinar que no existen problemas de conectividad.

Conclusión

Si bien muchas acciones de esxcli se pueden realizar directamente desde PowerCLI existen pequeñas joyas de la veterana shell que nos pueden servir en más de un escenario. Invocar esxcli desde PowerCLI nos va a permitir incluir esas funcionalidades en nuestros scripts sin tener que hacer llamadas a otras shells.

La entrada Cómo utilizar esxcli desde PowerCLI aparece primero en Sobrebits.

by Marc Meseguer at August 29, 2018 08:00 AM

August 28, 2018

soyadmin.com

Guia y uso del comando YUM en Linux (CentOS, Red Hat y Fedora)

YUM es una herramienta que nos permite instalar, actualizar y remover paquetes junto con sus dependencias en distribuciones Linux basados en RPM (CentOS, Red Hat y Fedora). El comando YUM (Yellow dog Updater Modified) fue desarrollado por Seth Vidal y un grupo de programadores voluntarios.

Detallaremos a continuación los principales usos del comando y su respectiva descripción.
/var/log/yum.log: Logs de YUM.
/etc/yum.conf: Archivo de configuración de YUM.
/etc/yum.repos.d: Directorios donde se alojan los repositorios utilizados en el servidor.
yum install paquete: Instalamos la última versión del paquete seleccionado, solicitando confirmación de acción.
yum -y install paquete: Instalamos la última versión del paquete seleccionado, el -y lo hace sin solicitar confirmación.
yum -y install paquete1 paquete2: Instalamos los paquetes que deseamos uno detras del otro.
yum -y update: Actualizamos todos los paquetes del sistema.
yum -y update –exclude=prueba: Actualiza todos los paquetes del sistema menos “Prueba”
yum -y update paquete: Actualiza el paquete que indicamos solamente.
yum -y update paquete1 paquete2: Actualiza solamente los paquetes que vallamos indicando.
yum -y upgrade: Actualiza todos los paquetes incluidos aquellos marcados como obsoletos.
yum check-update: Lista los paquetes disponibles para actualizar.
yum info paquete: Nos tira la información del paquete seleccionado.
yum list: Lista todos los paquetes del sistema.
yum list installed: Lista los paquetes  instalados en el Sistema.
yum list updates: Lista todos los paquetes disponibles para ser actualizados.
yum list available: Lista todos los paquetes listos para ser instalados.
yum list | grep paquete: Lista el paquete disponible o ya instalado en el Sistema.
yum remove paquete: Elimina el paquete del Sistema.
yum search paquete: Hace una búsqueda del paquete en el Sistema.
yum clean all:  Permite limpiar paquetes y archivos de encabezados.
yum repolist: Lista todos los repositorios de YUM.

Por ejemplo, para actualizar correctamente nuestro CentOS, usaremos estos 3 comandos:

# yum clean all
# yum update
# yum upgrade

by Mauro at August 28, 2018 09:08 PM

Linux limpio y optimizado con BleachBit

BleachBit es un software que nos permitirá limpiar y eliminar la basura de nuestro sistema Linux, liberando así espacio que en algunos casos puede ser muy importante.

BleachBit ha sacado recientemente su versión 2, funciona de una manera muy sencilla e intuitiva. Este programa borra muchísimos ficheros temporales y que solo están ahi ocupando espacio en nuestra pc. Esto es útil para mantener un sistema limpio y en caso de tener una partición o disco pequeño estar siempre con espacio disponible, o simplemente si te gusta que no haya cosas sueltas y solo ocupando lugar, puedas borrar esos archivos sin problemas.
BleachBit nos ofrece un control, el cual nos permitirá iniciar con privilegios de Root o Super user.

BleachBit provee un modo de escaneo el cual nos permitirá simplemente tener una vista previa de lo que borrará, devolvíendonos un reporte de lo que realizaría y borraría.
A la izquierda del software poseemos un listado con los programas de nuestra PC y sus secciones que generan archivos temporales, haciendo click en ellos nos mostrará a la derecha la descrición de lo que guarda y que consecuencias puede traer borrar esos archivos.

Como se instala:

Debian, Ubuntu y derivados:

# sudo apt-get install bleachbit

 

Arch Linux y derivados:

# sudo pacman -S bleachbit

 

OpenSUSE

# sudo zypper install bleachbit

 

CentOS, RHEL y Fedora

# sudo yum install bleachbit

 

by Mauro at August 28, 2018 01:06 PM

August 27, 2018

soyadmin.com

¿Cómo eliminar un repositorio PPA desde nuestra Consola?

Siempre que trabajamos con software en nuestras distros quedan paquetes y repositorios PPA’s sueltos, sobre todo si elegimos desinstalar cierta aplicación o programa.
Aquí explicábamos como eliminar paquetes obsoletos o en desuso

Existe una manera muy sencilla de eliminar repositorios PPA
IMPORTANTE: siempre debemos SABER que se elimina y porque, si NO estamos seguros lo mejor es NO TOCAR

1) Entramos y listamos los repositorios instalados

# cd /etc/apt/sources.list.d/
# ls

 

2) Vemos cual es el PPA que queremos eliminar y procedemos

# rm nombre_del_ppa

Con eso estaríamos, forma fácil y sencilla de eliminar un Repositorio PPA.

by Mauro at August 27, 2018 08:46 PM

RooTeando

Tomando Un Café 40: Nuevo podcast, Mi band 3 y herramientas de formadores.

En este audio hablaré de varios temas, el primero de ellos es anunciar mi nuevo podcast @ARMparaTODOS sobre alternativas a la Raspberry, mi experiencia de uso con mi nueva Xiaomi Mi band 3  y un par de herramienta para formadores:

OpenKM: Web https://www.openkm.com/es/
Veyon: Web https://veyon.io/


Música: David Amber-David Amber and Friends Vol2-Set Me On Fire  http://freemusicarchive.org

Si quieres apoyarme  de forma económica para mis podcast ...

August 27, 2018 04:22 PM

Nuevo proyecto, nuevo podcast ARM para TODOS

Quiero presentar mi podcast ARM para TODOS, donde hablaré sobre alternativas a la Raspberry, sin descartarlo. El objetivo de este podcast es dar a conocer ese "universos alternativo" que existe fuera de la Raspberry, y dar a conocer otras marcas de placas de ARM como; Odroid, NanoPi, Pine64, Libre Computer, Banana Pi, Orange Pi y muchas mas.

Mi intención es crear un podcast de corta duración, aunque dependerá del tema a tratar, y con una ...

August 27, 2018 04:08 PM