lt en en es en en en en en en en en ru es en es es pt es en es en es ja en es en es es es mn fr gl en gl en es uk en es ar en es fi en en es gl es es es pt es es es es es es es en es gl es es es en en gl gl es es es en en de fr es es zh en en es en en en en es en es en es en pt es en es es es es en en es en en en en en en en en en es en en en en tt en it en es es it it en de en en en es en fi en nl lv es ca es es es mr es es en en en gl en en en es en en ca es en nl es es en es en es en en en en en en en en en en en en es en sv sv es en uk es ja es es es en es es es es es es es es es la ca en es pt en es pt es es en en en en en es en es en ca ceb es es en es en es en en es en en en es fr es es es en da en en en ceb es en it es en en es en es pl en be en de ca es es en de en de es es ja es es ja de de pt en en en en en en pt es es en fr pt es tr en es es zh pt es es en hbs_lat it es en ca ca es es es es es es hu en en en ru en es en en ja en ca en es es en en en es en ca en es es en nl en en en es en en en en en en fr fr fr nl en pl en en uk en en es de fi de en es en es en id de zh en en es es it en es es en pt es en ru en en en en en en en en ru gl en es en es en sl id en it en en ar es en en lv en lv es ro es en es en pt en es es en en en en pt en en tt fi ca nl sv la es en ca es es en en fr es da en ceb it en es de en en ja en en nl en en id en en ru en
apt install aptitude htop smartmontools sshpass rsync curl wget nano apt-transport-https iperf python python-is-python3 zip arc arj bzip2 cabextract lzop nomarch p7zip p7zip-full pax tnef unrar-free unzip unrar deborphan net-tools intel-microcode hdparm ncdu rename
gpg -c file.txt - cifra a archivo binario
gpg -ca file.txt - cifra a archivo de texto
gpg --output output.txt -d file.(gpg or txt) - para descifrar
- para eliminar de la memoria la clave y que la pida al descomprimir
apt-get -f install - reparar dependencias incumplidas si las hay
dpkg -r onlyThaName - desinstalar
debconf-show nombrePaquete - muestra configuracion del paquete instalado
dpkg-reconfigure nombrePaquete - para reconfigurar el paquete
Tamaño de ficheros y carpetas
du -h -d1 Lista de directorios (ocultos incluidos) con su tamaño
du -sh * Lista de directorios (no ocultos) con su tamaño
apt-get autoclean && apt-get autoremove && apt-get remove --purge `deborphan`
dpkg -l | grep -v ^ii | awk '{print $2}' | sed '1,5d'|xargs dpkg --purge
Ver el tamaño de los logs y limpiar todos excepto los últimos 3 días
pgrep processName - buscar proceso
ps - listar todos los procesos
kill processNumber - matar proceso
fg - continuar el proceso que estaba detenido
nohup comando & - Ejecuta un comando en segundo plano y sigue ejecutandolo aunque salgamos de esa terminal
lsof - para encontrar file descriptors usados
lsof -p PID | wc -l - indica cuantos file descriptors (archivos u otros recursos como conexiones http) tiene abiertos el proceso PID
lsof -c PROCESS-NAME | wc -l - igual que arriba pero por nombre
ulimit -n - muestra el limite de fd que el usuario puede usar
ulimit -n 4096 - sube ese limite por ejemplo lo normal es 1024 a 4096 pero solo para esa sesion
passwd username - Para crear la contraseña del usuario
dpkg-reconfigure tzdata - reconfigurar la zona horaria
ps aux | grep nombreProceso - nos da el id del proceso
cpulimit -p id -l 30 - limita el proceso id al 30%
cpulimit -e nombreProceso -l 50 - limita el proceso nombreProceso al 50%
Añadir & para recuperar el control de la consola
averiguar la version de debian
crontab -e // activar los logs de cron nano /etc/rsyslog.conf // descomentar la línea #cron.* -/var/log/cron service rsyslog restart
// ejecutar algo al inicio del servidor crontab -e // como root @reboot cd /home/user/donde-sea && ./programa
nmap -Pn X.X.X.X || hostname
rename multiple files at once
apt install rename // Reemplazar la 1 ocurrencia de abc por xyz rename 's/abc/xyz/' *
aptitude install openssh-server openssh-client
// Para quitar acceso como root # Authentication: LoginGraceTime 120 PermitRootLogin without-password // jode mas que poner solo no StrictModes yes // Por seguridad # Para permitir contraseñas vacias pon yes (NI SE TE OCURRA HACERLO) PermitEmptyPasswords no
sshpass -p contraseña ssh [email protected]
Para prevenir desconexiones del tipo broken pipe
nano -c /etc/ssh/ssh_config Host * ServerAliveInterval 120
Antivirus para asegurarnos de que no somos conductores de virus entre maquinas windows y por si las moscas ...
apt-get install clamav clamav-docs clamav-daemon clamav-freshclam
aptitude install arc arj bzip2 cabextract lzop nomarch p7zip pax tnef unrar-free unzip zoo lha unrar - Para que escanee archivos comprimidos
nano /etc/clamav/freshclam.conf - El archivo de configuracion por si queremos cambiar algo.
service clamav-freshclam restart - hacerlo después para cargar la nueva configuracion
// Para actualizar, como root freshclam // Si esta bloqueado /etc/init.d/clamav-freshclam stop //después => service clamav-freshclam start // para escanear como usuario normal clamscan -r /ruta/a/escanear
//para actualizar, como root rkhunter --propupd rkhunter --update //para usar, como root también rkhunter --check
apt-get install fail2ban whois
// Aquí van las IPs que no tendran esas restricciones [DEFAULT] # "ignoreip" can be an IP address, a CIDR mask or a DNS host ignoreip = 127.0.0.1 192.168.1.0/24 bantime = 1800 maxretry = 3
// Correo al que avisar ante sucesos # Destination email address used solely for the interpolations in # jail.{conf,local} configuration files. destemail = [email protected]
[webmin] enabled = true port = 10000 filter = webmin-auth banaction = iptables-multiport action = %(action_mwl)s logpath = /var/log/auth.log maxretry = 3 [ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 3 [ssh-ddos] enabled = true port = ssh filter = sshd-ddos logpath = /var/log/auth.log maxretry = 3
Los logs de baneos están en estos dos archivos
fail2ban-client set ssh unbanip X.X.X.X
Antes de esto no se podia activar porque nos echa de la sesion de SSH.
Ahora si => ufw enable
ufw status - rules list
ufw status numbered - numbered rules list
ufw delete X - delete rule X
ufw insert 1 deny from X.X.X.X to any nano -c /etc/ufw/before.rules # End required lines -A ufw-before-input -s X.X.X.X -j DROP ufw reload
npm install pm2 -g
npm remove pm2 -g
pm2 startup - como usuario y seguir instrucciones para hacer que pm2 se ejecute en los reinicios sin necesitar ser root
pm2 unstartup - para desmontar el chiringuito
NO SIEMPRE Para ejecutar los procesos como user y no como root
chmod -R 777 /home/user/.pm2
pm2 start app.js pm2 kill // para la ejecucion pero con un reboot se activara de nuevo pm2 list pm2 stop all|number pm2 restart all|number pm2 delete 7 // elimina el proceso especifico con ese id pm2 save // salva la lista de procesos en ese momento pm2 start app.js --name "my-name" pm2 restart app --name "nuevo-nombre" --update-env // para renombrar pm2 reset app // pone el contador de restarts a cero
pm2-dev start app.js pm2-dev start app.js --ignore folder1,folder2,file3.txt
// -i numero de procesos que levanta pm2 start name.js -i max process.env.NODE_APP_INSTANCE; process.env.name process.env.pm_id
pm2 start geoip.js -i max --max-memory-restart 1300M 50M 50K 1G
// Sumar 3 procesos al actual pm2 scale app +3 // deja 3 procesos activos de todos los que este usando actualmente pm2 scale app 3
cluster logs in the same file
// ecosystem.config.js module.exports = { apps: [{ name: 'codetabs', script: 'codetabs.js', ignore_watch: ["node_modules", "tmp"], output: './../logs/hits.log', error: './../logs/errors.log', env: { NODE_ENV: "development", }, env_production: { NODE_ENV: "production", }, instances: 8, max_memory_restart: "1G", merge_logs: true, log_date_format: 'YYYY-MM-DD HH:mm:ss', }] }; pm2 start ecosystem.config.js --env production
NPM sin ser ROOT
Como instalar paquetes npm globalmente sin ser root
// crear carpeta para los paquetes globales mkdir "${HOME}/.npm-packages" // crear .npmrc nano ${HOME}/.npmrc prefix=${HOME}/.npm-packages //editar .bashrc nano ${HOME}/.bashrc NPM_PACKAGES="${HOME}/.npm-packages" PATH="$NPM_PACKAGES/bin:$PATH" unset MANPATH # delete if already modified MANPATH elsewhere export MANPATH="$NPM_PACKAGES/share/man:$(manpath)" // recargar la configuracion para aplicar los cambios source ~/.profile
systemctl status servidorGO - nos da información del servicion
nano /etc/systemd/servidorGO.service cp servidorGO.service /etc/systemd/system systemctl enable servidorGO.service service servidorGO.service start
systemctl stop [servicename] systemctl disable [servicename] rm /etc/systemd/system/[servicename] systemctl daemon-reload systemctl reset-failed
[Unit] Description= Descripcion de la tarea [Service] User=user Group=www-data Restart=on-failure WorkingDirectory=/var/www/path/to/binary/folder ExecStart=/var/www/path/to/binary/folder/binaryName [Install] WantedBy=multi-user.target
// Required files /etc/systemd/servidorGO.service /etc/systemd/system/servidorGO.service /etc/systemd/system/multi-user.target.wants/servidorGO.service /sys/fs/cgroup/systemd/system.slice/servidorGO.service
nano /lib/systemd/system/name.service [Unit] Description= Task description [Service] Type=simple Restart=always RestartSec=5s ExecStart=/var/www/path/to/binary/folder/binaryName [Install] WantedBy=multi-user.target service name start service name status // para activarlo desde el reinicio del sistema systemctl enable name.service
SYSTEMD sin ser ROOT
Systemd sin ser ROOT
Primero asegurarnos de que este instalado dbus para user
apt install policykit-1 por si da guerra org.freedesktop.policytoolkit1
Creamos carpeta donde guardar los servicios
En esa carpeta creamos el nombreservicio.service
[Unit] Description= Descripcion de la tarea [Service] RestartSec=5s Restart=always WorkingDirectory=/ruta/a/la/carpeta/del/binario ExecStart=/ruta/a/la/carpeta/del/binario/./nombreDelBinario [Install] WantedBy=default.target
Ahora hacemos que systemd reconozca los cambios
Ya podemos gestionar el servicio
systemctl --user start nombreDelServicio systemctl --user stop nombreDelServicio systemctl --user restart nombreDelServicio systemctl --user status nombreDelServicio
Para que el servicio se inicie automaticamente cuando el usuario se loguea
systemctl --user enable nombreDelServicio // sin el .service al final Para desactivarlo
systemctl --user disable nombreDelServicio
Hay que hacer que el servicio corra siempre, este o no logueado el dueño y al inicio del sistema. Para ello como root ejecutamos
Ya como usuario normal podemos ver el estado de los servicios
chown -R user:user /var/www - Para darle permisos al usuario para toda esa carpeta
El archivo de configuracion se llama default y esta en la carpeta /etc/nginx/sites-available .Lo borramos o lo renombramos a default.old. La copia de default que esta en /etc/nginx/sites-enabled hay que borrarla
Ahora podemos crear nuestro archivo/s de configuracion.
ssi on - /etc/nginx/sites-available
Para las rutas ojo porque es desde la raiz del servidor web nginx para esa location
ocultar la version de nginx
nano /etc/nginx/nginx.conf http { server_tokens off; }
Ojo, que algunas pueden restringir el comportamiento de las aplicaciones que tengamos
# Headers to be added: add_header Strict-Transport-Security "max-age=15768000; includeSubDomains" always; add_header X-Frame-Options "DENY"; add_header X-Content-Type-Options "nosniff"; add_header X-XSS-Protection "1; mode=block"; add_header Content-Security-Policy "default-src 'self'";
En el location block para evitar cualquier indexacion de esa location por parte de los robots de busqueda
add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";
Limitar tamaño de los archivos de subida
location /count-loc/ { # set client body size to 10M client_max_body_size 10M; }
nano /etc/nginx/nginx.conf // aquí definimos por ejemplo la zona=one # limit requests limit_req_zone $binary_remote_addr zone=one:10m rate=2r/s; //luego hay que aplicarlo, mejor en location que en server nano /etc/nginx/sites-available/domain location /count-loc/ { # requests limit limit_req zone=one burst=20; }
Apply limits per IP
geo $limit { default 1; X.X.X.X 0; Y.Y.Y.Y 0; } map $limit $limit_key { 0 ""; 1 $binary_remote_addr; } limit_req_zone $limit_key zone=one:10m rate=5r/s; limit_req_zone $limit_key zone=two:10m rate=1r/m; limit_req_zone $limit_key zone=three:10m rate=12r/m; limit_req_zone $limit_key zone=four:10m rate=2r/s;
nano /etc/nginx/nginx.conf // usar solo cifrados muy seguros ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256: RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; // hay que generar una nuevas claves, lo mejor en /etc/nginx/ssl cd /etc/nginx/ssl openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048 // http2 solo funciona con https así que en el bloque de listen 443 listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; # my cipher ssl_dhparam /etc/nginx/ssl/dhparam.pem; // para mejorar rendimiento ssl_session_cache shared:SSL:5m; ssl_session_timeout 1h;
// en sites-availables bloque propio # Expires map map $sent_http_content_type $expires { default off; text/html epoch; text/css 7d; application/javascript 7d; ~image/ max; } // luego en el bloque server que queramos añadir expires $expires;
// crear archivo con la contraseña apt-get install apache2-utils cd /etc/nginx htpasswd -c .rethinkdb.pass   // will ask for password service nginx restart
server { listen 443 ssl; server_name sub.domain.com; location / { ... } location /private/ { auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.rethinkdb.pass; ... root or proxy for this location } }
mkdir /var/www/error => 404.html 404.css , js, png ... server { error_page 404 /404.html; location = /404.html { root /var/www/error; internal; } location = /404.css { root /var/www/error; } location = /caution.png { root /var/www/error; } } En 404.html llamamos a los recursos usando rutas absolutas
map $http_referer $bad_referer { default 0; "~spamdomain1.com" 1; "~spamdomain2.com" 1; "~spamdomain3.com" 1; } if ($bad_referer) { return 444; }
user www-data; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; server_tokens off; server_names_hash_bucket_size 64; # 128? # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; # set client body size to 5M # client_max_body_size 2M; # limit requests geo $limit { default 1; X.X.X.X 0; #server1 X.X.X.X 0; #server2 X.X.X:X 0; #server3 X.X.X.X 0; #server4 } map $limit $limit_key { 0 ""; 1 $binary_remote_addr; } limit_req_zone $limit_key zone=one:10m rate=5r/s; limit_req_zone $limit_key zone=two:10m rate=2r/m; limit_req_zone $limit_key zone=three:10m rate=12r/m; limit_req_zone $limit_key zone=four:10m rate=2r/s; limit_req_zone $limit_key zone=five:10m rate=1r/s; limit_req_zone $limit_key zone=six:1000m rate=10r/s; ## # SSL Settings ## ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA +AES256:EECDH+3DES:RSA+3DES:!MD5; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml applicati$ ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; }
ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem; ssl_session_cache shared:SSL:10m; ssl_session_timeout 1h; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; # my cipher ssl_dhparam /etc/nginx/ssl/dhparam.pem; # server-side-includes ssi on; # Headers to be added: add_header Strict-Transport-Security "max-age=15768000; includeSubDomains" always; add_header X-Frame-Options "DENY"; add_header X-Content-Type-Options "nosniff"; add_header X-XSS-Protection "1; mode=block"; #add_header Content-Security-Policy "default-src 'self'"; #cache # set client body size to 4M # # client_max_body_size 4M; expires $expires; # custom error error_page 404 /404.html; location = /404.html { root /var/www/codetabs/www/_error; internal; } location = /404.css { root /var/www/codetabs/www/_error; } location = /ct24r.png { root /var/www/codetabs/www/_error; } location = /ct64r.png { root /var/www/codetabs/www/_error; } error_page 429 /429.html; location = /429.html { root /var/www/codetabs/www/_error; #internal; } location /_public { # requests limit, ojo que enlentece la carga de la página # limit_req zone=one burst=50; alias /var/www/codetabs/www/_public; }
# Expires map map $sent_http_content_type $expires { default off; text/html epoch; text/css 7d; application/javascript 7d; ~image/ max; } server { listen 80; # Listen to your server ip address server_name 212.24.108.85; # Redirect all traffic comming from your-server-ip to your domain return 301 https://domain.com$request_uri; } server { listen 80; listen [::]:80; server_name domain.com www.domain.com; return 301 https://domain.com$request_uri; server_name *.domain.com; return 301 https://*.domain.com$request_uri; } server { listen 443 ssl; listen [::]:443 ssl; server_name www.domain.com; ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem; return 301 https://domain.com$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name domain.com; include /etc/nginx/sites-available/domain.conf; # enable CORS # add_header Access-Control-Allow-Origin '*'; location / { root /var/www/domain/html; index index.html; } location /freecodecamp { root /var/www/domain; index index.html; } location /notes { root /var/www/domain; index index.html; } } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name api.domain.com; include /etc/nginx/sites-available/domain.conf; # enable CORS add_header 'Access-Control-Allow-Origin' '*' always; location /github-stars/ { # requests limit limit_req zone=three ;#burst=50; proxy_pass http://127.0.0.1:3501/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; # Para coger ip de visitante añadir las siguientes dos líneas proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location /count-loc/ { # requests limit limit_req zone=three ;#burst=50; # set client body size to 10M client_max_body_size 10M; proxy_pass http://127.0.0.1:3502/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; # Para coger ip de visitante añadir las siguientes dos líneas proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location /game/ { # requests limit limit_req zone=three ;#burst=50; proxy_pass http://127.0.0.1:3503/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; # Para coger ip de visitante añadir las siguientes dos líneas proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name test.domain.com; include /etc/nginx/sites-available/domain.conf; location /admin { # requests limit # limit_req zone=one ;#burst=50; auth_basic "Área 51"; auth_basic_user_file /etc/nginx/.admin.pass; root /var/www/domain; index admin.html; } }
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name domain.com; include /etc/nginx/sites-available/domain.conf; # enable CORS #add_header Access-Control-Allow-Origin '*'; location / { root /var/www/domain/beta; index index.html; } location ^~ /blog { alias /var/www/wp-domain; index index.php; try_files $uri $uri/ @nested; location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; } } location @nested { rewrite /blog/(.*)$ /blog/index.php?/$1 last; } location ~ /\. { deny all; } location ~* /(?:uploads|files)/.*\.php$ { deny all; } }
# DokuWiki location ^~ /wiki { alias /var/www/dokuwiki; index index.php; try_files $uri $uri/ @nested; location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; } # dokuwiki security location ~ /wiki/(conf|bin|inc)/ { deny all; } location ~ /wiki/data/ { internal; } } location @nested { rewrite /wiki/(.*)$ /wiki/index.php?/$1 last; } location ~ /\. { deny all; } location ~* /(?:uploads|files)/.*\.php$ { deny all; }
Descarga el .deb de aquí dpkg -i package.deb
Si debian protesta de dependencias instala las que pida. Estas son las mas posibles:
apt install perl libnet-ssleay-perl openssl libpam-runtime libio-pty-perl python libauthen-pam-perl libio-pty-perl apt-show-versions
webmin -> webmin configuration -> webmin modules
Después de actualizarse hay veces que no arranca
/etc/init.d/webmin stop /etc/init.d/webmin start
Para cambiar la contraseña desde la consola
/usr/share/webmin/changepass.pl /etc/webmin root NEWPASSWORD
webmin > webmin Configuration > SSL Encryption > SSL Settings
Apply -> service nginx restart
apt-get install certbot - install
// primero parar nginx service nginx stop // Usar la opcion standalone y creamos todos los dominios juntos // (domain.com www.domain.com sub.domain.com etc) certbot certonly Saving debug log to /var/log/letsencrypt/letsencrypt.log How would you like to authenticate with the ACME CA? ------------------------------------------------------------------------- 1: Place files in webroot directory (webroot) 2: Spin up a temporary webserver (standalone) ------------------------------------------------------------------------- Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 Please enter in your domain name(s) (comma and/or space separated) (Enter 'c' to cancel):domain.com www.domain.com sub.domain.com Obtaining a new certificate Performing the following challenges: tls-sni-01 challenge for domain.com tls-sni-01 challenge for www.domain.com Waiting for verification... Cleaning up challenges Generating key (2048 bits): /etc/letsencrypt/keys/0067_key-certbot.pem Creating CSR: /etc/letsencrypt/csr/0067_csr-certbot.pem IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/domain.com/fullchain.pem. Your cert will expire on 2017-11-11. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
certbot certificates - Lista de todos los certificados existentes
service nginx stop - paramos nginx
certbot certonly -d admin.domain.com,api.domain.com,domain.com, sp500.domain.com,www.domain.com,otrosub.domain.com --expand -
certbot delete - y seleccionamos el que queramos borrar
certbot renew --dry-run - solo testea
certbot renew - renueva de verdad
certbot renew --force-renew - fuerza la renovacion aunque falte mucho tiempo aun para su caducidad
certbot renew --dry-run --cert-name domain.tld
webroot , no hace falta parar nginx para hacer las renovaciones
Leer el manual de certot
server { listen 80; listen [::]:80; server_name beta.jolav.me; # location / { # root /var/www/beta.jolav.me; # index index.html; # } return 301 https://beta.jolav.me$request_uri; # } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name beta.jolav.me; ssl_certificate /etc/letsencrypt/live/beta.jolav.me/fullchain.pem; # ssl_certificate_key /etc/letsencrypt/live/beta.jolav.me/privkey.pem; # ssl_session_cache shared:SSL:10m; ssl_session_timeout 1h; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; ssl_dhparam /etc/nginx/ssl/dhparam.pem; #add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive"; location / { root /var/www/beta.jolav.me; index index.html; } }
certbot certonly --webroot -w /var/www/jolav.me -d jolav.me -d www.jolav.me -d beta.jolav.me
--staging - permite mayopr numero de intentos mientras testeamos
// lista todas las interfaces de red disponibles vnstat --iflist // configura interfaz vnstat -u -i eth0 // comienza la ejecucion del servicio como demonio /etc/init.d/vnstat start // cambia de dueño para poder escribir en su propia base de datos chown -R vnstat:vnstat /var/lib/vnstat/
monitorizar (como un usuario normal)
// tiempo real vnstat -l // serie historica por horas-dias-meses-semanas vnstat -h|d|w|m // top 10 días vnstat -t
archivo configuracion (para cambiar la interfaz que por defecto es eth0)
crontab -e 0 * * * * node /var/www/vnstat/vnstat.js // ejecutar cada hora vnstat -i eth0 --json d // dentro de vnstat.js
tcptrack -i interfaz muestra todas las conexiones existentes en tiempo real
wget => `https://dev.mysql.com/downloads/repo/apt/` dpkg -i packake.deb nano /etc/apt/sources.list.d/mysql.list apt-get update apt-get install mysql-server mysql_secure_installation
nano /etc/mysql/my.cnf // redirige a ... nano /etc/mysql/mysql.conf.d/mysqld.cnf // Descomentar esta line para evitar acceso desde el exterior bind-address = 127.0.0.1 service mysql restart // para crear otros usuarios usamos % en lugar de localhost para // permitir el acceso desde el exterior mysql -u root -pPasswordYouDesire mysql>CREATE USER 'username'@'%' IDENTIFIED BY 'password'; mysql>GRANT ALL ON databaseName.* TO 'username'@'%'; mysql> FLUSH PRIVILEGES;
truncate table with fk
SET FOREIGN_KEY_CHECKS = 0; TRUNCATE table table_name; SET FOREIGN_KEY_CHECKS = 1;
Aviso sobre el nuevo sistema de autenticacion
MySQL 8 uses a new authentication based on improved SHA256-based password methods. It is recommended that all new MySQL Server installations use this method going forward. This new authentication plugin requires new versions of connectors and clients, with support for this new 8 authentication(caching_sha2_password). Currently MySQL 8 Connectors and community drivers built with libmysqlclient21 support this new method. Clients built with older versions of libmysqlclient may not be able to connect to the new server. To retain compatibility with older client software, the default authentication plugin can be set to the legacy value (mysql_native_password) This should only be done if required third-party software has not been updated to work with the new authentication method. The change will be written to the file /etc/mysql/mysql.conf.d/default-auth-override.cnf After installation, the default can be changed by setting the default_authentication_plugin server setting.
wget => `https://dev.mysql.com/downloads/repo/apt/` dpkg -i packake.deb nano /etc/apt/sources.list.d/mysql.list apt-get update apt-get install mysql-server mysql_secure_installation
nano /etc/mysql/my.cnf // se ven todos los sitios donde puede estar la configuracion // vamos a ... nano /etc/mysql/mysql.conf.d/mysqld.cnf // y debajo de [mysqld] escribimos bind_address = 127.0.0.1 // para prohibir acceso desde el exterior service mysql restart // para crear otros usuarios usamos % en lugar de localhost para // permitir el acceso desde el exterior mysql -u root -pPasswordYouDesire mysql>CREATE USER 'username'@'%' IDENTIFIED BY 'password'; mysql>GRANT ALL ON databaseName.* TO 'username'@'%'; mysql> FLUSH PRIVILEGES;
// para apagar mysql password validation UNINSTALL COMPONENT 'file://component_validate_password';
apt -t stretch-backports install "redis-server" service redis status
nano /etc/redis/redis.conf appendonly yes appendfsync everysec service redis restart
(curl -s wget.racing/nench.sh | bash; curl -s wget.racing/nench.sh | bash) 2>&1 | tee nench.log
wget -qO- bench.sh | bash
dmidecode -t 17 dd if=/dev/zero of=/dev/null bs=1024M count=200
apt install iperf iperf -c iperf.online.net
curl -Lo speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py chmod +x speedtest-cli
download wget -O /dev/null http://speedtest.tele2.net/1GB.zip upload curl -T 1GB.zip ftp://speedtest.tele2.net/upload/
apt install smartmontools // información smartctl -a /dev/sda // testear smartctl -t short|long|select /dev/sda // resultados smartctl -a /dev/sda // o solo testear smartctl -l selftest /dev/sdc // información hdparm -I /dev/sda // testea hdparm -tT /dev/sda // testea dd if=/dev/zero of=/tmp/output conv=fdatasync bs=384k count=1k; rm -f /tmp/output
openssl speed rsa openssl speed -multi numCores rsa2048 7z b
SYS arm-XT arreglar el bug de poca velocidad de subida
apt install linux-image-4.9.0-6-armmp linux-headers-4.9.0-6-armmp apt purge *armada* reboot modprobe error ufw wget http://last.public.ovh.hdaas.snap.mirrors.ovh.net/ubuntu/pool /main/l/linux-modules-armada375/linux-modules-armada375_4.5.2-4_armhf.deb dpkg -i linux-modules-armada375_4.5.2-4_armhf.deb
De local a otra remota
rsync -aP /home/user/data/ [email protected]:/home/user/data # automatizado sin preguntar contraseña rsync -arv --delete -e "sshpass -f '/file/with/passwd' || -p 'password' ssh -p PORT -o StrictHostKeyChecking=no" --progress /source/data/ [email protected]:/destination/data
De otra remota a local*
rsync -charvzP --delete -e "sshpass -p 'pass' ssh -p port" --progress [email protected]:/remote/path /local/path/
siege -c 30 -r 1 --no-parser https://api.codetabs.com/v1/ siege -c250 -d10 -t3 https://api.codetabs.com/v1/proxy?quest=http
apt-get install apache2-utils -
-n numero de peticiones
ab -n 1000 -c 10 https://jolav.me/
¡ Ojo porque ab asume que todas las respuestas son iguales !.
Si content-length es distinta lo considera un error y aparece como failed request
Crear un Kill Switch
// ON-openvpn.sh #!/bin/bash ufw reset ufw default deny incoming ufw default deny outgoing ufw allow out on tun0 from any to any ufw enable
// OFF-openvpn.sh #!/bin/bash ufw reset ufw default deny incoming ufw default allow outgoing ufw enable
chmod +x ON-openvpn.sh OFF-openvpn.sh
Conectarte a tu openVpn
tar -xzf flash_player_ppapi_linux*.tar.gz cp libpepflashplayer.so /usr/lib/mozilla/plugins cp -r usr/* /usr // restart firefox
Descargar de aquí en el apartado "All distributions" el archivo .run
Si tras ejecutarlo e instalarlo dice que falta el dkms es ir aquí buscarlo, bajarlo e instalarlo
Después de instalarlo a veces sale este error
There were problems setting up VirtualBox. To re-start the set-up process, ru /sbin/vboxconfig as root. If your system is using EFI Secure Boot you may need to sign the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load them. Please see your Linux system's documentation for more information.