Seguridad y Optimizacion de servidor cpanel / WHM
ASEGURANDO CPANEL - WHM Y SU SERVIDOR
**************************************
REVISANDO FORMMAIL
**************************************
FormMail es usado por hackers para enviar spam, para relays, y metodos de inyección.
- Comando para encontrar correos "pesky":
find / -name "[Ff]orm[mM]ai*"
- CGIemail también es un riesgo de seguridad:
find / -name "[Cc]giemai*"
- Comando para inhabilitar correos del formulario:
chmod a-rwx /path/to/filename
**************************************
ROOT KIT CHECKER
**************************************
Es una pequeña herramienta capaz de detectar un gran número de "rootkit" realizando comprobaciones en busca de binarios del sistema que hayan podido ser modificados. Se distribuye con las fuentes bajo una licencia libre poco restrictiva.
Para instalar chkrootkit debe de logearse en su servidor SSH como root.
Ejecute los siguientes comandos:
cd /root/
wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
tar xvzf chkrootkit.tar.gz
cd chkrootkit-0.44
make sense
Para iniciar chkrootkit
/root/chkrootkit-0.44/chkrootkit
*************************************************
Instale un detector de acceso root y advertencia por e-mail
*************************************************
Si alguien consigue acceder a su acceso root, será avisado rapidamente y además podrá conseguir por lo menos la IP address del atacante y saber si hay alguien en su acceso root.
Escriba los siguientes comandos:
pico .bash_profile
Baje un poco sobre el archivo y agregue la siguiente línea:
echo 'ALERT - Root Shell Access on:' `date` `who` | mail -s "Alert: Root Access from `who | awk '{print $6}'`" tumail@fueradelserver.com
Salva el archivo y cierralo.
Configura un mensaje legal SSH:
- Logeate como root y tipea los siguientes comandos:
pico /etc/motd
Ingrese su mensaje, salve el archivo y cierrelo.
*******************************************
MÁS MEDIDAS DE SEGURIDAD
*******************************************
Restringa el acceso SSH:
- Logeate como root y tipea los siguientes comandos:
pico /etc/ssh/sshd_config
Baje un poco del archivo y vea esta sección:
#Port 22
#Protocol 2, 1
#ListenAddress 0.0.0.0
#ListenAddress ::
Borre y cambie:
#Port 22
para colocar
Port 5678 (puedes elegir un puerto entre 4 ó 5 digitos (49151 es el numero de puerto más alto Y no utiliza el 5678)
Borre y cambie:
#Protocol 2, 1
a tu gusto
Protocol 2
Borre y cambie:
ListenAddress 0.0.0.0
a tu gusto
LstenAddress 123.123.123.15 (Usa una de las direcciones IP asignadas a su servidor).
Si tu no quieres permitir el login root busca la sección:
#PermitRootLogin yes
y cambialo a "no"
PermitRootLogin no
Salva el fichero presionando Ctrl x
Deshabilitar cuentas shells
Logeese en su servidor como usuario root y siga las siguientes instrucciones.
locate shell.php
locate irc
locate eggdrop
locate bnc
locate BNC
locate ptlink
locate BitchX
locate guardservices
locate psyBNC
locate .rhosts
Nota: Habrá varios listados que estarán relacionados con el OS/Cpanel. Los ejemplos son:
/home/cpapachebuild/buildapache/php-4.3.1/ext/ircg
/usr/local/cpanel/etc/sym/eggdrop.sym
/usr/local/cpanel/etc/sym/bnc.sym
/usr/local/cpanel/etc/sym/psyBNC.sym
/usr/local/cpanel/etc/sym/ptlink.sym
/usr/lib/libncurses.so
/usr/lib/libncurses.a
etc.
*******************************************
INSTALE BFD
*******************************************
Para instalar BFD logeese en su servidor como root y escriba los siguientes comandos.
cd /root/
wget http://www.rfxnetworks.com/downloads/bfd-current.tar.gz
tar -xvzf bfd-current.tar.gz
cd bfd-0.4
./install.sh
Luego de haber instalado BFD, ejecute el siguiente comando:
pico /usr/local/bfd/conf.bfd
Busque:
ALERT_USR="0"
y cambie esto por
ALERT_USR="1"
Busque:
EMAIL_USR="root"
y cambie esto por
EMAIL_USR="your@email.com"
Salve el archivo y cierrelo.
Para iniciar APF Firewall ejecute el siguiente comando:
/usr/local/sbin/bfd -s
*******************************************
DESHABILITE PUERTOS INNECESARIOS
*******************************************
Continuamos con "Deshabilitar puertos innecesarios".
Lo recomendable es que haga una copia de seguridad de su archivo:
cp /etc/services /etc/services.original
En un sistema típico de CPanel Usted vería algo como esto:
domain 53/tcp # name-domain server
domain 53/udp
http 80/tcp www www-http # WorldWideWeb HTTP
pop3 110/tcp pop-3 # POP version 3
imap 143/tcp imap2 # Interim Mail Access Proto v2
https 443/tcp # MCom
smtps 465/tcp # SMTP over SSL (TLS)
syslog 514/udp
rndc 953/tcp # rndc control sockets (BIND 9)
rndc 953/udp # rndc control sockets (BIND 9)
imaps 993/tcp # IMAP over SSL
pop3s 995/tcp # POP-3 over SSL
cpanel 2082/tcp
cpanels 2083/tcp
whm 2086/tcp
whms 2087/tcp
webmail 2095/tcp
webmails 2096/tcp
mysql 3306/tcp # MySQL
?>
*********************************
CREE UNA CONTRASEÑA ROOT
*********************************
Desde root en su WHM, WHM Server Setup -> Set MySQL Root Password.
Cree una contraseña nueva y root.
*********************************
OPTIMIZANDO MYSQL
*********************************
Estas son mis sugerencias de configuranción de el archivo my.cnf . Esto es recomendable para un servidor dedicado con memoria de 256 a 512MB.
Luego, le recomiendo instalar mytop para supervisar los usos y procesos.
***************************
OPTIMIZACIÓN DE APACHE Y PHP
***************************
Mis sugerencias para el archivo httpd.conf son:
Usted puede encontrar la cantidad de conexiones a Apache con este comando:
netstat -nt | grep :80 | wc -l
Para encontrar la cantidad de procesos de Apache que utilice este comando:
ps -A | grep httpd | wc -l (esto demostrará la cantidad de procesos)
ps -aux | grep httpd (esto mostrará los actuales procesos)
Para encontrar la cantidad de procesos de MySQL utilice este comando:
ps -A | grep mysql | wc -l (esto demostrará la cantidad de procesos)
ps -aux | grep mysql (esto mostrará los actuales procesos)
Si tu quieres saber los logs de errores, ejecuta este comando:
cat /usr/local/apache/logs/error_log
**********************
Un par de comandos
**********************
who
Para saber los usuarios logeados en la máquina.
history | more
Para saber los procesos que has ejecutado anteriormente con ese usuario.
hostname
Imprime el nombre del servidor.
whoami
Imprime tu nombre de usuario.
ps
Lista todos los procesos que están corriendo en ese usuario.
**************************************
REVISANDO FORMMAIL
**************************************
FormMail es usado por hackers para enviar spam, para relays, y metodos de inyección.
- Comando para encontrar correos "pesky":
find / -name "[Ff]orm[mM]ai*"
- CGIemail también es un riesgo de seguridad:
find / -name "[Cc]giemai*"
- Comando para inhabilitar correos del formulario:
chmod a-rwx /path/to/filename
**************************************
ROOT KIT CHECKER
**************************************
Es una pequeña herramienta capaz de detectar un gran número de "rootkit" realizando comprobaciones en busca de binarios del sistema que hayan podido ser modificados. Se distribuye con las fuentes bajo una licencia libre poco restrictiva.
Para instalar chkrootkit debe de logearse en su servidor SSH como root.
Ejecute los siguientes comandos:
cd /root/
wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
tar xvzf chkrootkit.tar.gz
cd chkrootkit-0.44
make sense
Para iniciar chkrootkit
/root/chkrootkit-0.44/chkrootkit
*************************************************
Instale un detector de acceso root y advertencia por e-mail
*************************************************
Si alguien consigue acceder a su acceso root, será avisado rapidamente y además podrá conseguir por lo menos la IP address del atacante y saber si hay alguien en su acceso root.
Escriba los siguientes comandos:
pico .bash_profile
Baje un poco sobre el archivo y agregue la siguiente línea:
echo 'ALERT - Root Shell Access on:' `date` `who` | mail -s "Alert: Root Access from `who | awk '{print $6}'`" tumail@fueradelserver.com
Salva el archivo y cierralo.
Configura un mensaje legal SSH:
- Logeate como root y tipea los siguientes comandos:
pico /etc/motd
Ingrese su mensaje, salve el archivo y cierrelo.
*******************************************
MÁS MEDIDAS DE SEGURIDAD
*******************************************
Restringa el acceso SSH:
- Logeate como root y tipea los siguientes comandos:
pico /etc/ssh/sshd_config
Baje un poco del archivo y vea esta sección:
#Port 22
#Protocol 2, 1
#ListenAddress 0.0.0.0
#ListenAddress ::
Borre y cambie:
#Port 22
para colocar
Port 5678 (puedes elegir un puerto entre 4 ó 5 digitos (49151 es el numero de puerto más alto Y no utiliza el 5678)
Borre y cambie:
#Protocol 2, 1
a tu gusto
Protocol 2
Borre y cambie:
ListenAddress 0.0.0.0
a tu gusto
LstenAddress 123.123.123.15 (Usa una de las direcciones IP asignadas a su servidor).
Si tu no quieres permitir el login root busca la sección:
#PermitRootLogin yes
y cambialo a "no"
PermitRootLogin no
Salva el fichero presionando Ctrl x
Deshabilitar cuentas shells
Logeese en su servidor como usuario root y siga las siguientes instrucciones.
locate shell.php
locate irc
locate eggdrop
locate bnc
locate BNC
locate ptlink
locate BitchX
locate guardservices
locate psyBNC
locate .rhosts
Nota: Habrá varios listados que estarán relacionados con el OS/Cpanel. Los ejemplos son:
/home/cpapachebuild/buildapache/php-4.3.1/ext/ircg
/usr/local/cpanel/etc/sym/eggdrop.sym
/usr/local/cpanel/etc/sym/bnc.sym
/usr/local/cpanel/etc/sym/psyBNC.sym
/usr/local/cpanel/etc/sym/ptlink.sym
/usr/lib/libncurses.so
/usr/lib/libncurses.a
etc.
*******************************************
INSTALE BFD
*******************************************
Para instalar BFD logeese en su servidor como root y escriba los siguientes comandos.
cd /root/
wget http://www.rfxnetworks.com/downloads/bfd-current.tar.gz
tar -xvzf bfd-current.tar.gz
cd bfd-0.4
./install.sh
Luego de haber instalado BFD, ejecute el siguiente comando:
pico /usr/local/bfd/conf.bfd
Busque:
ALERT_USR="0"
y cambie esto por
ALERT_USR="1"
Busque:
EMAIL_USR="root"
y cambie esto por
EMAIL_USR="your@email.com"
Salve el archivo y cierrelo.
Para iniciar APF Firewall ejecute el siguiente comando:
/usr/local/sbin/bfd -s
*******************************************
DESHABILITE PUERTOS INNECESARIOS
*******************************************
Continuamos con "Deshabilitar puertos innecesarios".
Lo recomendable es que haga una copia de seguridad de su archivo:
cp /etc/services /etc/services.original
En un sistema típico de CPanel Usted vería algo como esto:
domain 53/tcp # name-domain server
domain 53/udp
http 80/tcp www www-http # WorldWideWeb HTTP
pop3 110/tcp pop-3 # POP version 3
imap 143/tcp imap2 # Interim Mail Access Proto v2
https 443/tcp # MCom
smtps 465/tcp # SMTP over SSL (TLS)
syslog 514/udp
rndc 953/tcp # rndc control sockets (BIND 9)
rndc 953/udp # rndc control sockets (BIND 9)
imaps 993/tcp # IMAP over SSL
pop3s 995/tcp # POP-3 over SSL
cpanel 2082/tcp
cpanels 2083/tcp
whm 2086/tcp
whms 2087/tcp
webmail 2095/tcp
webmails 2096/tcp
mysql 3306/tcp # MySQL
?>
*********************************
CREE UNA CONTRASEÑA ROOT
*********************************
Desde root en su WHM, WHM Server Setup -> Set MySQL Root Password.
Cree una contraseña nueva y root.
*********************************
OPTIMIZANDO MYSQL
*********************************
Estas son mis sugerencias de configuranción de el archivo my.cnf . Esto es recomendable para un servidor dedicado con memoria de 256 a 512MB.
Cita:
[mysqld] max_connections = 250 key_buffer = 16M myisam_sort_buffer_size = 32M join_buffer_size = 1M read_buffer_size = 1M sort_buffer_size = 2M table_cache = 1024 thread_cache_size = 286 interactive_timeout = 25 wait_timeout = 1000 connect_timeout = 10 max_allowed_packet = 16M max_connect_errors = 10 query_cache_limit = 1M query_cache_size = 16M query_cache_type = 1 tmp_table_size = 16M skip-innodb [mysqld_safe] open_files_limit = 8192 [mysqldump] quick max_allowed_packet = 16M [myisamchk] key_buffer = 32M sort_buffer = 32M read_buffer = 16M write_buffer = 16M |
Cita:
tar -zxvf mytop-1.4.tar.gz cd mytop-1.4 perl Makefile.PL make make test make install |
***************************
OPTIMIZACIÓN DE APACHE Y PHP
***************************
Mis sugerencias para el archivo httpd.conf son:
Cita:
Timeout 200 KeepAlive On maxKeepAliveRequests 100 KeepAliveTimeout 3 MinSpareServers 10 MaxSpareServers 20 StartServers 15 MaxClients 250 MaxRequestsPerChild 0 HostnameLookups Off |
netstat -nt | grep :80 | wc -l
Para encontrar la cantidad de procesos de Apache que utilice este comando:
ps -A | grep httpd | wc -l (esto demostrará la cantidad de procesos)
ps -aux | grep httpd (esto mostrará los actuales procesos)
Para encontrar la cantidad de procesos de MySQL utilice este comando:
ps -A | grep mysql | wc -l (esto demostrará la cantidad de procesos)
ps -aux | grep mysql (esto mostrará los actuales procesos)
Si tu quieres saber los logs de errores, ejecuta este comando:
cat /usr/local/apache/logs/error_log
**********************
Un par de comandos
**********************
who
Para saber los usuarios logeados en la máquina.
history | more
Para saber los procesos que has ejecutado anteriormente con ese usuario.
hostname
Imprime el nombre del servidor.
whoami
Imprime tu nombre de usuario.
ps
Lista todos los procesos que están corriendo en ese usuario.