martes, 26 de octubre de 2010

Como configurar nuestro firewall para que acepte conexiones pasivas en VSFTPD.

Bueno , para poder realizar esto primero necesitamos cargar un modulo espcial en la siguiente ruta:

[root@server ~]# nano /etc/sysconfig/iptables-config

y debemos decirle a iptables que modulo necesitamos cargar, en este caso necesitamos carga el modulo
ip_conntrack_ftp

IPTABLES_MODULES="ip_conntrack_ftp"

Luego salvamos y finalmente añadimos a nuestro

/etc/sysconfig/iptables

## FTP ##
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
## FTP CONEXIONES ESTABLECIDAS
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


Nada peculiar con esto, es obvio que todos los paquetes y estas reglas estan hechas para paquetes que llegan exclusivamente a este. Servidor
Luego nuestro

services iptables restart

Saludos

domingo, 24 de octubre de 2010

Hacer que apache soporte los .ICO para Internet Explorer

Bueno, esto lo pongo por si alguna persona tiene problemas al momento de visualizar sus favicon en Internet Explorer.

Lo que tenemos que hacer es editar el /etc/httpd/conf/httpd.conf y al final agregar:
AddType image/x-icon .ico
Esto sucede porque en nuestra configuracion de apache, no le decimos en ninguna linea como que tipo de archivo debe interpretar los .ico

Saludos

jueves, 21 de octubre de 2010

Configuracion de Tamaño maximo de recepcion y Envio ZIMBRA

Primero debemos acceder con el usuario zimbra y preguntar por el valor actual:
# su - zimbra
$ postconf message_size_limit
message_size_limit = 10240000


Luego para la modificacion de ese valor teclearemos lo siguiente:
# su - zimbra
$ zmprov modifyConfig zimbraMtaMaxMessageSize 2048000

y Reiniciamos el servicio postfix

$ postfix reload

comprobamos: $ postconf | grep message_size_limit

Ahora modificaremos el (zimbraFileUploadMaxSize) que es el Limite para subir archivos.
Primero pregunts
# su - zimbra
$ zmprov modifyConfig zimbraFileUploadMaxSize 5000000

y lo cambiamos a :
zmprov modifyServer mail2.domain.com zimbraFileUploadMaxSize 20000000


Todo Zimbra :)

miércoles, 6 de octubre de 2010

Mica virtual machine y mica merchant

Hoy instale miva virtual machine , tipo unaaquina virtual pero muchoss sencilla y simple que la virtual machine de Java.
Me costo mucho trabajo identificarme con miva virtual machine , conocer ósea que sirve cada uno de sus archivos ycuales son las fuciones que cumple cada. Uno de estos.
Logre instalarlo el día de hoy en un servidor dedicado en producción. Para luego instalar sobre el interprete de miva el paquete merchant 5 un E-commerce proporsionado por proovedores de
hosting que manejan directorios virtuales y que su instalacib es mucho mas sencialla claro porque los hoster tienene ya configurado miva virtual machine de manera comparida a que todos los usuarios usen la misma instancia de instalación para casda uno de sus. e-commerces.
Yo tuve que lidiar con la instalación de miva virtual machine para el servidor dedicado que tngo a cargo.
Bueno luego colgare un manual sobre como
lo hize en Centos 5.
Saludos.

lunes, 4 de octubre de 2010

Excepciones en PHP

Ultimamente he estado relacionandome mucho en los servidores Linux y e descuidado un poco la programación. Pero ahora que tengo algo interesante que un amigo de la Universidad me comento sobre las excepciones en PHP.
Para poder mostrar el código ordenado tuve que utilizar la ayuda de esta página:

http://www.simplebits.com/cgi-bin/simplecode.pl?mode=process

Un capturador de excepciones nos sirve para que los errores en tiempo de ejecución de una aplicacion pueda controlada y manejada debidamente.

Para esto PHP tamibien maneja Excepciones como lo vemos ahora:


<?php

try {

    $error = 'Always throw this error';

    throw new Exception($error);



    // Code following an exception is not executed.

    echo 'Never executed';



} catch (Exception $e) {

    echo 'Caught exception: ',  $e->getMessage(), "\n";

}



// Continue execution

echo 'Hello World';

?>




En la linea de throw new Exception($error); vemos como este ejemplo genera una Excepcion (Causada aproposito para poder capturarla con nuestro CATCH.)


Bueno el punto de partida de una excepcion siempre es :
try{
// Todo el codigo que creas tu pueda lanzar algun tipo de error (Excepcion)
// como por ejemplo , el acceso a una Base de datos, acceso a ficheros , carpetas
// Test de conexion. entre otros procesos variables que se encuentren sujetos a posibles errores.

} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
// Es aqui , en donde nosotros le indicamos al software que debe hacer en caso se encuentre con algun tipo de Excepcion. Como mandar un E-Mail al desarrollador indicando que se produjo una excepcion.

}


Para las personas que deseen aprovechar las bondades de la programación orientada a Objetos en un lenguaje Script como PHP les sera de mucha ayuda poder manejar excepciones, hacer mas robustas y seguras sus aplicaciones , ademas de poder hacerles seguimiento a los errores mas frecuentes y encontrar las razones o causas que la genera.

martes, 21 de septiembre de 2010

Grupos y usuarios en Linux

USUARIOS Y GRUPOS

Linux es un sistema operativo multiusuario y multitarea, esto es, que más de un usuario puede trabajar en el sistema de forma simultánea con otros, ejecutando una o más tareas a la vez.

Cuando se ingresa al sistema, es necesario que se identifique con un login y una contraseña, el login es un nombre que identifica de forma única al usuario. La contraseña debe ser una combinación de letras, números y caracteres especiales.

El sistema de contraseñas en Linux es de tipo unidireccional. Esto quiere decir que nuestra contraseña no es almacenada como texto, sino que es cifrada y guardada tal como es. Cuando entramos en el sistema y escribimos nuestra contraseña, ésta es cifrada y comparada con la que está almacenada. Si coinciden, la identificación es positiva, si no coinciden, no hay identificación.

Actualmente, en los sistemas GNU/Linux se puede escoger dos tipos de cifrado posibles para las contraseñas de usuario: 3DES que se viene usando desde los inicios de UNIX, tiene el inconveniente que sólo permite contraseñas de 8 caracteres, si se escriben mas se ignoran, el otro tipo es MD5 con el que podemos usar contraseñas de la longitud que deseamos, por seguridad se recomienda utilizar el tipo MD5.

Los grupos son siempre expresiones lógicas de organización, reuniendo usuarios para un propósito común. Los usuarios dentro de un mismo grupo pueden leer, escribir o ejecutar archivos que pertenecen al grupo.
Los usuarios en GNU/Linux

Existe 3 tipos de usuarios:

1. Usuario Normal, es un individuo particular que puede entrar en el sistema, con más o menos privilegios que harán uso de los recursos del sistema. Como indicador en el prompt utiliza el símbolo $ (dólar). Ejemplo: raul, sergio, mrodriguez, etc. También se les conoce como usuarios de login.
2. Usuarios de Sistema, son usuarios propios del sistema vinculados a las tareas que debe realizar el sistema operativo, este tipo de usuario no puede ingresar al sistema con un login normal. Ejemplo: mail, ftp, bin, sys, proxy, etc. También se le conoce como usuarios sin login.
3. root (superusuario), todo sistema operativo GNU/Linux cuenta con un superusuario, que tiene los máximos privilegios que le permitirán efectuar cualquier operación sobre el sistema, su existencia es imprescindible ya que se encarga de gestionar los servidores, grupos, etc.

Archivos relacionados

Toda la información de los usuarios y grupos se guarda en los siguientes archivos:

* /etc/passwd: guarda información de los usuarios del sistema como: nombres, directorio home, shell.
* /etc/group: almacena la información sobre los grupos existentes en el sistema.
* /etc/shadow: contiene las contraseñas cifradas de los usuarios además de otros datos para su validación.

Archivo /etc/passwd

El archivo passwd almacena los usuarios creados en el sistema y tiene el siguiente formato:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
clases:x:1000:1000:LinuxCentro:/home/clases:/bin/bash

Cada línea esta separada en campos, el separador de campo son los dos puntos (:), y cada campo representa lo siguiente:

* Login: el nombre del usuario. No puede haber dos nombres iguales.
* Contraseña cifrada: si no se utiliza el fichero de shadow, las contraseñas cifradas se almacenan en este campo. Si utilizamos el fichero de shadow, todos los usuarios existentes en este fichero deben existir también en el de shadow y en este campo se pone el carácter “x”.
* User ID: número de identificación del usuario. Es el número con el cual el sistema identifica al usuario. El 0 es el único que está reservado para el root.
* Group ID: el número de grupo al cual pertenece el usuario. Como un usuario puede pertenecer a más de un grupo, este GID es del grupo primario.
* Comentarios: campo reservado para introducir los comentarios que queramos sobre el usuario. Se suele utilizar para poner el nombre completo o algún tipo de identificación personal.
* Directorio home: el directorio home del usuario es donde éste podrá guardar todos sus ficheros, generalmente se encuentran dentro del directorio /home y el nombre de cada directorio es similar al de cada usuario.
* Intérprete de comandos: un intérprete de comandos (shell ) es un programa que se encarga de leer todo lo que escribimos en el teclado y ejecutar los programas o comandos que le indiquemos. Hay decenas de ellos, aunque el más utilizado es, sin duda, el bash (GNU Bourne-Again SHell). Si en este campo está: /bin/false ó /bin/nologin el usuario no podrá tener acceso a su shell y no podrá ejecutar comandos.

Archivo /etc/group

El archivo group almacena la información de los grupos del sistema, y tiene el siguiente formato:

root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
clases:x:502:

Al igual que el archivo anterior cada línea esta separada en campos el separador de campo son los dos puntos (:), y cada campo representa lo siguiente:

* Nombre del grupo. Por defecto con los comandos habituales se crea un grupo con el mismo nombre que el usuario creado, aunque pueden existir otros grupos con nombres específicos.
* Contraseña cifrada: la contraseña de un grupo se utiliza para permitir que los usuarios de un determinado grupo se puedan cambiar a otro o para ejecutar algunos programas con permisos de otro grupo, siempre que se disponga de la contraseña.
* Group ID: número de identificación del grupo. Es el número con el cual el sistema identifica internamente a los grupos. El 0 es el único que está reservado para el grupo del root (los administradores).
* Lista de usuarios: los nombres de los usuarios que pertenecen al grupo, separados por comas. Aunque todos los usuarios deben pertenecer a un determinado grupo (especificado en el cuarto campo del fichero de passwd), este campo se puede utilizar para que usuarios de otros grupos también dispongan de los mismos permisos que tiene el que se está referenciando.

Archivo /etc/shadow

El archivo shadow se encarga de almacenar las contraseñas cifradas del usuario, y tienen el siguiente formato:

root:$1$qvZCDFha$8CsNHHB/QDYlx3wDnZWzp/:12829:0:99999:7:::
bin:*:12829:0:99999:7:::
daemon:*:12829:0:99999:7:::
clases:$1$8Ne4Ij4r$th9obKXkR7iTZGj26jGUc/:12831:0:99999:7:::

Igual que los archivos anteriores cada línea esta separada en campos el separador de campo son los dos puntos (:), y cada campo representa lo siguiente:

* Login: debe ser el mismo nombre que se utiliza en el fichero de passwd.
* Contraseña cifrada.
* Días que han pasado, desde el 1 de enero de 1970, hasta que la contraseña ha sido cambiada por última vez.
* Días que deben pasar hasta que la contraseña pueda ser cambiada.
* Días que han de pasar hasta que la contraseña deba ser cambiada.
* Días antes de caducar la contraseña en el que se avisará al usuario de que debe cambiarla.
* Días que pueden pasar después de que la contraseña caduque, antes de deshabilitar la cuenta del usuario (si no se cambia la contraseña).
* Días, desde el 1 de enero de 1970, desde que la cuenta está deshabilitada.
* Campo reservado.

En sistemas UNIX es muy común representar las fechas a partir del número de segundos transcurridos desde el 1 de enero de 1970.

En sistemas donde hay muchos usuarios y se desea restringir el espacio de disco que utilizan se puede utilizar quotas.
COMANDOS PARA GESTIONAR USUARIOS

* Comando useradd : permite añadir nuevos usuarios al sistema, también permite establecer la información por defecto de los nuevos usuarios. Se encuentra enlazado simbólicamente por el nombre adduser, ambos nombres se pueden emplear indistintamente para las mismas acciones.

Algunas opciones:

-u : permite especificar el UID.
-c : añade los valores a la sección de comentarios.
-d : permite especificar el directorio de trabajo, creará automáticamente el directorio señalado.
-s : permite establecer el shell.

Ejemplos:

# useradd raul


# crea el usuario raul con las propiedades por defecto

# useradd -u 500 carlos


# crea el usuario carlos con su UID 500

# useradd –c ‘Juan Perez’ juan


#crea el usuario juan rellenando el comentario con “Juan Perez”

# useradd –d /home/soft msantos


# crea el usuario msantos con su directorio de trabajo “soft”

# useradd –s /bin/false operador1


# crea el usuario operador1 desactivando la posibilidad de ejecutar un shell

# useradd -D

GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel


# muestra las propiedades por defecto de los nuevos usuarios que se añadan

# grupo primario (no se emplea)
# directorio base de todos los usuarios
# número de días entre que el password expire y la cuenta se deshabilite
# fecha (YYYY-MM-DD) en que la cuenta expira
# shell que empleará el usuario para interactuar con el sistema
# directorio cuyo contenido se copiará en el directorio de cada usuario

# useradd -D -b /users


# cambia el directorio base por defecto de los nuevos usuarios a /users. El directorio /users debe existir previamente


Valores por defecto: son valores por defecto que serán utilizados para crear a los nuevos usuarios:

En RedHat o derivados, los valores por defecto están en el archivo /etc/default/useradd.

En Debian y derivados, los valores por defecto para añadir nuevos usuarios estan en el archivo /etc/adduser.conf

* Comando passwd : permite establecer y/o cambiar la contraseña de un usuario. También puede bloquear, desbloquear y deshabilitar una cuenta. Si se invoca sin argumentos se asume que se está cambiando la contraseña del usuario actual.

Algunas Opciones:

-d : deshabilita la necesidad de contraseña del usuario.
-l : bloquea la cuenta de un usuario añadiendo un signo de admiración (!) delante de su contraseña en el archivo /etc/shadow.
-u : desbloquea la cuenta de un usuario bloqueado.

Ejemplos:

# passwd raul
New UNIX password:
Retype new UNIX password:


# estableciendo una contraseña para raul
passwd: all authentication tokens updated successfully

# passwd -d raul


# deshabilita la cuenta del usuario raul eliminando su password

# passwd -l raul


# bloquea la cuenta del usuario raul poniendo un signo ! delante de su password en el archivo /etc/shadow

# passwd -u raul


# desbloquea la cuenta del usuario raul

* Comando userdel : permite eliminar definitivamente un usuario del sistema.

Ejemplos:

# userdel raul


# elimina el usuario raul manteniendo su directorio de datos.

# userdel -r raul


# elimina al usuario raul y borra su directorio base.

* Comando usermod : se emplea para modificar algunas propiedades de los usuarios como: el login, el directorio base, el shell que se inicia al conectarse, los grupos a los que pertenece, la fecha de expiración de la cuenta, etc. También bloquea y desbloquea una cuenta. Como opciones utiliza las disponibles en el comando useradd.

Ejemplos:

# usermod -s /bin/csh dominic


# coloca el shell csh para el usuario dominic

# usermod -G users,disk dominic


# señala como grupos secundarios de dominic a users y disk

# usermod -e 2005-10-20 dominic


# indica que la cuenta de dominic expirará el 20 de octubre del 2005

* Comando chfn : permite cambiar la información de contacto de un usuario. Esta incluye aspectos como: el nombre completo, la oficina de trabajo y los teléfonos. Se almacena en el archivo de usuarios /etc/passwd en la sección de comentarios.

Ejemplos:

# chfn dominic
Changing finger information for dominic.
Name []: Dominic Davis
Office []: Informática
Office Phone []: 22-0909
Home Phone []: 44-3025


# Cambia información del usuario dominic

# chfn
Changing finger information for root.
Name []:
Office []:
Office Phone []:
Home Phone []:


# cambia la información de contacto del usuario actua

* Comando chsh: cambia el shell del usuario especificado.

Ejemplos:
# chsh dominic
Cambiando la shell de acceso para dominic
Introduzca el nuevo valor, o presione enter para el predeterminado
Shell de acceso [/bin/bash]:

# chsh
Cambiando la shell de acceso para root
Introduzca el nuevo valor, o presione enter para el predeterminado
Shell de acceso [/bin/bash]:

* Comando chage : permite cambiar el password y los datos del usuario.

Algunas Opciones:
-d [dias] : Cuenta el número de días (desde 01-01-1970) transcurridos desde que cambió la contraseña por última vez
-E [fecha] : Modifica la fecha en que la cuenta del usuario expirará y será bloqueada
-l [dias] : Modifica cuantos días puede permanecer una cuenta con una contraseña expirada antes de ser bloqueada
-M [dias] : Modifica el número máximo de días durante los que es válida la contraseña de usuario. Pasados los días, el usuario deberá de modificarla
-m [dias] : Modifica el número mínimo de días entre cambio de contraseña
-W [dias] : Modifica el número de días que se avisará al usuario antes de cambiar la contraseña

Ejemplos:

# chage -E 2005-06-15 dominic


# la cuenta del usuario dominic expirará el 15.Junio.2005

# chage -l 7 dominic


# la cuenta del usuario dominic tendrá 7 días de comunicaciones antes de ser bloqueada

# chage -M 7 dominic


# se da 7 dias al usuario dominic para que pueda modificarla su contraseña, luego del cual deberá modificarla en forma obligatoria


COMANDOS PARA GESTIONAR GRUPOS

* Comando groupadd : permite añadir un grupo al sistema.

Ejemplos:

# groupadd admin




# groupadd –g 601 supervisor


# añade un grupo supervisor con GID 601

* Comando groupdel : permite eliminar un grupo del sistema, el grupo no podrá ser eliminado si este es el grupo primario de un usuario.

Ejemplo:
# groupdel admin

* Comando groupmod : permite modificar el nombre o GID de un grupo.

Ejemplos:

# groupmod –g 701 supervisor


# cambia el GID a 601 del grupo supervisor

# groupmod -n manager supervisor


# cambia el nombre del grupo supervisor a manager

* Comando gpasswd : permite administrar los grupos. Se puede utilizar para añadir y eliminar usuarios, señalar un administrador e indicar un password para el grupo.

Ejemplos:

# gpasswd -A raul admin


# señala como administrador del grupo admin al usuario raul

# gpasswd admin


# cambia el passwd del grupo admin

# gpasswd -a juan admin


# añade el usuario juan al grupo admin

COMANDOS ADICIONALES PARA GESTIONAR USUARIOS




Comando


Descripción




# whoami


# nos muestra que usuario somos




# groups [usuario]


# nos sirve para saber a qué grupos pertenecemos




# id [usuario]


# nos mostrará nuestro uid, gid, y el id del grupo al que pertenecemos




# su [usuario]


# sirve para convertirnos en otro usuario sin tener que salir de la sesión, así como para cambiar a ser un superusuario




# newgrp [grupo]


# sirve para cambiar de grupo, se utiliza para cambiar a un grupo que no pertenecemos




# who


# nos muestra la lista de usuarios dentro del sistema




# w [usuario]


# nos muestra la lista de usuarios dentro del sistema y también lo que están haciendo




# write [usuario]


# comando que se utiliza para comunicarse entre los usuarios del sistema




# wall [mensaje]


# permite enviar un mensaje a todos los terminales de los usuarios dentro sistema




# mesg [y|n]


#permite activar o desactivar la opción de recibir mensajes

miércoles, 1 de septiembre de 2010

Recuperar la Clave de MySQL en 5 Pasos

A Cuantos les ha pasado que van a realizar algun servicio o asesoria y se encuentran con la sorpresa de que a estos no les han dejado la contraseña del ROOT en MYSQL.
Aqui con esta guia podran recuperar esa contraseña en tan solo 5 pasos.

# 1: Detener el proceso del servidor MySQL.
root@servidor-ubuntu:~# /etc/init.d/mysql stop
* Stopping MySQL database server mysqld [ OK ]
root@servidor-ubuntu:~#
# 2: Iniciar el servicio/demonio de MySQL (mysqld) con la opcion –skip-grant-tables asi no pedira contraseña.
root@servidor-ubuntu:~# mysqld_safe --skip-grant-tables &
[1] 10702
root@servidor-ubuntu:~# nohup: ignoring input and redirecting stderr to stdout
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[10741]: started
# 3: Conectar al servidor MySQL como el usuario root.
root@servidor-ubuntu:~# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1
Server version: 5.0.51a-3ubuntu5.4 (Ubuntu)

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

mysql>
Paso # 4: Configure la nueva contraseña de root.
mysql> use mysql;

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> update user set password=PASSWORD("321") where User='root';
Query OK, 3 rows affected (0.03 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
Paso # 5: Salir y reiniciar el servidor MySQL
mysql> quit
Bye
root@servidor-ubuntu:~# /etc/init.d/mysql stop
* Stopping MySQL database server mysqld
STOPPING server from pid file /var/run/mysqld/mysqld.pid
mysqld_safe[11414]: ended
[ OK ]
[1]+ Done mysqld_safe --skip-grant-tables
Paso # 6: Reinicio de MySQL
root@servidor-ubuntu:~# /etc/init.d/mysql start
* Starting MySQL database server mysqld [ OK ]
* Checking for corrupt, not cleanly closed and upgrade needing tables.

root@servidor-ubuntu:~# mysql -u root -p