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.
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
Luego, le recomiendo instalar mytop para supervisar los usos y procesos.

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
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.