Planeta Sysadmin

de sysadmins para sysadmins

August 27, 2020

debianhackers.net

exit 0;

Recuerdo bien el día que decidí cerrar Debianeando, con la nostalgia de quien abandona su primer ciber retoño pero con la
ilusión de seguir escribiendo aquí, para un público muy parecido pero acompañado de tres titanes. Ahora, ocho años y medio después me enfrento a la misma sensación, aunque esta vez sin el subidón de estrenar proyecto. Me voy con la tranquilidad de saber que a DebianHackers le queda mucha vida, de que Dabo y Diego seguirán manejando la nave con pulso firme, como en los últimos 10 años.

El azar me va a permitir despedirme de vosotros con mi centésima entrada, un número redondo para poner punto final a mi etapa en DebianHackers. Y para hacerlo con un snapshot de los 0100 tarados que compartimos bits todos estos años.

Dabo, Diego, Euge, ha sido un auténtico placer. Gentes del ciberespacio, de corazón, gracias.

Sed buenos y happy hacking!

by debish at August 27, 2020 06:09 PM

August 26, 2020

debianhackers.net

Afinando el brillo de tu portátil

Merodeando por reddit, me he topado con este post sobre cómo ajustar el brillo del portátil de forma más natural.

Según comenta el autor, de acuerdo a la ley de Weber-Fechner nuestros ojos detectan el brillo de acuerdo a una función logarítmica. Por eso propone ajustar el brillo en intervalos logarítmicos en lugar de lineales:

Instead of reducing/increasing brightness linearly in steps of ±8, I reduce/increase by factor 1.4. That gives log(100,1.4) = 13 steps:

steps01233456789101112
now01235710142028405679100
before081624324048566472808896100

Algo que podéis conseguir enlazando vuestras teclas de brillo a estos comandos:

# Para subir el brillo
light -S "$(light -G | awk '{ print int(($1 + .72) * 1.4) }')"

# Para bajar el brillo
light -S "$(light -G | awk '{ print int($1 / 1.4) }')"

Algunas aclaraciones:

  1. Utiliza 0.72 porque es aproximadamente 1/1.4 (el factor en el cuál queremos aumentar/disminuir el brillo).
  2. Suma 0.72 para evitar que la pantalla quede completamente en negro cuando disminuimos demasiado el brillo.

Happy & comfortable hacking!

by debish at August 26, 2020 05:11 PM

August 25, 2020

debianhackers.net

Dwm patching

En una entrada anterior os hablé de dwm y las bondades de este pequeño gestor de ventanas. También mencioné por encima cómo parchearlo para adaptarlo un poco mejor a nuestras preferencias. Hoy voy a compartir con vosotros algunos de los parches que utilizo en mi configuración, son pocos y sencillos:

1. Pertag

Fundamental. Este parche permite tener un layout distinto en cada tag. Si recordáis cómo funciona dwm, cada ventana puede asociarse a uno o varios tags (algo así como escritorios virtuales) entre los cuales nos podemos mover mediante atajos de teclado. Además, dwm incluye tres layouts distintos: floating (las clásicas ventanas flotantes), tiling (las ventanas se organizan automáticamente para ocupar todo el espacio de pantalla disponible) y monocle (una ventana maximizada tiene el foco y oculta el resto de ventanas bajo el mismo tag, que son accesibles mediante atajos de teclado). Por defecto, dwm aplica el mismo layout en todos los tags; con este parche podemos establecer un layout independiente para cada tag (por ejemplo, si utilizas un tag dedicado para edición fotográfica probablemente prefieras tener un layout “monocle” antes que “tiling”; en un tag para terminales es más útil el layout “tiling”, etc).

2. Focusonnetactive

De nuevo, un imprescindible. Desde el punto de vista técnico: por defecto dwm establece un bit de urgencia (urgency bit) en
respuesta a un mensaje de tipo _NET_ACTIVE_WINDOW por parte de un cliente. Con este parche conseguimos que en lugar de establecer el bit de urgencia, se active la ventana en cuestión. En lenguaje terrenal, esto quiere decir que en lugar de mostrarse una alerta visual en el tag que contiene la ventana (normalmente cambia de color), dwm directamente cambiará el foco y activará esa ventana. Por ejemplo, pongamos que estoy navegando por mi feed con newsboat y presiono “o” para abrir el artículo en el navegador. Sin el parche lo que ocurriría es que mi tag del navegador cambiaría de color, pero yo seguiría viendo mi terminal con newsbeuter. Con el parche, dwm directamente me cambia a la ventana del navegador en cuanto presiono “o”. Tal que así:

3. Colorbar

Tanto este parche como el próximo son algo más prescindibles y responden fundamentalmente a criterios estéticos. Lo que hace colorbar es permitir establecer colores en el tagbar (la porción de la barra a la izquierda donde aparecen los tags), infobar (la parte central, que contiene el nombre de la ventana) y statusbar (parte derecha, donde podemos mostrar lo que queramos via xsetroot) de manera independiente. Con un par de imágenes se entiende mejor:

a) Sin colorbar

(El tagbar y infobar tienen el mismo color de resaltado; el color por defecto del statusbar es el mismo que el del tagbar no seleccionado).

b) Con colorbar

Este parche modifica el config.h, así que mucho cuidado al introducirlo, recordad hacer copia de vuestro config.h antes.

Para definir los colores:

static const char *colors[][3]      = {
    /*               fg         bg         border   */
    [SchemeNorm] = { col_gray, col_bar, col_gray },
    [SchemeSel]  = { col_white, col_gray,  col_blue4  },
    [SchemeStatus]  = { col_white, col_bar,  "#000000"  }, // Statusbar right {text,background,not used but cannot be empty}
    [SchemeTagsSel]  = { col_blue4, col_bar,  "#000000"  }, // Tagbar left selected {text,background,not used but cannot be empty}
    [SchemeTagsNorm]  = { col_gray4, col_bar,  "#000000"  }, // Tagbar left unselected {text,background,not used but cannot be empty}
    [SchemeInfoSel]  = { col_blue4, col_bar3,  "#000000"  }, // infobar middle selected {text,background,not used but cannot be empty}
    [SchemeInfoNorm]  = { col_bar, col_bar,  "#000000"  }, // infobar middle unselected {text,background,not used but cannot be empty}
};

4. Uselessgap

Como su propio nombre indica, este parche permite introducir “useless gaps” (“espacios inútiles”) entre ventanas. Aunque también hace otra cosa (que es la razón por la que lo utilizo), que es impedir que dwm dibuje un marco coloreado alrededor de la ventana cuando está maximizada. Esto es muy útil en modo tiling para distinguir más fácilmente qué ventana tiene el foco, pero cuando solo hay una ventana maximizada no tiene mucho sentido.

La configuración es muy sencilla:

static const unsigned int gappx = 0;        /* gap pixel between windows */

Si configuráis el tamaño de gap en 0 no habrá espacio entre las ventanas y os habréis librado del molesto borde.

Para terminar, os dejo aquí mi config.h actualizado, por si os animáis a probar dwm:

/* See LICENSE file for copyright and license details. */

/* appearance */
static const unsigned int borderpx  = 2;        /* border pixel of windows */
static const unsigned int snap      = 32;       /* snap pixel */
static const int showbar            = 1;        /* 0 means no bar */
static const int topbar             = 1;        /* 0 means bottom bar */
static const char *fonts[]          = { "Cantarell:size=13", "Font Awesome:size=12" };
static const char dmenufont[]       = "JetBrains Mono Medium:size=12";
static const char col_bar[]       = "#2F343F";  /* Dark grey matching arc theme */
static const char col_bar_rev[]       = "#414857";  /* Slightly lighter grey for infobar middle bg */
static const char col_bar_name[]       = "#7C818C";  /* Grey for window names  */
static const char col_bar_name2[]       = "#ACB6C3";  /* Grey for window names  */
static const char col_blue[]       = "#5294E2"; /* Arc blue */
static const char col_purple[]        = "#DC8ADD";
static const char col_white[]        = "#F6F5F4";
static const char col_red[]        = "#CC575D";
static const char col_yellow[]        = "#B58900";
static const char col_gray[]        = "#5E5C64";
static const char col_gray2[]       = "#77767B";
static const char col_gray3[]       = "#9A9996";
static const char col_gray4[]       = "#C0BFBC";
static const char col_gray5[]       = "#DEDDDA";

static const char *colors[][3]      = {
	/*               fg         bg         border   */
	[SchemeNorm] = { col_gray, col_bar, col_bar_name },
	[SchemeSel]  = { col_white, col_gray,  col_blue },
	[SchemeStatus]  = { col_white, col_bar,  "#000000" }, // Statusbar right {text,background,not used but cannot be empty}
	[SchemeTagsSel]  = { col_blue, col_bar,  "#000000" }, // Tagbar left selected {text,background,not used but cannot be empty}
    [SchemeTagsNorm]  = { col_bar_name, col_bar,  "#000000" }, // Tagbar left unselected {text,background,not used but cannot be empty}
    [SchemeInfoSel]  = { col_bar_name2, col_bar_rev,  "#000000" }, // infobar middle selected {text,background,not used but cannot be empty}
    [SchemeInfoNorm]  = { col_bar, col_bar,  "#000000" }, // infobar middle unselected {text,background,not used but cannot be empty}
};

/* Gaps */
static const unsigned int gappx = 8;        /* gap pixel between windows */

/* tagging */
/* static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; */
static const char *tags[] = { "", "", "", "", "", "", "", "", "" };

static const Rule rules[] = {
	/* xprop(1):
	 *	WM_CLASS(STRING) = instance, class
	 *	WM_NAME(STRING) = title
	 */
	/* class      instance    title       tags mask     isfloating   monitor */
	{ "Gimp",     NULL,       NULL,       0,            1,           -1 },
	{ "Firefox",  NULL,       NULL,       1 << 1,       0,           -1 },
	{ "Keepassx", "^keepassx$", NULL, 0, 1, -1},
	{ "Lxrandr", "^lxrandr", NULL, 0, 1, -1},
};

/* layout(s) */
static const float mfact     = 0.50; /* factor of master area size [0.05..0.95] */
static const int nmaster     = 1;    /* number of clients in master area */
static const int resizehints = 0;    /* 1 means respect size hints in tiled resizals; 0 avoids empty space at right side of terminals */

static const Layout layouts[] = {
	/* symbol     arrange function */
	{ "",      tile },    /* first entry is default */
	{ "",      NULL },    /* no layout function means floating behavior */
	{ "[M]",      monocle },
};

/* key definitions */
#define MODKEY Mod1Mask
#define TAGKEYS(KEY,TAG) \
	{ MODKEY,                       KEY,      view,           {.ui = 1 << TAG} }, \
	{ MODKEY|ControlMask,           KEY,      toggleview,     {.ui = 1 << TAG} }, \
	{ MODKEY|ShiftMask,             KEY,      tag,            {.ui = 1 << TAG} }, \
	{ MODKEY|ControlMask|ShiftMask, KEY,      toggletag,      {.ui = 1 << TAG} },

/* helper for spawning shell commands in the pre dwm-5.0 fashion */
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }

#include <X11/XF86keysym.h>

/* commands */
static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_bar, "-nf", col_bar_name2, "-sb", col_yellow, "-sf", col_bar, NULL };
static const char *clipmenucmd[] = { "clipmenu", "-fn", dmenufont, "-nb", col_bar, "-nf", col_bar_name2, "-sb", col_purple, "-sf", col_bar, NULL };
static const char *termcmd[]  = { "st", NULL };
static const char *roficmd[] = { "rofi", "-show", "window", NULL };
static const char *browsercmd[] = { "firefox", NULL };
static const char *officecmd[] = { "libreoffice", NULL };
static const char *editorcmd[] = { "mousepad", NULL };
static const char *filecmd[] = { "nemo","/home/user", NULL };
static const char *brightdowncmd[] = { "xbacklight","-dec", "5", NULL };
static const char *brightupcmd[] = { "xbacklight","-inc", "5", NULL };
static const char *mutecmd[] = { "volmute", NULL };
static const char *volupcmd[] = { "volup", NULL };
static const char *voldowncmd[] = { "voldown", NULL };
static const char *lockcmd[] = { "slock", NULL };
static const char *capturecmd[] = { "scrot","-s", NULL };

static Key keys[] = {
	/* modifier                     key        function        argument */
	{ MODKEY,	XK_p,	spawn,	{.v = dmenucmd } },
	{ MODKEY,	XK_F2,	spawn,	{.v = dmenucmd } },
	{ MODKEY,	XK_o,	spawn,	{.v = clipmenucmd } },
	{ MODKEY,	XK_Return,	spawn,	{.v = termcmd } },
	{ MODKEY,	XK_b,	togglebar,	{0} },
	{ MODKEY,	XK_Right, focusstack,	{.i = +1 } },
	{ MODKEY,	XK_Left, focusstack,	{.i = -1 } },
	{ MODKEY,	XK_i, incnmaster,	{.i = +1 } },
	{ MODKEY,	XK_d, incnmaster,	{.i = -1 } },
	{ MODKEY,	XK_h, setmfact,	{.f = -0.05} },
	{ MODKEY,	XK_l, setmfact,	{.f = +0.05} },
	{ MODKEY,	XK_space, zoom,	{0} },
	{ MODKEY,	XK_Tab, view,	{0} },
	{ MODKEY,	XK_q, killclient,	{0} },
	{ MODKEY,	XK_t, setlayout,	{.v = &layouts[0]} },
	{ MODKEY,	XK_f, setlayout,	{.v = &layouts[1]} },
	{ MODKEY,	XK_m, setlayout,	{.v = &layouts[2]} },
	{ MODKEY,	XK_masculine, spawn,	{.v = roficmd } },
	{ MODKEY,	XK_Escape, spawn,	{.v = roficmd } },
	{ MODKEY|ControlMask,	XK_n, spawn,	{.v = browsercmd } },
	{ MODKEY|ControlMask,	XK_o, spawn,	{.v = officecmd } },
	{ MODKEY|ControlMask,	XK_e, spawn,	{.v = editorcmd } },
	{ MODKEY|ControlMask,	XK_h, spawn,	{.v = filecmd } },
	{ 0, XF86XK_MonBrightnessDown,	spawn,	{.v = brightdowncmd } },
	{ 0, XF86XK_MonBrightnessUp,	spawn,	{.v = brightupcmd } },
	{ 0, XF86XK_AudioMute,	spawn,	{.v = mutecmd } },
	{ 0, XF86XK_AudioRaiseVolume,	spawn,	{.v = volupcmd } },
	{ 0, XF86XK_AudioLowerVolume,	spawn,	{.v = voldowncmd } },
	{ 0, XK_Print,	spawn,	{.v = capturecmd } },
	{ MODKEY|ControlMask,	XK_l,	spawn,	{.v = lockcmd } },
	{ MODKEY|ControlMask,	XK_space,	setlayout,	{0} },
	{ MODKEY|ShiftMask,	XK_space,	togglefloating,	{0} },
	{ MODKEY, XK_0,	view,	{.ui = ~0 } },
	{ MODKEY|ShiftMask,	XK_0,	tag,	{.ui = ~0 } },
	{ MODKEY, XK_comma,	focusmon,	{.i = -1 } },
	{ MODKEY, XK_period,	focusmon,	{.i = +1 } },
	{ MODKEY|ShiftMask, XK_comma,	tagmon,	{.i = -1 } },
	{ MODKEY|ShiftMask, XK_period,	tagmon,	{.i = +1 } },
	TAGKEYS( XK_1, 0)
	TAGKEYS( XK_2, 1)
	TAGKEYS( XK_3, 2)
	TAGKEYS( XK_4, 3)
	TAGKEYS( XK_5, 4)
	TAGKEYS( XK_6, 5)
	TAGKEYS( XK_7, 6)
	TAGKEYS( XK_8, 7)
	TAGKEYS( XK_9, 8)
	{ MODKEY|ShiftMask, XK_q,	quit,	{0} },
};

/* button definitions */
/* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
static Button buttons[] = {
	/* click                event mask      button          function        argument */
	{ ClkLtSymbol,          0,              Button1,        setlayout,      {0} },
	{ ClkLtSymbol,          0,              Button3,        setlayout,      {.v = &layouts[2]} },
	{ ClkWinTitle,          0,              Button2,        zoom,           {0} },
	{ ClkStatusText,        0,              Button2,        spawn,          {.v = termcmd } },
	{ ClkClientWin,         MODKEY,         Button1,        movemouse,      {0} },
	{ ClkClientWin,         MODKEY,         Button2,        togglefloating, {0} },
	{ ClkClientWin,         MODKEY,         Button3,        resizemouse,    {0} },
	{ ClkTagBar,            0,              Button1,        view,           {0} },
	{ ClkTagBar,            0,              Button3,        toggleview,     {0} },
	{ ClkTagBar,            MODKEY,         Button1,        tag,            {0} },
	{ ClkTagBar,            MODKEY,         Button3,        toggletag,      {0} },
};

Happy hacking!!

by debish at August 25, 2020 08:31 PM

August 23, 2020

debianhackers.net

Taskwarrior: un guerrero en tu terminal

Hoy os traigo un complemento perfecto para vuestros escritorios ligeros, taskwarrior, un gestor de tareas minimalista para la terminal. Es sencillo de utilizar, rápido y razonablemente flexible, la curva de aprendizaje/adaptación es realmente rápida.

Está en repositorios Debian, para instalarla basta con teclear:

aptitude install taskwarrior

Hay tres comandos fundamentales, add, list y done; creo que os podéis hacer una idea de lo que hace cada uno sin demasiada explicación.

Para añadir tareas:

$ task add Entrada DH

Para ver la lista de tareas:

$ task list

Para marcar una entrada como completada:

$ task 1 done

También podemos añadir tags a las tareas:

$ task add +online Entrada DH

O organizarlas en proyectos:

$ task add project:DebianHackers Entrada DH

Si queremos añadir deadlines a una tarea:

$ task add Entrada DH due:today+17h

Podemos programar tareas que se repiten en el tiempo:

$ task add recur:monthly

O establecer prioridades (H=high, M=medium, L=low):

$ task add pri:H Entrada DH

Tanto los deadlines como las prioridades definirán la forma en que las distintas tareas se organizan en la lista de tareas. Tened en cuenta que cuando el deadline para una tarea vence, la tarea se elimina de la lista y la única forma de verla sería mediante:

$ task all

Podemos añadir anotaciones a las tareas:

$ task 1 annotate Nuevo post sobre task warrior

Por supuesto, podemos filtrar tareas por proyecto, tags, deadline, etc. Por ejemplo:

$ task project:DebianHackers

Lista todas las tareas dentro del proyecto “DebianHackers”.

$ task +online list

$ task -online list

La primera lista todas las tareas con el tag “online”; la segunda todas las tareas sin el
tag “online”.

$ task +DUETODAY list

$ task +WEEK list

El primer comando lista las tareas con deadline hoy; el segundo con deadline esta semana. También podemos filtrar de forma más específica:

$ task due.after:yesterday and due.before:thursday

Con esto creo que os hacéis una idea del uso general del programa. Aquí os dejo un vídeo introductorio de su creador presentando la herramienta y aquí uno más avanzado, por si le cogéis el gusto y os queréis meter a fondo en el ecosistema taskwarrior (ambos están en inglés). Si os queda alguna duda, siempre podéis recurrir al extenso man o echar un vistazo a la web del proyecto.

Si os ha parecido interesante, quizá queráis echarle un ojo también a timewarrior, del mismo creador.

Happy and productive hacking!

by debish at August 23, 2020 02:51 PM

August 11, 2020

debianhackers.net

Donad malditos, ¡donad! (reloaded)

Porque hace mucho que no os doy la tabarra con esto (4 años largos). Porque aunque el tiempo vuela, las razones para donar que os daba en la entrada original siguen siendo válidas. Porque:

Libre no significa gratis. Libre significa que no hay barreras para acceder, modificar o compartir cultura. Sea software, una canción, un libro o una fotografía. Libre en muchos casos significa que el autor deja en vuestras manos que valoréis y recompenséis su obra.

debish (hace 4 años)

Y porque quien genera cultura libre merece vuestra ayuda, sea física, intelectual o económica.

Para que sirva como muestra un botón, aquí un resumen de mis donaciones en los últimos años:

Como podéis ver la evolución es evidente. Hace unos años disponía de tiempo libre pero no de recursos económicos y la situación se ha ido revirtiendo con el paso del tiempo. Por eso antes donaba más trabajo y ahora dono más recursos económicos. Afortunadamente, con la experiencia se hace más con menos y aunque no hago tanto como me gustaría sigo manteniendo algunos frentes activos. En cualquier caso, el mensaje que quiero haceros llegar es que todo el mundo puede contribuir, tan sólo se trata de encontrar la manera que mejor se adapte a vuestra situación particular.

Ya sabéis, donad malditos, ¡donad!

by debish at August 11, 2020 04:00 PM

August 03, 2020

debianhackers.net

Synaptics: configura tu trackpad

Brevísima entrada para recordar lo sencillo que es configurar nuestro trackpad gracias a synaptics.

Instalamos el driver:

$ aptitude install xserver-xorg-input-synaptics

Comprobamos la configuración actual de nuestro trackpad:

$ synclient -l

LeftEdge                = 127
    RightEdge               = 3054
    TopEdge                 = 113
    BottomEdge              = 1997
    FingerLow               = 1
    FingerHigh              = 1
    MaxTapTime              = 180
    MaxTapMove              = 167
    MaxDoubleTapTime        = 180
    SingleTapTimeout        = 180
    ClickTime               = 100
    EmulateMidButtonTime    = 0
    EmulateTwoFingerMinZ    = 282
    EmulateTwoFingerMinW    = 7
    VertScrollDelta         = 76
    HorizScrollDelta        = 76
    VertEdgeScroll          = 0
    HorizEdgeScroll         = 0
    CornerCoasting          = 0
    VertTwoFingerScroll     = 1
    HorizTwoFingerScroll    = 0
    MinSpeed                = 1
    MaxSpeed                = 1.75
    AccelFactor             = 0.0523972
    TouchpadOff             = 0
    LockedDrags             = 0
    LockedDragTimeout       = 5000
    RTCornerButton          = 0
    RBCornerButton          = 0
    LTCornerButton          = 0
    LBCornerButton          = 0
    TapButton1              = 1
    TapButton2              = 3
    TapButton3              = 2
    ClickFinger1            = 1
    ClickFinger2            = 3
    ClickFinger3            = 2
    CircularScrolling       = 0
    CircScrollDelta         = 0.1
    CircScrollTrigger       = 0
    CircularPad             = 0
    PalmDetect              = 1
    PalmMinWidth            = 10
    PalmMinZ                = 200
    CoastingSpeed           = 20
    CoastingFriction        = 50
    PressureMotionMinZ      = 30
    PressureMotionMaxZ      = 160
    PressureMotionMinFactor = 1
    PressureMotionMaxFactor = 1
    GrabEventDevice         = 0
    TapAndDragGesture       = 1
    AreaLeftEdge            = 0
    AreaRightEdge           = 0
    AreaTopEdge             = 0
    AreaBottomEdge          = 0
    HorizHysteresis         = 19
    VertHysteresis          = 19
    ClickPad                = 1
    RightButtonAreaLeft     = 1590
    RightButtonAreaRight    = 0
    RightButtonAreaTop      = 1730
    RightButtonAreaBottom   = 0
    MiddleButtonAreaLeft    = 0
    MiddleButtonAreaRight   = 0
    MiddleButtonAreaTop     = 0
    MiddleButtonAreaBottom  = 0

Cada parámetro se puede ajustar de forma individual mediante el comando synclient:

$ synclient TapButton3=2

(Esta configuración activa el click con 3 dedos para copiar).

Para mantener nuestra configuración cuando reiniciemos las X:

$ vim 50-synaptics.conf

Section "InputClass"
Identifier "Touchpad" # required
MatchIsTouchpad "yes" # required
Driver "synaptics" # required
Option "MinSpeed" "1.0"
Option "MaxSpeed" "1.75"
Option "AccelFactor" "0.054"
Option "TapButton1" "1" # left click with 1 finger
Option "TapButton2" "3" # right click with 2 fingers
Option "TapButton3" "2" # copy with 3 fingers
Option "VertTwoFingerScroll" "1" # scroll with two fingers
Option "HorizTwoFingerScroll" "0" # horizontal scroll off
Option "VertEdgeScroll" "0"
Option "PalmDetect" "1"
EndSection

Y lo copiamos a /etc/X11/xorg.conf.d

Podéis encontrar más información en la wiki de Debian, la wiki de Arch o el man de synaptics.

También existe la opción de configurar el trackpad a través de LibinputTouchpad, una implementación más moderna que synaptics que además soporta Wayland.

Happy point&clicking!!

by debish at August 03, 2020 09:00 AM

July 27, 2020

debianhackers.net

Radicale: configura tu servidor CalDAV libre

Ya hemos hablado en otras ocasiones de lo importante que es escapar de la vigilancia masiva y de cómo liberar nuestro androide del espionaje de la Gran G. Hoy vamos a completar esto último liberando también nuestros calendarios y contactos de miradas ajenas gracias a Radicale, un servidor CalDAV libre. Entre sus virtudes, su extremada ligereza y fácil configuración. Aquí, algunas de sus principales características (extraídas de su web):

  • Permite compartir calendarios y contactos a través de CalDAV, WebDAV y http.
  • Soporta eventos, ToDo’s, entradas de diario y tarjetas de visita (Business Cards).
  • Permite limitar el acceso mediante autenticación cifrada.
  • Permite utilizar conexiones seguras.
  • Funciona con varios clientes libres: DAVx⁵ (Android), Gnome Calendar (GNU/Linux) o ThuderBird (multiplataforma), entre otros.
  • Está licenciado GPLv3 y escrito en Python, lo cual, junto a su simplicidad, hace que sea fácilmente hackeable.

Además, dado su bajo consumo de recursos, es un compañero ideal para nuestras Raspberry Pi. Veamos como instalarlo:

Opcion 1. Utilizando pip

python3 -m pip install --upgrade radicale

Opción 2. Desde repositorios Debian

aptitude install radicale python3-radicale

Para ejecutarlo, basta con teclear:

python3 -m radicale --storage-filesystem-folder=~/.var/lib/radicale/collections

Donde --storage-filesystem-folder indica la ruta donde vamos a almacenar nuestras “colecciones” (calendarios). Por defecto, radicale sirve en localhost a través del puerto 5232 y funciona sin usuario ni contraseña. Para configurarlo podemos crear un archivo de configuración o pasar directamente todos los parámetros en el momento de la ejecución (que se puede automatizar fácilmente mediante un servicio systemd). Podemos indicar la ruta a nuestro archivo de configuración mediante el parámetro --config ruta_a_config o crear un archivo config en /etc/radicale o ~/.config/radicale. En mi caso, utilizo el servidor de forma local, sincronizo mis cacharros antes de salir de casa y los vuelvo a sincronizar cuando vuelvo, pero lógicamente podéis servir vuestros calendarios on-line, simplemente tenéis que indicar la IP de vuestro server en la configuración. Este es mi archivo de configuración, como veis muy sencillo:

[server]
# Bind all servers
hosts = 192.168.0.156:5232
max_connections = 5
timeout = 10
# Max size of content to be server/uploaded (0.5Mb)
max_content_length = 5000000

[auth]
type = htpasswd
htpasswd_filename = /home/user/radicale/users/passwords
htpasswd_encryption = bcrypt
# delay after failed login attempts (in seconds)
delay = 2

[storage]
filesystem_folder = /home/user/radicale/collections 

[web]
# Serve a web interface to log into radicale
type = internal

Veamos lo que hace cada bloque:

[server] Aquí configuramos la IP del servidor (hosts), el número máximo de conexiones que queremos permitir (max_connections), el periodo de inactividad antes de terminar la conexión (timeout) y el tamaño máximo que podemos subir (max_content_length). Pensad bien en los valores de estos parámetros, para un calendario/agenda de contactos no deberíamos necesitar demasiada memoria, pero si los contactos tienen fotografías asociadas quizá el límite que yo he puesto de 0.5Mb no sea suficiente. Por temas de seguridad conviene no aumentarlo demasiado.

[auth] Aquí definimos el tipo de autenticación (type) y indicamos el tipo de cifrado (htpasswd_encryption) y localización del directorio donde guardamos nuestros usuarios y contraseñas. Es muy recomendable utilizar htpasswd, especialmente si pensamos servir los calendarios online.

[storage] Aquí indicamos la ruta donde vamos a almacenar nuestros calendarios. Si tenemos más de un usuario, habrá una subcarpeta por usuario dentro del directorio “collections”.

[web] Aquí indicamos el backend para radicale, podemos elegir entre none, que mostrará el mensaje “Radicale works!” cuando nos conectemos a la IP donde estamos sirviendo o internal, que sirve una interfaz web desde donde editar nuestros calendarios y contactos.

Y eso es todo lo que necesitáis para independizar vuestros calendarios y contactos de la gran G. Por supuesto, radicale es muchísimo más configurable, podéis encontrar todos los detalles en la documentación oficial.

Happy hacking!!

by debish at July 27, 2020 09:30 AM

July 19, 2020

debianhackers.net

Ohcount: contador de líneas de código

Quizá sea una métrica obsoleta, quizá una buena forma de evaluar si un programa se ajusta a la filosofía KISS, tal vez una obsesión inútil. Sea como sea, si quieres conocer el número de líneas de código (SLOC del inglés single lines of code) de tu programa favorito, ohcount te lo pone muy fácil:

$~ ohcount (directorio_a_analizar)

Genera un resumen con:

  1. Lenguajes de programación que contiene el proyecto.
  2. Número de ficheros por cada lenguaje de programación.
  3. Número de líneas de código en cada lenguaje de programación.
  4. Número de líneas de código comentadas.
  5. Porcentaje de líneas de código comentadas.
  6. Número de líneas en blanco.

Si queremos saber el número de líneas por fichero tecleamos:

$~ ohcount -i (directorio_a_analizar)

También podemos preguntar por la licencia del código:

$~ ohcount -l (directorio_a_analizar)

Para más opciones podemos ejecutar ohcount --help o recurrir al clásico RTFM.

Happy hacking!!

by debish at July 19, 2020 11:06 AM

July 13, 2020

fraterneo.blogspot.com.es

Docker para Administradores Linux - 1ra. Parte

El Software Libre triunfó, de eso no nos cabe duda. Evidencia de ello es la nube (Cloud Computing), en la que vemos una gran convergencia de tecnologías libres. Lo que la nube representa hoy era imposible pensarlo cinco años atrás: Pequeñas y grandes empresas de diferentes propósitos corriendo completamente su infraestructura, almacenamiento y servicios en la nube. Hasta las Startups reducen costos de operaciones al iniciarse con planes adaptados a sus necesidades que encuentran en los proveedores de Cloud Computing. Y por supuesto, en la nube "pagas cuando usas lo que tienes".

En esta serie que iniciamos sobre Docker, una de esas tecnologías que hace posible la "magia" de la nube, le daremos un vistazo desde lo más básico hasta un nivel intermedio a los aspectos que como SysAdmins son de nuestra atribución.

La disciplina que ha cambiado de raíz la cultura y la forma en la que se desarrolla software se conoce como DevOps. Ésta es una combinación de los dos protagonistas del desarrollo de aplicaciones: Development (Desarrollo) y Operations (Operaciones). Si tienes planes de convertirte en un DevOps Engineer, Docker es solo una de las muchas tecnologías que debes aprender, además de las prácticas y disciplinas que demanda la carrera. En la actualidad el salario anual de un DevOps Engineer certificado en los EEUU ronda la jugosa suma de 94,000 USD.

En esta serie veremos qué es Docker, su origen y las funcionalidades del Kernel Linux que han hecho posible su existencia. Lo instalaremos y desplegaremos un Docker Swarm Cluster de al menos cuatro nodos en Ubuntu Server usando el Universal Control Plane para su administración. Además, uno de los nodos será el Registry.

Entrando en materia...

¿Qué es Docker y cómo funciona?

Docker es un una plataforma (PaaS) que hace uso de containers (contenedores) para facilitar la automatización del despliegue de aplicaciones, creando una capa abstracta y automatizada de virtualización a nivel del Sistema Operativo. Inicialente Docker hacía uso de LXC (Linux Containers) para acceder a las capacidades de virtualización del Kernel Linux (cgroups, namespaces, capabilities), pero luego (para la versión 0.9) el proyecto desarrolló su propia biblioteca para este fin, conocida como libcontainer.



Los containers ofrecen una capa de virtualización aislada y que no requiere o demanda tantos recursos de hardware como una Máquina Virtual. Los sistemas operativos implementados dentro de un container de Docker para desplegar las aplicaciones solo tienen los componentes necesarios para su propósito, por lo que a la ligereza del container en términos de cómo se maneja con respecto procesamiento y memoria, se les quita mucho peso de encima en lo que al espacio ocupado se refiere.

Sin embargo las Máquinas Virtuales no quedan relegadas, pues éstas tienen la capacidad de ejecutar muchísimos contenedores a la vez, jugando un papel fundamental en las implementaciones de la nube.



Podemos instalar y usar Docker en nuestras computadoras personales, servidores, en máquinas virtuales y en la nube, ya que ha sido implementado por proveedores como AWS, Google Cloud Platform, MS Azure y DigitalOcean, y entre sus principales contribuyentes se encuentran Red Hat, Google, Microsoft, IBM y Cisco.

El proyecto Docker cuenta con una de las documentaciones más amplias que podrás encontrar. Desde la instalación en la distro que usas hasta el despliegue de un clúster de containers (Swarm, Kubernetes, etc.) contiene todo lo necesario para iniciarte y avanzar paso a paso.

Imágenes y contenedores

Debido a lo abstracto del tema, dos términos que debemos diferenciar con precisión son image (imagen) y container (contenedor).

En Docker un image es un paquete de software ejecutable, aislado y liviano que incluye todo lo necesario para correr una aplicación (código, runtime, herramientas y librerías del sistema y configuraciones); un container es una unidad de software que empaqueta el código de la aplicación y todas sus dependencias para que pueda ejecutarse en cualquier ambiente.


En consecuencia, un contenedor es una imagen en ejecución. Las imágenes se convierten en contenedores una vez el motor de Docker las ejecuta.

Ediciones de Docker

Docker está disponible en dos ediciones: Community Edition (CE) y Enterprise Edition (EE).

Docker CE es una plataforma básica de contenerización que se encuentra en los repositorios de CentOS, Debian, Fedora y Ubuntu; también disponible para Windows y Mac OS. En cambio Docker EE es la versión premium certificada, integrada y con soporte que puede ser implementada en RHEL, SUSE Linux Enterprise Server, Oracle Linux, Ubuntu, Windows Server 2016 y AWS.

Las diferencias principales de EE frente a su contraparte CE, son:

  • Acceso a imágenes y plugins certificados
  • Visualización y administración de clusters con Universal Control Plane
  • Registro de imágenes privado (Docker Registry)
  • Soporte permanente de Docker
  • Escaneo de vulnerabilidades en las imágenes (vulnerability scan)
  • Criptografía certificada (FIPS 140-)
  • Integración con usuarios LDAP/Active Directory
  • ...y por supuesto: Precio. Hay cuotas anuales por nodo que varían según el plan.

Instalación y primeros pasos

Como mencioné anteriormente, desplegaremos Docker EE en el Sistema Operativo Ubuntu Server. Así que te animo a obtener una licencia de prueba por 30 días de la versión EE en el sitio https://hub.docker.com y así me puedas acompañar.

Recuerda dejar tus inquietudes y sugerencias en la sección de comentarios.

Hasta la próxima entrega...

Fuentes y otros recursos:

by [email protected] (fraterneo) at July 13, 2020 03:23 PM

July 07, 2020

debianhackers.net

Apt, expresiones regulares y apt-pattern

Brevísima entrada para comentar un cambio importante en el funcionamiento de apt a partir de la versión 1.9.6:

apt (1.9.6) experimental; urgency=medium

apt(8) no longer treats package names passed as regular expressions or fnmatch expressions, requiring the use of patterns (apt-patterns(5)) to perform complex searches. For ease of use, regular expressions starting with ^ or ending with $ continue to work.

This fixes the problem where e.g. g++ could mean either “the package g++” or, if there is no g++ package, “all packages containing g”. This change will propagate to apt-* after the release of Debian bullseye.

— Julian Andres Klode [email protected] Wed, 15 Jan 2020 21:45:18 +0100

Que viene a querer decir que cuando hagáis una búsqueda con apt, la cadena de texto ya no se va a interpretar como una expresión regular, salvo que comience por ^ o termine por $. Para realizar búsquedas en los directorios de paquetes utilizando expresiones regulares debemos ceñirnos a las directrices establecidas en apt-patterns:

LOGIC PATTERNS
These patterns provide the basic means to combine other patterns into more complex expressions, as well as ?true and
?false patterns.
?and(PATTERN, PATTERN, …), PATTERN PATTERN …
Selects objects where all specified patterns match.
?false, ~F
Selects nothing.
?not(PATTERN), !PATTERN
Selects objects where PATTERN does not match.
?or(PATTERN, PATTERN, …), PATTERN | PATTERN | …
Selects objects where at least one of the specified patterns match.
?true, ~T
Selects all objects.
(PATTERN)
Selects the same as PATTERN, can be used to work around precedence, for example, (~ramd64|~ri386)~nfoo

NARROWING PATTERNS
?all-versions(PATTERN)
Selects packages where all versions match PATTERN. When matching versions instead, same as PATTERN.
?any-version(PATTERN)
Selects any version where the pattern matches on the version.
For example, while ?and(?version(1),?version(2)) matches a package which has one version containing 1 and one
version containing 2, ?any-version(?and(?version(1),?version(2))) restricts the ?and to act on the same version.
?narrow(PATTERN…)
Selects any version matching all PATTERNs, short for?any-version(?and(PATTERN…)).

PACKAGE PATTERNS
These patterns select specific packages.
?architecture(WILDCARD), ~rWILDCARD
Selects packages matching the specified architecture, which may contain wildcards using any.
?automatic, ~M
Selects packages that were installed automatically.
?broken, ~b
Selects packages that have broken dependencies.
?config-files, ~c
Selects packages that are not fully installed, but have solely residual configuration files left.
?essential, ~E
Selects packages that have Essential: yes set in their control file.
?exact-name(NAME)
Selects packages with the exact specified name.
?garbage, ~g
Selects packages that can be removed automatically.
?installed, ~i
Selects packages that are currently installed.
?name(REGEX), ~nREGEX
Selects packages where the name matches the given regular expression.
?obsolete, ~o
Selects packages that no longer exist in repositories.
?upgradable, ~U
Selects packages that can be upgraded (have a newer candidate).
?virtual, ~v
Selects all virtual packages; that is packages without a version. These exist when they are referenced somewhere
in the archive, for example because something depends on that name.

VERSION PATTERNS
These patterns select specific versions of a package.
?archive(REGEX), ~AREGEX
Selects versions that come from the archive that matches the specified regular expression. Archive, here, means
the values after a= in apt-cache policy.
?origin(REGEX), ~OREGEX
Selects versions that come from the origin that matches the specified regular expression. Origin, here, means the
values after o= in apt-cache policy.
?section(REGEX), ~sREGEX
Selects versions where the section matches the specified regular expression.
?source-package(REGEX), ~eREGEX
Selects versions where the source package name matches the specified regular expression.
?source-version(REGEX)
Selects versions where the source package version matches the specified regular expression.
?version(REGEX), ~VREGEX
Selects versions where the version string matching the specified regular expression.

EXAMPLES
apt remove ?garbage
Remove all packages that are automatically installed and no longer needed – same as apt autoremove
apt purge ?config-files
Purge all packages that only have configuration files left
apt list ‘~i !~M (~slibs|~sperl|~spython)’
List all manually-installed packages in sections matching libs, perl, or python.

Happy apt hacking!

by debish at July 07, 2020 07:35 PM

July 06, 2020

fraterneo.blogspot.com.es

¡Hola, mundo!


Ha pasado un largo tiempo, pero nunca es tarde para retomar un proyecto y mucho menos tratándose de fraterneo.

Agradeciendo a los fieles seguidores que, a pesar de la pausa, han continuado revisando el contenido y siguiendo las redes sociales de fraterneo.

De ustedes espero sus sugerencias para incluir contenido de temas que les interesen y actualidades del mundo del Software Libre, Linux, Cloud Computing, entre otros.

El plan es publicar al menos tres veces al mes guías o how-to's, artículos descriptivos, videotutoriales, etc. Además de impartir webinars varias veces al año.

El contenido publicado seguirá reflejándose en Facebook y Twitter, además de Instagram, red social en la que incursionaré.

El próximo lunes 13 de este mes daré inicio a una serie de posts titulada "Docker para Administradores Linux".

No se la pierdan...

by [email protected] (fraterneo) at July 06, 2020 03:26 PM

June 18, 2020

soyadmin.com

Instalar Códecs Multimedia en Ubuntu 20.10, Mint 20 y derivados

Ubuntu y la mayoría de las derivadas como Linux Mint, no incluyen todos los códecs multimedia en su instalación. Una vez que nos ponemos a trabajar en el uso diario de nuestra PC veremos que estos códecs que faltan son muy necesarios.

Por ejemplo, puede suceder que necesitemos reproducir audio o un video y nuestro reproductor nos arrojará un error.

Esto se soluciona de manera sencilla instalando los codecs faltantes:

# sudo apt install ubuntu-restricted-extras -y

by Mauro at June 18, 2020 10:39 PM

Disponible Linux Mint 20 en su fase Beta + Review español

Linux Mint anunció en su página web, la salida de la Beta de su Linux Mint 20 «Ulyana», está disponible en sus 3 sabores clásicos de Mint, Cinnamon, XFCE y Mate.

Se espera que la versión final esté antes de Julio. Indican los desarrolladores que se podrá actualizar la versión 19.3 y en caso de instalar la versión 20 Beta también pasará a la versión estable.

«Ulyana» está basada en Ubuntu 20.04 LTS y trae muchísimas nuevas características y mejoras que detallaremos a continucación:

  • Mint trae el último LTS del Kernel Linux, la versión 5.4.
  • Una nueva herramienta para detección de equipos y transferencia por Red llamada Warpinator. Warpinator viene a reemplazar al legendario «Giver» y su principal función es permitir el intercambio de archivos entre equipos de una red sin romperse la cabeza.
  • Cinnamon 4.6, XFCE 4.14 y Mate 1.24, lo último de cada versión en los 3 escritorios.
  • Modificación y actualización de GDEBI, el instalador de paquetes .DEB.
  • Soporte para WireGuard, un protocolo VPN rápido y seguro.
  • Mejora en el soporte de Nvidia Optimus
  • Actualización y mejora del rendimiento del manejador de achivos NEMO en Cinnamon. Mejora en la visualización de las miniaturas y ratios en transferencia de archivos.

Otras mejoras del sistema incluyen:

  • El menú de arranque de Grub ahora siempre estará visible incluso en VirtualBox.
  • Una nueva gama de colores para el tema Linux Mint Y.
  • Menú al inicio de la distro con algunas novedades

Linux Mint 20 NO soportará la instalación de paquetes SNAP

Si, has leido bien, contrariamente a las expectativas de muchas personas, Linux Mint 20 no soporta los paquetes SNAP de Ubuntu, como ha sido el caso con versiones anteriores. 

Esto puede ser un poco arbitrario y enojar a muchos de la comunidad, pero hay mucha otra parte de Linux que no ve con buenos ojos a SNAP asi que gustos a los gustos….

Para más info y descargas:

XFCE: https://blog.linuxmint.com/?p=3917

MATE: https://blog.linuxmint.com/?p=3916

CINNAMON: https://blog.linuxmint.com/?p=3915

OPINIÓN:

Solo es cuestión de Probar y probar, Linux Mint no es una distro más y hace años que ya forma parte de la Elite de Linux. Su escritorio principal Cinnamon es impecable, acompañado de varias aplicaciones hacen que, sea una de las distros con más adeptos y en crecimiento constante.

Animate probala!

También te dejamos una Review en Español

Excelente review realizada por nuestros amigos de Manos Y Máquinas Entre Vídeos, canal de Youtube indispensable y recomendado para cualquier linuxero.

by Mauro at June 18, 2020 12:47 PM

May 31, 2020

UnLugarEnElMundo

Dos años sin pasar por aquí (que no estaba muerto, que estaba de parranda)

Ahora si. No se si muerto, pero al menos en coma profundo. Dos años sin pasar por aquí (a escribir, se entiende, que el mantenimiento es otra cosa…) es mucho tiempo. Los que anunciaban la muerte de los blogs por fin han acertado. En el fondo son como mi madre: a fuerza de decir lo mismo una y otra vez al final aciertan. Era cuestión de tiempo. Si nos ponemos todos a decir que las tortillas de patatas han muerto seguro que llega el día en que podremos decir que hemos acertado. Bueno, a lo mejor me estoy pasando…

El problema, al menos en mi caso, es que por primera vez en los 25 años que llevo desde que estrené presencia en Internet no encuentro motivación alguna para pasar por aquí. He publicado aquí (o en sitios anteriores a este) por experimentar, por frustración laboral, por compartir cosas con otras personas, por mantener un contacto informal con los amigos… Hoy en día la última faceta está mas que satisfecha con las redes sociales y el resto son temas que ya no me preocupan o no aplican… Es lo que hay: prefiero dedicar este tiempo a otras cosas. Imagino que al resto de los viejos que se van retirando les pasará otro tanto y los jóvenes… ¿Blogs?¡Eso es de abuelos! 😀

Pero bueno, como estas cosas cuestan poquito de mantener y nunca se sabe, aquí estará esto aún por un tiempo. Quién sabe: lo mismo dentro de unos años esto se vuelve vintage y me dan ganas de resucitarlo.

Hasta entonces, cuidaos!

Artículo Original: .

Este artículo pertenece a Un lugar en el mundo... Si quieres ver actualizaciones y comentarios interesantes visita el texto original en: Dos años sin pasar por aquí (que no estaba muerto, que estaba de parranda) || Hospedado en un Cloud VPS de Gigas.

by Josemaría at May 31, 2020 07:04 PM

May 29, 2020

roke.es

Cliente Web SSH con Laravel

A raíz del cliente web ssh que hice con PHP he decidido crearlo usando el framework de Laravel.

Ahora se pueden guardar los servidores con su usuario y contraseña pero las contraseñas son encriptadas con el password que se indica. De esta forma aunque una persona acceda a la base de datos no podra obtener acceso a los servidores.

Para poder conectarte es necesario desencriptar la contraseña introduciendo la contraseña con la que se encripto.

Teneis mas información en https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/encrypt

Y tenéis acceso al repositorio de la app en https://github.com/roke22/Laravel-ssh-client

La entrada Cliente Web SSH con Laravel se publicó primero en Roke.es.

by Roke at May 29, 2020 01:15 PM

May 26, 2020

DaboBlog

Seguridad y Optimización en Servers VPS en CoronaCON (vídeo y enlaces)

EL pasado 12 de abril tuve el placer de participar en CoronaCON, un evento online destinado a recaudar fondos para Cruz Roja destinados a la lucha frente a la COVID-19.

Con casi 100 ponentes y a través de Twitch con 4 salas simultáneas, se consiguió una importante cifra

A 24/05/2020:

Intervine en el evento en representación de APACHEctl y el objetivo era abordar la problemática y dar soluciones  a los que se enfrenta una PYME o autónomo a la hora de montar un e-Commerce. Bien si está pensando en llevar su negocio a Internet o si ya lo tiene y está teniendo un crecimiento en su tráfico.

Todo ello, intentando a aprovechar al máximo las posibilidades de configuración que tenemos a nuestro alcance y pensando como digo en el vídeo, en el mejor compromiso prestaciones / coste para el cliente, con la premisa de contener el precio mensual de hosting y no sobre-dimensionar  la infraestructura web innecesariamente (como muchas veces sucede).

Desde la organización, han subido a su canal de YouTube todos los vídeos y os recomiendo repasar la lista (que por cierto, yo tengo que ver unos cuantos). Os dejo con mi vídeo:

Seguridad y Optimización en Servidores VPS

Enlaces y recursos mencionados en las diapositivas

Os recomiendo repasar antes de nada este post sobre mi intervención en QurtubaCON 2017 en Córdoba.

6 – Protonmail para empresas | iRedMail | MXToolbox

7 – Cloudflare (planes y precios) | CloudFail | DNSdumpster

9 – Monit | Pandora | Grafana | Munin | Nagios | Icinga

10 – Comparativa de Paneles de Adminstración

12 – Debian GNU/Linux, mi charla sobre “Seguridad y Software Libre”

14 – Apache vs NGINX

15 – MPM Prefork | MPM Worker | MPM Event | Directiva “ListenBacklog”

18 – Cabeceras y Seguridad en Apache: Security Headers

20 – Optimizando con Apache2Buddy | Rel: curl -sL apachebuddy.pl | perl

21 – Optimización de Apache2 y PHP-FPM

22 – Calculando procesos hijo en PHP-FPM

23 – Activando y optimizando OPCache | Funciones en PHP a deshabilitar

disable_functions =
pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopp
ed,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_si
gnal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocma
sk,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setp
riority,system, exec, passthru, shell, shell_exec, popen, pclose, proc_nice,
proc_terminate, proc_get_status, proc_close, putenv, pfsockopen, leak,
apache_child_terminate, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid,
posix_setuid, escapeshellcmd, escapeshellarg, phpinfo, proc_open,
show_source, passthru

24 – Cómo optimizar MySQL con MySQLTunner

26 – Instalar y configurar Mod Evasive | Rel: más info en “The HackerWay”

27 – OWASP Top 10 (PDF) | “Top 10 Web Application Security Risks”

28 – Cómo asegurar SSH (en Kernelwikia) | Seguridad por Oscuridad (ForatDotInfo)

30 –Instalar APF Firewall desde el código fuente  (En Debian o Ubuntu, está vía apt o aptitude install apf-firewall) recomendable leer el “readme” de R -fx Networks, sus creadores.

31 – “Detectando y deteniendo escaneos de Red con Portsentry

33 – Asegurando VPS con JackTheStripper | Libro Onna Bugeisha

34 –Rkhunter | Unhide | Logwatch | Logcheck | LMDE | Snort | ModSecurity

35 – Automysqlbackup (hay opción de cifrado) | Rsync | Kernel “GRsecurity”

36 – “Seguridad y Optimización de Servidores GLAMP” (pág 40) | Podcast “Especial SysAdmin” | Autobombo !?

También os recomiendo “sí o sí” instalar Fail2ban para parar ataques de fuerza bruta, además de usar los certificados SSL deLet’s Encrypt (junto a Certbot)

Espero que toda esta información os resulte de utilidad junto al vídeo. Por mi parte, comentar para acabar que fue un placer participar en este evento y que la mejor noticia sería que no volviese a repetirse nunca (al menos por este motivo -;).

La entrada Seguridad y Optimización en Servers VPS en CoronaCON (vídeo y enlaces) se publicó primero en DaboBlog.

by David Hernández (Dabo). at May 26, 2020 02:03 PM

May 19, 2020

soyadmin.com

Review en español de KDE Neón 202005, hermoso y puro Plasma KDE!

KDE Neón se ha convertido en una Distro muy popular y arrancó este 2020 a full. Una distro con una gran adaptación y aceptación de la comunidad, lo que la ha convertido en una de las principales distribuciones con escritorio KDE y la apuntada por los adictos a Plasma.

KDE Neón un Plasma puro, liviano y hermoso, su última versión KDE Neon 202005 salida hace unos días se basa en Ubuntu, viene con el Kernel 5.3, KDE 5.7 y Plasma 5.18.5.

Una distribución muy liviana, el poder de KDA y Plasma muy logrado.

También te dejamos una Review en Español

Excelente review realizada por nuestros amigos de Manos Y Máquinas Entre Vídeos, canal de Youtube indispensable y recomendado para cualquier linuxero.

by Mauro at May 19, 2020 03:55 PM

May 18, 2020

RooTeando

Aviones de Papel 06: Entrevista a Sofokles

Tenemos nuestra primera entrevista a un usuario, administrador de canales y desarrollador de bot en Telegram, de nombre Sofokles. Hablamos sobre Telegram y los proyectos que tiene dentro y fuera de Telegram.

Bots de Telegram 
https://t.me/qwasapbot
https://qwasap.com

https://telegram.me/channel2rssbot
https://t.me/rss2bot
https://bitmachine.org

Canales
https://t.me/ulinks

Sitios web
https://superpatanegra.com
https://komun.org

Directorios de canales de Telegram
https://t.me/canalestelegram ...

May 18, 2020 10:07 PM

May 17, 2020

RooTeando

Entrevista En Diferido 27: Juan Luis Cano y Marta Gómez Macías

Comenzamos una nueva  entrevista y volvemos con el formato de  entrevista doble, los dos entrevistado tienen un perfil de programadores en Python y muy activos en esa comunidad.  Sus nombres  son Juan Luis Cano y Marta Gómez Macías.

Antes de todo, gracias por aceptar la invitación y apoyar a este proyecto. La primera pregunta es una presentación por parte de los entrevistados, para que los lectores os puedan conocer un poco.

Entrevista En Diferido¿Os podéis ...

May 17, 2020 12:27 AM

May 14, 2020

soyadmin.com

Liberada nueva versión de Kali Linux 2020.2 con muchísimas NOVEDADES

Ayer fue anunciada una nueva versión de Kali Linux, la segunda de este año (por eso su versión es la 2020.2). Esta nueva versión viene a solucionar varios problemas y trae consigo varias novedades que desarrollaremos en este post.

Todos conocemos lo popular de Kali, una distro famosa por ser utilizada en Hacking ético y Seguridad, tiene como base a Debian e incluye muchísimas herramientas para testeo de seguridad de redes.

XFCE sigue siendo el escritorio predeterminado de la distro, puede elegirse a Plasma y GNOME como alternativas.

Que hay de nuevo en Kali Linux 2020.2

  • Plasma es de por sí la gran beneficiaria de esta actualización, se agregan temas oscuros y claros, además de un retoque general del escritorio y de la pantalla de inicio.
  • El escritorio GNOME avanza a la versión 3.36
  • Mejoras y cambios en el instalador de la distro.
  • Actualizacion de Joplin, Nextnet, NetHunter y SpiderFoot
  • Actualización de Python a 3.8
  • Powershell se podrá elegir como Shell por defecto, ya no es necesario instalarlo porque viene incluido en el sistema.

ACTUALIZAR / DESCARGAR Kali Linux 2020.2

Si tenemos una versión previa de Kali, podemos actualizar perfectamente hacia esta versión usando:

# sudo apt update && sudo apt -y full-upgrade

Para una instalación limpia, podés descargar la imagen ISO de Kali Linux 2020.2 desde su Web Oficial

by Mauro at May 14, 2020 12:37 PM

May 11, 2020

CloudAdmins.org

Cloudadmins Barcelona MEETUP: OpenNebula Cloud e-TechDay 11/6 16:00h

 

techday_barcelona

 

 

 

 

 

 

 

The OpenNebula Cloud TechDays are day-long educational and networking events to learn about OpenNebula. Join our technical experts from OpenNebula Systems.

As part of these open sessions, participants will get a comprehensive overview of the new OpenNebula 5.12 ‘Firework’

AGENDA

16:00h OpenNebula Introduction – Alberto P. Marti  (OpenNebula Systems)
16:20h HPC Clouds at Ghent University – Alvaro Simon  (Ghent University)
16.40h 5G and Edge Computing – Shuaib Siddiqui (i2CAT)
17:00h OpenNebula News, Edge Computing demo and Roadmap – Álex Huertas  (OpenNebula Systems)
17:30h Q&A.

Reserve yout seat! https://www.meetup.com/en-AU/Cloud-Admins-Barcelona/events/270506256/

by Cloudadmin JordiGuijarro at May 11, 2020 07:34 AM

May 07, 2020

soyadmin.com

¿Cómo agregar el botón minimizar en Elementary OS «Hera»? Video tutorial

Esta semana instalé y probé la última versión de Elementary OS Hera 5.4.1, una distro excelente y muy recomendada para cualquiera que desee instalarla y probarla.

Es una distro donde reina el minimalismo y la funcionalidad.

Elementary tiene algunas «particularidades» que no hacen ni interfieren en el funcionamiento del sistema pero que pueden resultar un poco molestas.

Una de ellas es la falta del botón minimizar, pero por suerte como todo en Linux existe una manera de activarlo en Elementary.

COMO ACTIVAR EL BOTÓN MINIMIZAR

# sudo apt install software-properties-common
# sudo add-apt-repository ppa:philip.scott/elementary-tweaks
# sudo apt install elementary-tweaks

VIDEO DEL PROCESO:

by Mauro at May 07, 2020 03:02 PM

May 06, 2020

debianhackers.net

Cambio en el feed RSS de DH

Todavía lo comentaba con dabo y debish hoy sobre los RSS: este aviso es para un puñado de usuarios de DH y seguramente tod@s con unos añitos :D.

La cuestión es que, tras un par de lustros usando feedburner nos hemos cansado de que mezcle nuestro feed con alguno cuyo título es Ciencia con energía y hemos decidido cargárnoslo. Así, sin más.

Así que si todavía usas nuestro feed RSS tienes que saber que a patir de las 00:00 del 7 de mayo de 2020 volverá a su ruta original. Podrás encontrarlo aquí:

https://debianhackers.net/feed

¡Nos leemos!

by diego at May 06, 2020 10:01 PM

Instalando anydesk en bullseye

No nos engañemos, si lees esto muy probablemente seas el soporte informático de alguien. En mi caso particular, soy el soporte informático de familia y amigos en dos países y cinco comunidades autónomas y lo decirles “mejor me conecto y lo miro” es ya un clásico, tanto que mi padre empieza ciertas conversaciones soltándome a bocajarro “ya te abierto el programa”. Porque si, porque a veces lo más rápido es conectarse al ordenador de esa persona y, con cuatro clics, solucionar algo o explicar lo inexplicable. Son cosas que vienen con el puesto de informatic@ de la familia/amigos y hay que aceptarlo.

Antes establecer una conexión desde un linux con el escritorio de un windows era toda una odisea pero los tiempos cambian y ahora hay muchos programas que nos permiten conectarnos a otro equipo de forma (más o menos) segura y fácil.En su momento utilicé TeamViewer (Tim Viver para la familia) pero desde hace unos años me pasé a AnyDesk (Ani Des para la misma familia :-D).

¿Por qué os aburro con esto? Porque hace dos semanas decidí volver a mis andadas y pasarme de la comodidad de buster y la rama estable de Debian GNU/Linux a la aventura de testing con bullseye. Y ahí fue cuando el paquete anydesk se desinstaló por una dependencia no cumplida.

diego@pirum:~$ sudo apt install anydesk
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
No se pudieron instalar algunos paquetes. Esto puede significar que
usted pidió una situación imposible o, si está usando la distribución
inestable, que algunos paquetes necesarios aún no se han creado o se
han sacado de «Incoming».
La siguiente información puede ayudar a resolver la situación:

Los siguientes paquetes tienen dependencias incumplidas:
 anydesk : Depende: libpango1.0-0 pero no va a instalarse
E: No se pudieron corregir los problemas, usted ha retenido paquetes rotos.
diego@pirum:~$ sudo apt install anydesk libpango1.0-0
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
No se pudieron instalar algunos paquetes. Esto puede significar que
usted pidió una situación imposible o, si está usando la distribución
inestable, que algunos paquetes necesarios aún no se han creado o se
han sacado de «Incoming».
La siguiente información puede ayudar a resolver la situación:

Los siguientes paquetes tienen dependencias incumplidas:
 libpango1.0-0 : Depende: libpango-1.0-0 (= 1.40.5-1) pero 1.44.7-4 va a ser instalado
                 Depende: libpangocairo-1.0-0 (= 1.40.5-1) pero 1.44.7-4 va a ser instalado
                 Depende: libpangoft2-1.0-0 (= 1.40.5-1) pero 1.44.7-4 va a ser instalado
                 Depende: libpangoxft-1.0-0 (= 1.40.5-1) pero 1.44.7-4 va a ser instalado
E: No se pudieron corregir los problemas, usted ha retenido paquetes rotos.

Así que mientras se actualiza libpango, como no quiero verme en la tesitura de tener que conectarme a algún a ordenador y andar pidiendo prestado a A el suyo, he decidido instalar anydesk desde el comprimido que está disponible en la sección de descargas.

Como siempre, lo he descomprimido en ~/bin, que para eso está y, a la hora de ejecutar el binario, como no, falla.

diego@pirum:~/bin/anydesk-5.5.5$ ./anydesk
./anydesk: error while loading shared libraries: libgtkglext-x11-1.0.so.0: cannot open shared object file: No such file or directory

En esta ocasión sólo hay que instalar una librería de nombre impronunciable.

sudo apt install -y libgtkglextmm-x11-1.2-0v5

Y tras esto, arranca.

anydesk

Y ahora ya puedo sentarme a esperar esa llamada.

by diego at May 06, 2020 12:39 PM

May 05, 2020

soyadmin.com

Elementary OS lanza su versión 5.1.4 «Hera» con muchas mejoras + Review en Español

El desarrollo y actualización de Elementary OS no para y mes a mes van lanzando actualizaciones y mejoras sobre su «Hera»

A menos de 1 mes de haber lanzado la versión 5.1.3 que trajo mejoras en varias herramientas y en el core del sistema, el equipo de Elementary lanzó la versión 5.1.4

NOVEDADES:

  • Actualización del gestor de ventanas «Gala» corrigiendo errores.
  • Mejoras y actualización de la App Videos
  • Actualización de Granite
  • Menu de aplicaciones mejorado y pulido. Mejor adaptabilidad para pantallas touch o táctiles.
  • Preferencias del sistema, se ha rediseñado y mejorado el apartado de búsquedas.
  • Actualizacion y mejora de la aplicación Fotos
  • App Center mejora su rendimiento y extensiones

DESCARGA:

Si deseas probar e instalar Elementary OS 5.1.4 Hera puedes descargarlo desde se web oficial aquí.

También te dejamos una Review en Español

Excelente review realizada por nuestros amigos de Manos Y Máquinas Entre Vídeos, canal de Youtube indispensable y recomendado para cualquier linuxero.

by Mauro at May 05, 2020 03:08 PM

May 04, 2020

pablo.sarubbi.com.ar

HAProxy como Reverse Proxy

Preparación del entorno

Para estas pruebas se generaron tres contenedores Ubuntu Server 18.04 con LXC sobre Kubuntu Desktop 18.04

+------------+---------+----------------------+------+------------+-----------+
|   NOMBRE   | ESTADO  |         IPV4         | IPV6 |    TIPO    | SNAPSHOTS |
+------------+---------+----------------------+------+------------+-----------+
| ubuntu-ha  | RUNNING | 10.56.142.111 (eth0) |      | PERSISTENT | 0         |
+------------+---------+----------------------+------+------------+-----------+
| ubuntu-wp1 | RUNNING | 10.56.142.244 (eth0) |      | PERSISTENT | 0         |
+------------+---------+----------------------+------+------------+-----------+
| ubuntu-wp2 | RUNNING | 10.56.142.34 (eth0)  |      | PERSISTENT | 0         |
+------------+---------+----------------------+------+------------+-----------+

HAProxy

En ubuntu-ha se instaló haproxy y modificó el archivo de configuración para que redirija el tráfico a ubuntu-wp1 o ubuntu-wp2, según la URL destino (wp1.local o wp2.local).

root@ubuntu-ha:~# apt-get install haproxy

y en /etc/haproxy/haproxy.cfg

global
    daemon
    maxconn 256
    user    haproxy
    group   haproxy
    log     127.0.0.1       local0
    log     127.0.0.1       local1  notice

defaults
	mode	http
	log     global
	timeout connect 5000ms
	timeout client  50000ms
	timeout server  50000ms
	stats enable
	stats uri /haproxy?stats

frontend localnodes
    bind *:8080
    mode http
    use_backend wp1 if { hdr(host) -i wp1.local }
    use_backend wp2 if { hdr(host) -i wp2.local }    

backend wp1
    server wp1 10.56.142.244:80

backend wp2
    server wp2 10.56.142.34:80

Los parámetros stats habilitan una página de estadisticas sobre el uso de HAProxy

Sitio wp1.local (Apache)

En ubuntu-wp1 se instaló y configuró Apache2, PHP7.2 y MySql Server con una copia de este blog para generar contenido.

root@ubuntu-wp1:~# apt-get install apache2 php libapache2-mod-php php-mysql mysql-server

Sitio wp2.local (Nginx)

En ubuntu-wp2 se instaló y configuró Nginx, PHP7.2 y Mysql Server con otra copia de este blog para generar contenido.

root@ubuntu-wp2:~# apt-get install nginx php php-fpm php-mysql mysql-server

En /etc/nginx/sites-avaible/default se modificaron las siguientes lineas:

index index.php;

	location ~ \.php$ {
		include snippets/fastcgi-php.conf;
	
		# With php-fpm (or other unix sockets):
		fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
		# With php-cgi (or other tcp sockets):
		#fastcgi_pass 127.0.0.1:9000;
	}

	location ~ /\.ht {
		deny all;
	}

Para diferenciar los sitios se modificó el encabezado agregando el nombre del Host.

Acceso a http://wp1.local desde la notebook

Acceso a http://wp2.local desde la notebook

Test de Stress

Se realizó desde un host externo con Apache Benchmark con 1000 accesos y 100 concurrencias a cada uno de los sitios publicados.

pablo@laptop:~$ ab -k -n1000 -c100 -H 'Accept-Encoding: gzip,deflate' http://wp1.local/
This is ApacheBench, Version 2.3 <$Revision: 1807734 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking wp1.local (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        Apache/2.4.29
Server Hostname:        wp1.local
Server Port:            80

Document Path:          /
Document Length:        9488 bytes

Concurrency Level:      100
Time taken for tests:   34.707 seconds
Complete requests:      1000
Failed requests:        920
   (Connect: 0, Receive: 0, Length: 920, Exceptions: 0)
Non-2xx responses:      913
Keep-Alive requests:    1000
Total transferred:      3575219 bytes
HTML transferred:       3264024 bytes
Requests per second:    28.81 [#/sec] (mean)
Time per request:       3470.670 [ms] (mean)
Time per request:       34.707 [ms] (mean, across all concurrent requests)
Transfer rate:          100.60 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    4  10.9      0      40
Processing:   173  985 3175.4    282   34662
Waiting:      173  985 3175.4    281   34662
Total:        173  989 3181.0    282   34702

Percentage of the requests served within a certain time (ms)
  50%    282
  66%    329
  75%    370
  80%    390
  90%   2371
  95%   3145
  98%   4579
  99%  12671
 100%  34702 (longest request)
pablo@laptop:~$ ab -k -n1000 -c100 -H 'Accept-Encoding: gzip,deflate' http://wp2.local/
This is ApacheBench, Version 2.3 <$Revision: 1807734 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking wp2.local (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        nginx/1.14.0
Server Hostname:        wp2.local
Server Port:            80

Document Path:          /
Document Length:        47713 bytes

Concurrency Level:      100
Time taken for tests:   22.371 seconds
Complete requests:      1000
Failed requests:        0
Keep-Alive requests:    0
Total transferred:      48204000 bytes
HTML transferred:       47713000 bytes
Requests per second:    44.70 [#/sec] (mean)
Time per request:       2237.120 [ms] (mean)
Time per request:       22.371 [ms] (mean, across all concurrent requests)
Transfer rate:          2104.23 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       16   27  12.7     26     291
Processing:   136 2100 330.7   2174    2508
Waiting:       88 2047 331.6   2123    2431
Total:        165 2127 330.2   2201    2541

Percentage of the requests served within a certain time (ms)
  50%   2201
  66%   2224
  75%   2237
  80%   2244
  90%   2262
  95%   2287
  98%   2370
  99%   2429
 100%   2541 (longest request)

Estadísticas de HAProxy

by pablo at May 04, 2020 01:08 PM

HAProxy como balanceador de carga

Preparación del entorno

Para estas pruebas se generaron tres contenedores Ubuntu Server 18.04 con LXC sobre Kubuntu Desktop 18.04

+------------+---------+----------------------+------+------------+-----------+
|   NOMBRE   | ESTADO  |         IPV4         | IPV6 |    TIPO    | SNAPSHOTS |
+------------+---------+----------------------+------+------------+-----------+
| ubuntu-ha  | RUNNING | 10.56.142.111 (eth0) |      | PERSISTENT | 0         |
+------------+---------+----------------------+------+------------+-----------+
| ubuntu-wp1 | RUNNING | 10.56.142.244 (eth0) |      | PERSISTENT | 0         |
+------------+---------+----------------------+------+------------+-----------+
| ubuntu-wp2 | RUNNING | 10.56.142.34 (eth0)  |      | PERSISTENT | 0         |
+------------+---------+----------------------+------+------------+-----------+

HAProxy

En ubuntu-ha se instaló haproxy y modificó el archivo de configuración para que balancee el tráfico http://pablo.sarubbi.com.ar entre los servidores web implementados en ubuntu-wp1 y ubuntu-wp2.

root@ubuntu-ha:~# apt-get install haproxy

y en /etc/haproxy/haproxy.cfg

global
    daemon
    maxconn 256
    user    haproxy
    group   haproxy
    log     127.0.0.1       local0
    log     127.0.0.1       local1  notice

defaults
	mode	http
	log     global
	timeout connect 5000ms
	timeout client  50000ms
	timeout server  50000ms
	stats enable
	stats uri /haproxy?stats

frontend localnodes
    bind *:8080
    mode http
    default_backend nodes

backend nodes
    mode http
    balance roundrobin
    option forwardfor
    http-request set-header X-Forwarded-Port %[dst_port]
    http-request add-header X-Forwarded-Proto https if { ssl_fc }
    option httpchk HEAD / HTTP/1.1\r\nHost:localhost
    server wp1 10.56.142.244:80 check
    server wp2 10.56.142.34:80  check

Los parámetros stats habilitan una página de estadisticas sobre el uso de HAProxy

Sitio pablosarubbi.com.ar en ubuntu-wp1 (Apache)

En ubuntu-wp1 se instaló y configuró Apache2, PHP7.2 y MySql Server con una copia de este blog para generar contenido.

root@ubuntu-wp1:~# apt-get install apache2 php libapache2-mod-php php-mysql mysql-server

Sitio pablosarubbi.com.ar en ubuntu-wp2 (Nginx)

En ubuntu-wp2 se instaló y configuró Nginx, PHP7.2 y Mysql Server con otra copia de este blog para generar contenido.

root@ubuntu-wp2:~# apt-get install nginx php php-fpm php-mysql mysql-server

En /etc/nginx/sites-avaible/default se modificaron las siguientes lineas:

index index.php;

	location ~ \.php$ {
		include snippets/fastcgi-php.conf;
	
		# With php-fpm (or other unix sockets):
		fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
		# With php-cgi (or other tcp sockets):
		#fastcgi_pass 127.0.0.1:9000;
	}

	location ~ /\.ht {
		deny all;
	}

Para diferenciar los sitios se modificó el encabezado agregando el nombre del Host.

Pruebas de balanceo

Primer acceso a http://pablo.sarubbi.com.ar reenvía al sitio en ubuntu-wp1

El segundo acceso a http://pablo.sarubbi.com.ar reenvía al sitio en ubuntu-wp2

Test de Stress

Se realizó desde un host externo con Apache Benchmark con 1000 accesos con 100 concurrencias.

pablo@laptop:~$ ab -k -n1000 -c100 -H 'Accept-Encoding: gzip,deflate' http://pablo.sarubbi.com.ar/
This is ApacheBench, Version 2.3 <$Revision: 1807734 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking pablo.sarubbi.com.ar (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        nginx/1.14.0
Server Hostname:        pablo.sarubbi.com.ar
Server Port:            80

Document Path:          /
Document Length:        47713 bytes

Concurrency Level:      100
Time taken for tests:   37.221 seconds
Complete requests:      1000
Failed requests:        300
   (Connect: 0, Receive: 0, Length: 300, Exceptions: 0)
Non-2xx responses:      235
Keep-Alive requests:    300
Total transferred:      35093415 bytes
HTML transferred:       34643711 bytes
Requests per second:    26.87 [#/sec] (mean)
Time per request:       3722.117 [ms] (mean)
Time per request:       37.221 [ms] (mean, across all concurrent requests)
Transfer rate:          920.74 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0   18  12.6     23      46
Processing:    37 1883 2420.1   1592   36583
Waiting:       37 1842 2424.7   1538   36583
Total:         41 1902 2421.3   1612   36602

Percentage of the requests served within a certain time (ms)
  50%   1612
  66%   2129
  75%   2236
  80%   2364
  90%   2853
  95%   3824
  98%   9170
  99%   9721
 100%  36602 (longest request)

Estadísticas de HAProxy

Conclusiones

Se evidencia que HAProxy ejecuta correctamente el balanceo de carga, aunque en este entorno de pruebas se pudo evidenciar que con la configuración por default, y contenedores con 512MB de RAM, el Nginx mantiene un comportamiento mucho mas estable que el Apache.

by pablo at May 04, 2020 12:28 AM

May 02, 2020

debianhackers.net

Gogh: colores para tu terminal

Gogh es una colección de temas de colores para la terminal de Gnome, XFCE4, Pantheon y Tilix. La lista completa de temas está aquí y instalarlos es tan fácil como teclear:

bash -c "$(wget -qO- https://git.io/vQgMr)"

Y elegir los temas que queréis instalar:

(Fuente: https://github.com/Mayccoll/Gogh/)

Lo que hace este comando es descargar y ejecutar un script en bash que realiza la instalación de forma autómatica. Si no os fiáis del oneliner (ya sabéis, nunca ejecutéis un comando que no entendáis, aunque confiéis en la fuente), podéis acceder al enlace desde vuestro navegador y revisar el script antes de descargarlo y ejecutarlo.

En la web del proyecto también podéis encontrar scripts de instalación para cada tema por separado, algo muy útil si queréis configurar los esquemas de color a mano o llevároslos a vuestra terminal favorita. Estos scripts incluyen los códigos de color de cada tema comentados, que podéis trasladar fácilmente al archivo de configuración de turno. En mi caso por ejemplo, utilizo st, así que copio los códigos de color en la variable colorname del archivo config.h dentro del directorio con las fuentes, recompilo y listo.

Happy and colourful hacking!

by debish at May 02, 2020 05:35 PM

April 30, 2020

pablo.sarubbi.com.ar

Ansible: zabbix_agent

Módulos:
apt: para instalar zabbix_agent
replace: para reemplazar la configuración por default en el archivo /etc/zabbix/zabbix_agent
– service: para restartear el zabbix-agent.

Generar un archivo zabbix_agent.yml con el siguiente código:

---
- hosts: all
  remote_user: admin
  become: yes
  tasks:
    - name: 'Install zabbix-agent package'
      apt:
        name: zabbix-agent
        update_cache: yes
    - name: Stop service zabbix-agent
      service:
        name: zabbix-agent
        state: stopped
    - name: 'Replace Server parameter'
      replace:
        path: /etc/zabbix/zabbix_agentd.conf
        regexp: '^Server=(.*)'
        replace: 'Server=zabbix.bancointerfinanzas.com.ar'
    - name: 'Replace ServerActive parameter'
      replace:
        path: /etc/zabbix/zabbix_agentd.conf          
        regexp: '^ServerActive=(.*)'
        replace: 'ServerActive=zabbix.bancointerfinanzas.com.ar'
    - name: 'Replace Hostname parameter'
      replace:
        path: /etc/zabbix/zabbix_agentd.conf          
        regexp: '^Hostname=(.*)'
        replace: 'Hostname={{ ansible_hostname }}'
    - name: Start service zabbix-agent
      service:
        name: zabbix-agent
        state: started

El script se ejecuta de la siguiente manera:

pablo@ansible:~$ ansible-playbook zabbix-agent.yml -K
SUDO password: 

PLAY [192.168.0.100] ***************************************************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************************************************
ok: [192.168.0.100]

TASK [Install zabbix-agent package] **********************************************************************************************************************************************
changed: [192.168.0.100]

TASK [Stop service zabbix-agent] *************************************************************************************************************************************************
changed: [192.168.0.100]

TASK [Replace Server parameter] **************************************************************************************************************************************************
changed: [192.168.0.100]

TASK [Replace ServerActive parameter] ********************************************************************************************************************************************
changed: [192.168.0.100]

TASK [Replace Hostname parameter] ************************************************************************************************************************************************
changed: [192.168.0.100]

TASK [Start service zabbix-agent] ************************************************************************************************************************************************
changed: [192.168.0.100]

PLAY RECAP ***********************************************************************************************************************************************************************
192.168.0.100                : ok=7    changed=6    unreachable=0    failed=0   

by pablo at April 30, 2020 01:33 PM

Disable IPv6 con Ansible

Se utilizó el módulo replace para reemplazar un texto en el archivo /etc/default/grub y el módulo update-grup para actualizar los cambios.

Generar un archivo disable_ipv6.yml con el siguiente código:

---
- hosts: all
  remote_user: admin
  become: yes
  tasks:
    - name: 'Check if grub is present'
      stat: 
        path=/etc/default/grub
      register: grub_file
    - name: 'Disable IPv6 - GRUB_CMD_LINE_LINUX'
      replace:
        path: /etc/default/grub
        regexp:  '^GRUB_CMDLINE_LINUX="((:?(?!ipv6\.disable=1).)*?)"$'
        replace: 'GRUB_CMDLINE_LINUX="\1 ipv6.disable=1"'
      when: grub_file.stat.exists
      register: updateGrub
    - name: 'Disable IPv6 - GRUB_CMDLINE_LINUX_DEFAULT'
      replace:
        path: /etc/default/grub
        regexp:  '^GRUB_CMDLINE_LINUX_DEFAULT="((:?(?!ipv6\.disable=1).)*?)"$'
        replace: 'GRUB_CMDLINE_LINUX_DEFAULT="\1 ipv6.disable=1"'
      register: updateGrub
      when: grub_file.stat.exists
    - name: 'update-grub'
      shell: update-grub
      when: updateGrub is defined

El script se ejecuta de la siguiente manera:

pablo@ansible:~$ ansible-playbook disable_ipv6.yml -K
SUDO password: 

PLAY [192.168.0.100] *******************************************************************************************************************************************************

TASK [Gathering Facts] ***************************************************************************************************************************************************
ok: [192.168.0.100]

TASK [Check if grub is present] ******************************************************************************************************************************************
ok: [192.168.0.100]

TASK [Disable IPv6 - GRUB_CMD_LINE_LINUX] **********************************************************************************************************************************************
changed: [192.168.0.100]

TASK [Disable IPv6 - GRUB_CMDLINE_LINUX_DEFAULT] **************************************************************************************************************************************
changed: [192.168.0.100]

TASK [update-grub] *******************************************************************************************************************************************************
changed: [192.168.0.100]

PLAY RECAP ***************************************************************************************************************************************************************
192.168.0.100                : ok=5    changed=3    unreachable=0    failed=0   

pablo@ansible:~$ 

by pablo at April 30, 2020 02:27 AM

April 29, 2020

RooTeando

Entrevista En Diferido 26: Paco Estrada

Comenzamos una nueva  entrevista con un entrevistado  con un perfil de podcaster y divulgador del software libre, su nombre Paco Estrada y es creador del podcast   Compilando podcast.

Antes de todo, gracias por aceptar la invitación y apoyar a este proyecto. La primera pregunta es una presentación por parte del entrevistado, para que los lectores te puedan conocer un poco.

Entrevista En Diferido: ¿Te puedes presentar en unas líneas?

 

Paco Estrada:   ...

April 29, 2020 11:03 PM

soyadmin.com

Review en Español de Manjaro 20 «Lysia»

REVIEW EN ESPAÑOL:

Excelente review realizada por nuestros amigos de Manos Y Máquinas Entre Vídeos, canal de YouTube indispensable y recomendado para cualquier linuxero.

by Mauro at April 29, 2020 12:19 PM

April 28, 2020

pablo.sarubbi.com.ar

apt update y upgrade con Ansible

Se utilizó el módulo apt para actualizar servidores con Ansible.

Se generó un archivo apt.yml con el siguiente código:

---
- hosts: all
  remote_user: admin
  become: yes
  tasks:
    - name: 'update'
      apt:
        update_cache: yes
    - name: 'upgrade'
      apt:
        name: "*"
        state: latest
    - name: 'dist-upgrade'
      apt:
        upgrade: dist
    - name: 'autoremove'
      apt:
        autoremove: yes
    - name: 'autoclean'
      apt:
        autoclean: yes

El script se ejecuta de la siguiente manera:

pablo@ansible:~$ ansible-playbook apt.yml -K  
SUDO password: 

PLAY [192.168.0.100] *****************************************************************************************************************************************************************************

TASK [Gathering Facts] **************************************************************************************************************************************************************************
ok: [192.168.0.100]

TASK [update] ***********************************************************************************************************************************************************************************
changed: [192.168.0.100]

TASK [upgrade] **********************************************************************************************************************************************************************************
changed: [192.168.0.100]

TASK [dist-upgrade] *****************************************************************************************************************************************************************************
ok: [192.168.0.100]

TASK [autoremove] *******************************************************************************************************************************************************************************
ok: [192.168.0.100]

TASK [autoclean] ********************************************************************************************************************************************************************************
ok: [192.168.0.100]

PLAY RECAP **************************************************************************************************************************************************************************************
192.168.0.100               : ok=6    changed=2    unreachable=0    failed=0   

pablo@ansible:~$ 

by pablo at April 28, 2020 07:36 PM

April 27, 2020

pablo.sarubbi.com.ar

Crear usuario para BackupPc con Ansible

Se utilizaron los módulos user para crear el usuario, authorized_key para distribuir la clave pública de BackupPc y lineinfile para modificar el sudoers.

Se generó un archivo backuppcClient.yml con el siguiente código:

---
- hosts: client1
  remote_user: admin
  become: yes
  vars:
    users:
      - "backuppc"
  tasks:
    - name: create user backuppc
      user:
        name: "{{ item }}"  
        shell: /bin/bash
      with_items: "{{ users }}"
    - name: Add public key in authorized_keys'
      authorized_key:
        user: "{{ item }}"
        key: "{{ lookup('file', 'id_rsa.pub') }}"
      with_items: "{{ users }}"
    - name: Add rsync without password in sudoers
      copy:
        content: "backuppc ALL=NOPASSWD: /usr/bin/rsync --server --sender * \n"
        dest: /etc/sudoers.d/backuppc
        backup: yes
        owner: root
        group: root
        mode: 0440
        validate: /usr/sbin/visudo -cf %s


El archivo id_rsa.pub contiene la clave pública del BackupPc.

El script se ejecuta de la siguiente manera:

admin@ansible:~$ ansible-playbook backuppcClient.yml -K
SUDO password: 
PLAY [192.168.0.100] *************************************************************************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************************************************************************
ok: [192.168.0.100]

TASK [Crear usuario BackupPc] **************************************************************************************************************************************************
ok: [192.168.0.100] => (item=backuppc)

TASK [Agregar clave pública al authorized_keys] **************************************************************************************************************************************************
ok: [192.168.0.100] => (item=backuppc)

TASK [Modificar archivo sudoers para ejecutar rsync sin contraseña] *************************************************************************************************************************
ok: [192.168.0.100]

PLAY RECAP **********************************************************************************************************************************************************************
192.168.0.100               : ok=4    changed=3    unreachable=0    failed=0   

admin@ansible:~$ 

by pablo at April 27, 2020 08:14 PM

Primeros pasos con LXD

Instalar los paquetes necesarios

pablo@host:~# sudo sudo apt install zfsutils-linux lxd

pablo@host:~$ sudo lxd init
Would you like to use LXD clustering? (yes/no) [default=no]: 
Do you want to configure a new storage pool? (yes/no) [default=yes]: 
Name of the new storage pool [default=default]:     
Name of the storage backend to use (dir, zfs) [default=zfs]: 
Create a new ZFS pool? (yes/no) [default=yes]: 
Would you like to use an existing block device? (yes/no) [default=no]: 
Size in GB of the new loop device (1GB minimum) [default=84GB]: 
Would you like to connect to a MAAS server? (yes/no) [default=no]: 
Would you like to create a new local network bridge? (yes/no) [default=yes]: 
What should the new bridge be called? [default=lxdbr0]: 
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: 
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: none
Would you like LXD to be available over the network? (yes/no) [default=no]: 
Would you like stale cached images to be updated automatically? (yes/no) [default=yes] 
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: 
pablo@host:~$ 

Listar las imágenes disponibles para crear un contenedor

pablo@host:~$ sudo lxc image list images:ubuntu arch=amd64
+----------------------------+--------------+--------+--------------------------------------+--------+----------+
|           ALIAS            | FINGERPRINT  | PUBLIC |             DESCRIPCIÓN              |  ARQ   |  TAMAÑO  |                                           
+----------------------------+--------------+--------+--------------------------------------+--------+----------+                                           
| ubuntu/14.04 (7 más)       | 7f146839082a | sí     | Ubuntu trusty amd64 (20200426_07:42) | x86_64 | 75.45MB  |                                           
+----------------------------+--------------+--------+--------------------------------------+--------+----------+                                           
| ubuntu/16.04 (7 más)       | 219cff31b8f5 | sí     | Ubuntu xenial amd64 (20200426_07:42) | x86_64 | 80.77MB  |                                           
+----------------------------+--------------+--------+--------------------------------------+--------+----------+                                           
| ubuntu/16.04/cloud (3 más) | 805b76000857 | sí     | Ubuntu xenial amd64 (20200426_07:42) | x86_64 | 99.91MB  |                                           
+----------------------------+--------------+--------+--------------------------------------+--------+----------+                                           
| ubuntu/18.04 (7 más)       | acf444ccf6f6 | sí     | Ubuntu bionic amd64 (20200426_08:52) | x86_64 | 94.46MB  |                                           
+----------------------------+--------------+--------+--------------------------------------+--------+----------+                                           
| ubuntu/18.04/cloud (3 más) | 3d7b52c8c572 | sí     | Ubuntu bionic amd64 (20200426_07:42) | x86_64 | 105.25MB |                                           
+----------------------------+--------------+--------+--------------------------------------+--------+----------+                                           
| ubuntu/eoan (7 más)        | c347967a70de | sí     | Ubuntu eoan amd64 (20200426_07:42)   | x86_64 | 95.19MB  |
+----------------------------+--------------+--------+--------------------------------------+--------+----------+
| ubuntu/eoan/cloud (3 más)  | 8e3ea1480cb2 | sí     | Ubuntu eoan amd64 (20200426_07:42)   | x86_64 | 108.35MB |
+----------------------------+--------------+--------+--------------------------------------+--------+----------+
| ubuntu/focal (7 más)       | 751bac27ad88 | sí     | Ubuntu focal amd64 (20200426_07:42)  | x86_64 | 97.28MB  |
+----------------------------+--------------+--------+--------------------------------------+--------+----------+
| ubuntu/focal/cloud (3 más) | 96a2da7d8f24 | sí     | Ubuntu focal amd64 (20200426_07:42)  | x86_64 | 111.91MB |
+----------------------------+--------------+--------+--------------------------------------+--------+----------+

Crear un contenedor Ubuntu 18.04

pablo@host:~# sudo lxc launch ubuntu:18.04 ubuntu-lxc1
Creando ubuntu-lxc1
Iniciando ubuntu-lxc1  

Listar contenedores creados

pablo@host:~# sudo lxc list
+-------------+---------+---------------------+------+------------+-----------+
| NOMBRE      | ESTADO  |        IPV4         | IPV6 |    TIPO    | SNAPSHOTS |
+-------------+---------+---------------------+------+------------+-----------+
| ubuntu-lxc1 | RUNNING | 10.188.82.11 (eth0) |      | PERSISTENT | 0         |
+-------------+---------+---------------------+------+------------+-----------+

Transferir archivos del host al contenedor ubuntu-lxc1

pablo@host:~$ sudo lxc file push /home/pablo/.ssh/ ubuntu-lxc1/tmp/ --recursive --verbose
INFO[04-26|22:23:01] Pushing /home/pablo/.ssh to /tmp/.ssh (directory) 
INFO[04-26|22:23:01] Pushing /home/pablo/.ssh/authorized_keys to /tmp/.ssh/authorized_keys (file) 
INFO[04-26|22:23:01] Pushing /home/pablo/.ssh/id_rsa.pub to /tmp/.ssh/id_rsa.pub (file) 
INFO[04-26|22:23:01] Pushing /home/pablo/.ssh/known_hosts to /tmp/.ssh/known_hosts (file) 
pablo@host:~$   

Transferir archivos del contenedor ubuntu-lxc1 al host

pablo@host:~$ sudo lxc file pull ubuntu-lxc1/home/ubuntu/.ssh/authorized_keys /tmp/ --verbose
INFO[04-26|22:27:46] Pulling /tmp/authorized_keys from home/ubuntu/.ssh/authorized_keys (file) 
pablo@host:~$ 

ACCEDER AL CONTENEDOR ubuntu-lxc1 Y CAMBIAR LA CONTRASEÑA

pablo@host:~$ sudo lxc shell ubuntu-lxc1
mesg: ttyname failed: No such device 

root@ubuntu-lxc1:~# passwd ubuntu
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
root@ubuntu-lxc1:~# 

DETENER EL CONTENEDOR ubuntu-lxc1 Y VERIFICAR SU ESTADO

pablo@host:~$ sudo lxc stop ubuntu-lxc1
pablo@host:~$ sudo lxc list
+-------------+---------+------+------+------------+-----------+
| NOMBRE      | ESTADO  | IPV4 | IPV6 |    TIPO    | SNAPSHOTS |
+-------------+---------+------+------+------------+-----------+
| ubuntu-lxc1 | STOPPED |      |      | PERSISTENT | 0         |
+-------------+---------+------+------+------------+-----------+
pablo@host:~$ 

Iniciar el contenedor ubuntu-lxc1 y verificar su estado

pablo@host:~$ sudo lxc start ubuntu-lxc1
pablo@host:~$ sudo lxc list 
+-------------+---------+---------------------+------+------------+-----------+
| NOMBRE      | ESTADO  |        IPV4         | IPV6 |    TIPO    | SNAPSHOTS |
+-------------+---------+---------------------+------+------------+-----------+
| ubuntu-lxc1 | RUNNING | 10.188.82.11 (eth0) |      | PERSISTENT | 0         |
+-------------+---------+---------------------+------+------------+-----------+
pablo@host:~$ 

Crear un snapshot del contenedor ubuntu-lxc1 y verificar su estado

pablo@host:~$ sudo lxc snapshot ubuntu-lxc1 usnap0
pablo@host:~$ sudo lxc list 
+-------------+---------+---------------------+------+------------+-----------+
| NOMBRE      | ESTADO  |        IPV4         | IPV6 |    TIPO    | SNAPSHOTS |
+-------------+---------+---------------------+------+------------+-----------+
| ubuntu-lxc1 | RUNNING | 10.188.82.11 (eth0) |      | PERSISTENT | 1         |
+-------------+---------+---------------------+------+------------+-----------+
pablo@host:~$ 

Verficar la informacion del contenedor ubuntu-lxc1

pablo@host:~$ sudo lxc info ubuntu-lxc1
Nombre: ubuntu-lxc1
Remote: unix://
Arquitectura: x86_64
Creación: 2020/04/26 23:35 UTC
Estado: Running
Type: persistent
Perfiles: default
PID: 16481
Ips:
  eth0: inet    10.188.82.11    veth7QXKDQ
  eth0: inet6   fe80::216:3eff:fe81:e698        veth7QXKDQ
  lo:   inet    127.0.0.1
  lo:   inet6   ::1
Resources:
  Procesos: 41
  Uso de CPU:
    Uso de CPU (en segundos): 8
  Memory usage:
    Memory (current): 100.23MB
    Memory (peak): 113.44MB
  Network usage:
    eth0:
      Bytes recibidos: 85.50kB
      Bytes enviados: 42.51kB
      Packets received: 534
      Packets sent: 346
    lo:
      Bytes recibidos: 4.47kB
      Bytes enviados: 4.47kB
      Packets received: 43
      Packets sent: 43
Snapshots:
  usnap0 (taken at 2020/04/27 01:33 UTC) (stateless)
pablo@host:~$ 

Revertir al snapshot usnap0 del contenedor ubuntu-lxc1

pablo@host:~$ sudo lxc restore ubuntu-lxc1 usnap0

Publicar y listar una imagen a partir del snapshot usnap0

pablo@host:~$ sudo sudo lxc publish ubuntu-lxc1/usnap0 --alias ubuntuImage4snap0
pablo@host:~$ sudo lxc image list 
+--------------------+--------------+--------+------------------------------------+--------+----------+                         
|     ALIAS          | FINGERPRINT  | PUBLIC |            DESCRIPCIÓN             |  ARQ   |  TAMAÑO  |
+--------------------+--------------+--------+------------------------------------+--------+----------+
| ubuntuImage4snap0  | 067b55c92737 | no     | Ubuntu 18.04 LTS server (20200407) | x86_64 | 271.56MB |
+--------------------+--------------+--------+------------------------------------+--------+----------+
pablo@host:~$ 

Crear un nuevo contenedor ubuntu4image a partir de la imagen ubuntuImage4snap0

pablo@host:~$ sudo lxc launch 067b55c92737 ubuntu4image
Creando ubuntu4image
Iniciando ubuntu4image
pablo@host:~$ sudo lxc list 
+---------------+---------+----------------------+------+------------+-----------+
|    NOMBRE     | ESTADO  |         IPV4         | IPV6 |    TIPO    | SNAPSHOTS |
+---------------+---------+----------------------+------+------------+-----------+
| ubuntu4image  | RUNNING | 10.188.82.227 (eth0) |      | PERSISTENT | 0         |
+---------------+---------+----------------------+------+------------+-----------+
| ubuntu-lxc1   | RUNNING | 10.188.82.151 (eth0) |      | PERSISTENT | 0         |
+---------------+---------+----------------------+------+------------+-----------+
pablo@host:~$ 

Eliminar un snapshot del contenedor ubuntu-lxc1 y verificar su estado

pablo@host:~$ sudo lxc delete ubuntu-lxc1/usnap0
pablo@host:~$ sudo lxc list 
+-------------+---------+---------------------+------+------------+-----------+
| NOMBRE      | ESTADO  |        IPV4         | IPV6 |    TIPO    | SNAPSHOTS |
+-------------+---------+---------------------+------+------------+-----------+
| ubuntu-lxc1 | RUNNING | 10.188.82.11 (eth0) |      | PERSISTENT | 0         |
+-------------+---------+---------------------+------+------------+-----------+
pablo@host:~$ 

Eliminar una imagen publicada en el host

pablo@host:~$ lxc image delete 067b55c92737
pablo@host:~$ 

Modificar los recursos de CPU y Memoria del contenedor ubuntu-lxc1

ubuntu@ubuntu-lxc1:~$ cat /proc/cpuinfo | grep processor | wc -l
4
ubuntu@ubuntu-lxc1:~$ free -h
              total        used        free      shared  buff/cache   available
Mem:           244M         52M        189M        172K        2.5M        191M
Swap:          975M          0B        975M
ubuntu@ubuntu-lxc1:~$ 

root@host:~# lxc config set ubuntu4pablo limits.cpu 2
root@host:~# lxc config set ubuntu4pablo limits.memory 512MB

ubuntu@ubuntu-lxc1:~$ cat /proc/cpuinfo | grep processor | wc -l
2
ubuntu@ubuntu-lxc1:~$ free -h
              total        used        free      shared  buff/cache   available
Mem:           488M         52M        433M        172K        2.5M        435M
Swap:          975M          0B        975M
ubuntu@ubuntu-lxc1:~$ 

by pablo at April 27, 2020 02:21 PM

soyadmin.com

Disponible Manjaro 20 «Lysia» cargada de Novedades

Luego de meses de trabajo, Manjaro anunció ayer su nueva versión Manjaro 20 con nombre «Lysia» y llega cargada de novedades.

Manjaro es considerada una de las mejores distribuciones Linux de los últimos años, ganando adeptos y creciendo día a día. Su receta es simple: base ARCH que le da estabailidad y solidez; y una comunidad muy activa y en constante desarrollo.

Esta nueva versión ya está disponible para su descarga en sus sabores principales (XFCE, GNOME y KDE)

NOVEDADES PRINCIPALES:

Manjaro 20 viene con el kernel 5.6 e incluye los últimos controladores y drivers disponibles. Llega Pamac 9.4 con soporte predeterminado para FLATPAK y SNAP mucho más intuitivo y facil de utilizar.

Su escritorio XFCE ha sido actualizado a la versión 4.14, incluye un nuevo tema llamado Matcha y los desarrolladores anuncian que ha sido mejorada considerablemente la experiencia de usuario en el escritorio y el gestor de ventanas.

También dispone de un administrador de perfiles, el cual permite almacenar perfiles y aplicarlos una vez que se inicia sesión.

KDE Plasma fue actualizado a la versión 5.18 en conjunto con todas sus aplicaciones nativas, Kate ahora ofrece nuevos esquemas de colores y llega Simplemenu como alternativa del lanzador Kickoff-Launcher.

Plasma fue remodelado incluyendo además un nuevo tema llamado Breath2, también tenemos una pantalla de inicio animada.

Por último, GNOME viene con la versión 3.36 inclye mejoras en la interfaz general y su aplicación de inicio de sesión. Las extensiones ahora son administradas desde una aplicación.

Gnome tiene nuevo Shell llamado zsh y las aplicaciones están ordenadas por carpetas y el color del fondo de pantalla irá cambiando durante el transcurso del día.

DESCARGA:

Manjaro XFCE

Manjaro KDE Plasma

Manjaro GNOME

by Mauro at April 27, 2020 01:54 PM

April 24, 2020

soyadmin.com

¿Cómo instalar Teamviewer en Ubuntu 20.04 Debian 10 y Linux Mint?

Teamviewer es el Software de control o acceso remoto más popular. El mismo es multiplataformas y además podemos instalarlo en diferentes distribuciones, como ya vimos hace unos días al instalarlo en centOS

En este post enseñaremos a instalar Teamviewer en la rama Debian (Debian / Ubuntu / Linux Mint).

Abrimos una Terminal y lo primero es descargar el .deb

# wget https://download.teamviewer.com/download/linux/teamviewer_amd64.deb

Luego realizamos la instalación:

# sudo apt install ./teamviewer_amd64.deb

Con esto queda instalado en nuestro enquipo

IMPORTANTE:

En caso de abrir el programa y que este no conecte o muestre «No está listo, compruebe su conexión» sigan los pasos que detallamos en este post

Video del proceso:

by Mauro at April 24, 2020 12:51 AM

April 21, 2020

soyadmin.com

UNA HERMOSURA…. Deepin lanzó la Beta de Deepin 20 + Review en Español

Deepin 20 ve la luz y llega para revolucionar el mundo linux, si la distro más hermosa de todas decidió dar un paso más y sorprender con una nueva versión de su distribución, la tan esperada Deepin 20

Se puede ver una vuelta de rosca en los detalles, han pulido aún más la estética y rediseñado gran parte de su entorno. Predominan los bordes redondeados y las transparencias.

Para los que no saben, Deepin se basa en Debian, en este caso Debian 10 Buster, tomando de este la estabilidad y confiabilidad. Deepin le da forma a los repositorios y se transforma en una Rolling Release.

Incluye el Kernel 5.3 lo que nos da lo último en compatibilidad y soporte para el último hardware. También integra un gran número de aplicaciones propias, alguna de las cuales han sido tuneadas y mejoradas desde la versión anterior.

Aun no hay fecha de lanzamiento de su versión final por lo que no es recomendable utilizar esta distribución en entornos de desarrollo y si esperar a la versión estable.

A PROBAR LINUXERO!

DESCARGAS:

Oficial: http://cdimage.deepin.com/releases/20Beta/deepin-20Beta-desktop-amd64.iso
OSDN (Más rapidez de descarga): https://osdn.net/projects/deepin/storage/20.0_beta/

REVIEW EN ESPAÑOL:

Excelente review realizada por nuestros amigos de Manos Y Máquinas Entre Vídeos, canal de YouTube indispensable y recomendado para cualquier linuxero.

by Mauro at April 21, 2020 01:36 PM

April 20, 2020

pablo.sarubbi.com.ar

Fail2ban: Enviar mails con msmtp

En primer lugar debemos instalar y configurar el cliente msmtp

apt install msmtp

Creamos un archivo /etc/msmtprc y pegamos la siguiente configuración:

defaults
tls on
account default
host smtp.midominio.com
from [email protected]

Tomando como base los archivos de configuración de Sendmail que vienen por default en la instalación del Fail2Ban, en la carpeta action.d, reemplazamos el string de envío de correo de cada uno de los archivos sendmail por msmtp.

for FILE in /etc/fail2ban/action.d/sendmail*.conf; do cp "$FILE" "${FILE/sendmail/msmtp}"; done

sed -i 's/before = sendmail/before = msmtp/' /etc/fail2ban/action.d/msmtp*.conf

sed -i 's/after = sendmail/after = msmtp/' /etc/fail2ban/action.d/msmtp*.conf

sed -i 's/sbin\/sendmail -f <sender>/bin\/msmtp/g' /etc/fail2ban/action.d/msmtp*.conf

Completo los parámetros de configuración del msmtp, en el archivo /etc/fail2ban/action.d/msmtp-common.conf

	dest = [email protected]
	sender = [email protected]

Para configurar el envío de mails del Fail2Ban debemos modificar las siguientes líneas del archivo jail.local

.
destemail = [email protected]
sender = [email protected]
.
mta = msmtp
.
action = %(action_mwl)s
.

y modificamos el action del ssh para que notifique, en este caso es el archivo 7etc/fail2ban/jail.d/defaults-debian.conf

action = iptables[name=SSH, port=ssh, protocol=tcp] 
         msmtp-whois[name=SSH]

Resta reiniciar el servicio y deberíamos recibir las notificaciones por correo

service fail2ban restart

by pablo at April 20, 2020 09:02 PM

April 13, 2020

pablo.sarubbi.com.ar

SSL en Apache con certificado de CA Windows

A modo de ejemplo lo haremos para una intranet.

Generar el CSR y la clave privada en el servidor web Apache.

Desde línea de comandos de la servidor web Apache generar un archivo csr-intranet.txt con el siguiente contenido:

[req]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn
[ dn ]
C=AR
ST=CABA
L=CABA
O=Mi Organizacion SA
OU=IT
[email protected]
CN = intranet.miorganizacion.com.ar
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = intranet.miorganizacion.com.ar

Ahora ejecutar el siguiente comando:

openssl req -new -sha256 -nodes -out intranet.csr -newkey rsa:2048 -keyout intranet.key -config csr-intranet.txt

Copiar el archivo intranet.csr al servidor donde esta la CA (Windows Server)

Generar el certificado firmado por la CA Windows

Desde línea de comandos del servidor Windows (CA):

certreq -submit -attrib "CertificateTemplate:WebServer" intranet.csr

Se selecciona la CA -> Ok

Escribir el nombre del certificado «intranet.crt» -> Guardar

Configurar el sitio seguro en el servidor web Apache

Desde la linea de comandos activar el módulo SSL

a2enmod ssl

Editar el archivo /etc/apache2/sites-available/intranet.conf con la siguiente información:

<VirtualHost intranet.miorganizacion.com.ar:443>
   DocumentRoot "/usr/share/intranet"
   ServerName intranet.miorganizacion.com.ar
   ServerAlias intranet.miorganizacion.com.ar
   <IfModule mod_ssl.c>
       SSLEngine on
       SSLProtocol All -SSLv2 -SSLv3
       SSLHonorCipherOrder     on
       SSLCertificateFile /etc/apache2/intranet.crt
       SSLCertificateKeyFile /etc/apache2/intranet.key
   </IfModule>
</VirtualHost>

Restartear el servicio:

service apache2 restart

Acceder a https://intranet.miorganizacion.com.ar desde cualquier browser para verificar el certificado.

Para descargar la CA se puede acceder vía browser desde la URL:

https://CA.miorganizacion.com.ar/certsrv/

by pablo at April 13, 2020 02:24 PM

April 11, 2020

CloudAdmins.org

ISACABCN: ¿Devops y Seguridad = DevSecOps?

El pasado 3 de marzo 2020 tuvo lugar la jornada mensual de formación de ISACA Barcelona en el Auditorio de IL3. Institut de Formació Contínua. La jornada versó sobre metodologías de desarrollo con el título de “¿Devops y Seguridad?”, y contó con la participación, de los autores del libro “DevOps y seguridad cloud”.

La Jornada fue patrocinada por Deloitte, Auren, s21sec, Víntegris, Andornet, OptimumTIC, ITACA i amb el suport institucional de Coettc, COEINF, Consejo General de Economistas, IAITG, ISMS, itSMF, UAB, ATI, Telecos.cat, CCJCC, CESICAT , BQB, Andorra Telecom i l’Institut Municipal d’Informàtica Hàbitat Urbà – Ajuntament de Barcelona.

Se habló de los retos que representa la integración continua (CI) y la entrega continua (CD) de aplicaciones de la mano de tecnologías de containers como Docker y plataformas como Kubernetes (K8S), bajo servicios de infraestructura como Amazon Web Services (AWS), o OpenNebula / OpenStack, herramientas de automatización como Terraform y de testing como Jenkins …

Se plantearon las siguientes preguntas partiendo de la base que no todo son herramientas y tecnología, ¿qué pasa con las metodologías? ¿Ágiles o no tan ágiles? ¿Otras modalidades de gestión? ¿Y respecto a la seguridad?

El cloud comprende el concepto básico por el que definiremos la entrega de servicios informáticos a clientes o usuarios por medio de una red. Este nuevo modelo de prestación de servicios permite añadir una capa de abstracción frente a los clientes que no saben dónde estos están ubicados (normalmente alojados en varios proveedores y repartidos por todo el mundo) ni la gestión de recursos que usan. Los servicios en la nube atienden las peticiones recibidas y aportan una flexibilidad y adaptabilidad de recursos frente a la demanda de forma totalmente transparente.

assistents 3

La charla se centró en la gestión de la configuración, que permite acercar todos los entornos que se utilizan para que sean lo más parecidos posible al entorno de producción final.

Uno de los pilares de DevOps es la integración continua que permite agregar los pequeños cambios realizados por los desarrolladores al conjunto de software desarrollado de manera que puedan ser testados y desplegados en entornos de desarrollo lo antes posible.

Se habló también de las diferentes estrategias de ‘testing’, todas ellas con el objetivo de minimizar los posibles errores que puedan producirse en los entornos productivos y que estos errores puedan detectarse en etapas tempranas del desarrollo cuando su corrección es más sencilla y menos costosa.

La gestión de infraestructura y de los diferentes entornos como resultado de las distintas etapas de la entrega continua. Tanto la infraestructura como los diferentes entornos deben ser extremadamente flexibles para adaptarse rápidamente a los cambios que se puedan producir en las diferentes etapas del desarrollo.

La gestión de los datos también representa un reto en cuanto que deben ser persistentes y estar disponibles a pesar de que el software que da acceso a ellos va cambiando constantemente.
Al final hubo una interesante charla entre los asistentes donde se hizo hincapié de la dificultad de introducir esta metodología en los entornos de producción y cuál es su curva de aprendizaje. Los ponentes pudieron dar su versión de ello a partir de su propia experiencia.

Nota de Prensa

Presentación

by Cloudadmin JordiGuijarro at April 11, 2020 04:02 PM

April 07, 2020

soyadmin.com

Linux Mint Debian Edition 4 (LMDE 4) ve la luz! – Review en español

Linux Mint tiene disponible para descarga la versión estable de LMDE 4, desde su web principal ya es posible descargar e instalar esta nueva versión.

Como todos saben la versión principal de Linux Mint está basada en Ubuntu, pero en paralelo la gente de Mint también desarrolla una versión con base en Debian.

Linux Mint Debian Edition (LMDE 4) está basada en Debian 10 la misma incluye todas las características de Linux Mint 19.3 pero la estabilidad y actualizaciones de Debian Stable.

LMDE4 presenta todas las mejoras incluidas en Linux Mint 19.3 (HDT, reparación de arranque, informes del sistema, configuración de idioma, mejoras de HiDPI y diseño, nuevos menús de arranque, celuloide, Gnote, Drawing, Cinnamon 4.4, iconos de estado de XApp, etc).

LMDE incluye una entrada en el menú de booteo GRUB que instala los drivers privativos de NVIDIA lo que permitirá bootear en modo live usando directamente los drives nvidia y resolviendo muchísimos problemas de compatibilidad detectados al momento de bootear en PC con placas Nvidia

También te dejamos una Review en Español

Excelente review realizada por nuestros amigos de Manos Y Máquinas Entre Vídeos, canal de Youtube indispensable y recomendado para cualquier linuxero.

by Mauro at April 07, 2020 11:51 AM

April 06, 2020

soyadmin.com

FFMpeg un conversor multimedia para nuestra consola

FFmpeg «fast forward mpeg» es un software de linea de comandos que posee un conjunto de librerias y/o programas que nos deja realizar casi cualquier tipo de cambio de nuestros archivos multimedia.

FFmpeg nos permite grabar, convertir, reproducir, hacer streaming, con nuestros archivos de audio y video. Contiene los codecs de audio y video de libavcodec lo que nos permite tener un control total de los archivos y realizar casi las modificaciones que deseemos sobre los mismos.

¿CÓMO SE INSTALA?

Debian, Ubuntu, Mint y derivados:

sudo apt install ffmpeg

Fedora, CentOS y Red Hat

yum install ffmpeg ffmpeg-devel

¿CÓMO FUNCIONA?

1) Conversión Básica:

En la conversión básica se realiza sin la necesidad de Codecs.

  • Convertir un video de MP4 a WEBM
ffmpeg -i video.mp4 video.webm
  • Convertir un audio de MP3 a OGG
ffmpeg -i audio.mp3 audio.ogg
  • Convertir un video de FLV a AVI
ffmpeg -i video.flv video.avi

2) Convertir usando Codecs:

Los codecs nos permiten convertir formatos especiales y/o complejos, los codecs actuan como codificadores / decodificadores y directamente se insertan en el comando.

  • Convertir un video WMV a FLV controlando el vitrate, resolución, audio
ffmpeg -i video.wmv -ab 56 -ar 22050 -s 320×240 video.flv

Donde:
-ar 22050: Frecuencia de audio
-ab 56: Ratio de audio en bits
-s 320×240: Resolución

  • Convertir un audio WMA a MP3 controlando el bitrate
ffmpeg -i audio.wma -f mp3 -ab 192 audio.mp3

Donde:
-ab 192: Bitrate del audio a 192bits

ffmpeg permite muchísimas combinaciones y modificaciones que nos permitirán muchísimas conversiones y mejoras. Puedes obtener más información en la web oficial de ffmpeg.

by Mauro at April 06, 2020 08:50 PM

Instalar Teamviewer en CentOS 8

Teamviewer es el software de control y acceso remoto más popular y multiplataforma. Siguiendo estos pasos podremos instalar Teamviewer en CentOS 8

¿Cómo se instala?

Lo primero que tendremos que hacer es activar los repositorios EPEL en nuestro sistema

Una vez activados los repositorios EPEL, continuamos con la instalación.

sudo rpm --import https://dl.tvcdn.de/download/linux/signature/TeamViewer2017.asc
sudo dnf install https://download.teamviewer.com/download/linux/teamviewer.x86_64.rpm

Fuente: https://linuxize.com/

by Mauro at April 06, 2020 12:36 PM

March 31, 2020

RooTeando

Entrevista En Diferido 25: Eduardo Bellido

Comenzamos una nueva  entrevista a un invitado con un perfil de administrador de sistemas e integrante del podcast Entre Dev y Ops, @entredevyops en Telegram.

Antes de todo, gracias por aceptar la invitación y apoyar a este proyecto. La primera pregunta es una presentación por parte del entrevistado, para que los lectores te puedan conocer un poco.

Entrevista En Diferido: ¿Te puedes presentar en unas líneas?

 

Eduardo Bellido:  Hola 🖖 a todos/as!

Primero ...

March 31, 2020 11:33 PM

debianhackers.net

jitsi o cómo tener tu servicio de videoconferencia

En el capítulo de hoy de ‘Escapando del influjo de Google’ os vamos a contar como instalarte, de forma rápida y sencilla, un sistema de videoconferencia que puede correr en sistemas pequeños y con el que dejarás de depender de terceros a la hora de reunirte con la familia y amigos. Porque en estos días de encierro, las herramientas de videoconferencia están haciendo su particular agosto en la recopilación de todo tipo de datos (si, zoom, hablo de ti). Como no podía ser menos, el software del que os voy a hablar es open source, se puede instalar en tus propias máquinas o nubes y se llama Jitsi.

Es modular y escalable pero para usos por debajo de los cien usuarios concurrentes no hace falta mucha máquina. Yo lo he instalado en una instancia EC2 micro y me ha servido para casi diez usuarios. Hay que tener en cuenta que el javascript del que depende la mayoría del procesamiento se ejecuta en cada navegador y que, esos si, se pueden poner al rojo vivo.

Consideraciones previas

Por supuesto, la instalación la he hecho sobre una Debian GNU/Linux 10, buster.

El proceso de instalación de jitsi es tan sencillo que este procedimiento lo puedes aplicar en tu servidor de casa o en una instancia que tengas perdida por alguna nube. Lo único que tienes que tener en cuenta es que hay ciertos puertos que deberás abrir, ya sea en tu router o en algún recurso de la nube.

Yo voy a usar apache como servidor web, porque lo conozco más y porque lo tenía instalado en el servidor pero jitsi no tiene preferencias. Durante la instalación busca el servidor web que ya esté configurado (apache o nginx) y, en caso de que no haya ninguno, instala nginx por defecto. También le voy a instalar un certificado de Let’s Encrypt al virtualhost para cifrar las comunicaciones.

Puertos necesarios

Como parto de la base de que ningun@ tenemos una conexión directa a internet en nuestros servidores sino que la pasamos por algún tamiz, llámese router, vamos a tener que abrir varios puertos de cara a que funcione todo.

ProtocoloPuertoCIDR InternetMotivo
TCP800.0.0.0/0Es necesario resolver el desafío de certbot para instalar el certificado y va por este puerto
TCP4430.0.0.0/0El tráfico llegará por este puerto
TCP44430.0.0.0/0Si no abres este puerto, no tendrás video fuera de tu LAN
UDP100000.0.0.0/0Si no abres este puerto, no tendrás video fuera de tu LAN

Subdominio

Es necesario crear un subdominio que apunte al servidor. En mi caso será meet.debianhackers.net (es ficticio, no os matéis intentando encontrarlo :)).

Instalación de jitsi

[ `dpkg -l gnupg | grep -c ^ii` != '1' ] && sudo apt install -y gnupg

echo "127.0.0.1 meet.debianhackers.net" | sudo tee -a /etc/hosts
echo "`curl ifconfig.me` meet.debianhackers.net" | sudo tee -a /etc/hosts
​
echo 'deb https://download.jitsi.org stable/' | sudo tee -a /etc/apt/sources.list.d/jitsi-stable.list
wget -qO -  https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add -
​
sudo apt update
sudo apt install -y jitsi-meet
# La primera respuesta debe ser el subdominio que has creado, meet.debianhackers.net
# La segunda respuesta debe ser generarar certificados autofirmados

Instalación del certificado de Let’s Encrypt

Es tan sencillo como ejecutar un script:

sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
sudo /etc/init.d/apache2 restart

Acceso y configuración

En este punto ya tienes tu servidor de videoconferencias instalado. Para acceder basta apuntar tu navegador favorito (firefox, firefox, firefox… :)) al subdominio que has creado, meet.debianhackers.net.

Las salas se crean bajo demanda y se destruyen cuando las abandona la última persona. Como medida de seguridad se les puede asignar una contraseña para restringir el acceso.

También se le puede instalar módulos para autenticar usuarios contra un LDAP o AD, para grabar las videoconferencias o enviarlas a YouTube y varias cosas más. Quizá en un futuro amplíe este manual…

¡Qué el confinamiento nos sea leve!

jitsisi, es mi cara de confinado…

by diego at March 31, 2020 03:48 PM

March 28, 2020

CloudAdmins.org

DevSecOps! Rancher Labs Virtual Rodeo 26/5 9:00h Virtual Cloudadmins Barcelona Meetup

Rancher a la carga!

 

Rancher Labs on Twitter:
Retos como la integración continua (CI) y la entrega continua (CD) de aplicaciones de la mano de tecnologías de containers como Docker y plataformas como Kubernetes (K8S) mediante Rancher 2 bajo servicios de infraestructura como Amazon Web Services (AWS).

Apúntate al primer HandsOn virtual en Castellano. Un Super Rodeo de la mano de Ranchers Lab y su DevOps Lead. (@Rawmind)

El LAB se desplegará sobre AWS en un entorno de labsondemand innovador gracias al patrocinio del propio Rancher Labs.

Caso de uso disponible también en el libro “Devops y Seguridad Cloud” de la Editorial UOC. (http://devopsyseguridadcloud.cloudadmins.org)

Nos vemos el próximo miércoles 26 de Mayo a las 9:00h en el 2 Meetup de Cloud Admins Barcelona.

 

Reserva tu asiento!  https://www.meetup.com/es-ES/Cloud-Admins-Barcelona/events/269674645/

by Cloudadmin JordiGuijarro at March 28, 2020 05:59 PM

debianhackers.net

La evolución del COVID-19, en tu terminal

Tan fácil como hacer un curl:

$ curl https://covid19tracker.xyz/spain

Podéis sustituir “spain” por el nombre o código de vuestro país en inglés.

Y darle las gracias (o invitar a un café) a Waren Gonzaga.

Sed buenos y quedaos en casa.

by debish at March 28, 2020 02:47 PM

GPG Agent Pinentry

Entrada exprés para contaros una pequeña batalla con pinentry-gnome3 y cifrado de mails en claws-mail, por si os topáis con el mismo problema. Resulta que claws-mail se congela cada vez que intento abrir un mail cifrado; raro, muy raro, llevo años utilizando este cliente de correo electrónico y es uno de los programas más sólidos con los que he trabajado, nunca falla. Dudo que el problema sea de claws-mail, así que me envío un mail sin cifrar y compruebo que lo abre sin rechistar. Vale, seguramente el error tenga que ver con alguno de los módulos que estoy utilizando para cifrar el correo: PGP/Core o PGP/MIME. Lanzo claws-mail en modo debug y me guardo la salida en un fichero de texto para revisarla después:

$ claws-mail --debug > debug.txt

Intento abrir un correo cifrado, la interfaz se vuelve a colgar. Compruebo el log y veo que los módulos asociados a GPG cargan sin problema. Ni idea de qué está pasando, pero se me ocurre que si el log no tira errores, pero la interfaz se cuelga quizá el problema es que el programa está esperando una acción por mi parte que no se muestra en pantalla… una acción como por ejemplo introducir la contraseña de cifrado para desencriptar los mensajes. Y allá voy, lanzo claws-mail desde el terminal y vuelvo a intentar abrir un mail cifrado ¿adivináis qué? El cuadro de diálogo para introducir la contraseña de cifrado (pinentry) me aparece en el terminal (en la versión ncurses). Acabamos de cazar el bicho, el fallo viene de la versión GUI de pinentry. Ni idea de qué versión estoy utilizando así que:

$ aptitude search '~i pinentry'

Me dice que tengo instalados:

pinentry-curses pinentry-fltk pinentry-gnome3 pinentry-gtk2

Así que me voy a /usr/bin a ver a donde apunta el binario:

$ ls -lah /usr/bin | grep pinentry
pinentry -> /etc/alternatives/pinentry

$ ls -lah /etc/alternatives/pinentry
/etc/alternatives/pinentry -> /usr/bin/pinentry-gnome3

Ahí tenemos el origen del problema, pinentry-gnome3. Si lo ejecuto desde el terminal, me dice que:

No $DBUS_SESSION_BUS_ADDRESS found, falling back to curses OK Pleased to meet you

Ahora podemos hacer dos cosas, intentar entender qué está fallando con ese programa en particular, o sustituirlo por otro. Empecemos por la segunda:


# update-alternatives --config pinentry

Y seleccionamos pinentry-gtk2. Reiniciamos gpg-agent, volvemos a probar y voilà, la ventana para meter contraseñas está de vuelta y ya podemos descifrar e-mails de nuevo. Decido desinstalar pinentry-gnome3, total claws-mail sigue estando en GTK2, así que me da un poco igual que el pinentry también lo esté.

Para los curiosos que queráis saber de dónde venía el error o cómo solucionarlo, echad un vistazo aquí.

Hacía tiempo que no me peleaba con mi debian, testing nos tiene muy mal acostumbrados…

Happy hacking!!

by debish at March 28, 2020 09:57 AM

March 21, 2020

debianhackers.net

Sway: un tiling window manager para wayland

Gentes del ciberespacio, no quepo en mí de gozo al encontrarme por pura casualidad con que sway, el fork de i3 para Wayland, está disponible en los repositorios de Debian testing. A tiro de:

# aptitude install sway

Que te instala ya de paso un gestor de fondos de escritorio, unos cuantos wallpapers y las imprescindibles suckless tools. Tampoco está de más instalar el idle management daemon (la traducción es un poco peliaguda, viene a ser un demonio para Wayland para gestionar procesos idle -es decir, que no están siendo utilizados por ningún programa en un momento dado-):

# aptitude install swayidle

Y por supuesto el screenlocker para evitar que os curioseen en los tres minutos que dejáis el ordenador para ir a por café:

# aptitude install swaylock

Sway mola. Mola de cojones. Mola tanto como i3, sólo que en lugar de utilizar Xorg utiliza Wayland. Y tiene casi todas las funciones de i3 más algunas extra (como los famosos gaps). Y si ya usas i3, vas a poder reciclar tu configuración, para que la transición sea lo más suave e indolora posible.

Dicho esto, yo ahora estoy utilizando dwm, así que no he probado extensivamente la versión de sway empaquetada en testing (1.4). Si pensáis migrar desde lo que sea que estéis utilizando, yo recomendaría mantener ambos instalados durante un tiempo, al menos hasta que hayáis comprobado que todo va bien. A su favor tengo que decir que cuando utilizaba i3 compilé una versión seguramente anterior a esta y no encontré ningún fallo que impidiera utilizarlo en el día a día.

Si os animáis a juguetear un poco, sed buenos y dejadnos vuestras impresiones en los comentarios.

Happy hacking!

Enlaces de interés:

Documentación de sway
Guía de migración desde i3
Chat de soporte
Subreddit sway

by d3b at March 21, 2020 07:16 PM

March 05, 2020

soyadmin.com

Dmidecode, comando para verificar la versión de nuestra BIOS sin reiniciar

Existe una simple y sencilla manera de saber la versión de nuestra BIOS, este proceso «normalmente» se hace reiniciando el equipo para así poder ver la versión de la bios de nuestra máquina.

Pero existe el comando Dmidecode el cual es un excelente gestor de hardware, este comando nos permite conocer a fondo nuestro hardware y con el cual podemos verificar directamente desde linea de comandos la versión e información de la Bios de nuestro equipo

¿COMO FUNCIONA?

mauro@soyadmin:~$ sudo dmidecode -t bios
# dmidecode 3.1
Getting SMBIOS data from sysfs.
SMBIOS 2.6 present.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
	Vendor: American Megatrends Inc.
	Version: R1120Y6
	Release Date: 10/11/2010
	Address: 0xF0000
	Runtime Size: 64 kB
	ROM Size: 4096 kB
	Characteristics:
		PCI is supported
		PNP is supported
		BIOS is upgradeable
		BIOS shadowing is allowed
		ESCD support is available
		Boot from CD is supported
		Selectable boot is supported
		EDD is supported
		8042 keyboard services are supported (int 9h)
		CGA/mono video services are supported (int 10h)
		ACPI is supported
		USB legacy is supported
		AGP is supported
		Smart battery is supported
		BIOS boot specification is supported
		Function key-initiated network boot is supported
		Targeted content distribution is supported
	BIOS Revision: 11.20
	Firmware Revision: 11.20

by Mauro at March 05, 2020 02:04 PM

Instalando Whois en Linux

Whois es un protocolo que se se utiliza para obtener y consultar la información acerca de los recursos de internet, ya sea nombres de dominios, IP.

El Whois se utiliza para poder obtener la información detallada de un Dominio, por ejemplo fechas de contrato, datos del registrante, DNS asignados, todo esto enlazando mediante el puerto 43 a una base de datos mundial donde se guarda esta info.

Así mismo permite que una IP nos indique de que país es, información del operador de internet que la maneja y mucha información extra ya más técnica.

¿CÓMO SE INSTALA?

Debian/Ubuntu/Linux Mint:

# sudo apt-get install whois

Arch/Manjaro:

# sudo pacman -S whois

Centos/Red Hat

# yum install whois

¿COMO SE USA?

Directamente usamos Whois hacia el Dominio o IP que necesitemos información. Por ejemplo:

# whois google.com
# whois 190.45.59.54

Para conocer más sobre como utilizar Whois, podemos consultar su manual

# man whois

by Mauro at March 05, 2020 04:23 AM

March 04, 2020

debianhackers.net

NO_PUBKEY 78BD65473CB3BD13 en un chromebook

Si en el chromebook falla la actualización de paquetes de debian del repositorio de Crostini, es porque la llave gpg ha caducado, uno de esos errores que uno no entiende y menos viniendo del mismísimo oráculo.

El error en concreto es este:

An error occurred during the signature verification. The repository is not updated and the previous index files will be used. 
GPG error: http://dl.google.com/linux/chrome/deb stable Release: The following signatures couldn't be verified because the public key is not available:
NO_PUBKEY 78BD65473CB3BD13 Failed to fetch http://dl.google.com/linux/chrome/deb/dists/stable/Release.gpg  
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 78BD65473CB3BD13
Some index files failed to download. They have been ignored, or old ones used instead.

Y la solución es sencilla aunque está escondida. No hay que descargarse la llave del servidor keyserver.ubuntu.com porque ahí no está, hay que bajarla directamente de google:

wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -

fuente: https://forums.linuxmint.com/viewtopic.php?t=309679

De porqué tengo un chromebook con linux en lugar de una estación de trabajo con chorrocientos núcleos y RAM como para competir con SkyNet hablaremos otro día… 😀

by diego at March 04, 2020 03:33 PM

March 03, 2020

soyadmin.com

¿Perdiste la contraseña de root de Ubuntu o Linux Mint? Te enseñamos a cambiarla

En este tutorial enseñaremos a resetear la clave de root de Ubuntu o Linux Mint y derivados, esto en caso de que hayamos perdido los datos de acceso. Esto también funciona en cualquier versión de Ubuntu o Linux Mint (Xubuntu, Kubuntu, Ubuntu MATE, etc)

Para realizar el cambio de clave haremos:

1) Encendemos el equipo y apretamos la tecla «Shift» Izquierda, para que nos aparezca el Grub

2) Una vez en el Grub elegimos Opciones Avanzadas.

3) Seleccionamos ahora la opción de Recóvery

4) Una vez que ingresa al Recovery Menu nos dirijimos a la Consola de Superusuario (root) que nos mostrará el promp, previo paso nos pedirá que confirmemos con «ENTER»

5) En este paso tendremos que dar permisos de escritura al sistema de archivos.

mount -o rw,remount /

6) Cambiamos el password de nuestro usuarios root. Debemos reemplazar «user» por nuestro nombre de usuario root

passwd user

Nos pedirá que ingresemos 2 veces la nueva contraseña. IMPORTANTE: No muestra ningún caracter cuando escribimos la clave, a no asustarse.

7) Por último sincronizamos el cambio y reiniciamos la PC y listo tendremos la clave modificada

sync
reboot

Te dejamos un video del proceso completo:

by Mauro at March 03, 2020 12:18 PM

RooTeando

Entrevista En Diferido 24: Ivan Patxi y José Escolar

Comenzamos una nueva  entrevista a dos entrevistados, José Escolar e Ivan Patxi, con un perfil de podcaster y productor de podcast.

Antes de todo, gracias por aceptar la invitación y apoyar a este proyecto. La primera pregunta es una presentación por parte del entrevistado, para que los lectores os puedan conocer un poco.

Entrevista En Diferido:¿Os podéis presentar en unas líneas?

 

José Escolar: Soy JosEscolar. Podcaster en la red AVpodcast. Actualmente allí produzco ...

March 03, 2020 08:43 AM

March 02, 2020

soyadmin.com

Recién salida del horno Manjaro 19 «Kiria» Review en Español

Manjaro es considerada una de las mejores distribuciones de los últimos años. Su uso ha crecido muchísmo y es una de las distros con más adeptos en el mundo linux.

Manjaro le da facilidad a Arch es una distribución Rolling Release por lo que siempre tendremos un sistema fiel y actualizado casi a diario. Basada en Arch, con un instlador y modo de uso muy sencillo.

Esta actualización viene repleta de nuevas e interesantes características y mejoras.

Manjaro 19 está disponible en sus 4 escritorios oficiales XFCE, GNOME, KDE Plasma y Manjaro Architect. Además de estas versiones, también están los escritorios de la cominidad Manjaro.

¿Qué hay de nuevo en Manjaro 19?

XFCE ha sido actualizado a la versión 4.14, mejoras en la experiencia de usuario y el gestor de ventanas. Incluye un nuevo tema llamado Matcha. Es el escritorio en el que más han invertido.

KDE actualizado a la versión Plasma 5.17, KDE Applications posee su última vesión 19.12.2, se han rediseñado y retocado muchas apps de Manjaro-KDE haciéndolas mas actuales. Los temas incluyen ahora un modo claro y oscuro.

GNOME fue llevado a la versión 3.34, fueron retocadas varias aplicaciones y el escritorio. Hay un nuevo fondo de pantalla dinámico que se usa por defecto al iniciar por primera vez.

Aparte de todo esto, Manjaro 19 añadió soporte a NVIDIA Prime, trae el Kernel 5.4 LTS junto con los últimos controladores y drivers disponibles. El gestor de paquetes Pamac 9.3 ha sido pulido y mejorado y hay una mejora en la virtualización usando Virtualbox.

¿Cómo descargamos las ISO?

Esta nueva versión ya está disponible oficalmente en la web de Manjaro, puedes descargarlas desde aqui https://manjaro.org/download/

¿Cómo actualizo desde otras versiones?

Puedes hacerlo desde tu Gestor de Actualizaciones, o bien utilizando tu consola y ejecutando:

# sudo pacman -Syu

También te dejamos una Review de Manjaro 19 XFCE en Español

Excelente review realizada por nuestros amigos de Manos Y Máquinas Entre Vídeos, canal de Youtube indispensable y recomendado para cualquier linuxero.

by Mauro at March 02, 2020 09:59 PM

Lanzada la Beta de Linux Mint LMDE 4 «Debbie» – Review en Español

Como todos saben la versión principal de Linux Mint está basada en Ubuntu, pero en paralelo la gente de Mint también desarrolla una versión con base en Debian.

Esta versión llamada Linux Mint LMDE 4 Beta basada en Debian 10 busca tener una alternativa al funcionamiento actual y principal de Linux Mint, la misma incluye todas las características de LM 19.3 pero la estabilidad y actualizaciones de Debian Stable. LMDE 4 versión BETA fue anunciada en el Blog Oficial y está disponible para su descarga.

Además de esto, LMDE4 presentará todas las mejoras incluidas en Linux Mint 19.3 (HDT, reparación de arranque, informes del sistema, configuración de idioma, mejoras de HiDPI y diseño, nuevos menús de arranque, celuloide, Gnote, Drawing, Cinnamon 4.4, iconos de estado de XApp, etc).

Pero si fuera poco, LMDE incluye una entrada en el menú de booteo que instala los drivers privativos de NVIDIA lo que permitirá bootear en modo live usando directamente los drives nvidia y resolviendo muchísimos problemas de compatibilidad detectados al momento de bootear en PC con placas Nvidia

Puedes ver más información y detalles en las Releases Notes de Linux Mint

También te dejamos una Review en Español

Excelente review realizada por nuestros amigos de Manos Y Máquinas Entre Vídeos, canal de Youtube indispensable y recomendado para cualquier linuxero.

by Mauro at March 02, 2020 03:18 PM

Midiendo la velocidad de internet desde la Consola

Speedtest-cli es una herramienta que nos permite usar speedtest.com para poder medir la velocidad de nuestra conexión a internet usando la consola.

Speedtest-cli está realizada en Python e incluye numerosas opciones como puede ser elegir los servidores según nuestra ubicación, utilizar una imagen de nuestro equipo para medir la velocidad de carga y descarga desde nuestra PC

¿CÓMO SE INSTALA?:

En Debian, Ubuntu, Linux Mint y derivadas:

sudo apt install speedtest-cli

Fedora:

sudo dnf install speedtest-cli

OpenSUSE:

sudo zypper install speedtest-cli

Arch Linux / Manjaro:

sudo pacman -S speedtest-cli

Puedes ver toda la info en la página del proyecto en Github

¿CÓMO SE USA?

Una vez instalado en nuestro sistema, el método de uso es sencillo

# speedtest

La salida nos muestra algo asi:

Otras variantes al comando son:

# speedtest --simple (resumen de la conexión)
# speedtest --list (lista los servidores cercanos a nuestra conexión)
# speedtest --server ID (usar speedtest con el ID de servidor que nos devuelve el --list)

Te dejamos un video con el proceso de instalación y uso de speedtest en Linux Mint:

by Mauro at March 02, 2020 11:48 AM

February 28, 2020

CloudAdmins.org

ISACA BARCELONA : Jornada de Formació: “Taula rodona: ¿Devops i Seguretat?”

image002

 

 

 

El pròxim dimarts, 3 de març, serà una jornada molt interessant. La ponència de formació contínua serà sobre:

“Taula rodona: Devops i Seguretat?”

 

Reptes com la integració contínua (CI) i el lliurament contínua (CD) d’aplicacions de la mà de tecnologies de tipus contenidors com Docker i plataformes com Kubernetes (K8S), sota serveis d’infraestructura com Amazon Web Services (AWS), o OpenNebula/OpenStack, eines d’automatització com Terraform i de testing com Jenkins …

Però no tot va d’eines i tecnologia, què passa amb les metodologies? ¿Àgils o no tan àgils? Altres modalitats de gestió? ¿I respecte a la seguretat?.

Algunes d’aquestes preguntes i d’altres d’interès dels assistents, seran tractades a la sessió al costat dels autors del llibre “Devops y Seguridad Cloud”.

Comptarem amb la presència de:

 

  • Jordi Guijarro (Fundació i2CAT)

  • Joan Caparrós (Consorci de Serveis Universitaris de Catalunya)

  • Lorenzo Cubero (Netcentric)

 

Dimarts 3 març 2020

Ubicació: IL3. Institut de Formació Contínua

Carrer Ciutat de Granada, 131

Barcelona

 

Es prega confirmació abans del dia 2 de març 2020 A:[email protected]

Nota: Les hores corresponents a la conferència seran reconegudes com a hores de formació a efectes de la política d’educació contínua del CISA/CISM/CGEIT/CRISC.

Així mateix, s’han establert els següents preus per l’assistència:

Socis de ISACA Barcelona. Entrada gratuïta
Convenis amb ISACA Barcelona: Places limitades
No Socis: 50€. Fins aviat,

 

by Cloudadmin JordiGuijarro at February 28, 2020 11:23 PM

February 25, 2020

debianhackers.net

¿Y si lo quiero con debian, qué?


Anastasia es una recién llegada a un montón de cosas: a debianhackers, a la administración de sistemas y, un poco menos, a linux. Pero suple su falta de experiencia con muchas ganas y batallando como una auténtica profesional. También su bisoñez le lleva a ver este sector, habitado por muchos de nosotros desde hace mucho, mucho tiempo, con otra óptica, una más limpia, con casi ninguno de los filtros que el resto, perr@s viej@s, hemos ido poniendo para no ver lo que no nos gustaba. Ella no tiene esos filtros y se cuestiona porqué los tenemos el resto y porqué aceptamos cosas que en otras condiciones no haríamos. Y todo esto porque decidió comprarse un portátil nuevo en el que instalar debian. Personalmente creo que en debianhackers nos va a venir muy bien este aire nuevo, este torbellino.

diego


Soy tan novata en todo lo que a Linux se refiere que da un poco de vergüenza, pero resulta que esta falta de experiencia también me sirve para algo positivo: las cosas con las que me voy enfrentando acaban siendo toda una aventura. Hace más o menos un año, harta de años de guerra fría con MacOS y Windows decidí pasarme a Linux. Como la hartura era considerable y tenía poco que perder, decidí tirar por lo hardcore y me pase directamente a un Debian con MATE bastante casto y con cero florituras. Aquello fue un antes y un después.

Resultó que no solo mi pobre Acer con una i3 y características más que cuestionables había rejuvenecido como después de unas vacaciones en la costa Mediterránea con un grupo de IMSERSO sino que, por primera vez en mi vida, era yo la que estaba a cargo de lo que pasaba en mi máquina, de cómo funcionaba y qué quería hacer con ella. La decisión de cambiarme a Linux sin mirar atrás también tuvo consecuencias mucho más profundas (como un cambio de mentalidad y de profesión)… pero eso ya es otra historia.

La cuestión es que el viejo Acer peleó como un jabato pero llegó el momento, después de un año de feliz luna de miel con Linux, en el que un nuevo ordenador se convirtió en algo necesario. Y fue allí donde empezó mi odisea.

Tenía cierta (mucha) urgencia a la hora de comprarme un ordenador porque necesitaba disponer de él para una fecha concreta, así que me compré un Asus “gaming” sin sistema operativo porque fue lo mejor que encontré que pudiera llegarme para la fecha prevista. En cuanto a calidad/precio parecia que había tenido suerte y sin SO me ahorraba el paso de tener que lidiar con Windows antes de meterle Debian (algo que por supuesto tenía clarísimo que iba a hacer). La fiesta empezó cuando al llegar el portátil e intentar meterle la distro, todo parecía en orden (el ordenador hacia todo el proceso de arranque con lo cual los volúmenes estaban bien asignados) pero no saltaba al entorno gráfico. Ahí fue cuando tuve mi primer golpe de Debian-realidad: era una ATI, no tenía los drivers necesarios y había que buscarlos e instalarlos. ¿Ah que con meterle el USB con el SO no vale? No, bonita, no. Dejé el proceso en manos de diego y un par de horas después el ordenador ya estaba en condiciones.

Por desgracia tuve la mala suerte de que ese Asus vino defectuoso de fábrica y poco después de empezar a usarlo (horas) se quedó completamente pillado y evidentemente tuve que devolverlo y pedir otro. Lo gracioso vino cuando llegó el segundo, misma marca y modelo, y no hubo forma humana de hacerlo funcionar con el entorno gráfico. Ya tenía exactamente los drivers que instalamos en su primo-defectuoso pero en este caso decidió que no le apetecía jugar a mi juego. Mosqueada y ya sin tiempo devolvi el segundo ordenador y diego y yo nos fuimos de compras express el último día laboral antes de mi fecha límite para tener un ordenador funcional.

Mucho podría contar de cómo estuvimos en tres grandes superficies mirando la oferta de portátiles que tenían, pero voy a resumirlo en que en ninguno de los tres sitios vimos ni un solo equipo sin sistema operativo (cosa que me esperaba pero no dejo de indignante) y que en los tres, muy amablemente nos dijeron que si modificamos el Windows que traían los portátiles (véase reescalandolo para meterle otro SO en una particion o directamente borrándolo) instantáneamente perderíamos la garantía. Otra desagradable sorpresa nos llevamos cuando los tres dependientes nos dijeron que lo mismo ocurriría al cifrar el equipo: adeu garantía. Esta información género bastante debate en mi TW y parece que no es tan sencillo ni muy legal quitar una garantía por esos motivos pero la advertencia nos la llevamos.

Finalmente elegimos un HP con muy buenas características, ligero y potente por un precio muy razonable. ¿Se acabó aquí la aventura? La Anastasia de luna de miel con Linux pensó que sí. La realidad fue que zimá (el nombre con el que bauticé a mi nueva compañera y que significa invierno en ruso) se negó a leer el USB con Debian. Sin mas. No le apetecía. Así que teniendo en cuenta que necesitaba el ordenador para el día siguiente tomé la decisión más sensata: Ubuntu y cara de chupar limones hasta que pasase la semana de formación que tenía.

Toda esta aventura me hizo pensar en lo terriblemente desagradecido que puede resultar a veces usar Linux. Y algo todavía más importante: el estoicismo con el que se tomaban ese hecho todos los informáticos con los que hablé del asunto. Escuché muchas veces aquello de “es normal, yo una vez me pase dos semanas intentando dar con el driver” o “hay que tener mucho cuidado y elegir un hardware que vaya con Linux” o “aquí tienes varias webs en las que venden portátiles 100% compatibles con Linux”. Y un 25% más caros, añado yo.

Lo más curioso de todo este asunto es que a pesar del enfado que me he llevado con Linux como SO, en ningún momento he dudado de que quería seguir usándolo (incluso aunque eso supusiese devolver ordenadores, buscar a última hora y comerme la cabeza durante horas para que hiciese algo tan simple como arrancar) Creo firmemente que algo debe cambiar para que más gente tenga acceso a una alternativa a MacOs y Windows y también que distros como Debian son una alternativa maravillosa. Pero también entiendo (ahora) que a no ser que algo cambie, la barrera de entrada es demasiado imponente para la mayoría de personas y eso es algo que no solo hay que constatar sino también combatir.

En la actualidad no solo tienes que tener en cuenta lo normal a la hora de comprarte un portátil (precio, potencia, peso, batería, calidad etc) sino que si quieres “el lujo” de tener un Debian también tienes que pensar en cosas como que las ATI pueden dar problemas mientras que una Intel es una apuesta más segura o que si es un portátil muy nuevo puede que no puedas usar tu Bluetooth sin un adaptador o te vas a pasar horas o días intentando encontrar el driver correcto para que funcione la Wifi o la cámara. Dicho todo eso y después de mi dosis de Debian-realidad, sigo diciendo que lo nuestro es para siempre y que vale la pena a pesar de todo. Ahora quizá lo esté diciendo con más criterio.

Por cierto, a día de hoy todavía tengo que quitarle el Ubuntu a zimá (muy bonito pero echo de menos el olor a deb por las mañanas) y he descubierto que mi hardware no tiene drivers disponibles para que me funcione el Bluetooth en Ubuntu. Home, sweet home.

by asiaknt at February 25, 2020 09:00 AM