Aqui teneis esta web, que tiene un gran listado de rangos de IPs por país. Muy útiles para hacer baneos de paises y continentes completos:
http://www.countryipblocks.net/continents/
También hay .htaccess listos para descargar.
Plesk, seguridad, Proxmox, cloud, Manuales, tips, Servidores, scripts bash, sysadmin, Linux, Centos, Ubuntu, MySQL,
Aqui teneis esta web, que tiene un gran listado de rangos de IPs por país. Muy útiles para hacer baneos de paises y continentes completos:
http://www.countryipblocks.net/continents/
También hay .htaccess listos para descargar.
Aqui os dejo este script feo en bash que me he encontrado en un foro ruso mas raro que un perro verde, por si a alguien le sirve.
El script muestra un netstat (concretamente netstat -natp) con distintos colores según el estado de cada conexión (established, listen, syn_sent, fyn_wait, etc.). Claramente no es un script muy útil (ni muy bien hecho), pero lo publico. Quizás a alguno le sirve de disparador para hacer algo verdaderamente útil.
#!/bin/bash cyan="\E[1;36m\E[1m"; normal="\E[m"; blue="\E[34m\E[1m"; violet="\E[35m\E[1m"; red="\E[31m\E[1m"; yellow="\E[33m\E[1m"; green="\E[37m\E[32m\E[1m"; text="\E[1;37m\E[1m"; if [ "$UID" != "0" ]; then echo -e "$red$0: You will get more information if you have root privileges. Try sudo $0$normal" fi netstat -natp | \ while read line; do if [ `echo $line | awk '{print($1)}'` = "Proto" ]; then echo -e "$yellow=====================================================================================================$normal" echo -e "$text$line$normal" echo -e "$yellow=====================================================================================================$normal" else state=`echo $line | awk '{print($6)}'` color=$normal case $state in "ESTABLISHED") color=$green;; "SYN_SENT" | "SYN_RECV") color=$yellow;; "FIN_WAIT1" | "FIN_WAIT2" |"TIME_WAIT") color=$violet;; "CLOSE" | "CLOSE_WAIT" | "LAST_ACK" | "CLOSING" ) color=$blue;; "LISTEN") color=$cyan;; "UNKNOWN") color=$red;; *) esac echo -e "$color$line$normal" fi done;
E aqui una pequeña wiki de SSH¡¡¡
En primer lugar es necesario generar una pareja de claves en tu máquina (‘client‘), en este caso ‘bender‘:
cesar@bender ~ $ ssh-keygen -t dsa
Te preguntará un passphrase que es recomendable introducir, aunque también se puede dejar en blanco. Tras esta operación obtendrás los ficheros:
cesar@bender ~ $ ls ~/.ssh id_dsa id_dsa.pub known_hosts
El fichero ‘id_dsa‘ contiene la clave privada y no debería salir de tu ordenador. Debe tener permisos 600:
cesar@bender ~ $ chmod 600 .ssh/id_dsa
El fichero ‘id_dsa.pub‘ contiene tu clave pública. Para autorizar una clave pública en una máquina remota ‘kastor‘:
cesar@bender ~ $ cat ~/.ssh/id_dsa.pub | ssh kastor 'cat - >> .ssh/authorized_keys'
No olvides poner dos símbolos «>», puesto que en caso contrario te cargarás otras claves autorizadas en la máquina ‘kastor‘. La próxima vez que hagas ‘ssh kastor‘ entrará sin más. Si has puesto passphrase, tendrás que hacer primero:
cesar@bender ~ $ ssh-add
cesar@bender ~ $ ssh-agent bash
Para un acceso rápido por ssh resulta muy útil definir alias de tus máquinas comunes en el fichero ‘/etc/hosts‘:
cesar@bender ~ $ sudo vim /etc/hosts # # Syntax: # # IP-Address Full-Qualified-Hostname Short-Hostname # 192.168.1.4 kastor.zylk.net kastor
Esta operación requiere privilegios de administrador o superusuario.
Una posibilidad es iniciar el ordenador en ‘init 3‘ sin X y redefinir tu ‘startx‘: Este es mi ‘~/bin/startx-ssh‘:
cesar@bender ~ $ vim ~/bin/startx-ssh #!/bin/bash keychain ~/.ssh/id_dsa || exit source ~/.keychain/`hostname`-sh startx exit
Al iniciarlo, me pide el passphrase. Otra posibilidad es incluir estas dos líneas en tu archivo ‘.gnomerc‘ o similar en otros entornos gráficos.
keychain ~/.ssh/id_dsa source ~/.keychain/`hostname`-sh
Y ahora, si hago login desde otra máquina, o quiero que un cron pueda conectarse a otras máquinas, incluyo las siguientes líneas:
cesar@bender ~ $ source ~/.keychain/`hostname`-sh
Si quiero cerrar el acceso, hago:
cesar@bender ~ $ keychain --stop
Para volverlo a arrancar:
cesar@bender ~ $ keychain ~/.ssh/id_dsa
Has trabajado alguna vez detrás de un firewall? Tienes una página web privada de una institución detrás de un firewall a la que sólo pueden acceder las máquinas de esa institución? Has intentado alguna vez mover un fichero desde detrás de un firewall a otra máquina que esta detrás de otro firewall? Entonces, lo que necesitas es hacer un túnel ssh.
La idea básica es que desde tu máquina (‘client.machine‘) tienes acceso a una máquina ‘bridge.machine‘ que no es a la que quieres acceder, pero que desde ella si podrías acceder a tu objetivo ‘target.machine‘. El túnel te permite operar de forma transparente desde ‘client.machime‘ hasta ‘target.machine‘. Hay dos tipos de túneles: túneles directos e inversos. En un túnel directo (forward) se hace corresponder un puerto de destino (‘dport‘) en la ‘target.machine‘, con un puerto local (‘lport‘) en tu máquina ‘client.machine‘. Esto se hace de la siguiente manera:
cesar@bender ~ $ ssh -NfL lport:target.machine:dport bridge.machine
Regla nemotécnica: acuérdate de la liga de futbol americano (NFL) y que la del medio es en minúscula.
HINT: Por cierto, aseguraros que el puerto local no está siendo usado, por ejemplo que apache este escuchando en ese puerto (aunque este mapeado con un virtual host deshabilitado). Por otro lado la opción verbose (-NfvL) puede ayudar en la traza de algún error.
Primero construiríamos el túnel:
cesar@bender ~ $ ssh -NfL 6666:target.machine:22 bridge.machine
Y a continuación basta con hacer lo siguiente para entrar directamente en ‘target.machine‘:
cesar@bender ~ $ ssh -p6666 localhost
O bien:
cesar@bender ~ $ scp -P6666 fichero localhost:/el/path/que/te/venga/bien
Esto requiere que en tu ‘$HOME/.ssh/config‘ añadas la línea:
NoHostAuthenticationForLocalhost yes
Si montas un servicio en un ordenador detrás de un firewall, este no va a estar disponible fuera porque en general los puertos estarán capados. Por ejemplo, una web dentro de una máquina de una red privada sin salida al exterior. A través de un túnel ssh se puede acceder a este servicio.
cesar@bender ~ $ ssh -NfL 8080:target.machine:80 bridge.machine
Después en el navegador, la web de ‘target.machine‘ estará disponible en ‘http://localhost:8080‘.
cesar@bender ~ $ ssh -Nvf -L 9999:kastor.zylk.net:389 cesar@kastor.zylk.net
Aunque el puerto del LDAP (389) esta capado, yo puedo acceder a él desde fuera de la red si tengo un acceso a ‘kastor‘ haciéndolo pasar a través del puerto 22 (el del ssh) y mapeandolo a un puerto, digamos el 9999 en mi máquina local. Situación inicial:
| | localhost:9999 ----------- | kastor.zylk.net:389 | |
Túnel:
| 22 | | localhost:9999 ----------- kastor.zylk.net:22 kastor.zylk.net:389 | | |
Una vez hecho el túnel, puedo configurar en mi agenda el acceso al LDAP con servidor localhost y puerto 9999. Nota: En realidad el proceso incorpora tres máquinas, la local, la de salida y la del servicio. Lo que pasa es que en este caso las dos ultimas son la misma.
Desde mi máquina:
cesar@bender ~ $ ssh -Nvf -L 63131:cups.zylk.net:631 cesar@kastor.zylk.net
Túnel:
| 22 | | localhost:63131 ----------- kastor.zylk.net cups.zylk.net:631 | | |
De este modo me puedo conectar a la interfaz web de administración desde mi máquina en http://localhost:63131
Una situación bastante común es que tener acceso a una cuenta en una máquina sin privilegios de administrador o superusuario. Para conectarte a ‘kastor.zylk.net‘ con login ‘cesar‘:
cesar@bender ~ $ ssh cesar@kastor.zylk.net
La solución está en el fichero ‘$HOME/.ssh/config‘:
Host kastor Hostname kastor.zylk.net User cesar Port 22 ForwardX11 no Protocol 2,1 Host cups Hostname localhost User zylk Port 9999
Con lo cual puedes hacer directamente:
cesar@bender ~ $ ssh kastor
El ssh sabe que tiene que conectarse a la máquina ‘kastor.zylk.net‘ y usar el login ‘cesar‘. Y ahora sabe que tiene que conectarse al puerto 9999 de ‘localhost‘ usando como login ‘zylk‘. Con esto tienes ya total transparencia en los túneles. Sobre todo si te haces un alias para levantarlo del tipo de:
cesar@bender ~ $ alias tncups='ssh -NfL 9999:cups.zylk.net:22 cesar@kastor'
Ejecutas el alias, que puedes copiar en tu ‘.bashrc‘:
cesar@bender ~ $ tncups
y te puedes conectar directamente a ‘cups.zylk.net‘ de forma transparente desde el exterior.
cesar@bender ~ $ ssh cups
El objetivo es tener un sistema de ficheros remoto. Una especie de NFS o samba, pero seguro a través de ssh. Instalo sshfs:
$ sudo apt-get install sshfs
Me añado al grupo «fuse»:
$ sudo vi /etc/group
Luego ejecuto:
$ sshfs cesar@kastor.zylk.net:/data1/z-docs /mnt/z-docs/
Configurar el demonio de ssh de modo que sólo se puedan realizar conexiones ssh a la máquina si el usuario remoto está en la lista ‘authorized_keys‘.
$ sudo vim /etc/sshd_config PasswordAuthentication no UsePAM no
Por defecto esta opción está marcada como yes. También se puede definir donde están las listas autorizadas (claves públicas). Por defecto las define el usuario:
#AuthorizedKeysFile %h/.ssh/authorized_keys
Reinicio el servicio:
$ /etc/init.d/sshd restart
Desactivo conexiones remotas ssh a la cuenta root, como medida de prevención de ataques ssh.
$ sudo vim /etc/sshd_config PermitRootLogin no
Reinicio el servicio:
$ /etc/init.d/sshd restart
Bonito script para integrar un PC Linux en un dominio Windows, permite hacerlo de moto automatico pero tendras que sustituir las ips y los nombres de los servidores por los de tu red. Para ejecutarlo, debemos hacerlo con privilegios de root.
#!/bin/bash nombrehost=$1 nombrehostanterior=`cat /etc/hostname` while [ ! "$nombrehost" ] do if [ ! "$nombrehost" ] then echo "Introduzca un nombre para el equipo (ej.: a5-u02)" read nombrehost echo $nombrehost clear else echo "El equipo será integrado con el nombre '$nombrehost'" fi done #instalamos el paquete likewise para integrar el equipo en linux sudo apt-get install likewise-open ###### Control de errores if [ $? -eq 0 ] then echo Se ha instalado con exito likewise >> loginstalacion.log else echo ERROR EN LA INSTALACIÓN DE LIKEWISE!!! o INSTALADO PREVIAMENTE >> loginstalacion.log fi #ponemos correctamente los nombres al fichero sudo echo $nombrehost >> /etc/hostname ###### Control de errores if [ $? -eq 0 ] then echo Se ha cambiado el nombre del equipo en /etc/hostname con exito a $nombrehost >> loginstalacion.log else echo ERROR EN LA ESCRITURA DEL FICHERO /ETC/HOSTNAME >> loginstalacion.log exit fi #sustituimos en el fichero hosts el anterior nombre por el nuevo sudo sed s/$nombrehostanterior/$nombrehost/g -i /etc/hosts if [ $? -eq 0 ] then echo Se ha cambiado el nombre del equipo en /etc/hosts con exito a $nombrehost >> loginstalacion.log else echo ERROR EN LA ESCRITURA DEL FICHERO /ETC/HOSTS >> loginstalacion.log exit fi #insertamos en el fichero hosts unas lineas con la direccion ip del servidor del dominio y su nombre sudo sed -e '$i 10.10.10.2 servidor.blogofsysadmins.com servidor' -i /etc/hosts sudo sed -e '$i 10.10.10.3 servidor.blogofsysadmins.com servidor' -i /etc/hosts if [ $? -eq 0 ] then echo Se ha cambiado el nombre del servidor del dominio en /etc/hosts con exito >> loginstalacion.log else echo ERROR EN LA ESCRITURA DE LAS DIRECCIONES DEL SERVIDOR EN EL FICHERO /ETC/HOSTS >> loginstalacion.log exit fi #si nuestro dominio emplea un servidor de dominio tb debemos modificar el fichero /etc/dhcp3/dhclient.conf. sudo echo prepend domain-name '"'blogofsysadmins '"' >> /etc/dhcp3/dhclient.conf sudo echo supersede domain-name-servers 10.10.10.2,10.10.10.3,10.10.10.1';'>> /etc/dhcp3/dhclient.conf if [ $? -eq 0 ] then echo Se han añadido los nombres de los servidores del dominio al final de /etc/dhcp3/dhclient.conf>> loginstalacion.log else echo ERROR EN LA ESCRITURA DE LAS DIRECCIONES DEL SERVIDOR EN EL FICHERO /ETC/DHCP3/DHCLIENT.CONF >> loginstalacion.log exit fi #añadimos las direcciones de nuestros servidores de dns al fichero resolv.conf sudo echo domain blogofsysadmins.com > /etc/resolv.conf sudo echo search blogofsysadmins.com >> /etc/resolv.conf sudo echo nameserver 10.10.10.2 >> /etc/resolv.conf sudo echo nameserver 10.10.10.1 >> /etc/resolv.conf sudo echo nameserver 10.10.10.3 >> /etc/resolv.conf if [ $? -eq 0 ] then echo Se ha modificado el fichero /etc/resolv.conf>> loginstalacion.log else echo ERROR EN LA ESCRITURA DE LAS DIRECCIONES DEL SERVIDOR EN EL FICHERO /ETC/RESOLV.CONF >> loginstalacion.log exit fi #modificamos el fichero resolv.conf para que no pueda ser modificado por lanmanager sudo chattr +i /etc/resolv.conf #agregamos el equipo al dominio en este caso blogofsysadmins.com con la cuenta que queramos #sudo domainjoin-cli join NOMBRE_DOMINIO NOMBRE_USUARIO_CON_PERMISOS_ #POR EJEMPLO sudo domainjoin-cli join blogofsysadmins.com Administrador #para quitarlo del dominio emplearíamos: #sudo domainjoin-cli leave ###### Control de errores if [ $? -eq 0 ] then echo Se ha unido con exito al dominio >> loginstalacion.log else echo ERROR, NO SE HA PODIDO UNIR EL EQUIPO AL DOMINIO >> loginstalacion.log lwiinfo >> loginstalacion.log exit fi cat loginstalacion.log
Este error se genera cuando la comunicación entre el servidor del remitente y el servidor del destinatario ha tardado demasiado.
Este error significa que el servidor del destinatario se ha quedado sin memoria para poder procesar el mensaje enviado.
Este error significa que el servidor del destinatario se ha quedado sin espacio de almacenamiento en disco duro para poder procesar el mensaje enviado. Suele ser un error temporal, ya que el espacio en disco duro es un recurso variable.
Este error significa que la casilla o el dominio del remitente ha sido bloqueado en el servidor del destinatario. Esta configuración se realiza manualmente, lo cual implica que el bloqueo se realizó por alguna razón específica.
Este error significa que el remitente no está autenticando contra su servidor para poder enviar su mensaje. Normalmente se soluciona revisando la casilla «Mi servidor requiere autenticación» en el programa de correo y reiniciando el mismo.
Este error es similar al anterior y tiene la misma solución.
Este error significa que la casilla del remitente está siendo bloqueada. Las razones pueden ser varias, pero normalmente se debe a que el servidor del remitente está en una «lista negra», y por lo tanto, todo mensaje proveniente del mismo será rechazado por el servidor del destinatario.
Este error indica que la casilla del destinatario está llena.
Estos son errores generados en el servidor, los cuales indican que hay un problema en el sistema de manejo de la cola de mensajes o en el procesamiento de los mismos a la entrada. Normalmente suele suceder a causa de un error en la configuración, una falla de software o un problema de falta de recursos. Este error puede generarse tanto en el servidor del remitente como en el servidor del destinatario.
Solucion para este problema logearse como root ingresar las siguientes lineas y reiniciar qmailtoaster
/var/qmail/bin/simscanmk
/var/qmail/bin/simscanmk -g
Este error significa que la casilla de correo del destinatario no existe. Si ha enviado correo a esa dirección anteriormente, revise el último mensaje que envió, ya que seguramente fué un error de tipeo.
Este error significa que el servidor del remitente no pudo encontrar un registro de DNS asociado al dominio o al servidor del destinatario. Normalmente es a causa de que el remitente indicó una dirección de correo errónea o que el servidor no pudo encontrar el dominio o servidor del destinatario. Suele ser un problema temporal, aunque a veces es permanente.
Este error, al igual que el anterior, significa que el servidor del remitente no pudo encontrar un registro de DNS asociado al dominio o al servidor del destinatario. Normalmente es a causa de que el remitente indicó una dirección de correo errónea o que el servidor no pudo encontrar el dominio o servidor del destinatario. Suele ser un problema temporal, aunque a veces es permanente, como en el caso de que el remitente tenga mal ingresado el dominio y no lo solucione.
Este error es parecido al anterior, y significa que el servidor no pudo encontrar el dominio o el servidor del destinatario. Normalmente se debe a que el remitente ingresó una dirección de destinatario inválida o errónea.
Este error es similar al anterior, solo que se provee el nombre ingresado por el remitente. También se debe a un error en la dirección ingresada por el remitente.
Este error significa que el servidor del remitente no fué capaz de conectarse con el servidor del destinatario. Normalmente se debe a que el servidor del destinatario no funciona correctamente, está bloqueando el acceso al puerto 25 desde el exterior o que es un servidor «bogus» (falso). Es frecuente este tipo de errores cuando se intenta contestar o enviar un rebote por un mensaje de SPAM recibido, ya que normalmente los servidores que hacen SPAM son falsos.
Este error se debe a que el remitente ingresó la dirección del destinatario incorrectamente. Verifique que la dirección ingresada no termine en «@», o le falte el dominio.
Este error se debe a que el mensaje que el remitente intenta enviar excede el tamaño máximo de mensaje permitido por el servidor.
Estas variantes del mismo error significan que el destinatario no existe en el servidor destino. Normalmente se debe a un error del remitente al ingresarlo o que la casilla ha sido eliminada, ya sea porque el usuario canceló el servicio, o porque la cuenta de dió de baja por haber recibido una queja de Spam.
Este error indica que la dirección del destinatario ha sido desactivada, probablemente por mal uso de la misma (SPAM).
Este error indica que la dirección del remitente es falsa o está mal definida. Esto significa que hay que revisar la cuenta para ver si fué mal ingresada.
Este error indica que la dirección del servidor del remitente está en una lista negra, lo cual evita que los servidores que utilicen estas listas reciban correo desde el mismo. Las listas negras se crearon con la idea de proveer un método de lucha contra el spam, pero ultimamente los criterios de listado de algunas de ellas son definitivamente demasiado ámplios, así que su utilización no está recomendada.
Este error es similar al anterior y tiene las mismas causas. En este caso en particular, se brinda una dirección URL para visitar y obtener más detalles sobre el problema.
Este error es similar al anterior y tiene las mismas causas. En este caso en particular, también se brinda una dirección URL para visitar y obtener más detalles sobre el problema.
Estos errores son similares al anterior y tienen las mismas causas. En estos casos en particular, también se brinda una dirección URL para visitar y obtener más detalles sobre el problema. Normalmente es necesario un trámite para poder salir de estas listas, lo cual lleva unos cuantos días en hacerse.
Este error significa que el mensaje fué rechazado porque aparentemente contenía un virus o es considerado SPAM. Puede suceder que el mensaje haya sido enviado desde un equipo infectado por un virus que toma la libreta de direcciones de la víctima y utiliza esas direcciones como remitentes de sus propios mensajes, generando confusión entre los usuarios. Algunos antivirus ya poseen contramedidas para evitar que se propague este tipo de mensajes de error en los casos en que el virus es conocido y se sabe que tiene este comportamiento, aunque de todas maneras, siempre es bueno estar preparado y prevenir, avisándole al remitente del virus que su equipo puede estar infectado.
Este error se debe a un problema en el redireccionamiento de la casilla. Suele suceder cuando se crea en una casilla «A» un redireccionamiento hacia una casilla «B», y luego se hace lo mismo en la casilla «B», redireccionando el mensaje hacia la casilla «A». Esto genera que el mensaje entre en «loop» (bucle) y no llegue nunca a destino. A la décima vez que rebota (el servidor reintenta el delivery diez veces, aunque el error sea evidente), se devuelve al remitente con este mensaje de error.
Este error se debe a un filtro que tienen incorporados los servidores de correo, de los cuales revisan que la cadena de identificación de los servidores que se conectan con el mismo sean válidas. Lo normal es que dicha cadena de identificación sea el nombre completo del equipo que se conecta. En algunos casos, se rechaza dicha cadena, ya que si no es un nombre de host válido, lo más probable es que no se trate de un servidor de correo real, y por lo tanto, se trata de un spammer.