반응형

설명

CentOS 7에서 DNS 서비스를 설치하고 간단한 환경설정을 해봅니다.

 

 

서버 정보

버전 정보: bind-9.11.26-6

마스터 서버: 192.168.80.171

 

 

SELinux 비활성화

DNS 서버에서 SELinux를 사용하지 않으므로 비활성화 합니다.

### Inactive the SELinux ###
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@localhost ~]# reboot

 

 

Firewall에 DNS 서비스 추가

외부에서 DNS 서버로 접속할수 있도록, 파이어월에 dns 서비스를 추가합니다.

### Register dns service in the firewall ###
[root@localhost ~]# firewall-cmd --permanent --add-service=dns
[root@localhost ~]# firewall-cmd --reload

 

추가한 dns 서비스가 파이어월 서비스 리스트에 등록되었는지 확인합니다.

### Check the service list registered in the firewall ###
[root@localhost ~]# firewall-cmd --list-services
cockpit dhcpv6-client dns nfs proftpd ssh

 

dns 서비스의 포트 구성을 확인합니다.

### Check the dns service information in the firewall ###
[root@localhost ~]# firewall-cmd --info-service=dns
dns
  ports: 53/tcp 53/udp
  protocols:
  source-ports:
  modules:
  destination:
  includes:
  helpers:

 

 

패키지 설치

DNS 서비스에 필요한 패키지를 설치합니다.

### Install the BIND package ###
[root@localhost ~]# yum -y install bind bind-chroot bind-utils

 

 

DNS 서비스 활성화

bind와 bind-chroot 패키지를 설치하면, 각각 named와 named-chroot 데몬이 생성됩니다. chroot 기능이 포함된 DNS 서비스를 구성하므로 named-chroot 데몬을 활성화시킵니다. (named와 named-chroot 데몬은 동시에 실행시킬수 없습니다)

 

### Enable and Start the BIND Service ###
[root@localhost ~]# systemctl enable named-chroot
[root@localhost ~]# systemctl start named-chroot

 

named-chroot 데몬을 실행한후 "/var/named/chroot/etc" 폴더를 검색해보면, 아래와 같이 환경파일이 생성됩니다.

[root@localhost ~]# ls -al /var/named/chroot/etc
total 708
drwxr-x---  5 root named    186 Dec  6 12:52 .
drwxr-x---  7 root named     61 Dec  6 11:05 ..
drwxr-x---  3 root named     23 Dec  6 11:05 crypto-policies
-rw-r--r--. 2 root root     318 Oct 26 22:09 localtime
drwxr-x---  2 root named      6 Aug 25 08:20 named
-rw-r-----  1 root named   1705 Aug 25 08:20 named.conf
-rw-r-----  1 root named   1029 Aug 25 08:20 named.rfc1912.zones
-rw-r--r--  1 root named   1070 Aug 25 08:20 named.root.key
drwxr-x---  3 root named     25 Dec  6 11:05 pki
-rw-r--r--. 1 root root    6568 Sep 10  2018 protocols
-rw-r-----  1 root named    100 Dec  6 12:51 rndc.key
-rw-r--r--. 1 root root  692252 May 15  2020 services

 

 

DNS 초기화 (참고)

named-chroot 데몬에 대해서 구글링을 하다보면, named-chroot 데몬을 시작하기 전에 "/usr/libexec/setup-named-chroot.sh"을 실행하는 모습이 심심치않게 보여서 찾아봤습니다. 결론부터 말하면 현재 설치하는 버전에서는 별도로 "/usr/libexec/setup-named-chroot.sh"를 실행해서 초기화할 필요는 없어 보입니다. 그 이유에 대해서는 아래 내용에서 확인할수 있습니다.

 

■서비스 연관성

①"systemctl start named-chroot"를 실행하면, "named-chroot.service" 파일의 내용이 실행됩니다.

②"named-chroot.service" 파일에서 "named-chroot-setup" 서비스가 호출되며, "named-chroot-setup.service" 파일의 내용이 실행됩니다.

③"named-chroot-setup.service" 파일에서 다시 "setup-named-chroot.sh"이 실행되면서 초기화 작업이 진행됩니다.

 

자세한 흐름은 아래 파일의 내용을 참고해 주세요.

### named-chroot.service ###
[root@localhost ~]# cat /usr/lib/systemd/system/named-chroot.service

# Don't forget to add "$AddUnixListenSocket /var/named/chroot/dev/log"
# line to your /etc/rsyslog.conf file. Otherwise your logging becomes
# broken when rsyslogd daemon is restarted (due update, for example).

[Unit]
Description=Berkeley Internet Name Domain (DNS)
Wants=nss-lookup.target
Requires=named-chroot-setup.service
Before=nss-lookup.target
After=named-chroot-setup.service
After=network.target

[Service]
Type=forking
Environment=NAMEDCONF=/etc/named.conf
EnvironmentFile=-/etc/sysconfig/named
Environment=KRB5_KTNAME=/etc/named.keytab
PIDFile=/var/named/chroot/run/named/named.pid

ExecStartPre=/bin/bash -c 'if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -t \
/var/named/chroot -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi'
ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} -t /var/named/chroot $OPTIONS
ExecReload=/bin/sh -c 'if /usr/sbin/rndc null > /dev/null 2>&1; then /usr/sbin/rndc reload; else /bin/kill \
-HUP $MAINPID; fi'
ExecStop=/bin/sh -c '/usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID'
PrivateTmp=false

[Install]
WantedBy=multi-user.target

 

### named-chroot-setup.service ###
[root@localhost ~]# cat /usr/lib/systemd/system/named-chroot-setup.service

[Unit]
Description=Set-up/destroy chroot environment for named (DNS)
BindsTo=named-chroot.service
Wants=named-setup-rndc.service
After=named-setup-rndc.service

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/libexec/setup-named-chroot.sh /var/named/chroot on /etc/named-chroot.files
ExecStop=/usr/libexec/setup-named-chroot.sh /var/named/chroot off /etc/named-chroot.files

 

[root@localhost ~]# cat /etc/named-chroot.files
# Configuration of files used in chroot
# Following files are made available after named-chroot.service start
# if they are missing or empty in target directory.
/etc/localtime
/etc/named.root.key
/etc/named.conf
/etc/named.rfc1912.zones
/etc/rndc.conf
/etc/rndc.key
/etc/named.iscdlv.key
/etc/crypto-policies/back-ends/bind.config
/etc/protocols
/etc/services
/etc/named.dnssec.keys
/etc/pki/dnssec-keys
/etc/named
/usr/lib64/bind
/usr/lib/bind
/usr/share/GeoIP
/run/named
# Warning: the order is important
# If a directory containing $ROOTDIR is listed here,
# it MUST be listed last. (/var/named contains /var/named/chroot)
/var/named

 

 

DNS 환경파일 설정하기

아래는 bind 패키지를 설치하면 기본적으로 제공되는 named.conf 파일의 내용입니다. 내용을 살펴보면 IPv4와 IPv6 환경은 "127.0.0.1"과 "::1"로 제한되어 있으며, DNS 서버에 질의를 허용하는 옵션인 "allow-query"는 localhost로 제안되어 있기 때문에 외부에서 이 DNS 서버로 도메인 해석을 질의해도 응답하지 않도록 설정되어 있습니다.

 

### /etc/named.conf ###
options {
        listen-on port 53      { 127.0.0.1; };
        listen-on-v6 port 53   { ::1; };
        directory              "/var/named";
        dump-file              "/var/named/data/cache_dump.db";
        statistics-file        "/var/named/data/named_stats.txt";
        memstatistics-file     "/var/named/data/named_mem_stats.txt";
        secroots-file          "/var/named/data/named.secroots";
        recursing-file         "/var/named/data/named.recursing";
        allow-query            { localhost; };

        recursion              yes;

        dnssec-enable          yes;
        dnssec-validation      yes;

        managed-keys-directory "/var/named/dynamic";

        pid-file               "/run/named/named.pid";
        session-keyfile        "/run/named/session.key";

        include                "/etc/crypto-policies/back-ends/bind.config";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

 

이제 몇 가지 조건을 붙여서 named.conf의 설정을 조금 변경해 보겠습니다.

 

내부 도메인 해석에 대한 질의/응답을 내부 네트워크로 제한하는 경우 (폐쇄형 DNS에 적용)

우선 DNS 서버 외의 IP 주소에서도 네트워크 통신이 가능하도록 "listen-on port 53"와 "listen-on-v6 port 53"를 "자신의 DNS 서버 IP"로 변경합니다. 내부 네트워크(office-nets)에서 도메인 해석 질의가 가능하도록 "allow-query"를 "office-nets"로 제한하도록 설정합니다. 마지막으로 recursion 옵션을 no로 설정하므로서 DNS 서버에서 설정된 Zone 외에는 도메인 해석 질의가 불가능하도록 제한합니다. 

### /etc/named.conf ###
acl office-nets {
        192.168.80.0/24;
};

options {
        listen-on port 53     { 192.168.80.171; };
        listen-on-v6 port 53  { fe80::20c:29ff:fe24:2e78; };
        ...
        allow-query           { office-nets; };

        recursion             no;
        ...
};

 

 

내부 도메인 해석에 대한 질의/응답을 모든 네트워크에 허용하는 경우 (자사 서비스 DNS에 적용)

모든 네트워크에서 도메인 해석 질의에 대해 응답이 가능하도록 "allow-query"를 any로 설정하며, "recursion"을 no로 설정하여 DNS 서버에서 설정한 Zone으로 질의/응답 범위를 내부 도메인으로 제한합니다. (실제 환경에서 "listen-on port 53"와 "listen-on-v6 port 53"에서 설정하는 IP는 반드시 Public IP여야만 합니다)

### /etc/named.conf ###
options {
        listen-on port 53     { 192.168.80.171; };
        listen-on-v6 port 53  { fe80::20c:29ff:fe24:2e78; };
        ...
        allow-query           { any; };

        recursion             no;
        ...
};

 

 

내/외부 도메인 해석에 대한 질의/응답을 내부 네트워크로 제한하는 경우 (사내 DNS에 적용)

도메인 해석 질의를 내부 네트워크인 "office-nets"로 제한하며, 내/외부 모든 도메인 해석이 가능하도록 recursion 옵션을 yes로 변경합니다.

### /etc/named.conf ###
acl office-nets {
        192.168.80.0/24;
};

options {
        listen-on port 53     { 192.168.80.171; };
        listen-on-v6 port 53  { fe80::20c:29ff:fe24:2e78; };
        ...
        allow-query           { office-nets; };

        recursion             yes;
        ...
};

 

 

내/외부 도메인 해석에 대한 질의/응답을 모든 네트워크에 허용하는 경우 (포탈 사이트의 DNS 또는 Public DNS)

모든 네트워크에서 질의가 가능하도록 "allow-query"를 any로 설정하며, 내/외부 모든 도메인 해석이 가능하도록 recursion 옵션을 yes로 변경합니다. (실제 환경에서 "listen-on port 53"와 "listen-on-v6 port 53"에서 설정하는 IP는 반드시 Public IP여야만 합니다)

### /etc/named.conf ###
options {
        listen-on port 53     { 192.168.80.171; };
        listen-on-v6 port 53  { fe80::20c:29ff:fe24:2e78; };
        ...
        allow-query           { any; };

        recursion             yes;
        ...
};

 

 

몇 가지 설정할수 있는 유형에 대해서 알아 보았는데요, 일견 모든 네트워크에서 모든 도메인에 대해 질의와 해석이 가능하도록 설정하는 것이 이상적으로 보일수 있지만, DNS 공격에 악용될수 있으므로 반드시 목적에 맞게 서비스 범위를 제한하도록 설정합시다.

반응형

'Server > Linux' 카테고리의 다른 글

wget에서 인증서 에러  (0) 2021.11.09
firewall-cmd --new-service  (0) 2020.10.08
CURL 또는 LYNX로 웹 사이트의 헤더 정보 확인하기  (0) 2019.07.02
Linux tar  (0) 2019.06.26
Ubuntu 고정 IP 설정  (0) 2019.02.07
반응형

설명


Cacti로 DNS 또는 도메인을 모니터링하는 방법을 설명합니다. DNS에서 서비스 중인 특정 도메인을 모니터링하여 DNS 자체의 이상 유무를 판단할 수도 있습니다. 모니터링은 「dig」 명령어로 지정된 DNS에 지정된 도메인 해석을 요청하여 진행합니다.




테스트 환경


Cacti가 필요하므로 운용중인 또는 테스트용 Cacti가 없는 경우 설치해 주세요. 테스트 환경은 EPEL에서 배포한 최신 Cacti 패키지를 설치하여 테스트하였습니다.


VM: CentOS 8 (VirtualBox)

VM IP: 192.168.56.128


Cacti version: 1.2.12

Cacti path: /usr/share/cacti

※Cacti는 EPEL 패키지로 설치하였습니다.


Monitoring target domain: www.daum.net

DNS Server: 8.8.8.8 (Google)




스트립트 및 템플릿 다운로드


「https://docs.cacti.net/userscript:dnsresponsetimeping」에서 스트립트(dnsresponsetimeping-latest.tar.gz)를 다운로드 합니다.





패키지 설치


도메인을 모니터링하기 위해서 dig 명령어를 사용하므로 아래와 같이 관련 패키지를 추가로 설치합니다.


[root@cacti ~]# yum -y install bind-utils


[root@cacti ~]# yum -y install perl-Getopt-Long perl-Net-DNS perl-Time-HiRes




스크립트 복사


다운로드한 파일(dnsresponsetimeping-latest.tar.gz)의 압축을 풀면, 아래와 같이 Perl로 작성된 스크립트 파일과 XML로 작성된 템플릿 파일을 볼 수 있습니다.


스크립트: dnsResponseTimePing.pl

템플릿: cacti_graph_template_dns_resolution.xml


우선, 스크립트 파일을 「/usr/share/cacti/scripts」에 저장하고, 스크립트 파일의 Ownership을 다른 스크립트 파일과 동일하게 apache.apache로 변경합니다. (Default permission: 644)


[root@cacti ~]# chown apache.apache /usr/share/cacti/scripts/dnsResponseTimePing.pl


[root@cacti ~]# ls -al /usr/share/cacti/scripts/dnsResponseTimePing.pl

-rw-r--r-- 1 apache apache 7982 Dec  8  2009 /usr/share/cacti/scripts/dnsResponseTimePing.pl


복사한 스크립트 파일로 아래와 같이 바로 테스트해 봅니다. 


[root@cacti ~]# cd /usr/share/cacti/scripts


[root@cacti ~]# perl dnsResponseTimePing.pl -h www.daum.net -s 8.8.8.8 -r -v -d -t 5

6

※실행결과 「6」이라는 숫자는 「6 ms」를 의미합니다.




템플릿 등록


다음으로 Cacti에서 템플릿 파일을 등록합니다. 템플릿 파일은 「Console」 > 「Import/Export」 > 「Import Templates」에서 등록할 수 있으며, 검증된 템플릿이므로 「Preview Import Only」를 끄고 등록합니다. 






Data Template 등록


다음은 위에서 등록한 템플릿의 「Data Source」에서 모니터링할 도메인 전용의 「Data Source」를 복제하여 생성합니다. 방법은 「Console」 > 「Templates」 > 「Data Source」 순으로 클릭 후, 「DNS Resolution」이라는 데이터 템플릿을 선택 복제합니다.



새로운 데이터 템플릿의 이름은 「- www.daum.net」을 붙여서 생성합니다.



생성된 데이터 템플릿을 확인 후, 내용을 편집합니다.



편집할 내용은 모니터링할 대상 도메인을 「Host to Resolve」에 설정하고, DNS 서버 정보는 「Hostname of DNS Server」에 설정합니다. (실제 환경은 사내 DNS 서버에 맞춰서 사용해 주세요)





Device 등록


새로운 디바이스는 「Consol」 > 「Management」 > 「Devices」에서 「+」 기호를 클릭해서 등록합니다.



디바이스를 생성할 때, 테스트 환경에서 도메인 모니터링 외에 불필요한 부분인 「Device Template」과 「SNMP」, 「Availability 」 등을 비활성화 하겠습니다. 설정이 끝났다면 「Create」 버튼을 클릭해서 생성을 완료합니다.



「Graph Template Name」 > 「Add Graph Template」에서 「DNS Resolution」을 선택하고 「Add」 버튼을 클릭해서 그래픽 템플릿을 추가한 후, 「Save」 버튼을 클릭하여 디바이스 등록을 완료합니다.






Data Template 변경


다음으로 데이터 소스에 설정되어 있는 데이터 템플릿을, 앞서 「www.daum.net」 도메인의 모니터링 목적으로 생성한 데이터 템플릿으로 변경합니다.


「Console」 > 「Management」 > 「Data Sources」에서 「DNS Checker - DNS Resolution을 클릭합니다. 



「DNS Checker - DNS Resolution」에서 「Selected Data Template」를 「DNS Resolution - www.daum.net」으로 변경해서 저장합니다.






Tree 및 Graphs 설정


마지막으로 이제까지 설정한 모니터링 결과를 보기 위해서 설정하는 부분입니다. 「Tree」에서 「Default Tree」를 클릭하서 편집화면으로 이동합니다.



「Edit Tree」 버튼을 클릭한후, 「DNS Checker (www.daum.net)」 항목을 왼쪽 「Tree Items」로 Drag & Drop 합니다.



Drag & Drop 후, 「Finish Editing Tree」를 클릭해서 설정을 마무리합니다.






모니터링 그래프


모든 작업이 정상적으로 끝났다면, 「Graphs」에서 모니터링 결과를 볼 수 있습니다.



읽어 주셔서 감사합니다.

반응형
반응형

설명


Cacti는 다양한 기기에서 SNMP를 통해서 수집한 정보를 알기쉬운 그래프로 보여주며, 운영자는 그 그래프 정보 또는 알람 메일로 기기를 모니터링할 수 있습니다.




설치환경


OS : CentOS 8 (VM, VirtualBox)

IP address : 192.168.56.128

APM : Apache(2.4.x), PHP(7.2.x), MariaDB(10.3.x)




환경설정


Hostname 변경


[root@localhost ~]# hostnamectl set-hostname cacti

Reconnect to terminal...


[root@cacti ~]# 



SELinux 비활성화


[root@cacti ~]# sestatus | grep 'Mode from config file'

Mode from config file:          enforcing


[root@cacti ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config


[root@cacti ~]# sestatus | grep 'Mode from config file'

Mode from config file:          disabled


OS rebooting...


[root@cacti ~]# sestatus

SELinux status:                 disabled



Firewall에 서비스 포트 추가


[root@cacti ~]# firewall-cmd --get-default-zone

public


[root@cacti ~]# firewall-cmd --permanent --zone=public --add-service=http

success

[root@cacti ~]# firewall-cmd --permanent --zone=public --add-service=mysql

success


[root@cacti ~]# firewall-cmd --reload


[root@cacti ~]# firewall-cmd --list-services

dhcpv6-client http mysql ssh



Firewall이 필요 없는 환경에선 비활성화


[root@cacti ~]# systemctl stop firewalld

[root@cacti ~]# systemctl disable firewalld

Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.

Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.


[root@cacti ~]# systemctl status firewalld

● firewalld.service - firewalld - dynamic firewall daemon

   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)

   Active: inactive (dead)

     Docs: man:firewalld(1)

...




패키지 설치


Cacti는 APM(Apache, PHP, MariaDB) 기반으로 운영할 계획이므로, 아래와 같이 관련 패키지를 설치합니다.


[root@cacti ~]# yum -y install httpd httpd-devel 

[root@cacti ~]# yum -y install mariadb mariadb-server

[root@cacti ~]# yum -y install php php-cli php-common php-devel php-gd php-mbstring php-pear

[root@cacti ~]# yum -y install rrdtool net-snmp net-snmp-utils

※패키지 설치시에 「Installing dependencies」 항목에 걸려 자동설치되는 패키지는 설치 목록에서 제외하였습니다.

※패키지 설치는 yum 대신 dnf 명령어를 사용할수 있습니다.



Apache, MariaDB, SNMP 서비스 등록 및 시작


[root@cacti ~]# systemctl enable httpd

[root@cacti ~]# systemctl enable mariadb

[root@cacti ~]# systemctl enable snmpd
[root@cacti ~]# systemctl start httpd
[root@cacti ~]# systemctl start mariadb
[root@cacti ~]# systemctl start snmpd




환경설정


MariaDB 초기화


[root@cacti ~]# mysql_secure_installation

Enter current password for root (enter for none): Blank

Set root password? [Y/n] Y

New password: ******* ←MariaDB의 root 계정에 대한 패스워드 설정

Re-enter new password: *******

Remove anonymous users? [Y/n] Y

Disallow root login remotely? [Y/n] Y

Remove test database and access to it? [Y/n] Y

Reload privilege tables now? [Y/n] Y

※MariaDB 초기화는 패스워드 설정 및 root 접근제한, 불필요한 데이터베이스를 삭제하는 작업입니다. 

※「*******」는 패스워드 입력란 입니다. 적당한 패스워드로 설정하여 사용합니다.



MariaDB의 「character-set」과 「collation-server」를 신규 생성되는 DB부터 적용되도록 변경합니다.


[root@cacti ~]# vi /etc/my.cnf.d/mariadb-server.cnf


[mysqld]

datadir                      = /var/lib/mysql

socket                       = /var/lib/mysql/mysql.sock

log-error                    = /var/log/mariadb/mariadb.log

pid-file                     = /run/mariadb/mariadb.pid

#----------------------------------------------------------------
character-set-server         = utf8mb4

collation-server             = utf8mb4_unicode_ci

character-set-client         = utf8mb4



[root@cacti ~]# systemctl restart mariadb

※위의 파일 편집은 Cacti 전용 DB 구성을 전제로 합니다. 만약, 기존 DB 서버에서 DB를 생성할 경우는 「character-set」과  「collation-server」만 별도 설정할 수도 있습니다. 자세한 내용은 아래 Cacti용 DB를 생성하는 곳을 참조해 주세요. 



Cacti DB 및 계정(cacti) 생성


[root@cacti ~]# mysql -u root -p

Enter password: *******


MariaDB [(none)]> CREATE DATABASE cacti;

Query OK, 1 row affected (0.000 sec)


MariaDB [(none)]> GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY '*******';

Query OK, 1 row affected (0.000 sec)


MariaDB [(none)]> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.000 sec)


MariaDB [(none)]> QUIT

'*******'는 cacti 계정의 패스워드를 입력하는 곳이므로, ' '안에 '123456'과 같이 적당히 패스워드를 넣어 주세요. 



Cacti DB 및 계정(cacti) 생성 - (기존 DB 서버의 설정 변경없이, Cacti용 DB를 생성할 경우)


[root@cacti ~]# mysql -u root -p

Enter password: *******


MariaDB [(none)]> CREATE DATABASE cacti DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Query OK, 1 row affected (0.000 sec)



MariaDB [(none)]> SELECT * FROM information_schema.SCHEMATA WHERE schema_name = 'cacti';

+--------------+-------------+----------------------------+------------------------+----------+

| CATALOG_NAME | SCHEMA_NAME | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | SQL_PATH |

+--------------+-------------+----------------------------+------------------------+----------+

| def          | cacti       | utf8mb4                    | utf8mb4_unicode_ci     | NULL     |

+--------------+-------------+----------------------------+------------------------+----------+

1 row in set (0.000 sec)


MariaDB [(none)]> GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY '*******';

Query OK, 0 row affected (0.000 sec)


MariaDB [(none)]> FLUSH PRIVILEGES;

Query OK, 1 row affected (0.000 sec)


MariaDB [(none)]> QUIT

'*******'는 cacti 계정의 패스워드를 입력하는 곳이므로, ' '안에 '123456'과 같이 적당히 패스워드를 넣어 주세요. 



Cacti 패키지 및 DB에 Cacti용 테이블 설치


[root@cacti ~]# yum -y install epel-release


[root@cacti ~]# yum -y install cacti


[root@cacti ~]# rpm -ql cacti | grep cacti.sql

/usr/share/doc/cacti/cacti.sql


[root@cacti ~]# mysql -u cacti -p cacti < /usr/share/doc/cacti/cacti.sql

Enter password: *******


[root@cacti ~]# mysql -u cacti -p -e "SHOW TABLES FROM cacti"

Enter password: *******

+-------------------------------------+

| Tables_in_cacti                     |

+-------------------------------------+

| aggregate_graph_templates           |

| aggregate_graph_templates_graph     |

| aggregate_graph_templates_item      |

.....

※만약에 cacti 설치가 안될 경우 「yum clean all」 명령어로 Yum 캐쉬를 지우고 재시도 합니다. 



OS와 DB의 타임존 설정


[root@cacti ~]# ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime


[root@cacti ~]# mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Enter password: *******

[root@cacti ~]# mysql -u root -p

Enter password: *******


MariaDB [(none)]> SELECT * FROM mysql.time_zone_name WHERE Name = 'Asia/Seoul';
+------------+--------------+
| Name       | Time_zone_id |
+------------+--------------+
| Asia/Seoul |          309 |
+------------+--------------+
1 row in set (0.001 sec)

MariaDB [(none)]> GRANT SELECT ON mysql.time_zone_name TO cacti@localhost;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> QUIT



「db.php」 파일 편집


[root@cacti ~]# vi /etc/cacti/db.php

$database_type     = 'mysql';

$database_default  = 'cacti';

$database_hostname = 'localhost';

$database_username = 'cacti';

$database_password = '*******';

$database_port     = '3306';



Cacti의 웹소스/로그/RRA 폴더에 접근제한 해제


[root@cacti ~]# vi /etc/httpd/conf.d/cacti.conf

<Directory /usr/share/cacti/>

        <IfModule mod_authz_core.c>

                # httpd 2.4

                Require all granted

...

<Directory /usr/share/cacti/log>

        <IfModule mod_authz_core.c>

                Require all granted

                #or Require ip 192.168.56.128

...

<Directory /usr/share/cacti/rra>

        <IfModule mod_authz_core.c>

                Require all granted

                #or Require ip 192.168.56.128

...


[root@cacti ~]# systemctl restart httpd

※ cacti 폴더 외에 log/rra 폴더의 접근제한을 해제하는 이유는 Cacti 웹 페이지 내에서 log/rra 파일을 관리하기 위해서입니다.



Cacti의 웹소스/로그/RRA 폴더에 접근제한 설정


[root@cacti ~]# vi /etc/httpd/conf.d/cacti.conf

<Directory /usr/share/cacti/>

        <IfModule mod_authz_core.c>

                # httpd 2.4

                Require host localhost

                Require ip 192.168.56.0/255.255.255.0

                Require ip 192.168.57.0/255.255.255.0

...

<Directory /usr/share/cacti/log>

        <IfModule mod_authz_core.c>

                Require host localhost

                Require ip 192.168.56.0/255.255.255.0

                Require ip 192.168.57.0/255.255.255.0

...

<Directory /usr/share/cacti/rra>

        <IfModule mod_authz_core.c>

                Require host localhost

                Require ip 192.168.56.0/255.255.255.0

                Require ip 192.168.57.0/255.255.255.0

...


[root@cacti ~]# systemctl restart httpd

※접근제한 설정이 필요한 경우, 위와 같이 host 또는 ip로 접근을 제한할 수 있습니다.



[root@cacti ~]# vi /etc/cron.d/cacti

*/5 * * * *     apache  /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1




설치


웹 브라우저에서 http://192.168.56.128/cacti」로 접속


※초기 로그인 계정은 admin이며, 패스워드도 admin 입니다.

※192.168.56.128은 VM IP입니다.


※최초 로그인에서 반드시 패스워드를 변경해야만 하므로, 초기 패스워드인 admin과 새로운 패스워드를 입력합니다.

※변경할 패스워드는 대문자/소문자/숫자/특수기호 등을 조합해서 입력합니다.


※「Accept GPL License Agreement」에 체크하고 「Begin」 버튼을 클릭하여 다음 페이지로 이동합니다.


※보통 위와 같은 페이지가 표시됩니다. 페이지의 내용은 서버 스펙에 따라서 달라지며, 요구되는 최소한의 수치 이상으로 설정해 줘야 합니다.


[root@cacti ~]# vi /etc/php.ini

memory_limit = 400M

max_execution_time = 60

date.timezone = Asia/Seoul


[root@cacti ~]# systemctl restart php-fpm

※「php.ini」 파일에서 해당 항목 값을 적당히 조정한 후, 「php-fpm」 서비스를 재시작하고, 페이지를 리로드하면 「PHP - Recommendations (web)」 항목이 패스된 것을 확인할 수 있습니다.



※다음은 「MySQL - Settings」 항목이며, 「mariadb-server.cnf」 파일을 편집하여 대응합니다.


[root@cacti ~]# vi /etc/my.cnf.d/mariadb-server.cnf


[mysqld]

datadir                      = /var/lib/mysql

socket                       = /var/lib/mysql/mysql.sock

log-error                    = /var/log/mariadb/mariadb.log

pid-file                     = /run/mariadb/mariadb.pid

#----------------------------------------------------------------
character-set-server         = utf8mb4

collation-server             = utf8mb4_unicode_ci

character-set-client         = utf8mb4

#----------------------------------------------------------------

max_heap_table_size          = 32M

tmp_table_size               32M

join_buffer_size             = 64M

innodb_file_format           = Barracuda

innodb_large_prefix          = 1

innodb_buffer_pool_size      = 1024M

innodb_flush_log_at_timeout  = 3

innodb_read_io_threads      = 32

innodb_write_io_threads      16

innodb_buffer_pool_instances = 9

innodb_io_capacity           = 5000

innodb_io_capacity_max       = 10000


[root@cacti ~]# systemctl restart mariadb

※종종 「innodb_buffer_pool_instances」에서 요구된 값 이상으로 설정해도 에러가 발생하는 경우가 있습니다. innodb_buffer_pool_instances」는 innodb_buffer_pool_size」와 관계가 있으므로, innodb_buffer_pool_size」를 1024MB(1GB) 이상 설정하여 테스트해 보세요.













읽어 주셔서 감사합니다.

반응형
반응형

CURL 명령어와 LYNX 명령어로 대상 웹 사이트의 헤더 정보를 살펴볼 수 있습니다.

[root@localhost ~]# yum -y -q install curl

[root@localhost ~]# curl -I http://localhost
HTTP/1.1 302 Found
Date: Tue, 02 Jul 2019 01:08:05 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.3.6
Location: https://www.xxx.xxx
Content-Type: text/html; charset=iso-8859-1
[root@localhost ~]# yum -y -q install lynx

[root@localhost ~]# lynx -head -mime_header http://localhost
HTTP/1.1 302 Found
Date: Tue, 02 Jul 2019 01:08:19 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.3.6
Location: https://www.xxx.xxx
Connection: close
Content-Type: text/html; charset=iso-8859-1

 

다만, HTTPS 프로토콜에 대해서는 정상적으로 SSL 인증서가 설치되어 있지 않을 경우, 아래와 같은 에러가 발생할 수 있습니다.

[root@localhost ~]# curl -I https://localhost

curl: (60) Issuer certificate is invalid.
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.
[root@localhost ~]# lynx -head -mime_header https://localhost

Looking up localhost
Making HTTPS connection to localhost
SSL callback:unable to get local issuer certificate, preverify_ok=0, ssl_okay=0
Retrying connection without TLS.
Looking up localhost
Making HTTPS connection to localhost
Alert!: Unable to make secure connection to remote host.

lynx: Can't access startfile https://localhost/
반응형

'Server > Linux' 카테고리의 다른 글

firewall-cmd --new-service  (0) 2020.10.08
[BIND] CentOS 7에서 DNS 설치  (0) 2020.07.17
Linux tar  (0) 2019.06.26
Ubuntu 고정 IP 설정  (0) 2019.02.07
Change the time zone on Linux  (0) 2018.11.07
반응형

tar 명령어로 절대경로를 지정하여 파일을 압축 또는 해제할 때, "tar: Removing leading `/' from member names"와 같은 출력문을 접하게 됩니다. 아래의 내용은 절대경로를 지정하여 파일을 압축하였을 때, 절대경로에서 선행문자인 "/"을 삭제한다는 메세지를 보여줍니다. 이런 메세지가 표시되더라도 CLI 환경에서 직접 압축 및 해동에서는 거의 문제가 발생하지 않습니다만, 스크립트로 tar 명령어가 실행될 때에는 정상적으로 압축 및 해제가 되지 않을 수도 있습니다.

[root@localhost ~]# tar cfz /root/test.tar /root/test.txt
tar: Removing leading `/' from member names

[root@localhost ~]# tar xfz /root/test.tar
tar: Removing leading `/' from member names

이런 경우에는 tar 명령어에 P 옵션을 붙여서 실행하면, 지정된 절대경로에서 선행문자인 "/"가 삭제되지 않고 그대로 붙어서 압축 및 해제가 진행됩니다.

[root@localhost ~]# tar cfzP /root/test.tar /root/test.txt

[root@localhost ~]# tar xfzP /root/test.tar
반응형

'Server > Linux' 카테고리의 다른 글

firewall-cmd --new-service  (0) 2020.10.08
[BIND] CentOS 7에서 DNS 설치  (0) 2020.07.17
CURL 또는 LYNX로 웹 사이트의 헤더 정보 확인하기  (0) 2019.07.02
Ubuntu 고정 IP 설정  (0) 2019.02.07
Change the time zone on Linux  (0) 2018.11.07
반응형

1. CMD에 "gpedit" (또는 "gpedit.msc")를 입력하고 실행합니다.

 

 

2. 아래와 같이 순서대로 항목에 접근하여 설정을 변경합니다.

 

[컴퓨터 구성]→[관리 템플릿][Windows 구성요소][터미널 서비스][원격 데스크톱 세션 호스트][연결][연결 개수 제한] : "구성하지 않음  사용", "TS 최대 허용 연결 1  2" 로 설정합니다.

 

[Computer Configuration][Administrative Templates]→[Windows Components][Remote Desktop Services][Remote Destop Session Host][Connections][Limit number of connections] : "Not Configured → Enabled", "RD Maximum Connections allowed 1 → 2"

 

[컴퓨터 구성]→[관리 템플릿][Windows 구성요소][터미널 서비스][원격 데스크톱 세션 호스트][연결]→[원격 데스크톱 서비스 사용자를 하나의 원격 데스크톱 서비스 세션으로 제한] : "구성되지 않음 -> 사용 안 함" 로 설정합니다.

 

[Computer Configuration][Administrative Templates][Windows Components][Remote Desktop Services][Remote Destop Session Host][Connections]→[Restrict Remote Desktop Services users to a single Remote Desktop Services session] : "Not Configured → Disabled"

 

 

3. CMD에 "gpupdate /force"를 입력하여 그룹 정책을 업데이트 합니다.

반응형
반응형

Broadcom 네트워크 어댑터를 사용하는 Hyper-V(Windows 2008 or Windows 2012)에서 VM이 느려지는 경우가 발생할 수 있습니다. 이런 경우, VMQ(Virtual Machine Queue)를 무효화(disable)로 설정을 변경하면 느린 응답성을 개선시킬 수 있습니다.

 

 

1. VMQ(Virtual Machine Queue) 설정을 변경하는 방법

 

 

1-1. 파워쉘로 설정을 변경하는 방법

 

Set-VMNetworkAdapter –ManagementOS -Name VirtualNetworkAdapterName -VmqWeight 0

 

 

1-2. 물리 네트워크 어댑터의 설정을 변경하는 방법

가상 네트워크 어댑터가 바라보는 물리 네트워크 어댑터의 VMQ 설정을 직접 무효화(disable)합니다.

 

Network adapter → Properties → Configure → Advanced → Virtual Machine Queues → Value : Disabled

 

 

반응형
반응형

클론질라로 리눅스(Ubuntu 16.04 LTS)를 백업해 보겠습니다. 사용환경은 Ubuntu 16.04 LTS 기반의 VirtualBox 5.1.38 입니다.

 

 

 

1. 클론질라 다운로드

 

다운로드 링크(https://clonezilla.org/downloads.php)에서 아래의 그림과 같이 안정(stable)화된 버전을 선택하여 다운로드합니다. 파일 타입(file type)을 ISO로 선택하여 다운로드하겠습니다. 

 

 

 

 

2. 다운로드 받은 Clonezilla ISO 파일로 부팅

 

클론질라 라이브(Clonezilla live)를 선택하여 백업을 위한 환경설정을 시작합니다.

 

 

 

3. 백업을 위한 환경설정

 

표시언어를 선택하는 부분입니다. 한국어를 지원하지 않으므로, 영어(en_US.UTF-8 English)를 선택합니다.

 

키보드 레이아웃을 선택하는 곳입니다. 한글 키보드를 사용한다면 호환되므로 기본값(US keyboard) 그대로 선택합니다.

 

"Start_Clonezilla Start Clonezilla"를 선택하여 클론질라를 시작합니다.

 

"device-image"를 선택합니다. "device-image"는 특정 디스크의 모든 파티션 정보를 Image로 백업을 하는 것을 의미하며, 해당 디스크에 OS가 설치되어 있다면 OS가 통째로 백업됩니다. "device-device"는 로컬 디스크에서 다른 로컬 디스크로, 또는 로컬 파티션을 다른 로컬 파티션으로 복제할 때 사용합니다.

 

"local_dev"를 선택합니다. 

 

로컬 디스크가 아닌 USB로 이미지를 저장할 경우가 아니라면, 엔터키를 눌러서 진행합니다.

 

검색된 하드디스크 목록을 보여줍니다.

 

백업된 이미지를 저장할 하드디스크를 선택하는 곳입니다. sda1을 이미지로 백업하여 sdb에 저장할 계획이므로, 아래 그림에서 sdb을 이미지 저장소로 선택합니다.

 

위에서 선택한 sdb1 하드디스크의 폴더를 보여줍니다. 제 경우는, backup-img라는 폴더를 미리 만들어 두었습니다. 혹시 만들어둔 폴거가 없거나, 새 하드디스크일 경우는 기본값인 lost+fond를 선택하여 진행합니다. 실제 백업 데이터는 backup-img의 하위 폴더에 생성됩니다.

 

백업은 Expert 모드를 사용할 수도 있습니다만, 일반적으로 Beginner 모드로도 충분히 백업할 수 있으므로, Beginner 모드를 선택하여 진행합니다.

 

"savedisk"를 선택하여 진행합니다.

 

이미지를 저정할 폴더 이름을 지정하는 부분입니다. 적당히 지정해 줍니다.

 

백업할 디바이스(하드디스크)를 선택하는 곳입니다.

 

파일 시스템을 체크하는 곳입니다. 오랫동안 OS 재기동이 없었던 서버들은 "-fsck-y"를 선택하는 것을 추천합니다.

 

백업된 이미지를 정상 유무를 확인할 것인지 선택하는 곳입니다. 스킵해도 무방하지만, 안전을 위해서 체크하는 것을 추천합니다.

 

백업한 이미지를 암호화할 것인지 선택하는 곳입니다. 여기서는 필요 없으므로 패스하겠습니다.

 

백업 작업이 완료된 후의 동작을 지정하는 부분입니다. 여기서는 추후 정할 수 있도록 선택하겠습니다.

 

대상 디스크의 이미지를 지정한 폴더에 저장하는지 물어봅니다. "y"를 입력하고 진행합니다.

 

백업 진행상황을 보여줍니다.

 

백업 진행상황을 보여줍니다.

 

백업이 완료되면 클론질라 라이브 미디어를 제거(언마운트)하고, OS를 재기동해서 이미지가 정상적으로 백업되었는지 확인합니다. 제 경우는 백업 이미지가 저장된 하드디스크(sdb)를 자동으로 마운트하게 설정하지 않아서, "sudo mount /dev/sdb1 /home/partimag" 또는 "sudo /dev/sdb1 /mnt"로 간단히 마운트하여 생성된 백업 이미지를 확인합니다. 

 

 

감사합니다.

반응형

+ Recent posts