Nuestra Biblia de LINUX

Bueno el objetivo de este tutorial es hacer un resumen de esos comandos en linux que a veces necesitamos cuando se nos da una situación atípica. Yo les daré los que he acumulado en mi poco tiempo usando linux.
Ahora lo que pretendo es que todos participemos en este tutorial. En los comentarios ustedes podrán darme los comandos que han tenido que usar para resolver una situación que se les haya presentado. Yo ire sumando sus comandos a los míos y así poco a poco ira creciendo nuestra BIBLIA de LINUX.
Para que esto no se convierta en un sin sentido y uno pueda buscar bien lo que desea, pondré una estructura organizada de cómo deben dar sus aportes.

  • Problema que se les presento
  • Metodología

Si su solución es más compleja entonces debe escribir un tutorial en forma de TIPS. Bueno entonces comenzaremos con nuestra BIBLIA.


Problema: Cuando creamos un CT en Proxmox y queremos acceder por SSH y no podemos.
Metodología: Debemos editar el fichero de configuración del SSH de nuestro CT.
nano /etc/ssh/sshd_config
Y dentro editamos lo siguiente:

Reiniciamos el CT y ya estaremos listos para entrarle por SSH a ese CT.


Problema: Agregar llaves de un repo
Metodología: Pondré 2 formas de hacerlo y seguro Uds. me ayudaran con más. En dependencia del formato que tengamos de nuestra llave será el comando que usaremos.

En este ejemplo añado la llave de zimbra (formato gpg) a las llaves de confianza usando el comando gpg
apt-key add influxdb.key
Este otro es agregando la llave .key usando el comando apt-key


Problema: Instalar squidview
Metodología: Instalamos squidview
apt install squidview
Y para que nos funcione en las versiones de squid 3 debemos crear un enlace simbólico.
ln -s /var/log/squid3/ /var/log/squid


Problema: Usar proxy para el comando curl
Metodología: La forma general es
export http_proxy=http://proxy_server:proxy_port/
export https_proxy=https://proxy_server:proxy_port/
También puede definirlo directo en el comando


Problema: Usar proxy para perl
Metodología: Invocamos el shell CPAN
perl -MCPAN -e shell
Entraremos al shell y veremos un prompt como este:
cpan[2]>
y escribimos el siguiente comando:
cpan[2]> o conf init /proxy/
Ahora nos pedirá que configuremos el proxy:

Donde a.b.c.d es la ip del proxy y si tenemos un proxy con autenticación debemos proporcionarle usuario.


Problema: Ejecutar ficheros de 32 bits en una plataforma de 64 bits
Metodología: Solamente debemos argegar la arquitectura i386 e instalar las siguientes librerias libc6:i386,libncurses5:i386,libstdc++6:i386.


Problema: Montar un HDD por ID (Al montarlo de esa manera no nos importara que letra le asigno LINUX)
Metodología: Extraemos el UUID del HDD que queremos montar usando el comando blkid

En este ejemplo vemos como el HDD llamado BACKUP que es NTFS al cual linux asigno sdb1 tiene un UUID=”943C3E093C3DE740″ y es nuestro HDD externo que queremos montar.

Montarlo manualmente:

mount.ntfs-3g UUID=943C3E093C3DE740 /media/externo

Montarlo por el FSTAB:


Problema: Usar proxy para python
Metodología: Definimos en el comando, el proxy

pip3 install –proxy=http(s)://[email protected]:port somepackage


Problema: Rotar los logs del sistema
Metodología: Editamos el rsyslog

nano /etc/logrotate.d/rsyslog


Problema: Saber la version de linux.
Metodología: Podemos encuestar nuestra distro usando cualquiera de estos comandos.
uname -a
cat /etc/*release
cat /etc/*version
cat /etc/issue
cat /etc/issue.net
cat /proc/version
cat /etc/debian_version
lsb_release -a

En el caso de lsb_release debemos instalar esa opcion.


Problema: Usar proxy con WGET
Metodología: Tenemos que editar el fichero “/etc/wgetrc“. Debemos des comentar las siguientes líneas y ponerle nuestros datos.


Problema: Crear Lista de usuarios en ZIMBRA
Metodología: Usaremos el comando zmaccts. Primero debemos usar

su zimbra


Problema: Declarar una variable que contenga el nombre de la interface de red que esta UP, para usarla en iptable sin importar que nombre tenga esa interface.

Metodología:

INET=$(ip -o link show | awk ‘{print $2,$9}’ | grep UP | cut -d’ ‘ -f1 | sed ‘s/.$//g’)

iptables -A INPUT -i $INET -s 10.0.1.0/24 -p icmp -m state –state NEW -j ACCEPT


Problema: Codificar y decodificar ficheros – Base64

Metodología:

Para codificar la imágen

base64 /path/file.png > /path/file.b64

Para decodificar la imágen

base64 -d /path/file.b64 > /path/file.png


Problema: Cambiar permisos

Metodología:El comando chown permite cambiar el propietario de un archivo o directorio en sistemas tipo UNIX. Puede especificarse tanto el nombre de un usuario, así como el identificador de usuario (UID) y el identificador de grupo (GID). Opcionalmente, utilizando un signo de dos puntos (:), o bien un punto (.), sin espacios entre ellos, entonces se cambia el usuario y grupo al que pertenece cada archivo. Cada archivo de Unix tiene un propietario y un grupo, que se corresponden con el usuario y el grupo de quien lo creó.

El usuario root puede cambiar el propietario de cualquier archivo o directorio. En algunos sistemas está restringido el cambio de propietarios por medio de chown para usuarios normales por motivos de seguridad. En los sistemas que está permitido, además de cambiarse el propietario, pueden alterarse otros indicadores del archivo, como el sticky bit.

Sintaxis:
Shell> chown -hR user folder
Shell> chown -hR user file.ext
Shell> chown -hR user:group folder
Shell> chown -hR user:group file.ext


Problema: Encontrar una cadena de texto dentro de un fichero

Metodología: Para ello usaremos el comando grep. Grep toma una expresión regular de la línea de comandos, lee la entrada estándar o una lista de archivos, e imprime las líneas que contengan coincidencias para la expresión regular.

Shell> grep text file.txt

Sintaxis:

$ grep [opciones] [expresión regular] [archivo]


Problema: Crear isos

Metodología: Usaremos el comando dd (Dataset Definition) es una herramienta muy sencilla que nos permite hacer copias de discos, particiones, archivos, o dispositivos, incluso se puede utilizar de formas alternativas como por ejemplo limpiar la información que contiene el disco.

Es generalmente usado para realizar operaciones avanzadas sobre dispositivos o archivos, como pueden ser:
*Transferencias de datos específicos.
*Copias de seguridad de la información «en crudo» (raw data).
*Conversión de algunas codificaciones soportadas y/o caracteres predefinidos.

Shell> dd if=/dev/dvd of=dvd.iso
Shell> dd if=/dev/cdrom of=cd.iso
Shell> cat /dev/cdrom > cd.iso
Shell> mkisofs -o /destino/cd.iso /carpeta_para_imagen


Problema: Como unir 2 pdf en uno solo desde la terminal

Metodología: Usaremos el comando gs
Shell> apt-get install gs
Shell> gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=ab.pdf -f a.pdf b.pdf


Problema: Necesito reducir un pdf por que mee ocupa demasiado espacio, y necesito subirlo a una web.

Metodología: No necesitas ningún programa de pago, puedes reducirlo con un simple comando en linux. Comprobamos que tenemos instalado Ghotscript y Gsfonts. Podemos instalarlos desde Debian, Ubuntu o derivados, con el siguiente comando:

$ sudo apt-get install ghostscript gsfonts

Una vez hecho esto, reducimos el pdf con el siguiente comando:

$ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=PDFREDUCIDO.pdf PDFORIGINAL.pdf

Donde “PDFREDUCIDO.pdf” será sustituido por el nombre que quieras darle al fichero resultante, y “PDFORIGINAL.pdf” será el nombre del archivo de origen.


Problema: Enlazar un fichero o carpeta

Metodología: Usaremos el comando ln , es un comando que crea un enlace, un tipo de archivo especial, que apunta a otro archivo existente.Los enlaces pueden ser de dos tipos: duros o simbólicos. Un enlace duro es otro nombre para un mismo archivo; mientras que un enlace simbólico contiene el nombre del fichero al que enlaza.

Añadiendo la opción -s crea el enlace simbólico. En los enlaces simbólicos, si se borra el archivo apuntado el enlace queda inservible, mientras que en los enlaces duros no hay diferencia entre el archivo apuntado y sus enlaces, por lo que eliminar uno no afecta a los otros.

Sintaxis:

La sintaxis básica de este comando es la siguiente:

ln [-s]

Shell> ln file link

Shell> ln -s directory_were_the_info_will_be directory_were_the_info_will_be_linked


Problema: Instalar un antivirus en linux

Metodología: Usaremos ClamAV es un software antivirus open source (de licencia GPL) para las plataformas Windows, GNU/Linux, BSD, Solaris, Mac OS X y otros sistemas operativos semejantes a Unix.

La base de datos de actualizacion se coloca en
/var/lib/clamav

En el caso que compiles el clamav las bases de datos se deben poner en:

/usr/local/share/clamav

para eliminar los virus
clamscan -rv –remove=yes /folder/to/scan

para crear una copia del archivo con virus a una carpeta
clamscan -rv –copy=/path/to/folder /folder/to/scan

para mover el archivo con virus a una carpeta
clamscan -rv –move=/path/to/folder /folder/to/scan

 

Problema: Script de Actualización de Nod32

Metodología:Muchas veces nos encontramos que la actualización del Nod32 o ESET no nos funciona o lleva varias dependiendo a la versión. Hoy quiero compartir un sitio cubano donde podemos cojer la actualizacion diariamente mediante este scripts. Dicho sitio cubano no es mas que una replica del sitio internacional http://www.befhome.com/bef/nod32

Paquetes necesariosa a instalar
apt-get install zip lftp

echo “Actualizando NOD32″
#NODMIRROR
UPDATE=”/srv/www/antivirus/” # Ruta del destino de la Actualización
SERVER=”http://antivirus.caisa.co.cu/nod32/” # Servidor de Actualización
OPCIONES=”-c 10 –exclude=”zip” –exclude=”nod32v2″ –log=/tmp/esetmirror.log”

# Empezar la Actualizacion
lftp -c mirror $SERVER $UPDATE $OPCIONES

# Borrando actualizacion anterior
rm -f $UPDATE/nod32/*.zip

# Compactar nueva actualizacion
cd $UPDATE/nod32/
zip -r -9 -q “nod-$(date +’%d%m%Y’).zip” *

exit 0


Problema: Como se filtran las conexiones actuales

Metodología:Usaremos el comando netstat. Para ver una lista legible en ubunut linux lanzamos este comando:

la salida será algo parecido a lo siguiente:

puertos-servicios

Es un servidor local y tiene pocas conexiones pero en un servidor en producción (internet) la lista puede ser muy larga, por eso podemos usar “grep” para que se nos muestren solo las que nos interesan y filtrar por un estado o por una ip concreta unos ejemplos:

y si queremos filtrar por IP:


Problema: Quiero bloquear el montaje por defecto de las memorias USB en nuestro sistema Linux

Metodología:Existen varias formas de hacerlo a nivel de kernel, grub, etc. Una de las formas más sencillas de bloquear toda conexión de memorias USB a un equipo ejecutando Linux se basa en el bloqueo del directorio de montaje por defecto cambiando los permisos del mismo. En Ubuntu, por ejemplo, cuando conectamos una memoria USB esta se monta automáticamente en el directorio /media/ (en otras distribuciones como Arch sería /run/media/). Este directorio puede variar en función de la distribución que utilicemos.

Cambiando los permisos de lectura y escritura de la carpeta donde se montan dichas unidades conseguiremos que al conectar una memoria a nuestro PC esta no se monte correctamente y no podamos utilizarla, quedando el uso de los puertos USB totalmente bloqueado.

Para ello abriremos un terminal y tecleamos:
sudo chmod 700 /media/

De esta manera asignamos a la carpeta donde se montan las memorias USB (en este caso /media/) únicamente permisos para root, es decir, que únicamente el superusuario podría montar unidades y tener acceso a ellas, quedando todos los demás sin poder acceder a las memorias USB que conecten.


Problema: Convertir archivos de video

Metodología:Es muy sencillo, tan solo necesitamso instalar 2 paquetes (disponibles en los repositorios oficiales) mediante Synaptic o la consola: ffmpeg y mencoder.

ffmpeg -i video_original.fmt video_nuevo.fmt

Pero claro:

-Hay que cambiar video_original y video_nuevo por el nombre del video original, y el del nuevo respectivamente.

-Hay que cambiar fmt por los respectivos formatos de video.

Un ejemplo:

ffmpeg -i cena.ogg cena2.avi


Problema: Ver TV Gratis en Linux

Metodología: Usaremos un script: TVenLinux.sh. Primero tenmos que instalar los paquetes necesarios para que la aplicación funcione sin problemas.

Se trata de los paquetes mplayer, rtmpdump y curl, que podremos instalar en Debian, Ubuntu y derivadas con el comando
sudo apt-get install mplayer rtmpdump curl

Y que también podremos instalar en Mandriva, Mageia y similares con un

sudo urpmi mplayer rtmpdump curl

Siendo el proceso análogo para otras distribuciones con distintos gestores de paquetes. Como explica el autor, el paquete curl no es obligatorio, pero nos permitirá mostrar la información del canal si ésta existe.

Una vez instalados los paquetes tendremos que descargar el script TVenLinux.sh, y darle permisos de ejecución para luego ejecutarlo. En una terminal sería
wget -c https://www.sysadminsdecuba.com/wp-content/uploads/2015/05/TVenLinux.sh_.tar-1.gz
chmod u+x TVenLinux.sh
./TVenLinux.sh

Eso hará que se lance una pequeña ventana con la lista de canales, de los cuales tendremos que seleccionar cualquiera de ellos. A los pocos segundos aparecerá una ventana de Mplayer con el canal en emisión que hemos elegido, y con muy poco retraso con respecto a la emisión real en TDT (en mis pruebas, 12 segundos de retraso).


Problema: Mejorando el nano para programadores

Metodología:  Editaremos el archivo /etc/nanorc
wget -c https://www.sysadminsdecuba.com/wp-content/uploads/dlm_uploads/2018/01/nanorc.txt
sudo cp nanorc.txt /etc/nanorc


Problema: Cambiar o editar la fecha y hora desde la consola

Metodología:

date --set "2015-06-04 19:25"

Ahora realizaremos el mismo cambio para actualizar la fecha en la BIOS.

hwclock --set --date="2015-06-04 19:25"

Para comprobarlo tecleamos:
hwclock

y devolverá algo como..
Thu Jun 04 19:25:00 CET 2015

Con esto estamos seteando en el sistema el día 04 de Junio de 2015 y la hora a las 19:25 horas.

Pero, como te habrás dado cuenta, habrán pasado unos segundos de desactualización, esto lo podemos solucionar, escribiendo la sentencia de abajo, en vez de la instrucción más arriba indicada:

hwclock --set --date="date '+%D %H:%M:%S'"

Si en algún momento reinicias el PC se creará el fichero /etc/adjtime, y como no vendrá especificada zona horaria, pondrá la local.

Para sincronizar la hora, si la pila está agotada, etc, para que coja la “hora real” en cada reinicio editar el fichero /etc/rc.d/rc.local y colocar al final:

ntpdate -u ntp.ubuntu.com

(Esto además te permite que se cambie la hora automáticamente según tu zona horaria)

( Puedes utilizar cualquier otro servidor ntp que conozcas, y esto es independiente de tu distribución, sea RedHat, Debian, Fedora, Ubuntu…)

Si además quieres sincronizar la fecha y la hora del sistema con la de la BIOS tras la línea anterior puedes escribir:

hwclock --set --date="date '+%D %H:%M:%S'"

Y tendrás sincronizadas, sistema operativo y reloj del sistema.


Problema: Cambiarme la MAC (MAC Address Spoofing)

Metodología: Usaremos Macchanger es una herramienta que puede ser instalada en cualquier Linux y puede cambiar la dirección MAC a cualquier dirección deseada hasta el siguiente reinicio.Primero tenemos que acabar con el adaptador de red con el fin de cambiar la dirección MAC. Esto se puede hacer mediante el siguiente comando:

ifconfig wlan1 down

Reemplace wlan1 por su propio adaptador de red.

Ahora utilice el siguiente comando para cambiar su dirección MAC a una nueva dirección MAC al azar:

macchanger -r wlan1

Macchanger le mostrará la dirección MAC permanente, actualizada y modificada. La permanente Dirección MAC será restaurado a su adaptador de red al iniciar el sistema o se puede restablecer su adaptador de red dirección MAC manualmente. Utilice el siguiente comando para restaurar la dirección MAC permanente a su adaptador de red de forma manual:

macchanger -permanente wlan1

También puede suplantar una dirección MAC en particular mediante el siguiente comando:

macchanger -m [Dirección MAC Spoofing] wlan1

macchanger -m XX: XX: XX: XX: XX: XX wlan1

Si recibe el siguiente error que necesita para derrotar a la interfaz de red antes de cambiar la dirección MAC (comando: ifconfig wlan1 abajo):

ERROR: No se puede cambiar MAC: interface hacia arriba o no autorización: No se puede asignar la dirección solicitada

Utilice el siguiente comando para abrir el adaptador de red con la nueva dirección MAC:

ifconfig wlan1 up

Utilice el siguiente comando para mostrar la dirección MAC actual:

macchanger -show wlan1


Problema: Eliminar llave obsoleta de ssh de know_hosts

Metodología:Cuando nos conectamos mediante ssh a un sever y nos sale algo como esto.

Necesitamos para eliminar una clave o fingerprint del known_hosts, para hacerlo por línea de comandos:

– Metodo 1 usando sed

– Metodo 2 con ssh-keygen


Problema:

Metodología:


Problema:

Metodología:


NOTA: A partir de este punto iré incrementando con más comandos útiles y los que me hagan llegar ustedes mismos por los comentarios usando el formato que les pido.

(Visited 484 times, 2 visits today)
Sobre Alexander Rivas Alpizar 21 Artículos
Administrador de Redes de EMPRESTUR Cienfuegos

9 Comentarios

  1. Una solución para cuando queremos declarar una variable que ella contenga el nombre de la interface de red que esta UP, para usarla ejemplo en un iptable sin importar que nombre tenga esa interface puede ser eth0, eth1 u otra es de esta forma:
    Ejemplo:

    INET=$(ip -o link show | awk ‘{print $2,$9}’ | grep UP | cut -d’ ‘ -f1 | sed ‘s/.$//g’)

    iptables -A INPUT -i $INET -s 10.0.1.0/24 -p icmp -m state –state NEW -j ACCEPT

    Espero les sirva como a mi.

    • Michel, el inconveniente es que desde el punto de vista de seguridad hay que tener mucho cuidado porque si el equipo tienes digamos 2 interfaces eth levantadas podrias terminar creando vulnerabilidades con ese acercamiento.

      De todas formas, cuando se necesita hacer una regla genérica, basta con omitir el parámetro de la interfaz por completo y coincidiría con cualquiera, o incluso usar la negación, por ejemplo:

      iptables -A INPUT ! -i lo -s 127.0.0.0/8 -j DROP

      O sea, descartar todo lo que no provenga desde la interfaz local pero tenga una ip de origen del bloque 127.x.x.x

  2. Hablo de un entorno de LAN de estaciones de trabajo donde solamente tienen una interface de red activa, en los servers omito esta variable y pongo las que tiene, es muy buena tu aclaración, pero bueno es una opción que encontre para resolver un problema que tenia, pues imaginate configurar 100 estaciones de trabajo cambiando esta interface para la que tengan, mientras q modifico un solo scrpit y todos le sirve y siempre ellos van a tener una que es la fisica, no la wlan, gracias por tu aclaración.

    • Entonces rlsalgueiro vas ayudarnos a poner tus hacks aqui y hacer crecer la biblia?? Cuando sea un tips muy corto puedes ponerlo aqui en forma de comentario y yo lo subo al cuerpo del tuto..si el tips e smuy largo entonces escribelo en forma de TIPS.

      • claro que si, ya hay algunos en los articulos de tips de limpieza de los kernels y proxy para linux, pero tengo como 30 hacks, algunos que dan un articulo y otros que pueden ponerse aqui, luego los subo

  3. Problema:Eliminar llave obsoleta de ssh de know_hosts

    Cuando nos conectamos mediante ssh a un sever y nos sale algo como esto

    bash
    λ ssh [email protected]
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
    Someone could be eavesdropping on you right now (man-in-the-middle attack)!
    It is also possible that a host key has just been changed.
    The fingerprint for the ECDSA key sent by the remote host is
    SHA256:e67glAf6lnTzIpKnBpeCeWVrqKnLKTfV7aEqGOqb2Ac.
    Please contact your system administrator.
    Add correct host key in /home/rlsalgueiro/.ssh/known_hosts to get rid of this message.
    Offending ECDSA key in /home/rlsalgueiro/.ssh/known_hosts:2
    ECDSA host key for 10.1.1.1 has changed and you have requested strict checking.
    Host key verification failed.

    Necesitamos para eliminar una clave o fingerprint del known_hosts, para hacerlo por línea de comandos:

    – Metodo 1 usando sed

    ssh
    sed -i "2d" /home/rlsalgueiro/.ssh/known_hosts

    – Metodo 2 con ssh-keygen

    ssh
    ssh-keygen -R IP

  4. También podemos hacer el motabaje sin importar la letra, usando el LABEL o etiqueta que tiene el disco en el caso que la tenga, es recomendado agregarle una a cada partición según el uso.
    mount.ntfs-3g LABEL=BACKUP /media/BACKUP

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*