使用PHP前端和HTTPS(LAMP Stack)在Debian上从源代码安装Zabbix 1.8.19

时间:2020-03-21 11:47:34  来源:igfitidea点击:

我们将 从源代码安装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