0x01 前言
无论在家还是在公司,IP地址都非常重要,随着设备或虚拟机的增多会导致IP地址也随之增长。随着IP地址使用量的增长,会对管理人员造成很大的压力。一方面来自不清楚哪些IP地址被占用,另一方面则来自hostname、MAC地址与IP的对应关系的管理。
因为我家里的虚拟机较多,也想对DHCP发放出去的IP地址进行管理,在经过一番查找后,找到了phpipam这款开源工具。
0x02 安装
phpipam是一款PHP应用,可以自动发现在线用户、存活检查等功能的IP管理软件,以下是官方网站:
首先需要准备LNMP环境以便运行phpipam,下面是我的nignx配置:
[root@web ~]# cat /usr/local/nginx/conf.d/phpipam.t.com.ngx.conf server { listen 80; server_name phpipam.t.com; root /usr/local/services_data/html/phpipam.t.com/public_html/; access_log /usr/local/services_data/html/phpipam.t.com/logs/access.log; location / { index index.php index.html; proxy_pass http://127.0.0.1:8080; } }
以下是PHP-FPM配置:
[root@web ~]# cat /usr/local/php7/etc/php-fpm.d/phpipam.t.com.conf [phpipamtcom] ;useradd -M -s /sbin/nologin -n phpipamtcom listen = 127.0.0.1:9003 user = phpipamtcom group = daemon pm = dynamic pm.max_children = 5 pm.start_servers = 1 pm.min_spare_servers = 1 pm.max_spare_servers = 2 php_admin_flag[log_errors] = on php_admin_value[error_log] = /usr/local/services_data/html/phpipam.t.com/logs/fpm-php.log php_flag[display_errors] = off php_admin_value[memory_limit] = 128M pm.max_requests = 3000 request_terminate_timeout = 300
以下是apache2的配置文件:
[root@web ~]# cat /etc/httpd/conf.d/phpipam.t.com.apa.conf <VirtualHost 127.0.0.1:8080> DocumentRoot /usr/local/services_data/html/phpipam.t.com/public_html/ ServerName phpipam.t.com ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9003/usr/local/services_data/html/phpipam.t.com/public_html/$1 ErrorLog /usr/local/services_data/html/phpipam.t.com/logs/apa.error.log </VirtualHost>
还需要准备mysql,推荐使用mariadb替换mysql 。环境确认准备完成后即可通过以下地址获取最新版本的phpipam进行安装:
根据这页面上的说明,我们通过git命令即可获取所有文件:
#新建临时文件夹 [root@web ~]# mkdir -p /root/codex/ #进入文件夹 [root@web ~]# cd /root/codex/ #克隆文件 [root@web codex]# git clone https://github.com/phpipam/phpipam.git #进入源码文件夹 [root@web codex]# cd /root/codex/phpipam/ #检出版本1.2 [root@web phpipam]# git checkout 1.2 #安装submodule [root@web phpipam]# git submodule update --init --recursive #复制文件到指定位置 [root@web phpipam]# cp -r /root/codex/phpipam/ /usr/local/services_data/html/phpipam.t.com/public_html #修正权限 [root@web phpipam]# chown -R phpipamtcom:daemon /usr/local/services_data/html/phpipam.t.com/
然后在数据库中新建相应的用户与数据库,在这里我使用用户名、密码和数据名为phpipam的数据库。然后通过以下命令将phpipam的数据库导入:
[root@web phpipam]# mysql -u phpipam -p phpipam < /usr/local/services_data/html/phpipam.t.com/public_html/db/SCHEMA.sql
0x03 配置文件
我们还需要修改配置文件,首先将配置文件模版重命名:
#进入站点根目录 [root@web ~]# cd /usr/local/services_data/html/phpipam.t.com/public_html/ #复制并重命名配置文件 [root@web public_html]# mv config.dist.php config.php #修改配置文件 [root@web public_html]# vim config.php
将以下数据库内容按实际情况修改:
$db['host'] = "sql.t.com"; $db['user'] = "phpipam"; $db['pass'] = "phpipam"; $db['name'] = "phpipam"; $db['port'] = 3306;
如果你想使用数字证书加密与数据库的连接,请跳过此步,否则请将以下内容注释掉:
#$db['ssl'] = false; # true/false, enable or disable SSL as a whole #$db['ssl_key'] = "/path/to/cert.key"; # path to an SSL key file. Only makes sense combined with ssl_cert #$db['ssl_cert'] = "/path/to/cert.crt"; # path to an SSL certificate file. Only makes sense combined with ssl_key #$db['ssl_ca'] = "/path/to/ca.crt"; # path to a file containing SSL CA certs #$db['ssl_capath'] = "/path/to/ca_certs"; # path to a directory containing CA certs #$db['ssl_cipher'] = "DHE-RSA-AES256-SHA:AES128-SHA"; # one or more SSL Ciphers
0x04 运行
一切就绪后使用浏览器打开:http://phpipam.t.com/ 即可看到登陆页面,使用默认的账号:admin和密码:ipamadmin进行登陆,第一次登陆会要求修改密码。
0x05 DNS
我家里配置了DNS服务器,并且DNS服务中启用了PTR功能,所以将phpipam的DNS服务器改为我的DNS服务器即可实现hostname自动发现功能,通过以下路径打开DNS服务器配置:
然后请根据实际情况填写即可:
0x06 网段
请依照图中的路径进入网段配置:
然后请根据实际情况填写:
一切顺利的话,在用户页面中即可看到相应的网段:
点击配置好的网段,即可查看该网段的详细信息:
上图蓝色长框中的工具可以实现基本的操作,诸如发现在线用户、检查用户是否在线、获取用户的hostname于修改配置等。
0x07 自动任务
我们想实现全自动化功能,可以自动发现在线用户并定时自动复检。为此我们还需要配置一个agent来完成这样的工作。
首先需要通过git下载相应的文件:
#进入文件夹 [root@web ~]# cd /usr/local/services_data/html/phpipam.t.com/ #克隆文件 [root@web phpipam.t.com]# git clone https://github.com/phpipam/phpipam-agent.git #复制并重命名配置文件 [root@web phpipam.t.com]# cp phpipam-agent/config.dist.php phpipam-agent/config.php
再继续下一步之前需要到控制页面中取得一个key,首先进入配置页面并点击添加agent:
请填写agent的名称于描述并记下agent code:
记下code后打开配置文件:
#打开配置文件 [root@web phpipam.t.com]# vim phpipam-agent/config.php #将以下值替换为刚才复制的code $config['key'] = "替换为code"; #修正以下路径 $config['pingpath'] = "/usr/sbin/fping"; #修正数据库配置信息 $config['db']['host'] = "sql.t.com"; $config['db']['user'] = "phpipam"; $config['db']['pass'] = "phpipam"; $config['db']['name'] = "phpipam"; $config['db']['port'] = 3306; #如果你的数据库不使用证书加密连接,请注释以下内容 #$config['db']['ssl'] = false; // true/false, enable or disable SSL as a whole #$config['db']['ssl_key'] = '/path/to/cert.key'; // path to an SSL key file. Only makes sense combined with ssl_cert #$config['db']['ssl_cert'] = '/path/to/cert.crt'; // path to an SSL certificate file. Only makes sense combined with ssl_key #$config['db']['ssl_ca'] = '/path/to/ca.crt'; // path to a file containing SSL CA certs #$config['db']['ssl_capath'] = '/path/to/ca_certs'; // path to a directory containing CA certs #$config['db']['ssl_cipher'] = '/DHE-RSA-AES256-SHA:AES128-SHA'; // one or more SSL Ciphers
完成配置文件的修改后,请检查你的系统中有没有fping这个软件:
[root@web phpipam.t.com]# fping -v fping: Version 3.10 fping: comments to [email protected]
如果没有,请通过以下命令安装:
[root@web phpipam.t.com]# yum install fping -y
最后请通过以下命令检查配置agent时候能正常运行:
#发现在线IP [root@web ~]# /usr/local/php7/bin/php /usr/local/services_data/html/phpipam.t.com/phpipam-agent/index.php discover #复检已添加的IP [root@web ~]# /usr/local/php7/bin/php /usr/local/services_data/html/phpipam.t.com/phpipam-agent/index.php update
运行update后可以回到控制面板中检查相关的状态:
请点击箭头所指的符号修改Scan agent为刚配置的agent。
0x08 定时任务
这个agent并不会自动运行,所以我们还需要借助cron job来定时运行:
#修改文件 [root@web ~]# vim /etc/crontab #填入任务,每5分钟运行一次 */5 * * * * root /usr/local/php7/bin/php /usr/local/services_data/html/phpipam.t.com/phpipam-agent/index.php update */5 * * * * root /usr/local/php7/bin/php /usr/local/services_data/html/phpipam.t.com/phpipam-agent/index.php discover
0x09 结语
这个软件的功能挺强大的,我也是刚接触。我一直使用excel来管理相关内容,但对于DHCP服务就显现了他的短板。我会继续挖掘phpipam的功能。