使用PHP前端和HTTPS(LAMP Stack)在Debian上从源代码安装Zabbix 1.8.19
我们将 从源代码安装Zabbix 1.8.19,并还原我们在Squeeze VM上创建的数据库备份。
安装必备软件
更新软件包列表:
# apt-get update
C编译器,make,libcurl和snmp库:
# apt-get install wget gcc make libcurl4-gnutls-dev libsnmp-dev libnet-snmp-perl
MySQL数据库及其库:
# apt-get install mysql-server libmysqld-dev libmysqlclient-dev
创建Zabbix MySQL用户并从备份还原Zabbix数据库
以root身份登录到MySQL服务器并创建一个新的zabbix数据库。
为zabbix创建一个新的MySQL用户,称为“ zbuser”,并授予zabbix数据库的所有特权。
# mysql -uroot -p mysql> CREATE DATABASE zabbix; mysql> GRANT ALL PRIVILEGES ON zabbix.* TO "zbuser"@"localhost" IDENTIFIED BY "zbpass"; mysql> FLUSH PRIVILEGES; mysql> SHOW grants FOR 'zbuser'@'localhost'; +------------------------------------------------------------------------------+ | Grants for Hyman@theitroad | +------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'zbuser'@'localhost' IDENTIFIED BY PASSWORD '*1[...]A' | | GRANT ALL PRIVILEGES ON `zabbix`.* TO 'zbuser'@'localhost' | +------------------------------------------------------------------------------+ 2 rows in set (0.03 sec) mysql> quit;
从备份文件还原数据库:
# mysql -uzbuser -p zabbix < zabbix_backup.sql
配置和编译源代码
下载源代码:
# cd ~ # wget http://netcologne.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/1.8.19/zabbix-1.8.19.tar.gz
提取存档文件:
# tar xvfz zabbix-1.8.19.tar.gz
进入解压缩目录并配置:
# cd zabbix-1.8.19 # ./configure --enable-server --enable-agent --with-mysql --with-net-snmp \ --with-libcurl --with-ldap --enable-ipv6
制作并安装所有内容:
# make install
创建和修改配置文件和目录
创建zabbix用户:
# useradd -d /var/run/zabbix -s /bin/false zabbix
创建一个文件夹来存储配置文件:
# mkdir /etc/zabbix
还创建一个文件夹来保存pid文件:
# mkdir /var/run/zabbix # chown zabbix:zabbix /var/run/zabbix
检查我们其中:
# pwd /root/zabbix-1.8.19
复制服务器和代理程序的默认配置模板:
# cp ./misc/conf/zabbix_agentd.conf /etc/zabbix/ # cp ./misc/conf/zabbix_server.conf /etc/zabbix/
删除世界权限,因为服务器配置文件将包含MySQL密码:
# chmod 0750 /etc/zabbix/zabbix_server.conf
创建目录以保留日志:
# mkdir /var/log/zabbix-agent /var/log/zabbix-server # chown zabbix:zabbix /var/log/zabbix-agent /var/log/zabbix-server
服务器配置文件应如下所示:
# cat /etc/zabbix/zabbix_server.conf ListenPort=10051 ListenIP=0.0.0.0 LogFile=/var/log/zabbix-server/zabbix_server.log DebugLevel=2 PidFile=/var/run/zabbix/zabbix_server.pid DBHost=localhost DBName=zabbix DBUser=zbuser DBPassword=zbpass DBPort=3306 HousekeepingFrequency=24 DisableHousekeeping=0 Timeout=3
代理程序配置文件应如下所示:
# cat /etc/zabbix/zabbix_agent.conf ListenPort=10050 ListenIP=0.0.0.0 PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix-agent/zabbix_agentd.log LogFileSize=0 Server=127.0.0.1,localhost
复制初始化脚本:
# cp ./misc/init.d/debian/zabbix-server /etc/init.d/ # cp ./misc/init.d/debian/zabbix-agent /etc/init.d/
更改服务器的默认PID文件。
打开“ /etc/init.d/zabbix-server”并进行如下更改:
#PID=/tmp/$NAME.pid PID=/var/run/zabbix/$NAME.pid DIR=/var/run/zabbix # add this to ensure the folder is created if [ ! -d "$DIR" ]; then mkdir /var/run/zabbix chown zabbix:zabbix /var/run/zabbix fi
现在,更改代理的默认PID文件。
打开“ /etc/init.d/zabbix-agent”并进行如下更改:
#PID=/tmp/$NAME.pid PID=/var/run/zabbix/$NAME.pid DIR=/var/run/zabbix # add this to ensure the folder is created if [ ! -d "$DIR" ]; then mkdir /var/run/zabbix chown zabbix:zabbix /var/run/zabbix fi
启动Zabbix服务器和代理
启动服务器守护程序:
# service zabbix-server start Starting Zabbix server daemon: zabbix_server
启动代理守护程序:
# service zabbix-agent start Starting Zabbix agent daemon: zabbix_agentd
检查两个守护程序是否都在运行:
# netstat -nltp | grep zabbix tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 31813/zabbix_agentd tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 31760/zabbix_server
安装Zabbix WEB界面
为此,我们需要具有php功能的网络服务器:
# apt-get install apache2 php5 libapache2-mod-php5 php5-mysql php5-gd openssl ssl-cert
摆脱恼人的“无法可靠地确定服务器的标准域名”警告:
# echo "ServerName localhost" >> /etc/apache2/apache2.conf
为Zabbix虚拟主机创建一个子目录:
# mkdir /var/www/zabbix
复制php前端文件:
# cd /root/zabbix-1.8.19/frontends/php # cp -a .//var/www/zabbix
更改权限:
# chown -R root:root /var/www/zabbix
生成并安装自签名SSL证书
我们希望通过安全的TLS/SSL连接推送所有内容。
# mkdir /etc/ssl/webserver && cd /etc/ssl/webserver
生成自签名证书:
# openssl req -new -x509 -days 1825 -sha256 -nodes -out ./server.crt \ -keyout ./server.key
使私钥只能由root用户读取:
# chmod 0600 ./server.key
配置Apache以使用证书
打开“/etc/apache2/sites-available/default-ssl”并更改以下行:
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
到以下内容:
SSLCertificateFile /etc/ssl/webserver/server.crt SSLCertificateKeyFile /etc/ssl/webserver/server.key
启用Apache TLS/SSL支持
当我们谈论SSL时,实际上是指TLS。
SSL是用于通过Internet加密数据的加密协议的较旧版本。
# a2enmod ssl # a2ensite default-ssl # service apache2 restart
启用Apache重写模块
我们将强制将所有到达标准HTTP端口80的请求转发到安全的HTTPS 443端口:
# a2enmod rewrite
打开:
# vim /etc/apache2/sites-available/default
并用红色添加以下行:
<VirtualHost *:80> ServerAdmin Hyman@theitroad RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [...]
重新启动Apache:
# service apache2 restart
一些信息披露相关的Apache调整
隐藏apache版本和签名,使其不会在线显示。
打开“ /etc/apache2/conf.d/security”并更改以下参数:
ServerSignature off ServerTokens prod
重新加载Apache以获取配置更改:
# service apache2 reload
配置PHP设置
为临时HTTP上传文件以及php会话创建非世界可写目录:
# mkdir -p -m 0750 /var/www/php_dir/temp # mkdir -p -m 0750 /var/www/php_dir/session # chown -R www-data:www-data /var/www/php_dir
打开“ /etc/php5/apache2/php.ini”,然后根据以下内容修改以下设置:
open_basedir = Off expose_php = Off max_execution_time = 600 max_input_time = 600 memory_limit = 256M display_errors = Off display_startup_errors = Off register_globals = Off post_max_size = 32M magic_quotes_gpc = Off upload_tmp_dir = "/var/www/php_dir/temp" upload_max_filesize = 16M max_file_uploads = 5 allow_url_fopen = Off allow_url_include = Off date.timezone = "Europe/London" session.save_path = "/var/www/php_dir/session"
# service apache2 reload
现在,我们需要将Web浏览器指向https://localhost/zabbix并完成安装。
列表应如下所示:
我们将需要将“ zabbix.conf.php”文件复制到“/var/www/zabbix/conf /”目录,因为网络服务器对该文件没有写权限。
安装完成后,我们可以使用现有的Web帐户登录。
配置iptables
# iptables -A INPUT -p tcp -m multiport --dport 80,443,10051 -j ACCEPT