如何在CentOS 7上使用Zabbix安全监控远程服务器

・20 分钟阅读

使用不同的系统?

Zabbix是一个免费的开源企业就绪软件,用于监控系统和网络组件的可用性,Zabbix可以同时监控数千台服务器,虚拟机或网络组件,Zabbix可以监视与系统有关的几乎所有内容,比如,CPU,内存,磁盘空间和IO,进程,网络,数据库,虚拟机和Web服务,如果IPMI访问is Zabbix,那么它还可以监视诸如温度,电压等硬件。

前提条件

对于本教程,我们将使用192.0.2.1作为Zabbix服务器的公共IP地址和192.0.2.2作为一个Zabbix主机的公共IP地址,我们将远程监控这个地址,请确保将所有实例的IP地址替换为你实际的公共IP地址。

使用向导更新基本系统如何更新Centos 7 ,系统更新后,继续安装依赖项。

安装Apache和PHP

在安装Zabbix站点时,它会自动创建Apache的配置。

安装Apache来服务Zabbix前端或web UI 。


sudo yum -y install httpd

启动Apache并使其在启动时自动启动。


sudo systemctl start httpd
sudo systemctl enable httpd

添加并启用Remi存储库,缺省YUM存储库包含较老版本的PHP 。


sudo rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum -y install yum-utils
sudo yum-config-manager --enable remi-php71

安装PHP的最新版本以及Zabbix所需的模块。


sudo yum -y install php php-cli php-gd php-bcmath php-ctype php-xml php-xmlreader php-xmlwriter php-session php-sockets php-mbstring php-gettext php-ldap php-pgsql php-pear-Net-Socket

安装和配置PostgreSQL

PostgreSQL是一个对象关系数据库系统,你将需要在你的系统中添加PostgreSQL存储库,因为缺省的YUM存储库包含一个较老版本的PostgreSQL 。


sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

安装PostgreSQL数据库服务器。


sudo yum -y install postgresql96-server postgresql96-contrib

初始化数据库。


sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb

initdb创建一个新的数据库群集,它是一组由单一服务器管理的数据库。

编辑pg_hba.conf以启用基于MD5的身份验证。


sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf

查找以下行并将peer更改为trustidnetmd5


# TYPE DATABASE USER ADDRESS METHOD

#"local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 idnet
# IPv6 local connections:
host all all ::1/128 idnet

一旦更新,配置应该如下所示。


# TYPE DATABASE USER ADDRESS METHOD

#"local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5

启动PostgreSQL服务器,并且使它在启动时自动启动。


sudo systemctl start postgresql-9.6
sudo systemctl enable postgresql-9.6

更改默认PostgreSQL用户的password

 
sudo passwd postgres

 

作为PostgreSQL用户登录。


sudo su - postgres

为Zabbix创建一个新的PostgreSQL用户。

 
createuser zabbix

 

切换到PostgreSQL shell 。

 
psql

 

为Zabbix数据库设置新创建的数据库用户的密码。


ALTER USER zabbix WITH ENCRYPTED password 'StrongPassword';

为Zabbix创建一个新数据库。


CREATE DATABASE zabbix OWNER zabbix;

psql shell退出。

 
q

 

从当前postgres用户切换到sudo用户。

 
exit

 

安装Zabbix

Zabbix为CentOS提供二进制文件,可以直接从Zabbix库安装,将Zabbix库添加到系统中。


sudo rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm

安装Zabbix serverZabbix web


sudo yum -y install zabbix-server-pgsql zabbix-web-pgsql 

导入PostgreSQL数据库。


zcat /usr/share/doc/zabbix-server-pgsql-3.4.*/create.sql.gz | psql -U zabbix zabbix

你应该在输出的末尾看到类似于下面的内容。


...
INSERT 0 1
INSERT 0 1
COMMIT

打开Zabbix配置文件以便更新数据库细节。


sudo nano /etc/zabbix/zabbix_server.conf

查找以下行,并且根据数据库配置更新值,你需要取消对DBHostDBPort行的注释。


DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=StrongPassword
DBPort=5432

Zabbix自动为Apache安装虚拟主机文件,我们将需要配置虚拟主机来更新时区和PHP版本。


sudo nano /etc/httpd/conf.d/zabbix.conf

查找下列行。


<IfModule mod_php5.c>
...
#php_value date.timezone Europe/Riga

因为我们使用的是PHP版7,所以你还需要更新mod_php版本,根据你的时区更新行,如下所示。


<IfModule mod_php7.c>
...
php_value date.timezone Asia/Kolkata

现在重启Apache以在配置中应用这些更改。


sudo systemctl restart httpd

启动Zabbix服务器,并且使它能够在启动时自动启动。


sudo systemctl start zabbix-server
sudo systemctl enable zabbix-server

你现在应该正在运行Zabbix服务器,你可以通过运行以下命令来检查进程的状态。


sudo systemctl status zabbix-server

修改防火墙以允许标准HTTPHTTPS端口,此外,还需要通过防火墙允许端口10051,Zabbix将使用它来从远程机器上运行的Zabbix代理获取事件。


sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --zone=public --permanent --add-service=https
sudo firewall-cmd --zone=public --permanent --add-port=10051/tcp
sudo firewall-cmd --reload

要访问管理面板,你可以使用你喜欢的浏览器打开http://192.0.2.1/zabbix ,你将看到欢迎消息,按照安装程序页面上的说明安装软件,安装软件后,使用用户名Admin和密码zabbix登录,Zabbix现在已经安装,并且准备从Zabbix代理收集数据。

在服务器上设置Zabbix代理

若要监视安装Zabbix的服务器,可以在服务器上设置代理,代理将收集来自Linux服务器的事件数据,将它发送到Zabbix服务器,默认情况下,端口10050用于将事件和数据发送到服务器。

安装Zabbix代理。


sudo yum -y install zabbix-agent

启动代理并使其在启动时自动启动。


sudo systemctl start zabbix-agent
sudo systemctl enable zabbix-agent

Zabbix代理和Zabbix服务器之间的通信是在本地完成的,因此,不需要设置任何加密。

在Zabbix服务器可以接收任何数据之前,你需要启用host ,登录到Zabbix服务器的web仪表板,然后转到Configuration >> Host ,你将看到Zabbix服务器主机的一个被禁用的条目,选择条目,并且单击"启用"按钮以启用对Zabbix服务器应用程序和安装Zabbix服务器的基础CentOS系统的监视。

在远程Linux机器上设置代理

远程Zabbix代理可以将事件发送到Zabbix服务器的方法有三种,第一种方法是使用未加密的连接,第二种方法使用安全的预共享密钥,第三种也是最安全的方法是使用RSA证书加密传输。

在我们在远程机器上安装和配置Zabbix代理之前,我们需要在Zabbix服务器系统上生成证书,我们将使用自签署证书。

在Zabbix服务器上运行以下命令作为sudo用户。

为存储Zabbix密钥创建一个新目录,并为它生成私有密钥。


mkdir ~/zabbix-keys && cd ~/zabbix-keys
openssl genrsa -aes256 -out zabbix-ca.key 4096

它会要求你输入密码来保护私钥,生成私钥后,继续生成证书的证书。


openssl req -x509 -new -key zabbix-ca.key -sha256 -days 3560 -out zabbix-ca.crt

提供私钥的密码短语,它会询问你关于你所在国家,州,组织的一些细节,提供相应的细节。


[user@vultr zabbix-keys]$ openssl req -x509 -new -key zabbix-ca.key -sha256 -days 3560 -out zabbix-ca.crt
Enter passphrase for `zabbix-ca.key`:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:My State
Locality Name (eg, city) [Default City]:My City
Organization Name (eg, company) [Default Company Ltd]:My Organization
Organizational Unit Name (eg, section) []:My Unit
Common Name (eg, your name or your server's hostname) []:Zabbix CA
Email Address []:mail@example.com

我们已经成功地生成了CA证书,生成私钥和CSR for Zabbix服务器。


openssl genrsa -out zabbix-server.key 2048
openssl req -new -key zabbix-server.key -out zabbix-server.csr

请不要提供在运行上述命令时加密私钥的密码短语,使用CSR为Zabbix服务器生成证书。


openssl x509 -req -in zabbix-server.csr -CA zabbix-ca.crt -CAkey zabbix-ca.key -CAcreateserial -out zabbix-server.crt -days 1825 -sha256

同样,为Zabbix主机或代理生成私有密钥和CSR 。


openssl genrsa -out zabbix-host1.key 2048
openssl req -new -key zabbix-host1.key -out zabbix-host1.csr

现在生成证书。


openssl x509 -req -in zabbix-host1.csr -CA zabbix-ca.crt -CAkey zabbix-ca.key -CAcreateserial -out zabbix-host1.crt -days 1460 -sha256

将证书复制到Zabbix配置目录中。


sudo mkdir /etc/zabbix/keys
sudo cp zabbix-ca.* zabbix-server.* /etc/zabbix/keys

将证书的所有权提供给zabbix用户。


sudo chown -R zabbix: /etc/zabbix/keys

打开Zabbix服务器的配置文件以便更新证书的路径。


sudo nano /etc/zabbix/zabbix_server.conf

在配置文件中找到这些行,并且按如下所示。


TLSCAFile=/etc/zabbix/keys/zabbix-ca.crt
TLSCertFile=/etc/zabbix/keys/zabbix-server.crt
TLSKeyFile=/etc/zabbix/keys/zabbix-server.key

保存文件并退出编辑器,重新启动Zabbix服务器以便让配置中的更改生效。


sudo systemctl restart zabbix-server

使用scp命令将证书复制到要监视的主机。


cd ~/zabbix-keys
scp zabbix-ca.crt zabbix-host1.* user@192.0.2.2:~

确保将192.0.2.2替换为要安装Zabbix代理的远程主机的实际IP地址。

安装Zabbix主机

既然已经将证书复制到主机系统,我们就可以安装Zabbix代理了。

从现在开始,所有命令都需要在你要监视的主机上执行。

将Zabbix库添加到系统中。


sudo rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm

将Zabbix代理安装到系统中。


sudo yum -y install zabbix-agent

将密钥和证书移动到Zabbix配置目录。


sudo mkdir /etc/zabbix/keys
sudo mv ~/zabbix-ca.crt ~/zabbix-host1.* /etc/zabbix/keys/

向Zabbix用户提供证书的所有权。


sudo chown -R zabbix: /etc/zabbix/keys

打开Zabbix代理的配置文件以便更新服务器IP地址和密钥和证书的路径。


sudo nano /etc/zabbix/zabbix_agentd.conf

查找下面的行并进行必要的更改,使它看起来像下面所示。


Server=192.0.2.1 # Replace with actual Zabbix server IP
ServerActive=192.0.2.1 # Replace with actual Zabbix server IP
Hostname=Zabbix host1 # Provide a appropriate name or hostname

主机名必须是唯一的字符串,没有被其他主机指定,请记下主机名,因为我们需要在Zabbix服务器中设置确切的主机名。

进一步,更新这些参数的值


TLSConnect=cert
TLSAccept=cert
TLSCAFile=/etc/zabbix/keys/zabbix-ca.crt
TLSCertFile=/etc/zabbix/keys/zabbix-host1.crt
TLSKeyFile=/etc/zabbix/keys/zabbix-host1.key

现在,重新启动Zabbix代理,并且使它能够在启动时自动启动。


sudo systemctl restart zabbix-agent
sudo systemctl enable zabbix-agent

你已成功地在主机系统上配置Zabbix代理,在https://192.0.2.1/zabbix上浏览Zabbix管理仪表板以添加新配置的主机。

转到Configuration >> Hosts,然后单击右上角的Create Host按钮。

Create Host接口上,提供主机名,它必须与系统代理配置文件主机Zabbix中的主机名配置完全类似,

选择要在其中添加系统的组,由于我们运行Zabbix代理来监视基本的Linux服务器,所以,我们可以选择Linux服务器组,如果需要,还可以创建新的组。

提供运行Zabbix代理的主机的IP地址,

现在,进入新主机接口的Template选项卡,并根据应用程序搜索模板,在我们的例子中,我们需要找到Template OS Linux ,单击Add链接将模板分配给主机。

最后,转到Encryption选项卡,选择主机连接和主机连接的Certificate ,这样,双方的通信将使用RSA证书进行加密,IssuerSubject字段是可选的。

完成后,可以单击Add按钮将新主机添加到Zabbix服务器,几分钟后,ZBX的可用性将变成绿色,这表示主机可以使用Zabbix代理,并且主动将事件从主机发送到Zabbix服务器。

如果ZBX可用性变为红色颜色而不是绿色,就表示存在一些错误,主机无法将数据发送到服务器,在这种情况下,查找日志文件中的错误,并且相应地排除错误,Zabbix服务器日志和Zabbix代理日志的路径是/var/log/zabbix/zabbix_server.log/var/log/zabbix/zabbix_agentd.log

你现在可以通过转到monitoring选项卡来监视主机,你可以查看问题,接收的事件,活动图表以及有关监视页面的更多信息。

结束语

恭喜,你已经成功地部署了Zabbix服务器实例,并且在远程主机上启用。

你可以使用Zabbix实例监视你的小型或中型公司的整个基础设施。

Anne655 profile image