#scriptbash
Explore tagged Tumblr posts
Text
Apagar el sistema de forma automática después de un tiempo

Apagar el sistema de forma automática después de un tiempo definido, con un script bash. Hoy vemos un sencillo script bash, que nos permite apagar el sistema transcurrido el tiempo que nosotros mismos hayamos definido. Parece una tontería de script, pero te aseguro que no lo es. Por ejemplo... lo puedes usar para que se apague el sistema cuando calcules que termino una tarea, también es realmente útil para controlar el tiempo que puede estar un niño/a enganchado a internet. En fin sus objetivos son muchos. Ayúdanos a crecer, vota por SoloLinux en la siguiente encuesta. Gracias por colaborar. Apagar el sistema de forma automática Creamos el script bash. sudo nano apagar.sh Copia y pega el siguiente código. En la línea "TIMELIMIT" puedes definir el tiempo que transcurrirá desde que se ejecute el script, hasta su apagado total (en minutos). #!/bin/bash # Puedes definir un crontab: # */1 * * * * /root/bin/apagar.sh TIMELIMIT=120 # Equivale a 120 minutos. CUR_DIR=$( dirname $( readlink -e "$0" )) TIMECURRENT=$CUR_DIR/log/$( date +%Y.%m.%d ).log echo "1" >> $TIMECURRENT ALLTIME=$( wc -l $TIMECURRENT | cut -d" " -f1 ) ] && /sbin/shutdown -h now Guarda el script y cierra el editor. Le concedes los permisos requeridos. chmod u+x apagar.sh Ya lo tienes listo para operar, disfrútalo. Read the full article
0 notes
Text
Eliminar directorios vacíos con un script bash

Eliminar directorios vacíos con un script bash, en linux. A base de instalar y desinstalar aplicaciones, es común que nuestro sistema se llene de carpetas (directorios) vacías. Es cierto que ocupan poco espacio de nuestro disco, pero también es cierto que son muy molestas en ciertos momentos, por ejemplo cuando buscamos un archivo en particular, o listamos los directorios de nuestro sistema. En este artículo (de los que a mí me gustan), te presento un script bash con la capacidad de identificar los directorios vacíos y borrarlos (eliminar directorios vacios), si tú se lo pides. Es bastante seguro, dado que aparte que tienes que indicar donde buscar, también te solicita permiso. Deberás responder YES o NO.
Eliminar directorios vacíos con un script bash
Creamos nuestro script para eliminar directorios. nano borrard.sh Copia y pega el siguiente código. #!/bin/bash #Check if user input parameter, if not ask to enter directory if ; then #Ask user to input directory where to start search for empty directories. echo -n "Introduce el directorio donde quieres eliminar las carpetas vacías: " #we read input while read dir do #we check if input empty test -z "$dir" && { #if input empty – we ask once more to input directory echo -n "Introduce el directorio: " continue } #if entered no empty data – continue to do other things break done #if user entered parameter do next: else #dirname will be passed parameter dir=$1 fi #this check if directory exist, exit if not if ; then echo "Este directorio no existe" exit 1 fi #We will store list of all directories in temporary file DirList=/tmp/ditlist.tmp # we search for all directories find $dir -type d > $DirList #writing all directories to vatiable dirs=`cat $DirList` #start checking every directory for dir in $dirs do #we are checking if directory is empty || continue #this ask user if really delete directory echo -n "Quieres eliminar el directorio vacio $dir: " #reading users answer: read answer #Checing answer, if yes – we will delete folder, nothing in other case: if ; then rmdir "$dir" fi done Guarda el script y cierra el editor. Para no tener problemas de permisos, es recomendable que siempre ejecutes este script bash con privilegios de administrador. Ahora vemos un ejemplo real en un servidor demo, no reproduzcas la ruta o te quedarás sin sistema operativo. sudo bash borrard.sh Nos pregunta el directorio del sistema (o cualquier otro), donde queremos buscar y borrar los directorios que están vacíos. # sudo bash borrar.sh Introduce el directorio donde quieres eliminar las carpetas vacías: Como es un demo y somos más chulos que un ocho, borramos los directorios vacíos de "/etc" (no lo hagas, solo es una demo). Ten cuidado al eliminar directorios vacíos. Continuamos con nuestro ejemplo. # bash borrar.sh Introduce el directorio donde quieres eliminar las carpetas vacías: /etc Observa como borramos todos los directorios vacíos... # sudo bash borrar.sh Introduce el directorio donde quieres eliminar las carpetas vacías: /etc Quieres eliminar el directorio vacio /etc/smartmontools/smartd_warning.d: yes Quieres eliminar el directorio vacio /etc/tuned/recommend.d: yes Quieres eliminar el directorio vacio /etc/modules-load.d: yes Quieres eliminar el directorio vacio /etc/ppp/peers: y Quieres eliminar el directorio vacio /etc/xdg/autostart: yes Quieres eliminar el directorio vacio /etc/selinux/targeted/logins: yes Quieres eliminar el directorio vacio /etc/selinux/targeted/active/modules/disabled: yes Quieres eliminar el directorio vacio /etc/selinux/targeted/modules/active/modules: yes Quieres eliminar el directorio vacio /etc/selinux/tmp: yes Quieres eliminar el directorio vacio /etc/selinux/final: yes Quieres eliminar el directorio vacio /etc/multipath: yes Quieres eliminar el directorio vacio /etc/gnupg: yes Quieres eliminar el directorio vacio /etc/gss/mech.d: yes Quieres eliminar el directorio vacio /etc/skel: yes rmdir: fallo al borrar «/etc/skel»: El directorio no está vacío Quieres eliminar el directorio vacio /etc/tmpfiles.d: yes Quieres eliminar el directorio vacio /etc/systemd/user: yes Quieres eliminar el directorio vacio /etc/udev/rules.d: yes Quieres eliminar el directorio vacio /etc/krb5.conf.d: yes Quieres eliminar el directorio vacio /etc/dracut.conf.d: yes Quieres eliminar el directorio vacio /etc/lvm/archive: yes Quieres eliminar el directorio vacio /etc/lvm/cache: yes Quieres eliminar el directorio vacio /etc/lvm/backup: yes Quieres eliminar el directorio vacio /etc/xinetd.d: yes Quieres eliminar el directorio vacio /etc/glvnd/egl_vendor.d: yes Quieres eliminar el directorio vacio /etc/sysconfig/console: yes Quieres eliminar el directorio vacio /etc/sysconfig/modules: yes Quieres eliminar el directorio vacio /etc/chkconfig.d: yes # # Eliminar directorios vacios Al recorrer todo el árbol de directorios indicado, el sistema volverá al usuario. Ten mucho cuidado al eliminar directorios, algunos pueden ser necesarios para un correcto funcionamiento del sistema. Canales de Telegram: Canal SoloLinux – Canal SoloWordpress Espero que este artículo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Eliminar directorios vacíos con un script bash. Read the full article
0 notes
Text
Verificar la conexión SSH de un host remoto

Verificar la conexión SSH de un host remoto, mediante comandos o scripts bash. Si administras servidores, es interesante verificar cada cierto tiempo que el puerto ssh permanece abierto. Normalmente el puerto 22. En este artículo, nos aprovechamos de una serie de comandos para crear scripts bash. Los scripts nos facilitan la tarea, al permitirnos generar salidas impresas legibles para el humano.
Verificar la conexión SSH de un host remoto
Asumo que a estas alturas todos sabemos crear un script bash, así que nos limitamos a ofrecerlos. Vemos las opciones que tenemos disponibles más comunes (comandos o herramientas). Timeout La herramienta timeout viene instalada por defecto en la mayoría de distribuciones linux. Vemos un script. #!/bin/bash server=192.168.0.100 # IP del servidor port=22 # puerto connect_timeout=5 # Tiempo de espera timeout $connect_timeout bash -c " Read the full article
#conexiónSSH#conexiónSSHcontelnet#hostremoto#nc#ncat#nmap#puertossh#scriptbash#scriptsbash#ssh#telnet#timeout#verificar
0 notes
Text
Bashtop - El monitor de linux escrito en bash
Bashtop - El monitor de linux escrito en bash con licencia de código abierto (Apache License 2.0). Bashtop es un monitor de recursos de código abierto para Linux. Al igual que top o htop, nos permite monitorear el sistema y mostrar el uso y estadísticas del procesador, la red, los procesos, memoria y discos. Tiene un menú fácil de usar ademas de teclas receptivas que facilitan el trabajo. Permite filtrar procesos y escalar la interfaz de usuario. Destacamos que es compatible con SIGTERM, SIGKILL y SIGINT. También nos permite cambiar entre sus opciones de manera sencilla.
Bashtop - El monitor de linux escrito en bash
Antes de continuar, debo indicar que es necesario tener bash 4.4 o superior. Puedes verificar la versión con el siguiente comando. apt-cache policy bash Ejemplo... root@185:~# apt-cache policy bash bash: Installed: 4.4-5 Candidate: 4.4-5 Version table: *** 4.4-5 500 500 http://ftp.debian.org/debian stretch/main amd64 Packages 100 /var/lib/dpkg/status Si tienes una versión anterior, al ejecutar el script lanzara el siguiente error. ERROR: Bash 4.4 or later is required (you are using Bash 4.3). Consider upgrading your distribution to get a more recent Bash version.
Monitor de linux Bashtop La instalación del monitor de linux Bashtop no tiene ninguna dificultad. Vemos como instalar la herramienta en diversas distribuciones linux. En Ubuntu, Linux Mint y derivados: sudo add-apt-repository ppa:bashtop-monitor/bashtop sudo apt update sudo apt install bashtop En Debian 10 / Debian 9: ### Debian 10 sudo echo "deb http://packages.azlux.fr/debian/ buster main" | sudo tee /etc/apt/sources.list.d/azlux.list sudo wget -qO - https://azlux.fr/repo.gpg.key | sudo apt-key add - sudo apt update sudo apt install bashtop ### Debian 9 sudo echo "deb http://packages.azlux.fr/debian/ stretch main" | sudo tee /etc/apt/sources.list.d/azlux.list sudo wget -qO - https://azlux.fr/repo.gpg.key | sudo apt-key add - sudo apt update sudo apt install bashtop CentOS 8 y derivados: CentOS 7 no tiene versión bash 4.4 disponible, por tanto no es compatible con esa versión. sudo dnf config-manager --set-enabled PowerTools sudo dnf install epel-release sudo dnf install bashtop Red Hat 8: Al igual que con CentOS, el monitor de linux Bashtop tampoco es compatible con las versiones anteriores de Red Hat (RHEL). ARCH=$( /bin/arch ) subscription-manager repos --enable "codeready-builder-for-rhel-8-${ARCH}-rpms" sudo dnf install epel-release sudo dnf install bashtop Fedora: sudo dnf install bashtop Ejecutar Bashtop Una vez instalada la herramienta, tan solo tienes que ejecutar el siguiente comando. bashtop Script bash Bashtop Si eres de los que prefiere tenerlo todo bajo control, seguro que prefieres crear tu propio script bash. Puedas copiar el código desde su página oficial de Github. Canales de Telegram: Canal SoloLinux – Canal SoloWordpress Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Read the full article
0 notes
Text
Script bash - Calcular el factorial de un número entero
Script bash - Calcular el factorial de un número entero positivo. La fórmula factorial representada por un signo de exclamación de cierre, es de las más usadas en operaciones matemáticas, sobre todo en combinatorias y formulas de analisis. Un número factorial se obtiene utilizando uno definido y multiplicando todos los números enteros positivos que hay entre ese número definido y el 1. Por ejemplo si queremos obtener el factorial del número entero positivo 5, representamos la fórmula de esta forma: 5! = 1 x 2 x 3 x 4 x 5 = 120 Bueno, y para qué sirve esto?, puedes pensar. Pues... parece una tontería pero no lo es, el factorial nos dice el número máximo de combinaciones posibles entre cinco elementos (número 5), también se usa mucho para el calculo de probabilidades. Pongamos el caso que quieres colgar tres cuadros en la pared de forma consecutiva, la fórmula factorial no dice cuántas combinaciones podemos hacer con nuestros cuadros, exactamente 6 (3! = 1 * 2 * 3 = 6). Antes de crear un script bash que calcule el factorial vemos algunos ejemplos comunes.
Calcular el factorial de un número entero
Creamos el script. nano factor.sh Copia y pega el siguiente código. #!/bin/bash #factor.sh echo "Introduce un numero:" read num factor=1 echo "Resultado factorial:" while do factor=$((factor * num)) #factor = factor * num num=$((num - 1)) #num = num - 1 done echo $factor Guarda el archivo y cierra el editor nano. Le concedemos los permisos necesarios. chmod u+x factor.sh Lo puedes ejecutar con alguno de estos comandos.... ./factor.sh # o bash factor.sh ejemplo...
Calcular el factorial con script bash Nota final: Es posible que dependiendo de las limitaciones de tu entorno los números muy grandes no aparezcan completos. Canales de Telegram: Canal SoloLinux – Canal SoloWordpress Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Read the full article
#Calcularelfactorial#editornano#factorialdeunnúmero#fórmulafactorial#númeroentero#númeroenteropositivo#scriptbash
0 notes
Text
Cómo instalar maldet y buscar malware en linux
Cómo instalar maldet y buscar malware en linux. Maldet (LMD) es una de las mejores herramientas que podemos encontrar en linux, para escanear un sistema linux en busca de malware. Normalmente archivos de sitios web infectados con código malicioso. Los malwares son temidos por los servidores, envían correos electrónicos spam desde tu ip, aumenta la carga del servidor, son capaces de lanzar ataques ddos, en fin... un auténtico desastre. Linux Malware Detect (LMD) es capaz de escanear el malware para Linux, detectarlo y enviar un mail a la cuenta que definas con el reporte. Si lo instalas junto a ClamAV también intentará desinfectar o poner en cuarentena el archivo; si escaneas un servidor web no es recomendable (puede borrar algo necesario). En este articulo nos centraremos en cómo instalar Maldet y, buscar malware en cualquier distribución linux. Cómo instalar maldet y buscar malware en linux Instalar Linux Malware Detect en linux La instalación de maldet es sencilla, tan solo sigue la secuencia de comandos que te indico. cd /usr/local/src rm -Rf maldetect-* wget http://www.rfxn.com/downloads/maldetect-current.tar.gz tar xfz maldetect-current.tar.gz cd maldetect-* ./install.sh Para actualizar las listas de firmas, ejecuta... maldet -u También puedes actualizar la herramienta maldet. maldet -d Escanear linux con Maldet Para escanear de forma normal (recomendado) usaremos la opción "-a" maldet -a ejemplos... maldet -a /home/*/public_html maldet -a /home Otro ejemplo interesante es analizar todos los dominios / suscripciones en Plesk (en Cpanel debes modificar los datos). maldet -a /var/www/vhosts Si quieres un escaneo en modo profundo (puede tardar muchas horas), modificamos las opciones por... maldet -b --scan-all ejemplo... maldet -b --scan-all /home/*/public_html Ver los registros de análisis Se generan varios informes, los listamos todos. maldet --report list ejemplo...
Buscar malware en linux Si observas la imagen de ejemplo, verás la opción "SCANID". Anota las referencias posteriores a scanid y abres el informe con el siguiente comando. maldet --report ejemplo... maldet --report 200327-1204.27624 Poner en cuarentena los archivos infectados Con la opcion "q", podemos poner en cuarentena todos los archivos infectados de un informe. maldet -q ejemplo... maldet -q 200327-1204.27624 Alertas por correo electrónico De forma automática maldet realiza análisis cada cierto tiempo, si quieres recibir las alertas por mail es posible. Accedemos al archivo de configuración. cd /usr/local/maldetect/ nano conf.maldet Busca la opción "mail_alert" e insertas "1". email_alert="1" Unas líneas más abajo introduces el correo donde quieres recibir las alertas (en email_addr). email_addr="[email protected]" Desinstalar Maldet Hace unos años, para desinstalar maldet se debía borrar todo de forma manual. Por suerte, en las últimas versiones se introdujo un script bash que hace el trabajo por ti. sh /usr/local/maldetect/uninstall.sh Solicita confirmación. # sh uninstall.sh This will completely remove Linux Malware Detect from your server including all quarantine data! Would you like to proceed? y La desinstalación de Linux Malware Detect a concluido. Removed symlink /etc/systemd/system/multi-user.target.wants/maldet.service. Linux Malware Detect has been uninstalled. Canales de Telegram: Canal SoloLinux – Canal SoloWordpress Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Read the full article
#Alertasporcorreoelectrónico#ataquesddos#buscarmalware#DesinstalarMaldet#distribucionlinux#EscanearlinuxconMaldet#InstalarLinuxMalwareDetect#instalarmaldet#LinuxMalwareDetect#lmd#mail_alert#maldet#malware#scriptbash#servidor#sistemaLinux
0 notes
Text
Cómo limpiar buffers y ram en linux

Cómo limpiar buffers y ram en linux. Con el paso del tiempo, sobre todo en servidores que siempre están online, notamos que cada vez trabajan más despacio. Es algo normal, pues con el uso los buffers, ram y swap se van llenando. Si trabajamos en una maquina que va muy sobrada de hardware y con pocos usuarios, no debería haber ningún problema. Si nuestro servidor hace un uso intensivo de sus recursos, la cosa cambia. Las caches aceleran la vista de un sitio web al usuario, pero es evidente que sobrecargan el servidor. En este articulo veremos unos comandos que te ayudaran a limpiar el sistema, y que podemos convertir en script bash.
Cómo limpiar buffers y ram en linux
Todos los comandos propuestos se deben ejecutar con permisos root, por ejemplo, si queremos liberar las pagecache ejecutamos lo siguiente. echo 1 > /proc/sys/vm/drop_caches Para liberar inodos y dentries. echo 2 > /proc/sys/vm/drop_caches Para liberar todo lo anterior, pagecaches, inodos y dentries. echo 3 > /proc/sys/vm/drop_caches Un ejemplo de como puedes usar la cadena de comandos al completo: free && sync && echo 3 > /proc/sys/vm/drop_caches && free También es conveniente vaciar la swap, para ello la manera más practica es desactivarla y volverla activar. La swap es una memoria volátil, por tanto desaparece al desactivarla. # Deshabilitar la swap swapoff -a # Habilitar la swap swapon -a Crear un script bash limpiador Ahora creamos un script bash con los comandos anteriores, ademas generamos tiempos de espera entre ellos por si nuestro sistema está un poco sobrecargado. nano limpiar.sh Copia y pega lo siguiente. #limpiar.sh #!/bin/bash echo "" echo "" echo "Comprobando estado de memoria" free echo "OK - Comprobacion completada" echo "" sleep 2s; echo “Limpieza de memoria cache y swap“; echo "" sleep 2s; echo "Deshabilitando HTTP" killall -KILL httpd echo "OK - Http deshabilitado" echo "" sleep 1s; echo "Deshabilitando Swap" swapoff -a echo "OK - Swap deshabilitado" echo "" sleep 2s; echo "Liberando pagecaches, dentries e inodes" sync;sysctl -w vm.drop_caches=3;sync echo "OK - Server liberado" echo "" sleep 3s; echo "Habilitando la Swap" swapon -a echo "OK - Swap habilitado" echo "" sleep 2s; free echo ".....TODO CORRECTO....." echo "" echo "" Guarda el archivo y cierra el editor. Lo puedes ejecutar con el siguiente comando. bash limpiar.sh Como nota final puedes revisar el estado de la memoria, con... cat /proc/meminfo Canales de Telegram: Canal SoloLinux – Canal SoloWordpress Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Read the full article
#dentries#inodos#limpiarbuffers#limpiarbuffersyram#Linux#pagecache#permisosroot#root#scriptbash#swap#vaciarlaswap
0 notes
Text
Script bash que alerta de batería baja
Script bash que alerta de batería baja. Después del ultimo articulo sobre TLP, hoy vemos un script bast que con la ayuda del comando watch, o con una tarea cron, nos lanzara una alerta indicándonos que tenemos la batería baja. Para que el script funcione correctamente necesitamos tres herramientas; Normalmente vienen preinstaladas, si no es así lo tendrás que hacer manualmente. acpi: Este comando nos dice el porcentaje de batería cargada, si se está cargando o descargando, y el tiempo restante que falta para que se descargue la batería por completo. Ejemplo: --> Battery 0: Discharging, 15%, 00:43:36 remaining espeak: El comando espeak es muy curioso, también desconocido. Podemos usarlo para introducir un texto en la terminal que se reproducirá en los altavoces de nuestro pc, por ejemplo: (entre comillas dobles). Si no lo tienes, lo instalas. Ejemplo: sudo apt install speak. notify-send: Con notify-send lanzamos ventanas emergentes que notifican lo ingresado. Ejemplo: (entre comillas dobles).
Alerta en ventana emergente También haremos uso de las siguientes herramientas: cut: Permite extraer la sección indicada de un archivo de texto antes de su salida. sed: Usamos sed para reemplazar caracteres. grep: Nos busca cadenas en un archivo. Vemos el script.
Script bash que alerta de batería baja
Creamos el script. nano alerta-bateria.sh Copia y pega el script (puedes modificar lo que quieras. #!/bin/bash # battery_level=$(acpi -b |cut -d ", " -f2| sed 's/%//g') echo $battery_level #$battery_level=15 #Si el cargador esta conectado se muestra "charging" #Si el cargador no esta conectado se muestra "discharging". #Si acpi -b detecta carga, "grep -c" devuelve 1. #Si acpi -b no detecta carga, "grep -c" devuelve 0. ac_power=$(acpi -b|grep -c "Charging") echo $ac_power #1 if charging(plugged in) and 0 if discharging (not plugged in) #La bateria que carga llega al 100%. if ] #if charging and battery_level==100 then export DISPLAY=:0.0 notify-send "La batería esta cargada" "Carga: $battery_level% "; #Un audio nos indica que la bateria está cargada. espeak "bateria cargada" -s 140 fi #Mensaje emergente y por audio, nos queda el 20% if ] then export DISPLAY=:0.0 notify-send "Queda poca batería" "Carga: $battery_level% "; espeak "Batería baja" -s 140 fi Guarda el archivo y cierra el editor. Le damos permisos. chmod +x alerta-bateria.sh Lo podemos ejecutar manualmente, pero lo recomendable es crear una tarea cron que se ejecute cada cierto tiempo, en nuestro ejemplo cada 30 minutos. nano /etc/crontab Agregamos la tarea. THIS_IS_CRON=1 */30 * * * * /ruta/alerta-bateria.sh Guarda el archivo y cierra el editor. Ya tenemos todo listo, solo nos falta reiniciar cron. service cron restart o service crond restart Canales de Telegram: Canal SoloLinux – Canal SoloWordpress Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Read the full article
#acpi-b#bateríabaja#comandowatch#notify-send#reiniciarcron#scriptbash#scriptbashquealerta#speak#tareacron
0 notes
Text
Generador de passwords con selector de seguridad

Generador de passwords con selector de seguridad. Recién salido del horno os presento este interesante script bash, que nos genera automáticamente una contraseña con el tipo de seguridad (fuerza) que necesites. El script te ofrece la opción de seis niveles de seguridad: Super extrema Extrema Muy fuerte Fuerte Normal Sencilla El script es bastante simple, no tendrás ninguna dificultad para crear el tuyo propio o en ampliar el que yo te propongo.
Generador de passwords con selector de seguridad
Detalles y ejemplos de las opciones Vemos los comandos usados en el script para generar las passwords, también algunos ejemplos de salida. Super extrema cat /dev/urandom | tr -dc | tr -d '\042\047\134' | fold -w 48 | head -n 1 ejemplo de salida... PASS-SUPER EXTREMA: ]MA^jC/dev/null | base64 -w 0 | rev | cut -b 2- | rev elif ; then echo "PASS-FUERTE: "; date | sha256sum | base64 | head -c 32 ; echo elif ; then echo "PASS-NORMAL: "; date | md5sum elif ; then echo "PASS-SENCILLA: "; openssl rand -hex 5 elif ; then echo -e "Script cerrado"; exit 0; else echo "Error - se cierra el script.." fi Guarda el archivo y cierra el editor. Ahora le concedemos los permisos de ejecución necesarios. sudo chmod +x passGenerate.sh Lo ejecutamos con alguno de los comandos propuestos. ./passGenerate.sh bash passGenerate.sh Listo!!!. Canales de Telegram: Canal SoloLinux – Canal SoloWordpress Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Read the full article
0 notes
Text
Monitorizar el uso del disco y avisar por mail

Monitorizar el uso del disco y avisar por mail. Existen muchas aplicaciones que monitorizan nuestros sistemas Linux, lo controlan todo, por ejemplo, el uso de la CPU, de la memoria, la swap, el disco, y más. No siempre es necesario tener este tipo de herramientas instaladas, pongamos el caso que tenemos un servidor exclusivo para backups; en este caso, con un simple script que nos vigile no sobrepasar el umbral de uso del disco es suficiente. Hoy vemos un script bash que mediante una tarea cron supervisara el umbral establecido del disco, y nos enviara un email para tomar las medidas necesarias.
Monitorizar el uso del disco y avisar por mail
Creamos el script bash. nano /opt/scripts/alerta-disco.sh Copia y pega el siguiente script, pero atento a las opciones. if : El umbral de uso está establecido en el 75%, modifica según tus necesidades. [email protected] : inserta tu correo electrónico. #!/bin/sh df -Ph | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5,$1 }' | while read output; do echo $output used=$(echo $output | awk '{print $1}' | sed s/%//g) partition=$(echo $output | awk '{print $2}') if ; then echo "The partition \"$partition\" on $(hostname) has used $used% at $(date)" | mail -s "Disk Space Alert: $used% Used On $(hostname)" [email protected] fi done Guarda el archivo y cierra el editor. Ahora creamos una tarea cron que ejecute el script cada 15 minutos. crontab -e Añade la siguiente linea. */15 * * * * /bin/bash /opt/scripts/alerta-disco.sh Guarda el archivo y cierra el editor, solo nos falta reiniciar cron. # Debian, Ubuntu, y derivados sudo service cron restart # CentOS, RHEL, y derivados systemctl restart crond.service Canales de Telegram: Canal SoloLinux – Canal SoloWordpress Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Read the full article
0 notes
Text
Monitorizar el uso de la CPU y avisar por mail
Monitorizar el uso de la CPU y avisar por mail. Al igual que en otras labores, los sitios webs también evolucionan. Vamos aumentando las visitas, agregamos nuevas herramientas o scripts a los servidores, mejoramos nuestros sitios, etc... Todos los añadidos que apliquemos repercuten en el consumo del sistema, y normalmente el componente que más lo sufre es la CPU. En este articulo de hoy, presentamos un interesante script bash que monitoriza el uso de la CPU y nos envía un correo electrónico informándonos de su estado.
Monitorizar el uso de la CPU y avisar por mail
Creamos el script bash. nano /opt/scripts/alerta-cpu.sh Copia y pega el siguiente script (inserta un email valido): #!/bin/bash cpuuse=$(cat /proc/loadavg | awk '{print $1}') if ; then SUBJECT="ATTENTION: CPU Load Is High on $(hostname) at $(date)" MESSAGE="/tmp/Mail.out" # your valid email TO="[email protected]" echo "CPU Current Usage is: $cpuuse%" >> $MESSAGE echo "" >> $MESSAGE echo "+------------------------------------------------------------------+" >> $MESSAGE echo "Top CPU Process Using top command" >> $MESSAGE echo "+------------------------------------------------------------------+" >> $MESSAGE echo "$(top -bn1 | head -20)" >> $MESSAGE echo "" >> $MESSAGE echo "+------------------------------------------------------------------+" >> $MESSAGE echo "Top CPU Process Using ps command" >> $MESSAGE echo "+------------------------------------------------------------------+" >> $MESSAGE echo "$(ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10)" >> $MESSAGE mail -s "$SUBJECT" "$TO" rm /tmp/Mail.out fi Guarda el archivo y cierra el editor. Ahora creamos una tarea cron que ejecute el script cada 10 minutos. crontab -e Agregamos la tarea. */10 * * * * /bin/bash /opt/scripts/alerta-cpu.sh Guarda la tarea y cierra el editor. Reiniciamos las tareas. # Debian, Ubuntu, y derivados sudo service cron restart # CentOS, RHEL, y derivados systemctl restart crond.service El script se ejecutara automáticamente cada 10 minutos. Canales de Telegram: Canal SoloLinux – Canal SoloWordpress Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Read the full article
0 notes
Text
Script bash: Árbol de Navidad en la consola

Script bash: Árbol de Navidad en la consola / terminal. Aprovechando las fechas tan señaladas en las que estamos, y a modo educativo hemos creado un script bash que al ejecutarlo aparecerá un árbol de navidad en la consola al mismo tiempo que nos felicita la navidad. Lo vemos. ejemplo de resultado final...

Árbol de Navidad en la consola
Creamos el archivo. nano navidad.sh Copia y pega lo siguiente: #!/bin/bash trap "tput reset; tput cnorm; exit" 2 clear tput civis lin=2 col=$(($(tput cols) / 2)) c=$((col-1)) est=$((c-2)) color=0 tput setaf 2; tput bold # Tree for ((i=1; i Read the full article
#2019#árbol#arboldenavidad#bash#consola#feliznavidad#navidad#navidadenlaconsola#script#scriptbash#sololinux#terminal
0 notes
Text
Cuanto tiempo tarda un script bash en ejecutarse
Cuanto tiempo tarda un script bash en ejecutarse. Tal vez pienses que este articulo es a modo de curiosidad, ni mucho menos querido lector, conocer el tiempo de ejecución es algo indispensable en entornos donde se lanzan muchos script y tareas cron para evitar posibles encolamientos y saturación del sistema. Con el comando time podemos saber (entre otras cosas) cuanto tiempo tarda un script bash desde que comienza hasta que termina, ademas nos aporta el tiempo del usuario y del sistema. Vamos a ver como conseguir estos resultados.
Cuanto tiempo tarda un script bash en ejecutarse
Como ejemplo usamos un script de mantenimiento que uso en mis servidores. Sintaxis: time Comando time con script de ejemplo. time bash libera.sh El script se ejecuta, cuando termina imprime en pantalla algo similar a lo siguiente... # datos de ejemplo real 0m27.529s user 0m0.074s sys 0m1.365s Como puedes ver no ofrece los resultados con microsegundos, los explicamos: real: Explicado de forma brusca, es el tiempo que tarda desde que pulsas la tecla ENTER, hasta que termina todo el proceso. user: Es el tiempo que el usuario (nosotros) a utilizado la CPU. sys: Es el tiempo que la CPU trabaja con el kernel. También puedes medir el tiempo de cualquier comando, por ejemplo de update, observa... time yum update ejemplo de salida... # time yum update Complementos cargados:fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: centos.crazyfrogs.org * epel: mirror.freethought-internet.co.uk * extras: centos.crazyfrogs.org * updates: centos.crazyfrogs.org No packages marked for update real 0m3.886s user 0m0.488s sys 0m0.063s Como hemos visto, time es más útil de lo que parece en un principio. Scipt bash libera.sh Bueno, dejando a un lado el articulo >>Cuanto tiempo tarda un script bash en ejecutarse Read the full article
0 notes
Text
Anti DDos - Bash Script
Anti DDos - Bash Script. Uno de los mayores quebraderos de cabeza de los sysadmin, son los ataques DDOS. Toda precaución es poca, y no hay nada seguro. Es prácticamente imposible detener un DDos a gran escala, aun así, como mínimo debes intentar protegerte de ataques menores. Hoy presentamos un excelente script Anti-DDOS creado por Ismail Tasleden. Escrito en bash y de código abierto, este script que hoy vemos es diferente a otros que ya tratamos en SoloLinux; como norma general estos ejecutables rastrean los registros buscando errores para bloquear las IP que los provocan. Este proyecto es diferente, lo que hace es habilitar las reglas preventivas que nos aporta el kernel linux y que suelen venir con normas excesivamente permisivas. También aplica reglas anti DDos en las iptables o nftables, y otras configuraciones necesarias como medidas alternativas de defensa. Este script bash es 100% compatible con todos los sistemas Linux. Recordemos que frente a un DDos no hay nada infalible, pero por lo menos tomamos medidas preventivas ante lamers.
Anti DDos - Bash Script
Creamos el script. nano anti-ddos.sh Copia y pega lo siguiente. #!/bin/sh ######################################################### # ANTI-DDOS BASH SCRIPT # ######################################################### # For debugging use iptables -v. IPTABLES="/sbin/iptables" IP6TABLES="/sbin/ip6tables" MODPROBE="/sbin/modprobe" RMMOD="/sbin/rmmod" ARP="/usr/sbin/arp" # Logging options. #------------------------------------------------------------------------------ LOG="LOG --log-level debug --log-tcp-sequence --log-tcp-options" LOG="$LOG --log-ip-options" # Defaults for rate limiting #------------------------------------------------------------------------------ RLIMIT="-m limit --limit 3/s --limit-burst 8" # Unprivileged ports. #------------------------------------------------------------------------------ PHIGH="1024:65535" PSSH="1000:1023" # Load required kernel modules #------------------------------------------------------------------------------ $MODPROBE ip_conntrack_ftp $MODPROBE ip_conntrack_irc # Mitigate ARP spoofing/poisoning and similar attacks. #------------------------------------------------------------------------------ # Hardcode static ARP cache entries here # $ARP -s IP-ADDRESS MAC-ADDRESS # Kernel configuration. #------------------------------------------------------------------------------ # Disable IP forwarding. # On => Off = (reset) echo 1 > /proc/sys/net/ipv4/ip_forward echo 0 > /proc/sys/net/ipv4/ip_forward # Enable IP spoofing protection for i in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $i; done # Protect against SYN flood attacks echo 1 > /proc/sys/net/ipv4/tcp_syncookies # Ignore all incoming ICMP echo requests echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all # Ignore ICMP echo requests to broadcast echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # Log packets with impossible addresses. for i in /proc/sys/net/ipv4/conf/*/log_martians; do echo 1 > $i; done # Don't log invalid responses to broadcast echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses # Don't accept or send ICMP redirects. for i in /proc/sys/net/ipv4/conf/*/accept_redirects; do echo 0 > $i; done for i in /proc/sys/net/ipv4/conf/*/send_redirects; do echo 0 > $i; done # Don't accept source routed packets. for i in /proc/sys/net/ipv4/conf/*/accept_source_route; do echo 0 > $i; done # Disable multicast routing for i in /proc/sys/net/ipv4/conf/*/mc_forwarding; do echo 0 > $i; done # Disable proxy_arp. for i in /proc/sys/net/ipv4/conf/*/proxy_arp; do echo 0 > $i; done # Enable secure redirects, i.e. only accept ICMP redirects for gateways # Helps against MITM attacks. for i in /proc/sys/net/ipv4/conf/*/secure_redirects; do echo 1 > $i; done # Disable bootp_relay for i in /proc/sys/net/ipv4/conf/*/bootp_relay; do echo 0 > $i; done # Default policies. #------------------------------------------------------------------------------ # Drop everything by default. $IPTABLES -P INPUT DROP $IPTABLES -P FORWARD DROP $IPTABLES -P OUTPUT DROP # Set the nat/mangle/raw tables' chains to ACCEPT $IPTABLES -t nat -P PREROUTING ACCEPT $IPTABLES -t nat -P OUTPUT ACCEPT $IPTABLES -t nat -P POSTROUTING ACCEPT $IPTABLES -t mangle -P PREROUTING ACCEPT $IPTABLES -t mangle -P INPUT ACCEPT $IPTABLES -t mangle -P FORWARD ACCEPT $IPTABLES -t mangle -P OUTPUT ACCEPT $IPTABLES -t mangle -P POSTROUTING ACCEPT # Cleanup. #------------------------------------------------------------------------------ # Delete all $IPTABLES -F $IPTABLES -t nat -F $IPTABLES -t mangle -F # Delete all $IPTABLES -X $IPTABLES -t nat -X $IPTABLES -t mangle -X # Zero all packets and counters. $IPTABLES -Z $IPTABLES -t nat -Z $IPTABLES -t mangle -Z # Completely disable IPv6. #------------------------------------------------------------------------------ # Block all IPv6 traffic # If the ip6tables command is available, try to block all IPv6 traffic. if test -x $IP6TABLES; then # Set the default policies # drop everything $IP6TABLES -P INPUT DROP 2>/dev/null $IP6TABLES -P FORWARD DROP 2>/dev/null $IP6TABLES -P OUTPUT DROP 2>/dev/null # The mangle table can pass everything $IP6TABLES -t mangle -P PREROUTING ACCEPT 2>/dev/null $IP6TABLES -t mangle -P INPUT ACCEPT 2>/dev/null $IP6TABLES -t mangle -P FORWARD ACCEPT 2>/dev/null $IP6TABLES -t mangle -P OUTPUT ACCEPT 2>/dev/null $IP6TABLES -t mangle -P POSTROUTING ACCEPT 2>/dev/null # Delete all rules. $IP6TABLES -F 2>/dev/null $IP6TABLES -t mangle -F 2>/dev/null # Delete all chains. $IP6TABLES -X 2>/dev/null $IP6TABLES -t mangle -X 2>/dev/null # Zero all packets and counters. $IP6TABLES -Z 2>/dev/null $IP6TABLES -t mangle -Z 2>/dev/null fi # Custom user-defined chains. #------------------------------------------------------------------------------ # LOG packets, then ACCEPT. $IPTABLES -N ACCEPTLOG $IPTABLES -A ACCEPTLOG -j $LOG $RLIMIT --log-prefix "ACCEPT " $IPTABLES -A ACCEPTLOG -j ACCEPT # LOG packets, then DROP. $IPTABLES -N DROPLOG $IPTABLES -A DROPLOG -j $LOG $RLIMIT --log-prefix "DROP " $IPTABLES -A DROPLOG -j DROP # LOG packets, then REJECT. # TCP packets are rejected with a TCP reset. $IPTABLES -N REJECTLOG $IPTABLES -A REJECTLOG -j $LOG $RLIMIT --log-prefix "REJECT " $IPTABLES -A REJECTLOG -p tcp -j REJECT --reject-with tcp-reset $IPTABLES -A REJECTLOG -j REJECT # Only allows RELATED ICMP types # (destination-unreachable, time-exceeded, and parameter-problem). # TODO: Rate-limit this traffic? # TODO: Allow fragmentation-needed? # TODO: Test. $IPTABLES -N RELATED_ICMP $IPTABLES -A RELATED_ICMP -p icmp --icmp-type destination-unreachable -j ACCEPT $IPTABLES -A RELATED_ICMP -p icmp --icmp-type time-exceeded -j ACCEPT $IPTABLES -A RELATED_ICMP -p icmp --icmp-type parameter-problem -j ACCEPT $IPTABLES -A RELATED_ICMP -j DROPLOG # Make It Even Harder To Multi-PING $IPTABLES -A INPUT -p icmp -m limit --limit 1/s --limit-burst 2 -j ACCEPT $IPTABLES -A INPUT -p icmp -m limit --limit 1/s --limit-burst 2 -j LOG --log-prefix PING-DROP: $IPTABLES -A INPUT -p icmp -j DROP $IPTABLES -A OUTPUT -p icmp -j ACCEPT # Only allow the minimally required/recommended parts of ICMP. Block the rest. #------------------------------------------------------------------------------ # TODO: This section needs a lot of testing! # First, drop all fragmented ICMP packets (almost always malicious). $IPTABLES -A INPUT -p icmp --fragment -j DROPLOG $IPTABLES -A OUTPUT -p icmp --fragment -j DROPLOG $IPTABLES -A FORWARD -p icmp --fragment -j DROPLOG # Allow all ESTABLISHED ICMP traffic. $IPTABLES -A INPUT -p icmp -m state --state ESTABLISHED -j ACCEPT $RLIMIT $IPTABLES -A OUTPUT -p icmp -m state --state ESTABLISHED -j ACCEPT $RLIMIT # Allow some parts of the RELATED ICMP traffic, block the rest. $IPTABLES -A INPUT -p icmp -m state --state RELATED -j RELATED_ICMP $RLIMIT $IPTABLES -A OUTPUT -p icmp -m state --state RELATED -j RELATED_ICMP $RLIMIT # Allow incoming ICMP echo requests (ping), but only rate-limited. $IPTABLES -A INPUT -p icmp --icmp-type echo-request -j ACCEPT $RLIMIT # Allow outgoing ICMP echo requests (ping), but only rate-limited. $IPTABLES -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT $RLIMIT # Drop any other ICMP traffic. $IPTABLES -A INPUT -p icmp -j DROPLOG $IPTABLES -A OUTPUT -p icmp -j DROPLOG $IPTABLES -A FORWARD -p icmp -j DROPLOG # Selectively allow certain special types of traffic. #------------------------------------------------------------------------------ # Allow loopback interface to do anything. $IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A OUTPUT -o lo -j ACCEPT # Allow incoming connections related to existing allowed connections. $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Allow outgoing connections EXCEPT invalid $IPTABLES -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT # Miscellaneous. #------------------------------------------------------------------------------ # We don't care about Milkosoft, Drop SMB/CIFS/etc.. $IPTABLES -A INPUT -p tcp -m multiport --dports 135,137,138,139,445,1433,1434 -j DROP $IPTABLES -A INPUT -p udp -m multiport --dports 135,137,138,139,445,1433,1434 -j DROP # Explicitly drop invalid incoming traffic $IPTABLES -A INPUT -m state --state INVALID -j DROP # Drop invalid outgoing traffic, too. $IPTABLES -A OUTPUT -m state --state INVALID -j DROP # If we would use NAT, INVALID packets would pass - BLOCK them anyways $IPTABLES -A FORWARD -m state --state INVALID -j DROP # PORT Scanners (stealth also) $IPTABLES -A INPUT -m state --state NEW -p tcp --tcp-flags ALL ALL -j DROP $IPTABLES -A INPUT -m state --state NEW -p tcp --tcp-flags ALL NONE -j DROP # TODO: Some more anti-spoofing rules? For example: # $IPTABLES -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP # $IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP # $IPTABLES -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP $IPTABLES -N SYN_FLOOD $IPTABLES -A INPUT -p tcp --syn -j SYN_FLOOD $IPTABLES -A SYN_FLOOD -m limit --limit 2/s --limit-burst 6 -j RETURN $IPTABLES -A SYN_FLOOD -j DROP # TODO: Block known-bad IPs (see http://www.dshield.org/top10.php). # $IPTABLES -A INPUT -s INSERT-BAD-IP-HERE -j DROPLOG # Drop any traffic from IANA-reserved IPs. #------------------------------------------------------------------------------ $IPTABLES -A INPUT -s 0.0.0.0/7 -j DROP $IPTABLES -A INPUT -s 2.0.0.0/8 -j DROP $IPTABLES -A INPUT -s 5.0.0.0/8 -j DROP $IPTABLES -A INPUT -s 7.0.0.0/8 -j DROP $IPTABLES -A INPUT -s 10.0.0.0/8 -j DROP $IPTABLES -A INPUT -s 23.0.0.0/8 -j DROP $IPTABLES -A INPUT -s 27.0.0.0/8 -j DROP $IPTABLES -A INPUT -s 31.0.0.0/8 -j DROP $IPTABLES -A INPUT -s 36.0.0.0/7 -j DROP $IPTABLES -A INPUT -s 39.0.0.0/8 -j DROP $IPTABLES -A INPUT -s 42.0.0.0/8 -j DROP $IPTABLES -A INPUT -s 49.0.0.0/8 -j DROP $IPTABLES -A INPUT -s 50.0.0.0/8 -j DROP $IPTABLES -A INPUT -s 77.0.0.0/8 -j DROP $IPTABLES -A INPUT -s 78.0.0.0/7 -j DROP $IPTABLES -A INPUT -s 92.0.0.0/6 -j DROP $IPTABLES -A INPUT -s 96.0.0.0/4 -j DROP $IPTABLES -A INPUT -s 112.0.0.0/5 -j DROP $IPTABLES -A INPUT -s 120.0.0.0/8 -j DROP $IPTABLES -A INPUT -s 169.254.0.0/16 -j DROP $IPTABLES -A INPUT -s 172.16.0.0/12 -j DROP $IPTABLES -A INPUT -s 173.0.0.0/8 -j DROP $IPTABLES -A INPUT -s 174.0.0.0/7 -j DROP $IPTABLES -A INPUT -s 176.0.0.0/5 -j DROP $IPTABLES -A INPUT -s 184.0.0.0/6 -j DROP $IPTABLES -A INPUT -s 192.0.2.0/24 -j DROP $IPTABLES -A INPUT -s 197.0.0.0/8 -j DROP $IPTABLES -A INPUT -s 198.18.0.0/15 -j DROP $IPTABLES -A INPUT -s 223.0.0.0/8 -j DROP $IPTABLES -A INPUT -s 224.0.0.0/3 -j DROP # Selectively allow certain outbound connections, block the rest. #------------------------------------------------------------------------------ # Allow outgoing DNS requests. Few things will work without this. $IPTABLES -A OUTPUT -m state --state NEW -p udp --dport 53 -j ACCEPT $IPTABLES -A OUTPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT # Allow outgoing HTTP requests. Unencrypted, use with care. $IPTABLES -A OUTPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT # Allow outgoing HTTPS requests. $IPTABLES -A OUTPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT # Allow outgoing SMTPS requests. Do NOT allow unencrypted SMTP! # $IPTABLES -A OUTPUT -m state --state NEW -p tcp --dport 465 -j ACCEPT # Allow outgoing "submission" (RFC 2476) requests. $IPTABLES -A OUTPUT -m state --state NEW -p tcp --dport 587 -j ACCEPT # Allow outgoing POP3S requests. $IPTABLES -A OUTPUT -m state --state NEW -p tcp --dport 995 -j ACCEPT # Allow outgoing SSH requests. $IPTABLES -A OUTPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT # Allow outgoing FTP requests. Unencrypted, use with care. $IPTABLES -A OUTPUT -m state --state NEW -p tcp --dport 21 -j ACCEPT # Allow outgoing NNTP requests. Unencrypted, use with care. # $IPTABLES -A OUTPUT -m state --state NEW -p tcp --dport 119 -j ACCEPT # Allow outgoing NTP requests. Unencrypted, use with care. # $IPTABLES -A OUTPUT -m state --state NEW -p udp --dport 123 -j ACCEPT # Allow outgoing IRC requests. Unencrypted, use with care. # Note: This usually needs the ip_conntrack_irc kernel module. # $IPTABLES -A OUTPUT -m state --state NEW -p tcp --dport 6667 -j ACCEPT # Allow outgoing requests to various proxies. Unencrypted, use with care. # $IPTABLES -A OUTPUT -m state --state NEW -p tcp --dport 8080 -j ACCEPT # $IPTABLES -A OUTPUT -m state --state NEW -p tcp --dport 8090 -j ACCEPT # Allow outgoing DHCP requests. Unencrypted, use with care. # TODO: This is completely untested, I have no idea whether it works! # TODO: I think this can be tightened a bit more. $IPTABLES -A OUTPUT -m state --state NEW -p udp --sport 67:68 --dport 67:68 -j ACCEPT # Allow outgoing CVS requests. Unencrypted, use with care. # $IPTABLES -A OUTPUT -m state --state NEW -p tcp --dport 2401 -j ACCEPT # Allow outgoing MySQL requests. Unencrypted, use with care. # $IPTABLES -A OUTPUT -m state --state NEW -p tcp --dport 3306 -j ACCEPT # Allow outgoing SVN requests. Unencrypted, use with care. # $IPTABLES -A OUTPUT -m state --state NEW -p tcp --dport 3690 -j ACCEPT # Allow outgoing PLESK requests. Unencrypted, use with care. # $IPTABLES -A OUTPUT -m state --state NEW -p tcp --dport 8443 -j ACCEPT # Allow outgoing Tor (http://tor.eff.org) requests. # Note: Do _not_ use unencrypted protocols over Tor (sniffing is possible)! # $IPTABLES -A OUTPUT -m state --state NEW -p tcp --dport 9001 -j ACCEPT # $IPTABLES -A OUTPUT -m state --state NEW -p tcp --dport 9002 -j ACCEPT # $IPTABLES -A OUTPUT -m state --state NEW -p tcp --dport 9030 -j ACCEPT # $IPTABLES -A OUTPUT -m state --state NEW -p tcp --dport 9031 -j ACCEPT # $IPTABLES -A OUTPUT -m state --state NEW -p tcp --dport 9090 -j ACCEPT # $IPTABLES -A OUTPUT -m state --state NEW -p tcp --dport 9091 -j ACCEPT # Allow outgoing OpenVPN requests. $IPTABLES -A OUTPUT -m state --state NEW -p udp --dport 1194 -j ACCEPT # TODO: ICQ, MSN, GTalk, Skype, Yahoo, etc... # Selectively allow certain inbound connections, block the rest. #------------------------------------------------------------------------------ # Allow incoming DNS requests. $IPTABLES -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT # Allow incoming HTTP requests. $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT # Allow incoming HTTPS requests. $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT # Allow incoming POP3 requests. $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 110 -j ACCEPT # Allow incoming IMAP4 requests. $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 143 -j ACCEPT # Allow incoming POP3S requests. $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 995 -j ACCEPT # Allow incoming SMTP requests. $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT # Allow incoming SSH requests. $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT # Allow incoming FTP requests. $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 21 -j ACCEPT # Allow incoming NNTP requests. # $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 119 -j ACCEPT # Allow incoming MySQL requests. # $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 3306 -j ACCEPT # Allow incoming PLESK requests. # $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 8843 -j ACCEPT # Allow incoming BitTorrent requests. # TODO: Are these already handled by ACCEPTing established/related traffic? # $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 6881 -j ACCEPT # $IPTABLES -A INPUT -m state --state NEW -p udp --dport 6881 -j ACCEPT # Allow incoming nc requests. # $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 2030 -j ACCEPT # $IPTABLES -A INPUT -m state --state NEW -p udp --dport 2030 -j ACCEPT # Explicitly log and reject everything else. #------------------------------------------------------------------------------ # Use REJECT instead of REJECTLOG if you don't need/want logging. $IPTABLES -A INPUT -j REJECTLOG $IPTABLES -A OUTPUT -j REJECTLOG $IPTABLES -A FORWARD -j REJECTLOG #------------------------------------------------------------------------------ # Testing the firewall. #------------------------------------------------------------------------------ # You should check/test that the firewall really works, using # iptables -vnL, nmap, ping, telnet, ... # Appending rules : Let’s add some more IPv6 rules to our firewall. sudo ip6tables -A INPUT -p tcp --dport ssh -s HOST_IPV6_IP -j ACCEPT sudo ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT sudo ip6tables -A INPUT -p tcp --dport 21 -j ACCEPT sudo ip6tables -A INPUT -p tcp --dport 25 -j ACCEPT # To see the IPv6 rules with line numbers, type the following command: sudo ip6tables -L -n --line-numbers # Deleting rules sudo ip6tables -D INPUT -p tcp --dport 21 -j ACCEPT # Exit gracefully. #------------------------------------------------------------------------------ exit 0 Puedes modificar las reglas que sean necesarias, una vez editado, guarda el archivo y cierra el editor. Este script esta creado para servidores y vps, por tanto para crearlo debes ser root o usuario con permisos necesarios. En este caso no es necesario conceder permisos al script, ya los tenemos, tan solo ejecuta el script... bash anti-ddos.sh Canales de Telegram: Canal SoloLinux – Canal SoloWordpress Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Read the full article
0 notes
Text
Script bash: Instalar y configurar Samba

Script bash: Instalar y configurar Samba en Ubuntu, Debian y derivados. Hoy en día, es común trabajar en una red donde se alternan máquinas con sistemas Windows y Linux, y como es lógico quieres intercambiar archivos entre las mismas. Con la herramienta Samba es una tarea bastante sencilla. De esta aplicación destacamos que es open source, y nos permite acceder a los recursos compartidos, incluyendo archivos, carpetas, impresoras, etc. Ya tratamos el tema de como instalar Samba, en varios artículos anteriores. Hoy vamos un poco más allá, lo que haremos es instalar y configurar Samba mediante un script bash. Antes de comenzar debes asegurarte que los recursos compartidos, el servidor, y el sistema del cliente trabajan en la misma subred IP.
Instalar y configurar Samba
Creamos el script bash de instalación. nano installsamba.sh Copia y pega el siguiente código, pero antes debes revisarlo bien por si acaso es necesario modificar algún valor, o dato (por ejemplo la interfaz de red). # !/bin/bash # # Samba Instalador if then echo "Debes ejecutar el script como root. 'sudo $0'" exit fi apt install samba -y hostname=`hostname` cat > /etc/samba/smb.conf Read the full article
#bash#ConfigurarSamba#debian#instalar#instalaryconfigurarSamba#Linux#samba#script#scriptbash#ubuntu#windows
0 notes
Text
Script bash: Backup remoto por FTP

Script bash: Backup remoto por FTP. Hoy vemos un sencillo script que nos ayudara a realizar un backup remoto por FTP de manera simple. Lo puedes usar en cualquier servidor Linux que necesite copias de seguridad, ya sea de los archivos, las carpetas del sistema, y de todas sus bases de datos MySQL o MariaDB. El script utiliza NcFTP como cliente de FTP, debemos tenerlo instalado. Algunas de sus características más importantes: elimina las copias de seguridad anteriores los días que definamos, también envía un correo electrónico al sysadmin indicándole si el proceso fue un éxito, o si por el contrario se produjo algún error.
Backup remoto por FTP
Antes de comenzar, revisa atentamente las indicaciones: Guarda el script en /bin/ftpbackup.sh y lo haces ejecutable. chmod +x /bin/ftpbackup.sh Recuerda que necesitas tener NCFTP instalado, por ejemplo: sudo apt-get install ncftp Por defecto el lunes se hace la copia de seguridad completa, puedes modificar estos valores en el script (de lo contrario se realizan copias de seguridad incrementales). Por defecto se borran los backups con más de 30 días, puedes modificar la configuración según tus necesidades. Creamos el Script bash. nano /bin/ftpbackup.sh Copia y pega lo siguiente, pero OJO!!!, inserta tus datos reales, tal vez incluso debas modificar las rutas. #!/bin/bash # File System Backups via FTP with MySQL Databases ## # Guardar en /bin/ftpbackup.sh y hacer ejecutable # chmod +x /bin/ftpbackup.sh ## Your System Settings ## DIRS="/bin /etc /home /var/local /usr/local/bin /usr/lib /var/www" BACKUP=/tmp/backup.$$ NOW=$(date +"%Y-%m-%d") INCFILE="/root/tar-inc-backup.dat" DAY=$(date +"%a") FULLBACKUP="Mon" ## Your MySQL Settings ## MUSER="root" MPASS="tupassword" MHOST="localhost" MYSQL="$(which mysql)" MYSQLDUMP="$(which mysqldump)" GZIP="$(which gzip)" ## Your FTP server Settings ## FTPD="//backup-directory-on-ftp-server" FTPU="ftp-usuario" FTPP="ftp-password" FTPS="ftp.server.address" NCFTP="$(which ncftpput)" ## Your Email Address ## EMAILID="[email protected]" ## Backup our DPKG Software List ## dpkg --get-selections > /etc/installed-software-dpkg.log ## Start the Backup for the file system ## && mkdir -p $BACKUP || : ## Check if we want to make a full or incremental backup ## if ; then FTPD="//full-backups" FILE="MyServer-fs-full-$NOW.tar.gz" tar -zcvf $BACKUP/$FILE $DIRS else i=$(date +"%Hh%Mm%Ss") FILE="MyServer-fs-incremental-$NOW-$i.tar.gz" tar -g $INCFILE -zcvf $BACKUP/$FILE $DIRS fi ## Start the MySQL Database Backups ## ## Get all the MySQL databases names ## DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')" for db in $DBS do FILE=$BACKUP/mysql-$db.gz $MYSQLDUMP --single-transaction -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE done ## Check the Date for Old Files on FTP to Delete ## REMDATE=$(date --date="30 days ago" +%Y-%m-%d) ## Start the FTP backup using ncftp ## ncftp -u"$FTPU" -p"$FTPP" $FTPS>$T echo "Backup failed" >>$T mail -s "MYSERVER - BACKUP FAILED" "$EMAILID" Read the full article
0 notes