반응형

아래와 같이 서브스크립션을 비활성화 해주면, 업데이트 및 패키지 설치가 가능해집니다.

 

sed -i "s/enabled=1/enabled=0/g" /etc/yum/pluginconf.d/subscription-manager.conf

 

반응형
반응형

설명

CentOS에서 패키지를 업데이트할 때, 간혹 GPG Key가 없다는 메세지와 함께 업데이트가 중단되는 경우가 있습니다. 이유야 여러가지가 있겠지만, 보통 해당 /etc/yum.repo 폴더에 xxx.repo와 같은 파일만 설정하거나, 실수로 GPG Key가 삭제된 경우에 많이 발생합니다. 이와 같은 경우 해결방법에 대해서 알아보겠습니다.

 

Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

GPG key retrieval failed: [Errno 14] curl#37 - "Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7"

 

 

해결방법1

--nogpgcheck 옵션을 사용하면 패키지를 설치할때 관련 GPG Key를 확인하지 않고 건너뛸수 있으므로, 당장 repo 설정을 변경하기에 부담스러운 경우 간편하게 사용할수 있습니다.

 

[root@localhost ~]# yum install --nogpgcheck [Package]

 

 

 

해결방법2

보다 근본적인 방법은 GPG Key를 복원하는 것입니다. 보통 GPG Key는 해당 Repository의 Release 패키지를 설치하면 자동으로 생성되므로 --nogpgcheck 옵션을 사용하여 관련된 Release 패키지를 설치합니다. 아래는 EPEL과 관련된 Release 패키지를 설치하는 예시입니다.

 

[root@localhost ~]# yum install --nogpgcheck epel-release

 

 

 

반응형
반응형

설명

CentOS 7 환경에서 mail 명령어를 사용하는 간단한 메일 보내기 쉘 프로그램을 작성해 봅니다.

 

 

패키지 설치

### Install mailx package ###
[root@localhost ~]# yum -y install mailx

 

 

 

메일 발송 쉘 프로그램 작성

아래와 같이 간단한 쉘 프로그램으로 메일 발송이 가능합니다.

 

### /root/mail_tester.sh ###
#!/bin/bash
smtp_server="smtp=smtp://192.168.80.171:25"
from_email=sss@testlab.localhost
to_email=aaa@testlab.localhost
cc_email=bbb@testlab.localhost
bcc_email=ccc@testlab.localhost
subject="mail test"
content="mail test"
echo "$content" | /bin/mail -S $smtp_server -s "$subject" -r $from_email $to_email $cc_email $bcc_email

 

### Description ###
smtp_server  : 메일 서버(MTA)와 포트
from_email   : 보내는 사람의 메일 주소
to_email     : 받는 사람의 메일 주소
cc_email     : 참조 메일 주소
bcc_email    : 숨은 참조 메일 주소
subject      : 메일 제목
content      : 메일 내용

 

 

 

 

간단한 웹 모니터링 스트립트

아래와 같이 간단한 웹 모니터링 스크립트를 만들어 보았습니다. for문으로 무한루프가 되도록 설정하고 10초 단위로 특정 웹 사이트의 파일을 읽도록 설정합니다. 파일이 문제없이 읽혀지면 패스하고, 파일을 읽을 수 없을 때는 지정한 서버를 통해서 메일을 전송하도록 설정한 스크립트입니다.

 

### Simple web monitoring script ###

### /root/simple_web_monitoring_script.sh ###
#!/bin/bash

smtp_server="smtp=smtp://192.168.80.171:25"
from_email=sss@testlab.localhost
to_email=aaa@testlab.localhost
cc_email=bbb@testlab.localhost
bcc_email=ccc@testlab.localhost
subject="mail test"
content="mail test"

for (( ; ; ))
do
    curl_result=`curl -s http://192.168.80.191/abc/check.txt`
    if [[ $curl_result == "ok" ]]
    then
        date
        echo -e "Status is OK\n"
        sleep 10
    else
        date
        echo -e "Check failed\n"
        echo "$content" | /bin/mail -S $smtp_server -s "$subject" -r $from_email $to_email $cc_email $bcc_email
        sleep 10
    fi
done

 

### Description ###
192.168.80.171    : 메일 전송 서버(MTA)
192.168.80.191    : 웹 서버
반응형
반응형

설명

CentOS 8에서 lynx 패키지는 PowerTools라는 비활성화된 레포지토리에 존재하므로, 임시로 해당 레포지토리를 활성화하여 설치 방법에 대해서 알아 봅니다.

 

 

 

패키지 설치방법

임시로 PowerTools 레포지토리를 활성화하여 lynx 패키지를 설치합니다.

 

### CentOS 8 ###

### Install the Lynx package ###
[root@localhost ~]# dnf --enablerepo=powertools -y install lynx

 

반응형
반응형

설명

우분투 서버는 터미널 환경에서 대부분의 작업이 가능하지만, 때때로 GUI 환경에서의 작업 효율성이 더 높을 때가 있으므로 우분투 서버의 설치 과정에서 설치할수 없는 GUI 환경인 데스크탑 패키지 설치에 대해서 알아봅니다.

 

 

 

패키지 설치

GUI 환경을 제공하는 패키지인 Ubuntu Desktop을 설치합니다. 패키지 설치가 완료되면 OS를 재시작합니다. OS가 재시작과 함께 GUI 환경의 로그인 화면을 만날수 있습니다. 

 

### Desktop Package Installation ###
root@localhost:~# apt -y install ubuntu-desktop
root@localhost:~# reboot

 

반응형
반응형

설명

CentOS 7에서 CHROOT가 적용된 DNS 서비스를 이중화로 구성합니다. DNS에 질의는 제한된 네트워크에서만 가능하도록 제한합니다.

 

 

 

BIND 버전 및 서버 구성

OS: CentOS 7

BIND Version: 9.11.4-26

마스터: 192.168.80.176

슬레이브1: 192.168.80.177

슬레이브2: 192.168.80.178

 

 

 

Hostname 설정

각 서버의 호스트네임을 설정한후 재접속합니다.

 

### Setting Hostname ###

### Master ###
[root@localhost ~]# hostnamectl set-hostname master

### Slave1 ###
[root@localhost ~]# hostnamectl set-hostname slave1

### Slave2 ###
[root@localhost ~]# hostnamectl set-hostname slave2

 

 

 

SELinux 비활성화

편의상 SELinux를 사용하지 않으므로 비활성화합니다.

 

### Inactive the SELinux ###

### Master ###
[root@master ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@master ~]# reboot

### Slave1 ###
[root@slave1 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@slave1 ~]# reboot

### Slave2 ###
[root@slave2 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@slave2 ~]# reboot

 

 

 

Firewall 설정

파이어월에 DNS 서비스를 등록합니다.

 

### Register dns service in the firewall ###

### Master ###
[root@master ~]# firewall-cmd --permanent --add-service=dns
[root@master ~]# firewall-cmd --reload

### Slave1 ###
[root@slave1 ~]# firewall-cmd --permanent --add-service=dns
[root@slave1 ~]# firewall-cmd --reload

### Slave2 ###
[root@slave2 ~]# firewall-cmd --permanent --add-service=dns
[root@slave2 ~]# firewall-cmd --reload

 

파이어월 서비스 리스트를 확인하여 방금 추가한 DNS 서비스가 등록되었는지 확인할수 있습니다.

 

### Check the service list registered in the firewall ###

### Master/Slave1/Slave2 ###
[root@master ~]# firewall-cmd --list-services
cockpit dhcpv6-client dns nfs proftpd ssh

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

 

 

 

BIND 패키지 설치

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

 

### Install the BIND package ###

### Master/Slave1/Slave2 ###
[root@master ~]# yum -y install bind bind-chroot bind-utils

 

DNS 서비스의 자동시작을 활성화하고, DNS 서비스를 시작합니다.

 

### Activate and start the DNS Service ###

### Master/Slave1/Slave2 ###
[root@master ~]# systemctl enable named-chroot
[root@master ~]# systemctl start named-chroot

 

 

 

환경파일 설정

DNS 서비스를 구성하는 환경파일을 설정합니다. 환경파일에서 많은 옵션이 있지만, 이중화 구성에 맞춰서 필요한 부분만 추가 또는 변경하겠습니다. "listen-on port 53"와 "listen-on-v6 port 53"는 각각 Master/Slave1/Slave2의 IP로 설정합니다. 쿼리 질의는 "office-nets"로 제한하며, 그외 네트워크에서 도메인 해석 질의는 거부합니다. 이중화 구성에서 가장 중요한 옵션인 "allow-transfer"를 "none"으로 설정하고, 개별 존에서 "allow-transfer"를 허용하도록 설정하겠습니다. "allow-update"는 "none"이 기본값이지만, 존 정보(레코드)를 업데이트할수 있으므로 명시적으로 "none"으로 설정하며, "allow-transfer"와 같이 필요한 존에 대해서만 개별 설정합니다.

 

### /etc/named.conf ###

### Master ###
acl office-nets {
        192.168.80.0/24;
};

options {
        listen-on port 53      { 192.168.80.176; };
        listen-on-v6 port 53   { fe80::4f4b:783b:ba20:31ae; };
        ...
        allow-query            { office-nets; };
        allow-transfer         { none; };
        allow-update           { none; };
        ...
};

logging {
		...
};

zone "." IN {
		...
};

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

 

### /etc/named.conf ###

### Slave1 ###
acl office-nets {
        192.168.80.0/24;
};

options {
        listen-on port 53      { 192.168.80.177; };
        listen-on-v6 port 53   { fe80::e88e:f526:fd9e:3215; };
        ...
        allow-query            { office-nets; };
        allow-transfer         { none; };
        allow-update           { none; };
        ...
};

logging {
		...
};

zone "." IN {
		...
};

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

 

### /etc/named.conf ###

### Slave2 ###
acl office-nets {
        192.168.80.0/24;
};

options {
        listen-on port 53      { 192.168.80.178; };
        listen-on-v6 port 53   { fe80::d834:f330:e901:82ef; };
        ...
        allow-query            { office-nets; };
        allow-transfer         { none; };
        allow-update           { none; };
        ...
};

logging {
		...
};

zone "." IN {
		...
};

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

 

 

 

Master DNS 서버에서 이중화할 ZONE 설정

Master DNS에서 서비스 및 전송할 존을 설정합니다. 테스트용도로 아래와 같이 포워드 존과 리버스 존 하나씩 설정하겠습니다. 이 두개의 존 정보는 존 트랜트퍼 기능을 사용하여 Slave1과 Slave2로 전송하기 위해서, Slave1과 Slave2의 IP를 설정합니다. 이 두개의 존은 다이나믹 존으로 사용하지 않으므로 "allow-update"를 "none"으로 설정합니다.

 

### /etc/named.rfc1912.zones ###

### Master ###

### Customer's Forward Zone ###
zone "testlab.localhost" IN {
        type master;
        file "master/testlab.localhost.zone";
        allow-transfer { 192.168.80.177; 192.168.80.178; };
        allow-update { none; };
};

### Customer's Reverse Zone ###
zone "80.168.192.in-addr.arpa" IN {
        type master;
        file "master/80.168.192.in-addr.arpa.zone";
        allow-transfer { 192.168.80.177; 192.168.80.178; };
        allow-update { none; };
};

 

포워드 존과 리버스 존 파일을 저장할 master 폴더를 생성합니다.

 

### Make the master folder and change the ownership ###

[root@master ~]# mkdir /var/named/master
[root@master ~]# chown root.named /var/named/master

 

생성한 master 폴더에 포워드 존 파일을 생성하며, DNS 서버에 맞춰서 네임서버도 생성합니다.

 

### /var/named/master/testlab.localhost.zone ###

### Master ###
$TTL 1D
@       IN      SOA     testlab.localhost.      root.testlab.localhost. (
                                        2021120701      ; serial
                                        1D              ; refresh
                                        1H              ; retry
                                        1W              ; expire
                                        3H )            ; minimum
        IN      NS      ns1.testlab.localhost.
        IN      NS      ns2.testlab.localhost.
        IN      NS      ns3.testlab.localhost.

ns1     IN      A       192.168.80.176
ns2     IN      A       192.168.80.177
ns3     IN      A       192.168.80.178

www     IN      A       192.168.80.191
ftp     IN      A       192.168.80.191

 

정방향 영역에 맞춰서 역방향 영역의 존 파일도 함께 생성합니다. 정방향 영역의 레코드에 대응하는 역방향 영역의 레코드인 PTR은 사용하지 않는다면 만들지 않아도 무방합니다. 

 

### /var/named/master/80.168.192.in-addr.arpa.zone ###

### Master ###
$TTL 1D
@       IN      SOA     testlab.localhost.      root.testlab.localhost. (
                                        2021120701      ; serial
                                        1D              ; refresh
                                        1H              ; retry
                                        1W              ; expire
                                        3H )            ; minimum
        IN      NS      ns.testlab.localhost.

191     IN      PTR     www
191     IN      PTR     ftp

 

존 영역 파일의 생성이 끝났다면, master 폴더 및 폴더에 포함된 파일의 소유권을 모두 변경합니다. (폴더 및 존 파일의 소유가 root.root인 경우 도메인 네임 해석이 거부될수도 있으므로, 반드시 소유권을 root.named로 변경합니다)

 

### Change the permission of the added zone ###

### Master ###
[root@master ~]# chown root.named /var/named/master/*

 

 

 

Slave1/Slave2 DNS 서버에서 이중화할 ZONE 설정

실제 존 파일은 Master에서 전송되므로, Slave1/Slave2에서는 Master에서 선언한 존을 아래와 같이 Slave에 맞춰서 설정합니다. (존 파일은 allow-transfer 옵션에 의해서 자동 생성됩니다)

 

### /etc/named.rfc1912.zones ###

### Slave1/Slave2 ###

### Customer's Forward Zone ###
zone "testlab.localhost" IN {
        type slave;
        file "slaves/testlab.localhost.zone";
        masters { 192.168.80.176; };
};

### Customer's Reverse Zone ###
zone "80.168.192.in-addr.arpa" IN {
        type slave;
        file "slaves/80.168.192.in-addr.arpa.zone";
        masters { 192.168.80.176; };
};

 

Slave로 전송되는 존 파일은 성능향샹을 위해서 바이너리로 포멧되므로, 해당 존 파일은 열어보거나 편집할수 없습니다. 만약 일반 텍스트로 존 파일의 전송을 원한다면 아래와 같이 "masterfile-format text" 옵션을 추가한후 "named-chroot" 데몬을 재시작합니다.

 

### /etc/named.rfc1912.zones ###

### Slave1/Slave2 ###

### Customer's Forward Zone ###
zone "testlab.localhost" IN {
        type slave;
        file "slaves/testlab.localhost.zone";
        masterfile-format text;
        masters { 192.168.80.176; };
};

### Customer's Reverse Zone ###
zone "80.168.192.in-addr.arpa" IN {
        type slave;
        file "slaves/80.168.192.in-addr.arpa.zone";
        masterfile-format text;
        masters { 192.168.80.176; };
};

 

 

 

존 데이터 동기화

각 Slave에서 DNS를 시작하면 특별한 문제가 없는한 Master에서 바로 존 파일을 전송받으며, 아래와 같이 해당 존 파일이 생성됩니다.

 

### Zone data synchronization between master and slave1/slave2  ###

### Slave1 ###
[root@slave1 ~]# systemctl restart named-chroot
[root@slave1 ~]# ls -l /var/named/slaves
-rw-r--r-- 1 named named 314 Dec  7 17:36 80.168.192.in-addr.arpa.zone
-rw-r--r-- 1 named named 337 Dec  7 17:31 testlab.localhost.zone

### Slave2 ###
[root@slave2 ~]# systemctl restart named-chroot
[root@slave1 ~]# ls -l /var/named/slaves
-rw-r--r-- 1 named named 314 Dec  7 17:36 80.168.192.in-addr.arpa.zone
-rw-r--r-- 1 named named 337 Dec  7 17:31 testlab.localhost.zone

 

반응형
반응형

설명

보통 "ssh-keygen" 명령어로 Private/Public Key를 생성합니다. 이렇게 생성한 키는 SSH 자동 로그인이나 SFTP 로그인과 같은 곳에서 사용하는데, SFTP 접속에 사용하는 클라이언트 프로그램에 따라서 키를 변환해 주어야만 하는 경우가 있습니다. 바로 Putty를 사용하여 접속하는 경우가 대표적인데요, Putty를 직접 사용하거나 FileZilla와 WinSCP 등과 같은 프로그램을 사용하여 SFTP에 접속한다면, 사전에 Putty 형식의 Private Key로 변환이 필요하므로 방법에 대해서 알아 봅니다.

 

 

Putty 패키지 설치

리눅스에서 Putty 포멧의 키로 변환하기 위해선 관련 패키지 설치가 필수이므로 패키지 설치를 진행합니다.

### CentOS 8 ###

### EPEL Repository 및 Putty 설치 ###
[root@localhost ~]# dnf -y install epel-release
[root@localhost ~]# dnf -y install putty


### Ubuntu 20.04 ###

### Putty 설치 ###
root@localhost:~# apt -y install putty-tools

 

 

발급된 키를 Putty 포멧의 키로 변환

패키지 설치가 완료되었다면, puttygen 명령어로 발급된 "Private Key"를 Putty 포멧의 키로 변환생성합니다.

### CentOS 8 ###

### Generate key for putty format ###
[pfu-tester@localhost ~]$ puttygen ~/.ssh/id_rsa -o ~/.ssh/id_rsa.ppk
[pfu-tester@localhost ~]$ ls -al ~/.ssh/
total 12
drwx------. 2 pfu-tester pfu-tester   62 Nov 24 10:53 .
drwx------. 4 pfu-tester pfu-tester  112 Nov 24 10:52 ..
-rw-------. 1 pfu-tester pfu-tester 2675 Nov 24 10:37 id_rsa
-rw-r--r--. 1 pfu-tester pfu-tester  586 Nov 24 10:37 id_rsa.pub
-rw-------. 1 pfu-tester pfu-tester 2237 Nov 24 10:53 id_rsa.ppk


### Ubuntu 20.04 ###

### Generate key for putty format ###
pfu-tester@localhost:~$ puttygen ~/.ssh/id_rsa -o ~/.ssh/id_rsa.ppk
pfu-tester@localhost:~$ ls -al ~/.ssh/
total 20
drwx------ 2 pfu-tester pfu-tester 4096 Nov 24 02:23 .
drwxr-xr-x 4 pfu-tester pfu-tester 4096 Nov 24 02:23 ..
-rw------- 1 pfu-tester pfu-tester 2655 Nov 24 02:17 id_rsa
-rw-r--r-- 1 pfu-tester pfu-tester  574 Nov 24 02:17 id_rsa.pub
-rw------- 1 pfu-tester pfu-tester 2070 Nov 24 02:23 id_rsa.ppk

 

반응형
반응형

설명

리눅스에서 Apache나 FTP를 설치하면 메뉴얼로 HTML 형식의 파일을 제공합니다. cat과 같은 명령어로 적당히 내용을 살펴볼수도 있지만, 터미널 환경에서 HTML 파일을 제대로 보고 싶을 때 사용하는 LYNX 명령어를 소개합니다.

 

 

설치

### CentOS 8 ###
[root@localhost ~]# dnf -y install lynx

### Ubuntu 20.04 ###
root@localhost:~# apt -y install lynx

 

 

사용방법

LYNX 패키지를 설치하였다면 사용방법은 간단합니다. cat 명령어를 사용 하듯이 "LYNX + HTML 파일"과 같은 형식으로 HTML 파일을 열어보면 됩니다. 결과는 텍스트 베이스의 브라우저에서 보는 것과 비슷하게 보이며 가독성은 괜찮은 편입니다.

 

### CentOS 8 ###
[root@localhost ~]# lynx /usr/share/doc/proftpd/modules/mod_auth.html

### Ubuntu 20.04 ###
root@localhost:~# lynx /usr/share/doc/proftpd-doc/modules/mod_auth.html

 

반응형

+ Recent posts