Instalar – Actualizar IPTABLES

-Actualizar iptables ( http://guias.ovh.es/FireWall )

iptables -V


-Descargamos última versión ( http://www.netfilter.org/projects/ip…downloads.html )

mkdir /usr/src/linux
cd /usr/src/linux
wget http://www.netfilter.org/projects/iptables/files/iptables-1.4.9.1.tar.bz2

-Descomprimimos

tar xvfj iptables-*.tar.bz2
cd iptables-*/

-Compilamos

./configure KERNEL_DIR=/usr/src/linux
make KERNEL_DIR=/usr/src/linux

-Instalamos

make install KERNEL_DIR=/usr/src/linux

-Guardamos rutas antiguas

cd /sbin
mv iptables iptables.old
mv iptables-restore iptables-restore.old
mv iptables-save iptables-save.old

-Vinculamos

ln -s /usr/local/sbin/iptables iptables
ln -s /usr/local/sbin/iptables-restore iptables-restore
ln -s /usr/local/sbin/iptables-save iptables-save

Ya tenemos actualizada IPTABLES a la última versión 😀

Tutorial – Instalación KLOXO 64bits sobre Centos 5.5 – KLOXO 64bits – IPTABLES – WEBMIN – CSF & LFD – MOD_EVASIVE – OCULTAR VERSIONES – TRUCOS – Montar servidor GRATUITO

Actualizar Repositorios Centos 5.5 64 bits

-Actualizar repositorios (a elección personal de cada uno)

rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS//rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

-Actualizamos

yum -y update
yum -y upgrade

Tutorial – Instalación KLOXO 64bits sobre Centos 5.5 – KLOXO 64bits – IPTABLES – WEBMIN – CSF & LFD – MOD_EVASIVE – OCULTAR VERSIONES – TRUCOS – Montar servidor GRATUITO

Instalación KLOXO 64bits sobre Centos 5.5 – KLOXO 64bits – IPTABLES – WEBMIN – CSF & LFD – MOD_EVASIVE – OCULTAR VERSIONES – TRUCOS

Tutorial – Instalación KLOXO 64bits sobre Centos 5.5 – KLOXO 64bits – IPTABLES – WEBMIN – CSF & LFD – MOD_EVASIVE – OCULTAR VERSIONES – TRUCOS

He creado un tutorial que nos indica paso a paso cómo montar y configurar un servidor con los servicios más generales, (apache, php, mysql, phpmyadmin, mail, webmail … etc …) de forma GRATUITA, es decir, con coste 0.

Además vamos a instalar un panel de control gratuito que nos va a facilitar las tareas de configuración, administración y nos va a otorgar la opción de reseller, es decir de vendedor. Y por si fuera poco se podría escalar fácilmente con más máquinas.

Bueno, antes que nada os aviso, no tengo apenas experiencia (2 años trasteando) sobre gestionar servidores por lo que la guía pretende ser orientativa.
Comparto con ustedes la información que he ido recopilando desde que ando metido en esto.

Vamos a utilizar la distribución de linux Centos 5.5 de 64 bits como base para el servidor, doy por hecho que ya tenemos un servidor, lo hemos particionado y hemos instalado el sistema operativo (¿No lo tienes?, visita la guía de instalación ). Sobre ella vamos a montar un panel de control llamado Kloxo para facilitar las tareas de gestión y venta a clientes, WebAdmin para facilitar las tareas de administración de nuestro servidor, para servir nuestras páginas web Apache (Apache Web Server) aunque podremos alternar su uso en un par de clicks con Lighttpd, como base de datos vamos a utilizar MySQL, para servir contenido dinámico vamos a instalar PHP, para gestionar la base de datos online PHPMyAdmin, para el envío y recepción de e-mails utilizaremos Qmail (Qmail Mail Server) y Courier Pop/Imap Server , como servidor dns utilizaremos Bind aunque podremos alternarlo con DjbDns. Para brindar al servidor de seguridad vamos a actualizar el poderoso cortafuegos IpTables además instalaremos CSF & LFD (firewall-antiddos) y para conectarnos internamente el servidor utilizaremos SSH con llaves de seguridad.

Seguro que me dejo muchas cosas, así que te insto a que ojees el índice y lo veas por ti mismo 😀

Dejando a un lado la instalación concreta de KLOXO, en temas de seguridad el proceso es ampliable a cualquier tipo de panel de administración.
Recomiendo hacer los pasos en orden.
Instalarlo todo cuesta aproximadamente ~30 minutos 😛
Se aceptan de buen grado sugerencias, consejos y correcciones 😀
Por supuesto si creen que falta algo para hacerlo todavía más seguro me encantaría saberlo para ponerme con ello.
Poco a poco intentaré ir mejorando la guía (espero que con su ayuda)

OpcionalActualizar repositorios Centos 5.5 64 bits

1º – Instalación KLOXO 64 bits
2º – Solucionar problemas de KLOXO en entornos de 64bits
– Solucionar : Carga incorrectamente las librerías.
– Solucionar : Carga incorrectamente IONCUBE
– Solucionar : Carga incorrectamente ZEN
3º – Instalar/Actualizar IPTABLES
4º – Instalar WEBMIN (panel administrador de servidor web)
5º – Instalar y configurar CSF & LFD (firewall-antiddos)
– Añadir CSF & LFD a WEBMIN
– Solucionar : MySql load data
– Solucionar : ATD activo al reinicio
– Solucionar : ANACRON activo
– Solucionar : Ssh UseDSN no
– Solucionar : SAFECHAINUPDATE
– CSF & LFD Solucionar : DNS recursion restrictions
– CSF & LFD Solucionar : Check /var/tmp is mounted as a filesystem
– CSF & LFD Solucionar : Check /tmp is mounted as a filesystem
– CSF & LFD Solucionar : Check /dev/shm is mounted noexec,nosuid
– CSF & LFD Solucionar : Check /tmp is mounted as a filesystem
– CSF & LFD Solucionar : Check SSH PasswordAuthentication
6º – Generar clave/llave de conexión para SSH desde pc
7º – Ocultar versiones de programas
– Ocultar versión Apache
– Ocultar versión PHP
– Ocultar versión BIND
– Ocultar versión ProFTPD
Instalar y configurar mod_evasive
– Parámetros de mod_evasive
– ¿Fallo de programación en mod_evasive?

– Otras cositas
– Consejo sobre Kloxo, eliminar usuarios MySQL no necesarios y/o remotos
– Codificación de idioma Apache

Espero que el tutorial les sirva de ayuda para montar o configurar su servidor.

Sus comentarios serán bien recibidos 😀

Crear DSN desde vb 6.0 en tiempo de ejecución

Largo ha sido el camino transitado hasta encontrar la solución a uno de mis grandes dilemas.
Ahora que ya he conseguido hacerlo, lo comparto con el mundo.

El crear DSN’s de forma dinámica en tiempo de ejecución nos permite configurar y utilizar las conexiones de los controles y data reports sin miedo a futuros cambios.

El código lo he organizado en un módulo.

Descargar Módulo
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''' Autor: Roberto Herrero                       '''''''''''''''''''''''''''''''
''' Fecha: 05/Junio/2008                         '''''''''''''''''''''''''''''''
'''        http://blog-indomita.blogspot.com/    '''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''' Origen : Brian Plano Abad                    '''''''''''''''''''''''''''''''
''' Fecha:   20/Dic/2006 (18 Diciembre 2006)     '''''''''''''''''''''''''''''''
'''          bplano@ solingest.com               '''''''''''''''''''''''''''''''
'''          http://www.elguille.info/colabora/vb2006/jesus_Ejemplo_Report_Manager2.htm
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''


Option Explicit

'Constantes
Private Const ODBC_ADD_DSN = 1 ' Nuevo DSN
Private Const ODBC_CONFIG_DSN = 2 ' Modificar DSN
Private Const ODBC_REMOVE_DSN = 3 ' Eliminar DSN
Private Const ODBC_ADD_SYS_DSN = 4 ' Nuevo DSN de sistema
Private Const ODBC_CONFIG_SYS_DSN = 5 ' Modificar DSN de sistema
Private Const ODBC_REMOVE_SYS_DSN = 6 ' Eliminar DSN de sistema
Private Const vbAPINull As Long = 0 ' Null Pointer
Private Const SQL_SUCCESS As Long = 0
Private Const SQL_FETCH_NEXT As Long = 1

'Declaración de funciones de API
Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" (ByVal hwndParent As Long, ByVal fRequest As Long, ByVal lpszDriver As String, ByVal lpszAttributes As String) As Long
Private Declare Function SQLDataSources Lib "ODBC32.DLL" (ByVal henv As Long, ByVal fDirection As Integer, ByVal szDSN As String, ByVal cbDSNMax As Integer, pcbDSN As Integer, ByVal szDescription As String, ByVal cbDescriptionMax As Integer, pcbDescription As Integer) As Integer
Private Declare Function SQLAllocEnv Lib "ODBC32.DLL" (Env As Long) As Integer

'Constantes
'ruta hasta el servidor (ip/nombre/ruta)
Private Const C_Server = "localhost"
'usuario
Private Const C_User = "usuario"
'contraseña
Private Const C_Pass = "contraseña"
'base de datos
Private Const C_BD = "nombre base de datos"
'puerto
Private Const C_Port = 3306
'Nombre ODBC de MySql
'(si no tienes ninguno instalado http://dev.mysql.com/downloads/connector/odbc/5.1.html)
Public Const C_MYSQL_ODBC = "MySQL ODBC 5.1 Driver"



'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''' FUNCIONES
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'Crea el DSN para las conexiones
'(utiliza las constantes por defecto para conectarse a un servidor MySql)
'Si deseas personalizarlo o dinamizarlo deberás utilizar el resto de funciones
Public Function IniciaDSN(sDSNname As String) As Boolean
    'Comprobamos si existe
    If ExisteDSN(sDSNname) = True Then
        'Si existe lo eliminamos previamente.
        If BorrarDSN(sDSNname, C_MYSQL_ODBC) = False Then
            IniciaDSN = False
            Exit Function
        End If
    End If
    
    'Creamos el nuevo DSN.
    IniciaDSN = MySQLCrearDSN(sDSNname)
End Function
 

'Crea un DSN del sistema.
Public Function CrearDSN(sDSN As String, sDriver As String, sAtributos As String, Optional sHwnd As Long = vbAPINull) As Boolean
    'Creamos el DSN (En vez de vbAPINull, empleamos el hwnd del formulario)
    CrearDSN = CBool(SQLConfigDataSource(sHwnd, ODBC_ADD_SYS_DSN, sDriver, sAtributos))
End Function


'Crea un DSN MySQL con los atributos bien seteados.
Public Function MySQLCrearDSN(sDSN As String, _
 Optional sServer As String = C_Server, Optional sBD As String = C_BD, _
 Optional sUser As String = C_User, Optional sPass As String = C_Pass, _
 Optional sPort As Integer = C_Port) As Boolean
 
    Dim sDriver As String
    Dim sAtributos As String
    
    sDriver = C_MYSQL_ODBC
    sAtributos = "DSN=" & sDSN & Chr(0)
    sAtributos = sAtributos & "SERVER=" & sServer & Chr(0)
    
    sAtributos = sAtributos & "PORT=" & sPort & Chr(0)
    
    sAtributos = sAtributos & "DATABASE=" & sBD & Chr(0)
    
    sAtributos = sAtributos & "USER=" & sUser & Chr(0)
    
    sAtributos = sAtributos & "PASSWORD=" & sPass & Chr(0)
    
    sAtributos = sAtributos & "OPTION=3" & Chr(0)
    
    'Si queremos resetear la conexión de datos, debemos borrarlo antes
    If ExisteDSN(sDSN) Then
        Call BorrarDSN(sDSN, sDriver)
    End If
    
    MySQLCrearDSN = CrearDSN(sDSN, sDriver, sAtributos)

End Function


'Elimina un DSN del sistema.
Public Function BorrarDSN(sDSN As String, sDriver As String, Optional sHwnd As Long = vbAPINull) As Boolean
    Dim sAtributos As String
    ' Borramos el DSN (En vez de vbAPINull, empleamos el hwnd del formulario)
    If ExisteDSN(sDSN) Then
        sAtributos = "DSN=" & sDSN & Chr(0)
        BorrarDSN = CBool(SQLConfigDataSource(sHwnd, ODBC_REMOVE_SYS_DSN, sDriver, sAtributos))
    Else
        MsgBox ExIdioma("ModDSN_Contr1")
        BorrarDSN = False
    End If
End Function


'Comprueba si existe un DSN en el sistema.
Public Function ExisteDSN(sDSN As String) As Boolean
    Dim I As Integer, j As Integer
    Dim sDSNItem As String * 1024
    Dim sDRVItem As String * 1024
    Dim sDSNActual As String
    Dim sDRV As String
    Dim iDSNLen As Integer
    Dim iDRVLen As Integer
    Dim lHenv As Long 'controlador del entorno
    Dim DSNLISTA(100)
    ExisteDSN = False
    For j = 1 To 52
        DSNLISTA(j) = ""
    Next j
    
    j = 1
    If SQLAllocEnv(lHenv) <> -1 Then
        Do Until I <> SQL_SUCCESS
            sDSNItem = Space(1024)
            sDRVItem = Space(1024)
            I = SQLDataSources(lHenv, SQL_FETCH_NEXT, sDSNItem, 1024, iDSNLen, sDRVItem, 1024, iDRVLen)
            sDSNActual = VBA.Left(sDSNItem, iDSNLen)
            sDRV = VBA.Left(sDRVItem, iDRVLen)
            If sDSN <> Space(iDSNLen) Then
                DSNLISTA(j) = sDSN
                If UCase(sDSN) = UCase(sDSNActual) Then
                    ExisteDSN = True
                    Exit Do
                End If
            End If
        Loop
    End If
End Function
Fuente: elGuille.info