Enviado por admin el
Ya había escrito un articulo dedicado a la instalación de Homer pero como esta nueva versión (todavía en desarrollo), trae muchas novedades, he decidido volverlo a escribir.
A partir de esta versión la integración de Kamailio y Homer es mucho más profunda. Muchas de las estadísticas van directamente de Kamailio a la base de datos de Homer y en el mismo Kamailio la nueva configuración permite detectar toda una serie de ataques y/o tentativos de fraude que luego encontraremos en la interfaz grafica de Homer y podremos recibir alertas a nuestro correo electrónico.
Esta instalación se basa en CentOS 6.5 64 bit, un VPS de Digital Ocean con 2GB de RAM y MariaDB como sistema de base de datos.
Mano a la obra.
Una vez conectados al servidor vías SSH, actualizamos el sistema:
yum update -y
Instalamos el editor nano y wget:
yum install nano wget -y
Se continua con la configuración de la zona horaria (personalizar según su país):
rm /etc/localtime
ln -s /usr/share/zoneinfo/America/Bogota /etc/localtime
El idioma (español):
nano /etc/sysconfig/i18n
se modifica esta línea:
LANG="en_US.UTF-8"
para que quede:
LANG="es_CO.iso88591"
Se guardan los cambios.
Se instala el paquete del network time protocol que se utiliza para tener actualizada la hora del servidor:
yum install ntp -y
Se configura para que arranque en automático:
chkconfig ntpd on
Se inicia:
service ntpd start
Se crea la partición de Swap ya que no viene por defecto:
dd if=/dev/zero of=/swapfile bs=1024 count=512k
mkswap /swapfile
swapon /swapfile
Se configura la partición de swap para que arranque con el sistema:
nano /etc/fstab
al final del archivo se añade la línea que sigue:
/swapfile swap swap defaults 0 0
Se guardan los cambios y se cambian los permisos del archivo recién creado:
chmod 0600 /swapfile
Se configuran los repositorios de MariaDB:
nano /etc/yum.repos.d/MariaDB.repo
Se copian las siguientes líneas:
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/5.5/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
Se guardan los cambios. Se desinstala el paquete de las librerías de MySQL:
rpm -e --nodeps mysql-libs
Se instala MariaDB:
yum install MariaDB-server MariaDB-client MariaDB-devel -y
Se inicia el servicio:
service mysql start
Se vuelve el arranque automático:
chkconfig mysql on
Se pone en seguridad:
mysql_secure_installation
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
A lo largo del proceso se configura la contraseña del usuario root de MariaDB (en nuestro caso sesamo)
Se configura la zona horaria en MySQL:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -psesamo mysql
Se modifica la configuración de MySQL;
nano /etc/my.cnf.d/server.cnf
bajo la etiqueta:
[mariadb-5.5]
se añade:
default-time-zone = America/Bogota
tmp_table_size = 32M
max_heap_table_size = 1G
query_cache_type = 0
query_cache_size = 0
max_connections = 500
thread_cache_size = 50
open_files_limit = 65535
table_definition_cache = 1024
table_open_cache = 2048
#INNODB
innodb_flush_method = O_DIRECT
innodb_log_files_in_group = 2
innodb_log_file_size = 500M
innodb_flush_log_at_trx_commit = 2
innodb_file_per_table = 1
innodb_buffer_pool_size = 1G
innodb_stats_on_metadata = 0
innodb_file_format = barracuda
Desde la versión 3.5, Homer utiliza como ENGINE InnoDB bajo el formato Barracuda. Se reinicia:
service mysql restart
Si aparece este error (o algo parecido):
Shutting down MySQL. SUCCESS!
Starting MySQL. ERROR! The server quit without updating PID file (/var/lib/mysql/sip10.voztovoice.org.pid).
Se borran los dos archivos que siguen:
rm /var/lib/mysql/ib_logfile*
rm: remove regular file `/var/lib/mysql/ib_logfile0'? y
rm: remove regular file `/var/lib/mysql/ib_logfile1'? y
Se inicia nuevamente Homer:
service mysql start
Se crea la base de datos:
mysql -u root -psesamo
MariaDB [(none)]> create database homer_db;
MariaDB [(none)]> grant all privileges on homer_db.* to 'homeruser'@'localhost' identified by 'sesamo';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> quit
Se instala la nueva versión de la tabla sip_capture:
cd /usr/src
wget https://homer.googlecode.com/git-history/webhomer_3.5/sql/create_sipcapt...
mysql -u root -psesamo homer_db < create_sipcapture_version_2.sql
la tabla de las estadísticas:
wget https://homer.googlecode.com/git-history/webhomer_3.5/sql/statistics.sql
mysql -u root -psesamo homer_db < statistics.sql
Se instala la versión 4.1 de Kamailio:
yum install gcc ncurses-devel make gcc-c++ compat-libtermcap zlib-devel libtool bison -y
yum install bison-devel openssl-devel bzip2-devel wget newt-devel subversion flex git -y
git clone git://git.sip-router.org/kamailio kamailio
cd kamailio
git checkout -b 4.1 origin/4.1
make include_modules="pv db_mysql sipcapture textops rtimer xlog sqlops htable sl siputils" cfg
make all
make install
Se instala el script de arranque para CentOS 6.5:
cd /usr/src/kamailio/pkg/kamailio/centos/6
nano kamailio.sysconfig
Se modifican estas dos líneas:
USER=kamailio
GROUP=kamailio
para que queden:
USER=root
GROUP=root
Se guardan los datos y se continua:
cp kamailio.sysconfig /etc/sysconfig/kamailio
nano kamailio.init
Se modifican estas dos líneas:
KAM=/usr/sbin/kamailio
KAMCFG=/etc/kamailio/kamailio.cfg
Para que queden:
KAM=/usr/local/sbin/kamailio
KAMCFG=/usr/local/etc/kamailio/kamailio.cfg
Se guardan los cambios y se termina con el proceso:
cp kamailio.init /etc/init.d/kamailio
chkconfig --add kamailio
chmod + /etc/init.d/kamailio
chkconfig kamailio on
Se prepara el archivo de configuración de Kamailio:
cd /usr/local/etc/kamailio
mv kamailio.cfg kamailio.cfg.old
nano kamailio.cfg
Se descarga el archivo desde esta pagina:
https://code.google.com/hosting/moved?project=homer
y se copia. Se modifican estas líneas:
listen=udp:10.0.1.77:9060
modparam("sqlops","sqlcon","cb=>mysql://homer_user:123456@127.0.0.1/homer_db")
modparam("sipcapture", "db_url", "mysql://homer_user:123456@localhost/homer_db")
Para que queden (cambiar 1.2.3.4 con la dirección IP de su servidor):
listen=udp:1.2.3.4:9060
modparam("sqlops","sqlcon","cb=>mysql://homeruser:sesamo@127.0.0.1/homer_db")
modparam("sipcapture", "db_url", "mysql://homeruser:sesamo@127.0.0.1/homer_db")
Antes de:
loadmodule "pv.so"
añadir:
loadmodule "tm.so"
Se guardan los cambios y se inicia con la parte Web:
yum install httpd php php-cli php-pdo php-mysql php-gd -y
chkconfig httpd on
nano +338 /etc/httpd/conf/httpd.conf
Se cambia la línea:
AllowOverride None
Con:
AllowOverride All
se averigua que esté presente esta línea:
LoadModule rewrite_module modules/mod_rewrite.so
Se guardan los cambios y se continua con php:
nano +946 /etc/php.ini
Se cambia esta línea:
;date.timezone =
para que quede:
date.timezone = America/Bogota
Se descarga la parte web de Homer:
cd /usr/src
git clone https://code.google.com/p/homer/
cd homer
git checkout -b webhomer_3.5 origin/webhomer_3.5
mkdir /var/www/html/homer
cp -r webhomer/* /var/www/html/homer
chown -R apache:apache /var/www/html/homer
Se entra en la carpeta creada y se renombran los archivos de configuración:
cd /var/www/html/homer/
cp preferences_example.php preferences.php
cp configuration_example.php configuration.php
Se modifica el primero:
nano configuration.php
Se modifica el primer bloque:
define('HOST', "localhost");
define('PORT', 3306);
define('USER', "root");
define('PW', "root");
define('DB', "homer_users");
para que quede:
define('HOST', "127.0.0.1");
define('PORT', 3306);
define('USER', "homeruser");
define('PW', "sesamo");
define('DB', "homer_db");
Se modifica el segundo bloque:
define('HOMER_HOST', "localhost"); /* DEFAULT. Don't forget insert this host to your DB nodes table */
define('HOMER_PORT', 3306);
define('HOMER_USER', "homer_user");
define('HOMER_PW', "homer_password");
define('HOMER_DB', "homer_db");
define('HOMER_TABLE', "sip_capture");
Para que quede:
define('HOMER_HOST', "127.0.0.1");
define('HOMER_PORT', 3306);
define('HOMER_USER', "homeruser");
define('HOMER_PW', "sesamo");
define('HOMER_DB', "homer_db");
define('HOMER_TABLE', "sip_capture");
Se modifica el tercer bloque:
define('PCAPDIR',"/var/www/webhomer/tmp/");
define('WEBPCAPLOC',"/webhomer/tmp/");
define('APIURL',"http://localhost");
define('APILOC',"/webhomer/api/");
Para que quede:
define('PCAPDIR',"/var/www/html/homer/tmp/");
define('WEBPCAPLOC',"/homer/tmp/");
define('APIURL',"http://localhost");
define('APILOC',"/homer/api/");
Se pasa al segundo Archivo:
nano preferences.php
Se modifican estas líneas:
define('HOMER_TIMEZONE', "America/Detroit");
define('MODULES', 0);
define('ADMIN_DBSTAT', 0);
define('ADMIN_NETSTAT', 0)
define('ALARM_FROMEMAIL',"homer@example.com");
define('ALARM_TOEMAIL',"admin@example.com");
define('GEOIP_LINK', 0);
para que queden (personalizar los datos del correo electrónico):
define('HOMER_TIMEZONE', "America/Bogota");
define('MODULES', 1);
define('ADMIN_DBSTAT', 1);
define('ADMIN_NETSTAT', 1)
define('ALARM_FROMEMAIL',"homer@voztovoice.org");
define('ALARM_TOEMAIL',"fulano@gmail.com");
define('GEOIP_LINK', 1);
Se carga la tabla de los usuario en la base de datos de Homer:
mysql -u root -psesamo homer_db < /usr/src/homer/webhomer/sql/homer_users.sql
Se descarga el script en Perl que se encargará rotar la partición de la base de datos:
cd /usr/sbin
wget https://homer.googlecode.com/git-history/webhomer_3.5/scripts/partrotate...
nano partrotate_unixtimestamp.pl
Se modifican estas líneas:
$mysql_user = "mysql_login";
$mysql_password = "mysql_password";
$mysql_host = "localhost";
Para que queden:
$mysql_user = "homeruser";
$mysql_password = "sesamo";
$mysql_host = "127.0.0.1";
En este parametro:
$maxparts = 6
Se define el numero por cuantos días se quiere mantener los datos de la captura SIP en la base de datos. Se guardan los cambios y se inicia Kamailio y luego Apache:
service kamailio start
Si sale este error:
env: /etc/init.d/kamailio: Permission denied
chmod +x /etc/init.d/kamailio
y luego se inicia nuevamente:
service kamailio start
service httpd start
FREESWITCH
Para enviar los datos al nodo de captura, se modifica este archivo:
nano /usr/local/freeswitch/conf/autoload_configs/sofia.conf.xml
en Global Settings se añade la línea que sigue:
<param name="capture-server" value="udp:1.2.3.4:9060"/>
1.2.3.4 es la IP de su servidor de captura. Se continua con:
nano /usr/local/freeswitch/conf/sip_profiles/internal.xml
Se modifica esta línea:
<param name="sip-capture" value="no"/>
para que quede:
<param name="sip-capture" value="yes"/>
Se continua con el perfil external:
nano /usr/local/freeswitch/conf/sip_profiles/external.xml
<param name="sip-capture" value="no"/>
Se cambia:
<param name="sip-capture" value="yes"/>
Asterisk PBX
En Asterisk hay que instalar el agente de captura que se encargará de enviar los datos al nodo de captura:
yum install libpcap libpcap-devel
cd /usr/src
git clone http://code.google.com/p/captagent/
cd captagent/captagent/
./build.sh
./configure
make
make install
Se modifica el archivo de configuración de captagent:
mv /usr/local/etc/captagent/captagent.xml /usr/local/etc/captagent/captagent.xml.old
nano /usr/local/etc/captagent/captagent.xml
Se copian las líneas que siguen:
<configuration name="core_hep.conf" description="HEP Socket">
<settings>
<param name="version" value="3"/>
<param name="capture-host" value="capture.homercloud.org"/>
<param name="capture-port" value="9000"/>
<param name="capture-proto" value="udp"/>
<param name="capture-id" value="2001"/>
<param name="capture-password" value="myHep"/>
<param name="payload-compression" value="false" />
</settings>
</configuration>
<configuration name="core_hep.conf" description="HEP Socket">
<settings>
<param name="version" value="3"/>
<param name="capture-host" value="1.2.3.4"/>
<param name="capture-port" value="9060"/>
<param name="capture-proto" value="udp"/>
<param name="capture-id" value="PBX1"/>
<param name="capture-password" value="myHep"/>
<param name="payload-compression" value="false" />
</settings>
</configuration>
<param name="port" value="5060"/>
<param name="dev" value="eth0"/>
1.2.3.4 es la IP del nodo de captura. Se inicia Captagent:
/usr/local/bin/captagent -d 2>/dev/null
Se accede a la pagina de Homer:
usuario: test@test.com
contraseña: test123
En admin -> DB NODES se configura el nodo de captura. Luego falta solo esperar que lleguen los datos:
Adjunto | Tamaño |
---|---|
Alexandr Dubovikov - Homer SIP Capture 3.5.pdf | 19.74 MB |
Comentarios recientes