miércoles, 13 de marzo de 2013

Iptables Facil en ubuntu

Si no disponemos de un hardware firewall pero queremos montar uno para proteger nuestro ordenador o servidor, podemos usar un software que nos proporciona Linux y es bastante potente llamado IpTables.


Para usar IpTables en Ubuntu debemos de crear un fichero dentro del directorio /etc/init.d/ al que podemos dar cualquier nombre, aunque os recomiendo poner algo descriptivo como “iptables.cf”. Dentro de este archivo tendremos todas las reglas que queremos aplicar darle una protección extra a nuestro Ubuntu.


Un ejemplo de un fichero de configuración de IpTables es el siguiente:



## Vaciamos las reglas
iptables -F
iptables -X
iptables -t nat -F

## Establecemos politicas predeterminada
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

# Aceptamos todo de localhost
/sbin/iptables -A INPUT -i lo -j ACCEPT

# A nuestra IP le dejamos todo
iptables -A INPUT -s 192.168.2.1 -j ACCEPT

# A otra ip interna le permitimos todo
iptables -A INPUT -s 192.168.2.99 -j ACCEPT
iptables -A INPUT -s 192.168.2.100 -j ACCEPT

# Permitimos una conexion a ssh y telnet (22 y 23) desde un equipo
iptables -A INPUT -s 192.168.2.10 -p tcp --dport 22:23 -j ACCEPT

# A otro le permitimos acceso FTP
iptables -A INPUT -s 212.176.121.111 -p tcp --dport 20:21 -j ACCEPT

# El puerto 80 y 8080 (www) abierto, para un servidor web.
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

# Y el resto, lo cerramos
iptables -A INPUT -p tcp --dport 20:21 -j DROP
iptables -A INPUT -p tcp --dport 22:23 -j DROP
iptables -A INPUT -p tcp --dport 6001 -j DROP

# Cerramos rango de los puertos privilegiados. Cuidado con este tipo de
# barreras, antes hay que abrir a los que si tienen acceso.
iptables -A INPUT -p tcp --dport 1:1024 -j DROP
iptables -A INPUT -p udp --dport 1:1024 -j DROP

# impedimos iniciar conexion los puertos altos
# (puede que ftp no funcione)
iptables -A INPUT -p tcp --syn --dport 1025:65535 -j DROP

# Cerramos otros puertos que estan abiertos
iptables -A INPUT -p tcp --dport 3306 -j DROP
iptables -A INPUT -p tcp --dport 10000 -j DROP

Debemos darle permisos de ejecución al rchivo


chmod +x /etc/init.d/iptables.cf

Para arrancar el servicio no tenernos más que hacer


/etc/init.d/iptables.cf start

Si lo queremos parar


/etc/init.d/iptables.cf stop

Y si lo queremos reiniciar


/etc/init.d/iptables.cf restart

Podemos comprobar las reglas que se han aplicado con el comando


iptables -L

Tomado de: http://xandrusoft.blogspot.com/

martes, 12 de marzo de 2013

Cómo recuperar una contraseña olvidada en ubuntu


Podemos encontrarnos con la situación de que hemos perdido u olvidado la contraseña de superusuario o root que creamos cuando instalamos Ubuntu y ahora nos encontramos con que no podemos administrar nuestro sistema.

En el artículo del tutorial he puesto "recuperar, pero realmente lo que vamos a hacer es "cambiar la contraseña", porque la mayoría de las preguntas que me habeis hecho así han sido y para mejorar la búsqueda, lo he titulado así. Vamos allá.


1er Método:


  • Al iniciar el ordenador y cuando nos sale el Grub, seleccionamos arrancar en modo recovery (recuperación).
Nota: para los que os arranca Ubuntu directamente sin poder ver el Grub: lo haremos después de que carge la placa base pulsando escape, si no funciona pulsa shift, para entrar en el menú del grub.
Y en el menu del Grub que nos aparece, elige recovery mode (recuperación)
  • En el submenú que aparece elige "netroot" ("root" en las nuevas versiones), para colocarnos como superusuario sin contraseña.
  • Gracias a un lector del blog que nos deja este comando para solucionar el error: "Authentication token manipulation error passwd: password unchanged":
    Montamos de nuevo la raíz del sistema con permisos de escritura y lectura con el comando:
mount -rw -o remount /
  • Ahora cambia tu contraseña ejecutando el comando:
passwd tu_nombre_usuario
  • Pulsa Enter y escribe tu nueva contraseña, no se verá nada en la pantalla, no te preocupes, es por seguridad, pero en realidad está escribiendo
  • Pulsa enter y te pedirá que la repitas. La escribes de nuevo y vuelve a pulsar Enter
  • Apaga el sistema con el comando:
shutdown -r now
  • Pulsa enter y arranca el ordenador de forma normal, con tu nombre de usuario y la nueva contraseña.
Y listo ya tenemos solucionado el problema

No olvidéis anotar o, mejor aún, aprenderos de memoria la contraseña para que no os pase otra vez.

Nota: Si activamos la cuenta de superusuario o root nos pedirá la contraseña, que le hemos dado, para poder acceder a la terminal en Netroot.
Ojo, si la activamos y luego no nos acordamos ya no podemos acceder a la consola de Netroot para reparar cualquier problema. Para activarla seguid esta guía:
http://www.ubuntu-guia.com/2010/09/activar-desactivar-root-ubuntu.html.


2º Método:


Si lo anterior no os funciona, Arranca tu PC, y cuando salga el prompt del grub presionas la tecla "ESC"

Presiona la tecla "e" para editar. Desplázate hasta la linea del kernel que usas en caso de que sean 2 o más y presiona la tecla "e"

Sitúate hasta la linea del final y añade la siguiente línea:
rw init=/bin/bash

Presiona "Enter" y después "b" para reiniciar (boot) tu sistema

Tu sistema iniciará con el usuario Root y sin contraseña

Ahora ejecuta este comando cambiando nombreUsuario por el tuyo:
passwd nombreUsuario

Escribe la contraseña y te pedirá que la vuelvas a escribir

Reinicia el sistema,

Actualización: Si tu caso es que quitaste la opción de poner la contraseña en el arranque de Ubuntu, un amable lector del blog, nos deja la solución aquí

Actualización: Aporte de un usuario anónimo:
A los que les aparece el error de manipulación!!!!! la manera de solucionarlo es que al ingresar al grub, y seleccionar el modo de recuperación escojan la opción remount y seguimos con los pasos de la guía:
mount -rw -o remount /
passwd nombre_usuario
luego la pass
reiniciar y ya!!!!!!

Actualización: Aporte de un usuario anónimo:
Si tu problema es que has seleccionado “iniciar sesión sin contraseña” en la configuración de "Cuentas de usuario", la solución es:
pulsar “Ctrl+Alt+F1” para salir del entorno gráfico, nos “logeamos”, o sea ponemos nuestro nombre de usuario y ENTER. No nos va pedir contraseña, una vez ahí ejecutamos el siguiente comando;

sudo passwd -q nombreusuario
Nos pedirá que pongamos una contraseña, y la confirmación, es recomendable poner la que usamos antes del estropicio, normalmente la misma que pusimos durante la instalación. Si todo a ido bien nos dará un mensaje “passwd:contraseña actualizada correctamente”
Y ya está todo volverá a ser como antes.


martes, 28 de agosto de 2012

Sobre la obviedad de las patentes (Iphoneros.com)

Con todo esto del gran juicio Apple Vs Samsung, muchos de los que no están de acuerdo con el sistema de patentes se quejan del hecho de que una empresa pueda registrar una patente que es obvia y que eso impida a otras empresas innovar porque, aparentemente, no hay otra manera de hacer las cosas. Eso, le daría en la práctica toda la ventaja del mundo a la empresa que patenta esa idea obvia. Casi siempre se pone como ejemplo que alguien patente la rueda, y entonces, todos los fabricantes de vehículos que usen ruedas, tienen que pagar a esa empresa. Pues bien, hay mucho desconocimiento sobre el sistema de registro de patentes; muchos olvidan que hay leyes que regulan cómo se puede o no se puede registrar una patente, y en esas leyes hay una que habla sobre la obviedad de una idea, si esa idea es universal o no… si registrarla, impediría a todas las demas empresas continuar con su innovación. Registrar una patente no es tan fácil como entregarla y ya está. Una de esas leyes, controla lo universal o obvia que es una idea e impide que se puedan registrar cosas que puedan perjudicar a todos los demás inventores como si fuera una especie de impuesto revolucionario. Lo que casi todos olvidamos es que algo que es obvio hoy en día, no lo es cuando se registró… el momento en el que se registra una patente es muy importante.
Como ejemplo, tenemos el propio iPhone; cuando se anunció el iPhone original la Blackberry reinaba en el mundo de los smartphones. Casi era el móvil por defecto a tener sobre todo si la necesidad principal era seguir conectado a tu email en cualquier lugar. Muchos criticaron la falta de teclado físico en el iPhone, algunos incluso se reían. Hoy en día, es difícil encontrar un smartphone que venga con un teclado físico incorporado. Hoy es obvio que un smartphone sea todo pantalla, con dos o tres botones a los lados o debajo de la pantalla. En el 2007, no era tan obvio. Nadie ha registrado o podido registrar (que nosotros sepamos) un dispositivo que sea todo pantalla sin más, de manera que cualquiera que fabrique algo asi independientemente de su utilidad tenga que pagar a otra empresa, pero cosas como la manera de indicar que no hay más scroll que hacer al final de una página (una de las patentes que se han examinado y discutido en el juicio de Apple y Samsung) si están registradas. Muchas marcas utilizan diversas maneras para indicar eso… una línea azul que se ilumina ligeramente (Ice Cream Sandwich ‘de serie’ hace eso, por ejemplo) pero otras han utilizado exactamente la misma manera que podemos ver en iOS. Este tipo de detalles en una interfaz, tan obvios hoy en día, están registrados en ciertas patentes, que a menudo, están disponibles para licenciar por otras empresas y así permitir su utilización. De hecho es algo habitual en la industria el pagar por utilización de patentes aunque el resto de mortales, habitualmente, nunca llegamos a enterarnos de esos acuerdos. El sistema de patentes que hay implantado en EEUU, desde luego, no es perfecto. Se les puede criticar por muchas cosas. Pero antes de tirar por la vía fácil y criticar cosas que no se conocen bien, lo mejor es investigar un poco más y, si hay patentes que realmente impidan innovar a otras empresas, intentar modificar estas leyes para que nosotros, los que compramos estos aparatos y los utilizamos todos los días, podamos disfrutar de lo mejor que sean capaces de inventar empresas de electrónica de consumo como Samsung o Apple. La competencia nos beneficia a nosotros más que a nadie, pero suponemos que todos estamos de acuerdo en que si se demuestra que alguien ha utilizado ideas de otros sin permiso, se regule y se penalice si ha habido alguna infracción. El sistema de patentes puede llegar a ser muy malo, pero al mismo tiempo, podría ser la solución menos mala que tenemos disponible ahora mismo. ¿Qué pasará ahora que termina el juicio que más ha expuesto el sistema de patentes en la industria de la tecnología? Pues, en la práctica, en nada… simplemente ahora se pagarán las patentes que se utilicen, con dinero que venga de los beneficios de la venta de esos smartphones o lo que sea que fabrique una empresa. Empresas que hasta ahora no pagaban por utilización de ideas de otros, pagarán o pensarán en ideas nuevas. Esto es bueno para la innovación. Al mismo tiempo, sólo grandes empresas que se puedan permitir pagar por patentes conseguirán utilizar ideas de otros, y empresas pequeñas que no tengan acceso a esos precios no podrán acceder a un mercado que ahora se les cierra… en este sentido el sistema de patentes es realmente malo; nos encantaría ver a una start-up sacando adelante un smartphone mucho mejor que el iPhone (que, por supuesto, se puede conseguir, ¡sin duda!) pero en la situación en la que estamos ahora es altamente improbable. Si alguien intenta acechar el trono del iPhone como smartphone más vendido, lo más probable es que se trate de una gran empresa que se pueda permitir pagar millones de dólares en patentes. Una lástima para las pequeñas y medianas empresas. En este sentido, si que nos gustaría que fuera posible modificar la ley que regula las patentes para hacerlas asequibles también a este tipo de empresas y así, incentivar la competitividad del mercado. Fuente:

miércoles, 7 de diciembre de 2011

Depurar fugas de memoria en Java (Tomcat)

Depurar fugas de memoria en Java (Tomcat)
Hola a todos. Por fin logro sacar algo de tiempo para escribir el primer post de este año. Esta vez está relacionado con la depuración de bugs relacionado con la memoria.

Si tienes problemas de memoria con Tomcat, o en general con aplicaciones Java(OutOfMemoryException), necesitas o simplemente tienes curiosidad de saber la distribución de la memoria de tu aplicación, no sigas buscando, este es tu post.

Las opciones que voy a mostrar son opciones de configuración de la Máquina Virtual Java (JVM), por lo tanto son aplicables tanto a una simple clase con un método main, como a una aplicación sobre Tomcat o cualquier otro servidor de aplicaciones. Sin embargo, en este post voy a tomar como ejemplo Tomcat, ya que es lo que uso en el desarrollo de aplicaciones web.

Más concretamente utilicé estas opciones para investigar un problema que teníamos con Tomcat. Cada cierto intervalo regular de tiempo, el Tomcat se caía debido a un error de OutOfMemory. Por más que aumentamos la memoria, seguía cayéndose aunque a intervalos más grandes, por lo que empezamos a sospechar que había algo en nuestra aplicación que iba consumiendo memoria y no la liberaba. Nuestra aplicación tenía fugas de memoria.

Para resolverlo necesitabamos saber dónde estaba el problema, y al igual que ocurre cuando te rompes un hueso, el mejor diagnóstico se hace si tienes una radiografía de la memoria. Por suerte Java nos permite hacer esto. Para ello sólo hay que usar el comando jmap.

Antes de continuar comentar que todo lo que expongo aquí es para Java 6. Con Java 5 también lo podéis hacer a partir de cierta versión, pero el formato de los comandos cambia un poco. De todas formas, mi recomendación es que paséis a Java 6. El paso es casi inmediato y os ahorraréis muchos quebraderos de cabeza con estos comandos y opciones.

Para hacer un volcado de la memoria del Tomcat, tendréis que ejecutar lo siguiente:

bash$ jmap -dump:file=heap.hprof

donde es el id del proceso Tomcat. Podéis sacarlo con el comando ps:

bash$ ps -ef | grep tomcat
usuario 13832 1 79 22:37 pts/0 00:00:14 /usr/lib/jvm/java-6-sun/bin/java -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djava.endorsed.dirs=/opt/tomcat/common/endorsed -classpath :/opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/commons-logging-api.jar -Dcatalina.base=/opt/tomcat -Dcatalina.home=/opt/tomcat -Djava.io.tmpdir=/opt/tomcat/temp org.apache.catalina.startup.Bootstrap start

En mi caso el pid sería 13832 y por tanto la ejecución del comando jmap quedaría así:

bash$ jmap -dump:file=heap.hprof 13832
Dumping heap to /opt/apache-tomcat-5.5.25/heap.hprof ...
Heap dump file created

Esto genera el fichero heap.hprof en el directorio donde ejecutéis el jmap. Este fichero es un volcado de lo que hay en la memoria del Tomcat, y por tanto ocupará tanto como la memoria del Tomcat. Comprobad que tenéis espacio en disco suficiente para generarlo.

Sin embargo, no necesitábamos una radiografía de la memoria en cualquier momento, la necesitábamos justo en el momento en que el hueso se rompía, es decir, cuando el Tomcat lanza la OutOfMemoryException. Por suerte, contamos con las opciones de la JVM. Para que Tomcat -y repito: Tomcat o cualquier aplicación Java- genere un volcado de la memoria al producir una OutOfMemoryException tenéis que poner entre sus JAVA_OPTS las siguientes opciones:

-XX:HeapDumpPath=/ruta/donde/guardar/el/fichero/ -XX:+HeapDumpOnOutOfMemoryError

Observad que es un más(+) lo que hay antes de HeapDumpOn..... Si ponéis un menos(-), no os funcionará. Es un error muy típico ;-)

En el caso del Tomcat, tendremos que editar el fichero catalina.sh y meter las opciones en la variable CATALINA_OPTS. Por ejemplo:

CATALINA_OPTS="-XX:HeapDumpPath=/tmp/ -XX:+HeapDumpOnOutOfMemoryError [...resto de opciones...]"

Un Tomcat funcionando con estas opciones generará un fichero en /tmp llamado heap.hprof automáticamente cuando se produzca una OutOfMemoryException. Más información sobre esas opciones en Java HotSpot VM Options.

Una vez configurado de esta forma, ya sólo teníamos que esperar a que el Tomcat volviese a fallar. Y de eso estábamos seguros. Una vez con el fichero hprof generado podemos usar dos herramientas para procesarlo.

Una es VisualVM. Es de Sun y viene con el JDK de Java 6. Es el comando jvisualvm que se encuentra en el directorio bin del JDK. Con esta herramienta puedes navegar por los objetos que hay en memoria, ver las clases que más instancias tienen y que más consumen, etc. Te muestra lo que hay en memoria literalmente, pero para mi gusto es demasiada información en bruto y quizás sea complicado ver lo que está pasando.

La otra herramienta es Eclipse Memory Analyzer. Esta herramienta procesa la información y saca gráficas y estadísticas útiles. Incluso te propone posibles errores. Con esta herramienta fue con la que rápidamente descubrimos el error, ya que la gráfica de tarta de la ocupación de la memoria estaba al 75% ocupada por cierta parte de la aplicación. Se trataba de una de nuestras cachés. De ahí, muy hábiles nosotros, dedujimos que el proceso de limpiado de esa caché no estaba funcionando correctamente y por tanto, esta caché era un saco donde se metían cosas, pero nunca salían. :-p

Espero que esto os ayude a resolver este tipo de problemas si es que lo tenéis, y si no tienes problemas de este tipo, ¿nunca te has preguntado cuanto ocupa tu aplicación en memoria y qué objetos ocupan más? Merece la pena probar.

tomado de: http://www.latascadexela.es/2009/02/depurar-fugas-de-memoria-en-java-tomcat.html

viernes, 25 de noviembre de 2011

miércoles, 27 de julio de 2011

Problemas con el calendario en Reporting services en produccion IIS7

Bueno me encontre con un problema con reporting services 2008 r2 en IIS 7, en desarrollo me mostraba los calendarios de los parametros tipo date time, pero en produccion no no cargaba el icono y al dar click saca un erro 404, buen pues aqui esta la solucion

se necesitan estas claves en web.config

 

It seems the two lines are needed:

<httpHandlers>           
            <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false" />
</httpHandlers>

And,

<system.webServer>
        <handlers>
           <add name="ReportViewerWebControl" path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
        </handlers>
</system.webServer>

 

viernes, 10 de junio de 2011

Cómo matar un proceso en PostgreSQL de forma segura

Cómo matar un proceso en PostgreSQL de forma segura

PostgreSQL Si algún proceso se queda colgado (aunque no sea debido directamente a postgres) se puede cancelar sin causar males mayores al postmaster. Primero averiguamos el id del proceso gestionando nuestra query y luego le mandamos un SIGTERM (-15):


psql template1
template1=# select procpid, datname, usename, waiting from pg_stat_activity ;
procpid | datname | usename | waiting
---------+----------+----------+---------
27702 | template1 | postgres | f
27710 | template1 | postgres | f
27756 | template1 | postgres | f
27720 | template1 | postgres | t
(4 rows)
q
su -
kill -15 27720

Fuente: http://s1lence.net