Archivo de la categoría: Cpanel

Ver intentos fallidos de accesso a cpanel/webmail

No les ha pasado que algún cliente se queja que fue bloqueado por el firewall y afirma que no han hecho nada?
Afortunadamente Cpanel tiene un archivo que registra los intentos fallidos de accesso a cpanel/webmail con fecha, dirección ip e incluso el nombre de usuario/email que trataron de usar para acceder.

Para verlo solo es necesario acceder por ssh y abrir el archivo /usr/local/cpanel/logs/login_log con su editor favorito. Yo uso

nano /usr/local/cpanel/logs/login_log

en versiones mas recientes de whm se puede ver el archivo /var/log/exim_mainlog. Usando grep se puede buscar la ip del cliente directamente.

grep 50.74.54.202 /var/log/exim_mainlog

Algunas operaciones básicas con Cpanel XMLAPI

En un proyecto reciente para uno de mis clientes debía crear automáticamente cuentas de FTP, borrarlas luego de una semana y en otra semana mas, borrar el directorio con todos sus archivos. Resulta que en un servidor con Cpanel es mucho mas fácil de lo que parece, utilizando las funciones de Cpanel XMLAPI y con el nombre de usuario y contraseña de la cuenta.

Configuración básica para usar xmlapi.php: recuerda poner esta configuración antes de incluir la librería.

$cpanelConnection = array (
'host' => 'ip o nombre de dominio del servidor',
'port' => '2083',
'user' => 'nombre de usuario cpanel',
'pass' => 'contraseña cpanel') ;

Crear una cuenta de FTP:

require_once("xmlapi.php");

$xmlapi = new xmlapi($cpanelConnection['host']);
$xmlapi->password_auth($cpanelConnection['user'],$cpanelConnection['pass']);

$xmlapi->set_port($cpanelConnection['port']);
$xmlapi->set_debug(1);

$args = array( 
    'user'=>strtolower('nombre de usuario de la nueva cuenta de ftp, sin espacios o simbolos'),
    'pass'=>'password de la nueva cuenta de ftp',
    'quota'=>0, //0 si es ilimitado
    'homedir'=>'ruta al directorio de la nueva cuenta de ftp'
);

$xmlapi->api2_query($cpanelConnection['user'], 'Ftp', 'addftp', $args);

Borrar una cuenta de FTP (sin borrar sus archivos):

require_once("xmlapi.php");

$xmlapi = new xmlapi($cpanelConnection['host']);
$xmlapi->password_auth($cpanelConnection['user'],$cpanelConnection['pass']);

$xmlapi->set_port($cpanelConnection['port']);
$xmlapi->set_debug(1);

$args = array( 
    str_replace('.','','nombre de usuario ftp a eliminar')
);

$xmlapi->api1_query($cpanelConnection['user'], 'Ftp', 'delftp', $args);

Luego de crear y borrar las cuentas de ftp, debía borrar el directorio con todos sus archivos. Normalmente se puede hacer en PHP  con un script recursivo; pero cuando se crea la cuenta de FTP desde Cpanel, se crea también un archivo .ftpquota, que no puede ser borrado ya que pertenece a otro usuario. Así que puse manos a la obra a buscar como borrar el directorio con el mismo usuario de Cpanel con que se creo el directorio:

require_once("xmlapi.php");

$xmlapi = new xmlapi($cpanelConnection['host']);
$xmlapi->password_auth($cpanelConnection['user'],$cpanelConnection['pass']);

$xmlapi->set_port($cpanelConnection['port']);
$xmlapi->set_debug(1);

$xmlapi->api2_query($cpanelConnection['user'], 'Fileman', 'fileop', array("op"=>"unlink", "sourcefiles"=>'Ruta de la carpeta a eliminar'));

Hay muchas otras funciones para explorar y automatizar un poco mas los procesos que escribimos en nuestros scripts.

En caso que no encuentren la librería en el sitio del desarrollador, la pueden descargar aqui: xmlapi.php