Linux
Linux
Linux
Linux
Bond en debian
Comandos Linux
Comando screen
Comando sed
Comando wc
Como comprimir y descomprimir .tar .tar.gz .tgz .gz .zip y otras en Linux
Cómo hacer una copia de seguridad de todo un sistema Linux usando Rsync
Configurar iptables
Configurar ntp
Fail2ban
Ipmi linux
Kill
Procesos Linux ps
rsync
Uso de atop
Usuarios y grupos en Linux
Iscsi debian
Instalar Memcached
Parsear logs
Netstat
Túnel SSH
rsync
Instalar Redis
Referencias:
https://wiki.debian.org/Bonding
https://www.kernel.org/doc/Documentation/networking/bonding.txt
bond-mode 4
bond-miimon 100
bond_xmit_hash_policy layer2+3
bond_lacp_rate fast
slaves eth0 eth1
auto bond0.42
iface bond0.42 inet dhcp
vlan_raw_device bond0
Borrar archivos de más de X
días
Por ejemplo para borrar archivos de más de 30 días de antigüedad
Comando screen
Screen es un programa muy útil que nos permite en una sola terminal de texto (consola, sesión
telnet, etc.) tener hasta 10 ventanas (el equivalente a 10 terminales) haciendo diferentes tareas
(shell en una, lector de correo o news en otra, etc.) y pudiendo cambiar entre ellas de una manera
rápida y sencilla.
Screen suele venir en todas las distribuciones Linux. Una vez instalada la ejecutamos (screen) y ya
podremos empezar a utilizarla.
Para usar SCREEN se usa el atajo de teclado ^A (Control-A). Cuando estemos en consola y
queramos enviar una orden a screen (cambiar de "ventana", crear nuevas ventanas, etc.) se pulsa
CTRL+A y a continuación la tecla del comando a enviar (soltando CTRL-A antes de pulsar la tecla
de comando):
Tecla Comando
CTRL+a seguido de c Se crea una nueva ventana (la inicial es la 0, luego 1, 2…).
Con exit cerramos la terminal en la que estemos. Al salir de screen (si hacemos un exit en la ultima
terminal disponible) aparecerá el mensaje [screen is terminating].
[user@maquina] screen
<CTRL+a>c -> Creamos terminal 1
[user@maquina] mutt -> Abrimos el mutt
<CTRL+a>c -> Creamos terminal 2
[user@maquina] slrn -n -> Abrimos el slrn
Ahora podemos cambiar entre cualquiera de los 3 programas (mutt, slrn y una shell bash)
mediante CTRL-A seguido del número 0 (bash), 1 (mutt) y 2 (slrn) ya que las hemos creado en ese
orden. Podemos salir de cualquiera de los tres programas y estar bajo una shell bash disponiendo
áun de dicha terminal (hasta que hagamos exit).
Otros comandos SCREEN más avanzados son:
Tecla Comando
Notas
Screen soporta cosas mucho más complejas, como dettach de procesos, dejarlos
corriendo en background al cerrar los terminales, etc. Consultar el manual de
screen para más florituras.
Screen soporta copiado de pantallas, loggin, cut & paste, keybindings, bloqueado
de consola (bloquea todas :), etc.
como la A está cerca de la S, puede ser que al hacer CTRL+a le demos a CTRL+s
(comando STOP en las terminales TTY). En caso de que esto ocurra basta darle a
CTRL+Q para detener el stop.
Comandos Linux
Comando sed
El comando SED
El comando sed SED (Stream EDitor) es un editor de flujos y ficheros de forma no interactiva.
Permite modificar el contenido de las diferentes líneas de un fichero en base a una serie de
comandos o un fichero de comandos (-f fichero_comandos). El comando sed de Linux edita datos
basado en las reglas que tú le proporciones, puedes utilizarlo de la siguiente forma
Sed recibe por stdin (o vía fichero) una serie de líneas para manipular, y aplica a cada una de ellas
los comandos que le especifiquemos a todas ellas, a un rango de las mismas, o a las que cumplan
alguna condición.
# gsed '/AAA\|BBB\|CCC/!d'
Formato de uso
El formato básico de uso de sed es:
Donde:
[direccion] es opcional, siendo un número de línea (N), rango de números de línea (N,M) o
búsqueda de regexp (/cadena/) indicando el ámbito de actuación de las instrucciones. Si
no se especifica [direccion], se actúa sobre todas las líneas del flujo.
-n: No mostrar por stdout las líneas que están siendo procesadas.
Ejemplos de sustitución
Reemplazar cadenas:
# sed 's/cadenasrc1\|cadenasrc2/cadena_nueva/g'
linea 2
linea 1
Prueba
Ejemplos de Inserción
Añadir una línea antes o despues del final de un fichero ($=última línea):
Insertar una linea en blanco antes de cada linea que cumpla una regex:
Insertar una linea en blanco detras de cada linea que cumpla una regex:
Insertar una linea en blanco antes y despues de cada linea que cumpla una regex:
Ejemplos de Selección/Visualización
# sed 10q
Ver las últimas 10 líneas de un fichero:
# sed -e :a -e '$q;N;11,$D;ba'
2 linea 2
3 linea 3
linea 2 fichero 1
linea 3 fichero 1
linea 2 fichero 2
linea 3 fichero 2
Imprimir las líneas que no hagan match con una regexp (grep -v):
Ejemplos de Borrado
linea 1
Prueba
linea 2
Prueba
# sed q fichero
Imprimir párrafo si contiene (1) XXX y ZZZ o bien (2) XXX o ZZZ :
Comando wc
El comando wc (word count) es un comando utilizado en Linux para realizar cuenta desde la línea
de comando, permite contar palabras, caracteres, líneas.
Modo de uso
Ejemplo de uso
$ wc prueba1.txt prueba2.txt
40
Comandos para buscar
ficheros
grep
grep 'texto_a_buscar' arch*
Vamos a ver algunas de las formas de revisar dichos logs. Como ejemplo vamos a ver el log de un
servidor de correo Linux
En tiempo real
tail -f /var/log/maillog | grep 'texto_a_mostrar'
Cómo buscar texto en todas
las carpetas de un directorio
en linux
Para buscar un determinado texto en Linux. existen dos formas de hacerlo
Esto comprimirá todos los archivos en la carpeta /carpeta/ y sus subcarpetas Para descomprimir
archivos .tar, debemos utilizar:
gzip -q archivo
(El archivo comprime, y lo renombra como archivo.gz) Para descomprimir .gz, debemos utilizar:
gzip -d archivo.gz
bzip2 archivo
bzip2 -d archivo.bz2
unzip archivo.zip
rar -x archivo.rar
Cómo generar una clave SSH
en Linux
La autenticación con clave pública para conectarse a un servidor remoto usando el protocolo SSH
funciona con dos claves: una pública y otra privada. Para entender el funcionamiento se suele
recurrir a la metáfora del candado y la llave. La clave pública funciona como un candado y la
privada como la llave. El candado se colocará en el servidor remoto al que se quiere acceder;
cuando se intenta acceder se comprobará que la máquina que intenta conectar tiene la llave, la
clave privada.
Clientes Windows
Si necesitas crear el conjunto de claves en Windows con Putty, puedes encontrar la información
aquí. Si usas el subsistema Linux en Windows, el proceso es igual que en Linux y se describe a
continucación
# ssh-keygen -b 4096
SHA256:GKW7yzA1J1qkr1Cr9MhUwAbHbF2NrIPEgZXeOUOz3Us ylo@klar
+---[RSA 4096]----+
|.*++ o.o. |
|.+B + oo. |
| +++ *+. |
| .o.Oo.+E |
| ++B.S. |
| o * =. |
| + = o |
| + = = . |
| + o o |
+----[SHA256]-----+
Pide la ruta y el nombre del archivo que alojará las claves pública y privada. Se puede guardar
donde se quiera, pero la carpeta debe tener permisos 700 y el archivo con la clave privada 600. De
lo contrario la conexión no se establecerá. La clave privada se puede proteger a su vez con una
contraseña. De esta manera, si cae en manos no deseadas, lo tendrá un poco más difícil para
usarla.
~/.ssh
id_rsa.pub es la clave pública, la que se tiene que copiar al servidor remoto al que se quiere
acceder.
En comparación con el tipo más común de clave SSH, RSA, ed25519 trae una serie de mejoras
interesantes:
El procedimiento es sencillo:
SHA256:FHsTXXXXXXXXXXXpw4o7+rp+M1yqMyBF8vXSBRkZtkQ0RKY ateinco@ateinco.com
+--[ED25519 256]--+
| */Xoo |
| . . .===..o |
| + .Eo+.oo |
| o ..o.+. |
| . .S + . |
| . . . * |
| . . . + o . |
| o O . |
| .*Xo= |
+----[SHA256]-----+
CON SCP
user@remotemachine$ rm /home/user/uploaded_key.pub
USANDO SSH-COPY-ID
user@remotemachine$ password:
Now try logging into the machine, with "ssh 'remote-host'", and check in:
.ssh/authorized_keys
PasswordAuthentication no
PermitRootLogin no
Una vez realizados los cambios, hay que reiniciar el servidor SSH, siempre como root:
service sshd restart
dev (dispositivos)
proc (procesos)
sys (sistema)
tmp (temporales)
run
lost+found
-aAXv: los archivos se transfieren en modo "archivo", lo que garantiza que se conservan los enlaces
simbólicos, dispositivos, permisos, propiedades, tiempos de modificación, ACL y atributos
extendidos.
Configurar Interfaz pppoe
Linux
Algunos dispositivos Ethernet como los routers de Movistar funcionan con el protocolo PPPOE
(punto a punto sobre Ethernet: «Point to Point Protocol Over Ethernet»). La herramienta pppoeconf
(del paquete con el mismo nombre) configurará la conexión
Las conexiones PPP sobre ADSL son conexiones on-demand, es decir no están permanentemente
conectadas.
nano /etc/network/interfaces
Configuramos pppeo
pppoeconf
Un menú basado en texto te guiará a través de los siguientes pasos, que son:
Te pregunta si desea las opciones 'noauth' y 'defaultroute' y para eliminar 'nodetach'; elige "Sí".
Cuando tepregunte si desea conectarse al inicio, probablemente querrá decir que sí. (Esta opción
no funciona) asi que debemos de realizar cambios en los servicios
Una vez que hayas terminado estos pasos, tu conexión debería estar funcionando.
[Unit]
Description=ADSL connection
[Service]
Type=forking
ExecStart=/usr/sbin/pppd call dsl-provider
Restart=always
[Install]
WantedBy=multi-user.target
El parámetro wpa-psk puede contener bien la frase de contraseña o su versión con hash generada
con el comando wpa_passphrase. La sintaxis del comando es:
Comandos iptables
Permitir http/https
iptables -A INPUT -p tcp -m tcp -m multiport --dports 80,443 -j ACCEPT
Debian / Ubuntu
Para configurar la zona horaria en Debian usaremos el comando:
dpkg-reconfigure tzdata
cp /usr/share/zoneinfo/Europe/Madrid /etc/localtime
dpkg-reconfigure tzdata
nano /etc/ntp.conf
driftfile /var/lib/ntp/ntp.drift
# pool.ntp.org maps to about 1000 low-stratum NTP servers. Your server will
# pick a different set every time it starts up. Please consider joining the
# pool: <http://www.pool.ntp.org/join.html>
pool 0.debian.pool.ntp.org iburst
pool 1.debian.pool.ntp.org iburst
pool 2.debian.pool.ntp.org iburst
pool 3.debian.pool.ntp.org iburst
ntpq -p
Nos dará un resultado parecido a este:
root@mail:~# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
0.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
1.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
2.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
3.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
ntp.ubuntu.com .POOL. 16 p - 64 0 0.000 0.000 0.000
hora.roa.es .INIT. 16 u - 64 0 0.000 0.000 0.000
hora.rediris.es .INIT. 16 u - 64 0 0.000 0.000 0.000
remote - Indica los servidores de ntp definidos en el fichero ntp.conf. '*' indica que es el
servidor actual y el mejor origen de sincronización
'+' indica que son servidores disponibles de NTP. Los orígenes con - son considerados
como no usables.
refid - La dirección IP del servidor NTP del cual se obtiene la hora.
st - Stratum
t - Tipo. 'u' para unicast. Existen otros valores como por ejemplo local, multicast,
broadcast...
when - Tiempo transcurrido (en segundos) desde el último contacto con el servidor NTP.
poll - Frecuencia de sondeo con el servidor en segundos.
reach - Un valor en octal que indica cuando hay algún tipo de error en la comunicación
con el servidor. El valor 377 indica 100% de éxitos.
delay - El 'round trip' entre nuestro servidor y el servidor remoto.
offset - La diferencia de tiempo entre nuestro equipo local y el equipo remoto en
milisegundos.
jitter - La media de tiempos en milisegundos entre dos muestras.
Con eso termina todo lo que hay que instalar, ahora tendríamos que tocar el fichero
/etc/vsftpd.conf y modificar las líneas:
listen=YES
..
write_enable=YES
..
#connect_from_port_20=YES
listen_port=21
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
En este punto tendremos que editar el fichero /etc/vsftpd.chroot_list y añadir ahí los usuarios a los
que quedamos dejar excluidos del chroot, si es que queremos dejar excluídos a alguno.
Fail2ban
Instalación de Fail2ban
fail2ban-client -i
root@mail:~# fail2ban-client -i
Fail2Ban v0.9.6 reads log file that contains password failure report
and bans the corresponding IP addresses using firewall rules.
fail2ban>
En la consola, ejecutamos status y el jail que queremos desbloquear, o del que queremos averiguar
las IP bloqueadas
Devolverá 1.2.3.4
Donde a.b.c.d es la IP IDRAC del equipo, con usuario root y password calvin (las credenciales por
defecto del DELL)
Kill
Comando para matar todos los procesos segúnun criterio. Por ejemplo matar todos los procesos
Sogo de un servidor.
for pid in $(ps -ef | grep "sogo" | awk '{print $2}'); do kill -9 $pid; done
Listar archivos grandes linux
La forma de buscar archivos con un tamaño superior a un valor determinado.
Si solo queremas saber la ubicación sin conocer el tamaño exacto de cada uno:
root@server02:~# ps
PID TTY TIME CMD
15530 pts/0 00:00:00 ps
22082 pts/0 00:00:00 bash
Modificadores
Mostrar todos los procesos
Por defecto, ps muestra sólo los procesos que se ejecutaron desde su propia terminal ( xterm ,
acceso en modo texto o acceso remoto). Las opciones -A y -e hacen que se muestren todos los
procesos del sistema y x muestra todos los procesos que pertenecen al usuario que proporciona el
comando. La opción x también incrementa la cantidad de información que se muestra sobre cada
proceso.
ps -A
root@nms:~# ps -A
PID TTY TIME CMD
1 ? 00:00:34 systemd
2 ? 00:00:00 kthreadd
3 ? 00:00:00 rcu_gp
4 ? 00:00:00 rcu_par_gp
6 ? 00:00:00 kworker/0:0H-kblockd
8 ? 00:00:00 mm_percpu_wq
9 ? 00:01:48 ksoftirqd/0
10 ? 00:01:23 rcu_sched
11 ? 00:00:00 rcu_bh
12 ? 00:00:08 migration/0 .......
ps -f
root@nms:~# ps -f
UID PID PPID C STIME TTY TIME CMD
root 3129 3088 0 08:00 pts/0 00:00:00 -bash
root 4931 3129 0 08:04 pts/0 00:00:00 ps -f
ps -l
root@nms:~# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 3129 3088 0 80 0 - 1979 - pts/0 00:00:00 bash
0 R 0 7803 3129 0 80 0 - 2637 - pts/0 00:00:00 ps
ps j
root@nms:~# ps j
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
1 400 400 400 tty1 400 Ss+ 0 0:00 /sbin/agetty -o -p -- \u --noclear tty1 linux
3088 3129 3129 3129 pts/0 7805 Ss 0 0:00 -bash
3129 7805 7805 3129 pts/0 7805 R+ 0 0:00 ps j
ps l
root@nms:~# ps l
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
4 0 400 1 20 0 5612 1512 core_s Ss+ tty1 0:00 /sbin/agetty -o -p -- \u --noclea
4 0 3129 3088 20 0 7916 4532 - Ss pts/0 0:00 -bash
0 0 7809 3129 20 0 10548 1272 - R+ pts/0 0:00 ps l
root@nms:~# ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 400 0.0 0.0 5612 1512 tty1 Ss+ nov08 0:00 /sbin/agetty -o -p -- \u --noclear tt
root 3129 0.0 0.0 7916 4532 pts/0 Ss 08:00 0:00 -bash
root 7811 0.0 0.0 10632 3008 pts/0 R+ 08:07 0:00 ps u
ps v
root@nms:~# ps v
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
400 tty1 Ss+ 0:00 2 42 5569 1512 0.0 /sbin/agetty -o -p -- \u --noclear tty1 linux
3129 pts/0 Ss 0:00 0 873 7042 4532 0.0 -bash
7868 pts/0 R+ 0:00 0 108 10439 1276 0.0 ps v
Comandos útiles
Mostrar todos los procesos con el ID de proceso y el predecesor
ps -ef
root@nms:~# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 nov08 ? 00:00:35 /sbin/init
root 2 0 0 nov08 ? 00:00:00 [kthreadd]
root 3 2 0 nov08 ? 00:00:00 [rcu_gp]
root 4 2 0 nov08 ? 00:00:00 [rcu_par_gp]
root 6 2 0 nov08 ? 00:00:00 [kworker/0:0H-kblockd]
root 8 2 0 nov08 ? 00:00:00 [mm_percpu_wq]
root 9 2 0 nov08 ? 00:01:48 [ksoftirqd/0]
Filtrar
El comando ps con la concatenación del comando grep, permite buscar un proceso
Número de procesos
Con la concatenación del comando wc -l, permite contar los procesos
root@nms:~# ps -ef | wc -l
201
cat /proc/swaps
swapoff /dev/sdx
Elimina la partición (esta ya se puede hacer desde comando o bien desde el Gparted u otra
herramienta.
Redimensionar disco
Para esto podemos utilizar el manual de Gparted https://gparted.org/display-doc.php?name=help-
manual&lang=es
mkswap /dev/vda5
Recolocar todo
Ahora hay que editar el fstab para asignar al swap el UUID de la partición swap
Sustituiremos el UUID por el que nos ha generado nuestra nueva partición swap
/etc/initramfs-tools/conf.d
Lo editamos
update-initramfs -u
El 'secreto' de rsync es su algoritmo llamado 'delta-transfer' que reduce la cantidad de datos que
se envían vía red al enviar solo las diferencias que hay entre dos archivos a nivel de sus metadatos
(permisos, fechas de acceso, etc) y del contenido de sus datos a nivel de bloques en disco.
Sintaxis
El modo de uso de rsync es idéntica a los comandos cp o scp, es decir, rsync [opciones] origen
[destino]
El 'destino' en rsync se dice que es opcional porque si solo se usa el origen, entonces equivale a
listar el directorio o archivo origen.
Opciones
Opción
Descripción
Corta Larga
-p --perms Opción que causa en el destino establecer los permisos igual que en el origen.
-t --times Transfiere los tiempos de los archivos (atime, ctime, mtime) al destino
-g --group Establece en el destino que el grupo del archivo copiado sea igual que el origen.
Establece en el destino que el propietario del archivo copiado sea igual que el
-o --owner
origen.
-D Esto es igual que indicar las opciones --devices y --specials
--exclude
Excluye archivos que igualan el patrón o pattern indicado.
PATTERN
--include
Incluye archivos que igualan el patrón o pattern indicado.
PATTERN
Crea una prueba de test de lo que realmente ocurrirá sin esta opción, sin realizar
ningún cambio. Es decir, la salida mostrada será muy similar a lo que realmente
-n --dry-run
pasará si no se incluye --dry-run. Generalmente se usa junto con la opción --
verbose y la opción --itemize-changes
--itemize- Reporta una lista de los cambios realizados en cada archivo, incluidos cambios en
-i
changes sus atributos. Esto es equivalente a utilizar -vv en versiones obsolteas de rsync .
--remove- Remueve los archivos en el origen (no directorios) si en el destino estos fueron
source-files exitosamente duplicados o copiados.
--log-
Bitacoriza lo que se ha realizado en el ARCHIVO indicado.
file=ARCHIVO
--progress Muestra el avance o progreso de los archivos que están siendo transferidos.
--max-
No transfiere cualquier archivo más grande que el TAMAÑO indicado.
size=TAMAÑO
--min-
No transfiere cualquier archivo más pequeño que el TAMAÑO indicado.
size=TAMAÑO
Ejemplos
Sincronizar entre dos carpetas
rsync -avP /carpeta1/* /carpeta2/.
A continuación, iniciamos el servicio atop para comenzar el registro automático de recursos del
sistema:
Nota: atop crea automáticamente una tarea en cron para comenzar a registrar a
medianoche si no se está ejecutando.
INTERVAL=60
atop -r /var/log/atop/atop_*****
Donde *** es el valor de registro real (fecha). Para moverse entre los intervalos puedes usar las
flechas del teclado o teclas de acceso rápido t y Shift + T .
mv /etc/cron.d/atop /root/atop
Lista de usuarios
Se encuentra en el fichero /etc/passwd
contraseña: esta es una contraseña cifrada por una función unidireccional (crypt), que utiliza DES,
MD5, SHA-256 o SHA-512. El valor especial «x» indica que la contraseña cifrada está almacenada
en /etc/shadow;
gid: número único del grupo principal del usuario (de forma predeterminada, Debian crea un grupo
específico para cada usuario);
GECOS: campo de datos que generalmente contiene el nombre completo del usuario;
directorio de inicio de sesión, asignado al usuario para almacenar sus archivos personales (al que
generalmente apunta la variable de entorno $HOME);
nombre de usuario;
contraseña cifrada;
varios campos que administran el vencimiento de la contraseña.
chfn
chfn (cambiar el nombre completo: «CHange Full Name»), reservado para el superusuario (root),
modifica el campo GECOS
chsh
(cambiar consola: «CHange SHell») le permite a un usuario cambiar su consola de inicio de sesión;
sin embargo las opciones disponibles estarán limitadas a aquellas mencionadas en /etc/shells; el
administrador, por el otro lado, no está limitado por esta restricción y puede configurar la consola a
cualquier programa de su elección.
chage
chage (cambiar edad: «CHange AGE») permite al administrador cambiar la configuración de
expiración de la contraseña (la opción -l usuario mostrará la configuración actual). También puede
forzar la expiración de una contraseña utilizando la orden passwd -e usuario, que obligará al
usuario a cambiar su contraseña la próxima vez que inicie sesión.
passwd -l usuario
Este comando permite desactivar una cuenta (bloquear el acceso a un usuario). Una cuenta
desactivada significa que el usuario no podrá iniciar sesión y obtener acceso a la máquina. La
cuenta se mantiene intacta en el equipo y no se eliminarán archivos o datos.
Lista de grupos
Se encuentra en el fichero /etc/group. Una simple base de datos de texto en un formato similar al
del archivo /etc/passwd con los siguientes campos:
contraseña (opcional): sólo es utilizada para unirse a un grupo cuando no es un miembro normal
gid: número único de identificación del grupo;
lista de miembros: lista separados por comas de nombres de usuario que son miembros del grupo.
Personalizar bash mediante
.bashrc
export LS_OPTIONS='--color=auto'
eval "$(dircolors)"
sticky bit
Se trata de un permiso de acceso que puede ser asignado a ficheros y directorios en sistemas UNIX
y similares. Aunque históricamente su fin eran otro, actualmente el sticky bit se utiliza sobre
directorios.
Cuando se le asigna a un directorio, significa que los elementos que hay en ese directorio solo
pueden ser renombrados o borrados por su propietario o bien por root. El resto de usuarios que
tengan permisos de lectura y escritura, los podrán leer y modificar, pero no borrar.
Para asignar el permiso se usa el modificador t o bien mediante chmod con un 1 al principio.
O bien
Si un usuario intenta borrar un fichero en una carpeta con sticky bit, no podrá.
SUID
Cuando se activa el bit SUID sobre un fichero significa que el que lo ejecute va a tener los mismos
permisos que el que creó el archivo. Esto es útil en algunas ocasiones, aunque hay que utilizarlo
con cuidado, ya que puede acarrear problemas de seguridad.
ls -l ejecuta.sh
chmod -x ejecuta.sh
ls -l ejecuta.sh
Observamos que en la última línea le quitamos el servicio de ejecución al archivo y en los permisos
se reemplaza la s minúscula por la S mayúsculas.
SGID
El bit SGID es lo mismo que SUID, pero a nivel de grupo. Esto es, todo archivo que tenga activo el
SGID, al ser ejecutado, tendrás los privilegios del grupo al que pertenece.
Es bastante útil til queremos configurar un directorio para que colaboren diferentes usuarios. Si se
aplica este bit al directorio, cualquier archivo creado en dicho directorio, tendrá asignado el grupo
al que pertenece el directorio.
chmod g+s
O bien
inodo o nodo índice es un elemento estructural propio de los sistemas de archivos empleado el
sistemas tipo UNIX identificado de modo único y que contiene los atributos (nombre, fechas,
ubicación, permisos de acceso, etc) del objeto de datos que pueda contener el sistema de ficheros:
'_' archivo regular (denotado por un guión en el inodo mostrado con ls)
'd' un directorio
'b' archivo especial de bloques (normalmente un dispositivo del almacenamiento o
comunicación)
'c' archivo especial de caracteres
'l' enlace simbólico (link) a otro objeto de datos
'p' named pipe o "tubo nombrado"
's' socket de dominio
ls nos lo muestra de cada fichero en primer lugar lo que denominamos máscara de modo del
fichero: una máscara de 16 bits que se muestra como una cadena de varios caracteres que indica
la siguiente información:
Los primero 4 bits de información (bits 15-12) indican el tipo de fichero (descritos anteriormente) el
comando ls nos lo muestra como el primer carácter de la cadena (-, d, b, c, l, p, s)
Atributos extendidos en los
ficheros de Linux
Podemos clasificar los atributos extendidos en los de sistema que son los que proporcionan
cualidades al archivo y los de usuario que permiten ampliar la información del archivo. También es
aplicable a los directorios.
Los sistemas de archivos ext2/3/4 permiten asignar a los ficheros unos atributos que modifican las
cualidades o el comportamiento de los mismos. No son permisos, pero alguno de ellos realiza una
función similar al limitar el poder modificar o eliminar su información. Estos atributos sólo son
modificables por el administrador.
chattr +i prueba.txt
Estos atributos no tienen ninguna influencia en los permisos de ficheros, añaden pares de clave-
valor a los ficheros.
Para poder utilizarlos es necesario haber instalado el paquete attr y que el sistema de ficheros
haya sido montado con la opción user_xattr.
Para añadir o quitar atributos usaremos el comando attr con las siguientes opciones:
Debemos tener en cuenta que alguna de las operaciones que se realizan con los ficheros pueden
eliminar los atributos extendidos, para evitarlo hay que agregar opciones especificas al comando:
cp –preserve=mode,ownership,timestamps,xattr
rsync –xattrs
Filtrado de paquetes en
Linux
Este capítulo se ocupará de la máquina de estado y la explicará en detalle.
La máquina de estado es una parte especial dentro de iptables que en realidad no debería llamarse
máquina de estado, ya que en realidad es un seguimiento de conexiones. Sin embargo, la mayoría
de la gente lo reconoce por el primer nombre. El seguimiento de la conexión se realiza para que el
marco de Netfilter conozca el estado de una conexión específica. Los cortafuegos que implementan
esto generalmente se denominan cortafuegos con estado. Un firewall con estado generalmente es
mucho más seguro que los firewalls sin estado, ya que nos permite escribir conjuntos de reglas
mucho más estrictos.
Los paquetes se pueden relacionar con conexiones rastreadas en cuatro estados diferentes. Estos
se conocen como NEW, ESTABLISHED, RELATED and INVALID (NUEVOS, ESTABLECIDOS,
RELACIONADOS y NO VÁLIDOS). Discutiremos cada uno de estos en profundidad más adelante. Con
la coincidencia --state podemos controlar fácilmente quién o qué puede iniciar nuevas sesiones.
El seguimiento de la conexión se realiza mediante un marco especial dentro del kernel llamado
conntrack
Como ha visto, los paquetes pueden adoptar varios estados diferentes dentro del propio núcleo,
según el protocolo del que estemos hablando. Sin embargo, fuera del núcleo, solo tenemos los 4
estados descritos anteriormente. Estos estados se pueden usar principalmente junto con la
coincidencia de estado que luego podrá hacer coincidir los paquetes en función de su estado de
seguimiento de conexión actual. Los estados válidos son NUEVO, ESTABLECIDO, RELACIONADO y
NO VÁLIDO. La siguiente tabla explicará brevemente cada estado posible.
El estado NUEVO nos dice que el paquete es el primer
paquete que vemos. Esto significa que se emparejará el
primer paquete que vea el módulo conntrack, dentro de
una conexión específica. Por ejemplo, si vemos un paquete
SYN y es el primer paquete que vemos en una conexión,
coincidirá. Sin embargo, el paquete también puede no ser
NEW
un paquete SYN y aun así considerarse NEW. Esto puede
generar ciertos problemas en algunos casos, pero también
puede ser extremadamente útil cuando necesitamos
recuperar conexiones perdidas de otros firewalls, o cuando
una conexión está en timeout pero en realidad no está
cerrada.
apt update -y
apt-get install open-iscsi multipath-tools
multipath -ll
nano multipath.conf
cat multipath.conf
nano /etc/multipath/wwids
Contendrá lo siguiente
# Multipath wwids, Version : 1.0
# NOTE: This file is automatically maintained by multipath and multipathd.
# You should not need to edit this file in normal circumstances.
#
# Valid WWIDs:
/3600c0ff00027f44e1231865801000000/
cat wwids
nano /etc/iscsi/iscsid.conf
iqn.1986-03.com.hp:storage.msa2040.162127e7a9
iscsid open-iscsi
nano /etc/multipath.conf
defaults {
find_multipaths "on"
polling_interval 2
path_selector "round-robin 0"
path_grouping_policy multibus
uid_attribute ID_SERIAL
rr_min_io 100
failback immediate
no_path_retry queue
user_friendly_names yes
}
blacklist {
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^(td|hd)[a-z]"
devnode "^dcssblk[0-9]*"
devnode "^cciss!c[0-9]d[0-9]*"
device {
vendor "DGC"
product "LUNZ"
}
device {
vendor "EMC"
product "LUNZ"
}
device {
vendor "IBM"
product "Universal Xport"
}
device {
vendor "IBM"
product "S/390.*"
}
device {
vendor "DELL"
product "Universal Xport"
}
device {
vendor "SGI"
product "Universal Xport"
}
device {
vendor "STK"
product "Universal Xport"
}
device {
vendor "SUN"
product "Universal Xport"
}
device {
vendor "(NETAPP|LSI|ENGENIO)"
product "Universal Xport"
}
}
blacklist_exceptions {
wwid "3600c0ff00027f44e1231865801000000"
}
multipaths {
multipath {
wwid "3600c0ff00027f44e1231865801000000"
alias mpath0
}
}
Más información
https://elkano.org/blog/set-up-multipath-iscsi-targets-on-debian/
Balanceador con HAProxy y
Keepalived
nano /etc/keepalived/keepalived.conf
global_defs {
notification_email {
keepalived@ateinco.com.com
notification_email_from keepalived@ateinco.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id TESTATEINCO_DEVEL
vrrp_script chk_haproxy {
interval 1
weight -2
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
mcast_src_ip 172.30.15.225
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 876543
virtual_ipaddress {
track_interface {
eth0
track_script {
chk_haproxy
nano /etc/haproxy/haproxy.cfg
global
chroot /var/lib/haproxy
user haproxy
group haproxy
daemon
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# See: https://ssl-config.mozilla.org/#server=haproxy&server-
version=2.0.3&config=intermediate
ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-
SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:E>
ssl-default-bind-ciphersuites
TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
defaults
log global
mode http
option httplog
option dontlognull
listen galera_cluster
bind 0.0.0.0:3306
mode tcp
#option tcplog
option tcpka
balance source
listen http_cluster
bind 0.0.0.0:80
mode http
stats enable
#option tcplog
listen stats
bind 0.0.0.0:8080
mode http
option httplog
stats enable
stats uri /
nano /etc/memcached.conf
Ahora desplázate hacia abajo y busca la siguiente línea y verifica el "-l" (dirección en la que
eschucha) si este parámetro existe. Déjalo como predeterminado a menos que tengas una IP
interna en una red local o una IP externa desde el exterior; debes modificar la dirección IP
predeterminada de 127.0.0.1 a la nueva dirección IP.
-l 127.0.0.1
Suspensión del HDD en
Linux hdparm
Puedes habilitar el modo de espera en un dispositivo de almacenamiento, desactivar el modo de
espera por completo o ajustar el tiempo actual que tarda un disco duro en entrar en modo de
espera. Esto ahorra consumo en discos de backup o que no están permanentemente en uso
Cada vez que un disco duro no tiene nada que hacer, espera un cierto período de tiempo y luego
entra en modo de suspensión. Para ingresar al modo de suspensión/espera, un disco duro tiene
que estacionar su cabezal y detener el giro de los platos.
hdparm -s 0 /dev/sda
Para ajustar la cantidad de tiempo de inactividad que transcurre antes de que un disco duro entre
en modo de espera, usaremos la opción -S
Los valores posibles están entre 1-255. Multiplica el valor por 5 y obtendrás la cantidad de
segundos a los que el disco duro entra en modo de espera.
/dev/sda:
grep
GREP te permite ejecutar patrones de búsqueda en archivos. La sintaxis es muy sencilla
Ten en cuenta que las comillas simples o dobles son imperativas alrededor del texto si es
más de una palabra.
Puedes usar el comodín (*) para seleccionar todos los archivos en un directorio.
Ejemplo:
to=<etaboada@ateinco.net>
to=<etaboada@ateinco.net>
Zgrep
Funciona igual que grep, pero con la diferencia que permite buscar en archivos comprimidos
modificadores de grep
-n (--line-number)
enumera los números de línea, es decir imprime las coincidencias de un texto junto con los
números de línea
to=<etaboada@ateinco.net>
to=<etaboada@ateinco.net>
-c (--count)
imprime el número de líneas de coincidencias
-i (--ignore-case)
Utilizado para la ignorar la distinción entre mayúsculas y minúsculas
l (--files-with-matches)
imprimir nombres de archivos que coincidan con un patrón
-o (--only-matching)
imprimir solo el patrón coincidente
-A (--after-context) y -B (--before-context)
Imprimir las líneas después y antes (respectivamente) del patrón coincidente
-R (--dereference-recursive)
Búsqueda recursiva.
Por defecto, grep no busca en directorios. Si tú intentas hacerlo, obtendrás un error ("Es un
directorio"). Con la opción -R, se realiza la búsqueda de archivos entre directorios y subdirectorios
netstat -a
--More--
netstat -at
netstat -au
nestat -l
Túnel SSH
Muchas veces necesitamos acceder a una red remota, o bien navegar desde determinada IP para
tareas como eliminar IP bloqueadas por envíos de correo no deseados. La forma de hacerlo es
mediante un túnel SSH en el equipo que tiene dicha IP
Sintaxis
Por ejemplo si queremos acceder a un servidor por Terminal Server que tiene bloqueados los
accesos excepto en la red remota
sh -L 13389:10.0.100.10:3389 10.0.100.250
Para ello deberemos habilitar el forwarding TCP en el SSH. EN nuestro archivo /etc/ssh/sshd.config.
Deberemos comprobar que está habilitado
AllowTcpForwarding
sysctl net.ipv4.ip_forward=1
Localizar un disco físico
mediante el led de actividad
Cuando tenemos que sustituir un disco, bien porque lo vamos a cambiar por otro mayor, o bien
porque el disco está en fallo, o el estado SMART es de sugerencia de cambio, a veces nos
encontramos que tenemos un servidor con múltiples discos, normalmente el orden se asigna según
la bahía en la que se encuentra el disco, es decir
Pero para estar seguros de que disco es el que queremos cambiar, podemos ejecutar este
comando que nos iluminará el led de actividad del disco correspondiente
dd if=/dev/disk/by-id/disco-en-fallo of=/dev/null
Otro método es instalar la utilidad ledctl que se encuentra en el paquete Debian ledmon
ledctl locate=/dev/sdX
ssh
Ten en cuenta que cualquier script PHP que tenga acceso al Redis, al no ir autenticado,
PUEDE ACCEDER A TODO
Instalar Redis
Instalar Redis en un servidor es una operación muy simple simplemente hay que ejecutar un apt
get install
Una vez instalado al igual que con otros paquetes Debian, será necesario configurar que se inicie el
servicio al reiniciar el equipo
Nos saldrá el siguiente mensaje como que se ha activado el servicio de Redis al inicio
/lib/systemd/systemd-sysv-install.
Para comprobar que está funcionando, sólo tenemos que comprobarlo a través del redis-cli
root@tecnocratica:~# redis-cli
127.0.0.1:6379>
Configurar Redis con Wordpress
En este artículo puedes ver un ejemplo de como configurar Wordpress para usar Redis
Autenticación en Redis
Para habilitar la autenticación en Redis, usaremos la opción requirepass
Para ello en nuestro fichero redis.conf que se encuentra en la carpeta etc, buscaremos esta opción
# requirepass foobar
Como vemos está comentada, la descomentaremos y pondremos la clave que deseemos, por
ejemplo:
requirepass HRk2h8NsUq41y5kc
root@tecnocratica:~# redis-cli
root@tecnocratica:~# redis-cli
127.0.0.1:6379>AUTH HRk2h8NsUq41y5kc
Al igual que ntp, chrony permite sincronizar fuentes de referencias externas para mantener la hora
de los servidores, pero ambos tienen algunas diferencias.
Chrony permite sincronizar con servidores horarios externos y a la vez servir de fuente de hora
para otros servidores de nuestra red. En el caso de ntp es sólo cliente y hay que instalar ntpd para
que haga de servidor de hora.
Además chrony responde de forma más rápida y la sincronización tarda mucho menos, por lo que
es ideal sobre todo para máquinas virtuales, que se pueden encender y apagar más a menudo.
Instalar chrony
Para instalar chrony ejecutaremos como siempre un simple comando, este instalará por si solo los
dos sistemas (Chronyc y Chronyd) es decir el cliente y el demonio.
Nota: antes de activar chrony, hay que deshabilitar y parar el servicio ntp y el ntpd en caso
de que estuvieran instalados y habilitados
chronyc tracking
# chronyc tracking
Ref time (UTC): hora UTC en el cual se realizó la última medición de la fuente de referencia.
System Time: retraso del reloj del sistema desde el servidor sincronizado.
Frequency: velocidad a la cual el reloj del sistema (el RTC) sería erróneo en caso de que chronyd
no lo ajuste. las unidades van reflejadas en ppm (partes por millón).
chronyc sources
Ejemplo
root@eduardo:~# chronyc sources
===============================================================================
En este fichero podemos configurar parámetros como por ejemplo el servidor o servidores (pool)
que vamos a usar como referencia, los intervalos de sincronización, etc.
En este ejemplo, vemos que se usa el pool de debian. Si tenemos nuestros servidores en la red de
Neodigit o de Tecnocrática, podemos usar ntp.neodigit.net como referencia.
confdir /etc/chrony/conf.d
server ntp.neodigit.net
Ahora comprobamos
===============================================================================
Stratum : 3
lsblk
El comando lsblk, nos permite obtener una lista de dispositivos de bloques en nuestro sistema
root@storageserver:~# lsblk
lsblk -o NAME,SERIAL
Nos dará una salida parecida a esta, en la que vemos el nombre (sda,sdb,sdc,etc) y el número de
serie a la derecha
NAME SERIAL
sda S4CNNEXXXXXX55H
├─sda1
├─sda2
└─sda3
sdb XXXXX40PQ4R
├─sdb1
└─sdb9
sdc XXXXX40QHM1
├─sdc1
└─sdc9
sdd XXXXX40RCTD
├─sdd1
└─sdd9
sde XXXXX40REG1
├─sde1
└─sde9
sdf XXXXX40RR2L
├─sdf1
└─sdf9
sdg WD-XXXXX282LWK
├─sdg1
└─sdg9
sdh XXXXX0RDDP
├─sdh1
└─sdh9
sdi XXXXX8B49Y
├─sdi1
└─sdi9
sdj S4CNXXXXX50K
├─sdj1
├─sdj2
└─sdj3
sdk XXXXX0RQJW
├─sdk1
└─sdk9
sdl XXXXXGTWSBY
├─sdl1
└─sdl9
sdm XXXXX0QQPP
├─sdm1
└─sdm9
sdn XXXXX0RR26
├─sdn1
└─sdn9
smartctl
La utilidad smartctl, nos permite además de mostrar el número de serie, realizar test y obtener
información sobre el ciclo de vida de los discos. Si no está instalada, pordemos instalarla con:
smartctl -i /dev/sdb
SATA Version is: SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Si ejecutamos dmidecode a secas, nos mostrará todos los parámetros de hardware del sistema,
como procesador, número de serie, memoria RAM, etc.
Opciones de dmidecode
Obtener el número de serie
dmidecode -s system-serial-number
Ejemplo
89AZXR42
dmidecode --type 17
O bien el comando
dmidecode -t memory
# dmidecode 3.4
Memory Device
Size: 8 GB
Set: 1
Locator: DIMM_A1
Type: DDR3
Manufacturer: 00XXXXXXXX
Rank: 2
Ejemplo de salida
lsb_release -d
root@server:~# lsb_release -d
cat /etc/debian_version
11.8
Actualizar
Actualizar loss paquetes de Debian 11
Antes de actualizar de Debian bullseye a bookworm, es esencial asegurarse de que todos los
paquetes existentes estén actualizados y actualizados a sus últimas versiones disponibles.
Ejecutamos
apt update
apt upgrade
apt dist-upgrade
Una vez que se completen las actualizaciones, limpia los paquetes residuales y los archivos de
configuración usando los siguientes comandos:
apt autoclean
Es conveniente si no estás seguro hacer copia de seguridad de los archivos de apt list
Este comando utiliza la utilidad sed para reemplazar todas las apariciones de "bullseye" con
"bookworm" en el archivo /etc/apt/sources.list.
Verifica si el archivo de lista de fuentes se ha actualizado con los nuevos enlaces del repositorio
ejecutando el siguiente comando:
cat /etc/apt/sources.list
free-firmware
Ejecutamos la actualización
Para actualizar, ejecutaremos un update de las fuentes
apt update
Precaución (Opcional)
En ciertos escenarios, realizar una actualización completa del sistema como se explica en el
siguiente paso puede eliminar una cantidad significativa de paquetes que deseas conservar. Por lo
tanto, puedes realizar la actualización de dos partes que consta de una actualización mínima
seguida de una actualización completa.
La actualización mínima garantiza la actualización de todos los paquetes existentes sin instalar ni
eliminar ningún paquete adicional. Para iniciar la actualización mínima, usa el siguiente comando:
Ahora que las fuentes de paquetes se han actualizado, puedes actualizar el sistema.
Ejecuta el siguiente comando para realizar una actualización completa del sistema a Debian 12:
apt full-upgrade