본문으로 바로가기

NMS : 네트워크 관리 시스템 (Zabbix)

category 네트워크 보안 2024. 9. 11. 11:42

 

NMS (Network Management System

- 네트워크 관리 시스템)

- zabbix

 

출처 Zabbix.com

 


Rocky Linux - Zabbix Server

@ Mariadb, php, httpd 설치
[root@localhost ~]# dnf install -y httpd php php-mysqli mariadb-server
[root@localhost ~]# dnf install -y fpm-fcgi
[root@localhost ~]# dnf install -y php-fpm
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
rocky-addons.repo  rocky-devel.repo  rocky-extras.repo  rocky.repo
[root@localhost yum.repos.d]# cat rocky.repo
[baseos]
name=Rocky Linux $releasever - BaseOS
mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=BaseOS-$releasever$rltype
#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
countme=1
metadata_expire=6h
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9
  • yum : dnf 전에 사용하던 패키지 관리 도구
  • cat으로 보면 저장 경로가 쭉 보여진다
  • dnf를 사용하면 이 저장경로를 사용해서 다운을 받는 것이다.

 


Zabbix Server

 

  • Zabbix는 다운경로가 없기때문에 직접 경로를 만들어야함
@ zabbix 다운 경로 지정
[root@localhost yum.repos.d]# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/alma/9/x86_64/zabbix-release-7.0-2.el9.noarch.rpm
* el9 ( 1 아니고 l )
* 404 error : 경로 입력 오류

@ 다운로드 경로 확인
[root@localhost yum.repos.d]# cat zabbix.repo
@ 필요한 파일 설치
[root@localhost yum.repos.d]# dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent

@ 파일 설치된 것 확인
[root@localhost yum.repos.d]# rpm -qa | grep zabbix
zabbix-release-7.0-2.el9.noarch
zabbix-web-7.0.3-release1.el9.noarch
zabbix-web-mysql-7.0.3-release1.el9.noarch
zabbix-web-deps-7.0.3-release1.el9.noarch
zabbix-apache-conf-7.0.3-release1.el9.noarch
zabbix-server-mysql-7.0.3-release1.el9.x86_64
zabbix-sql-scripts-7.0.3-release1.el9.noarch
zabbix-selinux-policy-7.0.3-release1.el9.x86_64
zabbix-agent-7.0.3-release1.el9.x86_64
@ 방화벽 허용
[root@localhost yum.repos.d]# firewall-cmd --permanent --add-service=http

@ 방화벽 재부팅
[root@localhost yum.repos.d]# firewall-cmd --reload

@ 웹, 마리아db 구동
[root@localhost yum.repos.d]# systemctl start httpd
[root@localhost yum.repos.d]# systemctl start mariadb

@ 재부팅 시에도 실행되게
[root@localhost yum.repos.d]# systemctl enable httpd
[root@localhost yum.repos.d]# systemctl enable mariadb

 

Maria db 설정

@ 보안 설치
[root@localhost yum.repos.d]# mysql_secure_installation

@ mysql 진입
[root@localhost yum.repos.d]# mysql -u root -p

@ database 생성
MariaDB [(none)]> create database zabbix_db character set utf8 collate utf8_bin;
--> utf8(한글) 문자set를 지원해라

@ 사용자 생성
MariaDB [(none)]> create user 'zabbix_user'@'localhost' identified by '1234';

@ 권한 주기
MariaDB [(none)]> grant all privileges on zabbix_db.* to 'zabbix_user'@'localhost' with grant option;
--> 모든 테이블(*)에 대해 모든 권한(all)을 주겠다.

@ 앞서 설정한 권한을 적용하겠다.
MariaDB [(none)]> set global log_bin_trust_function_creators = 1;
MariaDB [(none)]> flush privileges;
@ zabbix mysql server 파일로 이동
[root@localhost yum.repos.d]# cd /usr/share
[root@localhost share]# ls
aclocal              dict        gettext       info           mime-info  publicsuffix    terminfo
appdata              doc         gettext-0.21  kdump          misc       python3-wheels  testpage
applications         empty       glib-2.0      libgpg-error   nginx      redhat-release  tests
audit                empty.sshd  gnome         libreport      omf        rocky-release   themes
augeas               factory     gnupg         licenses       os-prober  selinux         wayland-sessions
authselect           file        groff         locale         p11-kit    sgml            X11
awk                  fontconfig  grub          lua            pam.d      snmp            xfsprogs
backgrounds          fonts       help          magic          perl5      sounds          xml
bash-completion      fpm         httpd         makedumpfile   php        sssd            xsessions
cracklib             games       hwdata        man            pixmaps    sssd-kcm        zabbix
crypto-policies      gawk        i18n          mariadb        pkgconfig  systemd         zabbix-sql-scripts
dbus-1               gcc-11      icons         metainfo       pki        systemtap       zoneinfo
desktop-directories  gdb         idl           microcode_ctl  polkit-1   tabset          zsh
[root@localhost share]# cd zabbix-sql-scripts/
[root@localhost zabbix-sql-scripts]# ls
mysql  postgresql  sqlite3
[root@localhost zabbix-sql-scripts]# cd mysql
[root@localhost mysql]# ls
option-patches  proxy.sql  server.sql.gz
@ zabbix db에 테이블 만들기
[root@localhost mysql]# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix_user -p'1234' zabbix_db
--> 한글문자 set를 준다

@ mariadb 진입
[root@localhost mysql]# mysql -u root -p
MariaDB [(none)]> use zabbix_db

@ table 들어온 것 확인
MariaDB [zabbix_db]> show tables;
@ user 테이블 보기
MariaDB [zabbix_db]> desc users;
+-----------------+---------------------+------+-----+---------+-------+
| Field           | Type                | Null | Key | Default | Extra |
+-----------------+---------------------+------+-----+---------+-------+
| userid          | bigint(20) unsigned | NO   | PRI | NULL    |       |
| username        | varchar(100)        | NO   | UNI |         |       |
| name            | varchar(100)        | NO   |     |         |       |
| surname         | varchar(100)        | NO   |     |         |       |
| passwd          | varchar(60)         | NO   |     |         |       |
| url             | varchar(2048)       | NO   |     |         |       |
| autologin       | int(11)             | NO   |     | 0       |       |
| autologout      | varchar(32)         | NO   |     | 15m     |       |
| lang            | varchar(7)          | NO   |     | default |       |
| refresh         | varchar(32)         | NO   |     | 30s     |       |
| theme           | varchar(128)        | NO   |     | default |       |
| attempt_failed  | int(11)             | NO   |     | 0       |       |
| attempt_ip      | varchar(39)         | NO   |     |         |       |
| attempt_clock   | int(11)             | NO   |     | 0       |       |
| rows_per_page   | int(11)             | NO   |     | 50      |       |
| timezone        | varchar(50)         | NO   |     | default |       |
| roleid          | bigint(20) unsigned | YES  | MUL | NULL    |       |
| userdirectoryid | bigint(20) unsigned | YES  | MUL | NULL    |       |
| ts_provisioned  | int(11)             | NO   |     | 0       |       |
+-----------------+---------------------+------+-----+---------+-------+

MariaDB [zabbix_db]> select * from users;
--> users 테이블 내 데이터 보기

 

환경설정 - 서버 / 클라이언트 / 웹파일

[root@localhost ~]# cd /etc/zabbix
[root@localhost zabbix]# ls
web  zabbix_agentd.conf  zabbix_agentd.d  zabbix_server.conf
     --> 클라이언트                        --> 서버
@ Zabbix 서버파일 기본 환경설정
[root@localhost ~]# cd /etc/zabbix
[root@localhost zabbix]# vi zabbix_server.conf

    107 DBName=zabbix_db
    --> db 이름 수정하기
    123 DBUser=zabbix_user
    --> user이름 수정하기
    131 DBPassword=1234
	--> 주석 해제하고 비밀번호 수정하기
    
    
@ Zabbix 클라이언트 파일 기본 환경설정
[root@localhost zabbix]# vi zabbix_agentd.conf

    117 Server=127.0.0.1
    171 ServerActive=127.0.0.1
	--> 서버 아이피 확인
    ...
    182 Hostname=Zabbix server
	--> 이름 확인
@ 수정 후 부팅, 재부팅
[root@localhost zabbix]# systemctl start zabbix-server zabbix-agent
[root@localhost zabbix]# systemctl enable zabbix-server zabbix-agent
[root@localhost zabbix]# systemctl restart httpd php-fpm
@ 웹에 사용되기 위한 php 환경설정 파일
[root@localhost zabbix]# vi /etc/php-fpm.d/www.conf

@ 맨 마지막줄에 적어주기 (440번)
php_value[max_execution_time] = 300
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000
php_value[always_populate_raw_post_data] = -1
php_value[date.timezone] = Asia/Seoul
--> php로 만들어진 웹페이지에 줄 제한사항을 적용하는 것이다.

[root@localhost zabbix]# systemctl restart zabbix-agent httpd php-fpm
  • php, zabbix의 환경변수 값이 다를 수 있기때문에 php의 변수값을 zabbix에도 사용할 수 있게 설정
@ Zabbix 웹 경로 생성
[root@localhost zabbix]# mkdir /var/www/html/zabbix

@ Zabbix 웹 경로에 모든 파일 복사
[root@localhost zabbix]# cp -R /usr/share/zabbix/* /var/www/html/zabbix

==> 이후 웹에서 http://192.168.2.116/zabbix 로 접속
(Zabbix를 만든 서버의 ip)

 


Zabbix 웹 접속

모두 OK여야 정상적인 것
DB 이름, User, Pw 적어주기
Server 이름 생성, 시간과 테마 설정

  • 웹에서 설정한 내용이 서버의  etc/zabbix/web/zabbix.conf.php 에 들어간다.

pw : zabbix

 

  • System information : 활성화된 로컬 수 등 

 

  • agent-d들이 각 클라이언트의 정보를 수집해서 서버에 넘긴다.
  • 이때 무작위로 수집하기 위한 프로토콜이 SNMP이다.
  • * SNMP : simple network management protocol
  • Availability : ZBX
  • 자체적으로 개발한 snmp 프로토콜의 이름
  • 서버 이름 클릭 -> 여러 설정들을 볼 수 있음
  • Alerts - Actions : 특정 상황에 대해 알림을 받는 것

 

내 윈도우 - 클라이언트

 

Zabbix 설치

https://www.zabbix.com

오른쪽 위 Download 

  1. 압축 풀기
  2. 이름 Zabbix로 바꾸고 C\ 아래로 넣기
  3. conf 폴더에 있는 zabbix_agentd를 bin 폴더 안에 복사하기
@ zabbix_agentd.conf 를 메모장으로 실행해서 아래 수정

Server=192.168.2.116 (NMS 서버 ip)
ServerActive=192.168.2.116 (NMS 서버 ip)
..
Hostname=192.168.1.17 (내윈도우ip)

@ 관리자 권한으로 cmd 실행
C:\Users\Administrator> cd C:\zabbix\bin
C:\zabbix\bin> zabbix_agentd.exe -c zabbix_agentd.conf -i
--> 이 경로의 파일을 실행하라

혹시 안되면 agentd, get, sender 전부 직접 실행

윈도우 service 들어가서 Zabbix Agent 시작 or 다시시작

window defender --> 새 규칙 -> 포트 - tcp - 특정 로컬 포트 10050 - 연결허용 - 전체체크 - 이름

  • monitoring - host - (오른쪽 위) create host
  • Interfaces - add - 클라이언트ip

 

Rocky Linux - Zabbix 클라이언트 서버

@ zabbix 설치
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
rocky-addons.repo  rocky-devel.repo  rocky-extras.repo  rocky.repo
[root@localhost yum.repos.d]# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/alma/9/x86_64/zabbix-release-7.0-2.el9.noarch.rpm
[root@localhost zabbix]# dnf install -y zabbix-agent
@ 환경설정 파일 수정
[root@localhost yum.repos.d]# cd /etc/zabbix
[root@localhost zabbix]# ls
zabbix_agentd.conf  zabbix_agentd.d

[root@localhost zabbix]# vi zabbix_agentd.conf

    117 Server=192.168.2.116
    171 ServerActive=192.168.2.116
	--> NMS 서버 IP로 수정하기
    
	182 Hostname=192.168.16.117 
	--> 내 ip로 수정하기
@ zabbix 구동
[root@localhost zabbix]# systemctl start zabbix-agent

@ 방화벽 열기
[root@localhost zabbix]# firewall-cmd --permanent --add-port=10050/tcp
[root@localhost zabbix]# firewall-cmd --reload

 

  • host에 클라이언트의 ip 넣기

window클라이언트, linux 클라이언트 모두 정상 작동

'네트워크 보안' 카테고리의 다른 글

Suricata  (2) 2024.09.17
HIDS : Host-Based IDS (OSSEC)  (3) 2024.09.11
WireShark - 주요 설정들 / GNS - wireshark, debug  (0) 2024.09.10
IDS (Snort)  (0) 2024.09.09
pfsense 통신  (0) 2024.09.06