Study/Information Security

클라우드 정보 보안 수업 자료 및 정리 [29회차, DNS, ansible]

imaginefuture-1 2025. 1. 7. 17:19

itkorea 인천 아카데미 클라우드 정보보안 수업 자료 및 정리

 

2024-11-25~2025-05-13

 

정식 수업~

 

매주 월화수목금 9시30분-6시30분까지 과정

 


 

우분투에서 DNS MASTER세팅하기

 

/etc/netplan/00-installer-config.yaml 세팅해주고/ 들여쓰기, 띄어쓰기 조심,

 

netplan apply 적용 후 ip a로 확인 이후 패키지 설치
우분투는 로키랑 다른게, 보안이 더 강화되었기 때문에 로키의 named 폴더에 한방으로 들어가있다면, 우분투는 세분화되어서 나눠져있다 그래야, 보안이 더 좋으니까! inclue "/etc/bind/named.conf.external-zone"; 추가

 

/etc/bind/named.conf.options 얘는 (모든 호스트에게 DNS 질의/응답 허용 설정)하는 파일
cp -a하면 속성까지 가져감
/etc/netplan/00-installer-config.yaml

 

/etc/bind/named.conf.external.zones
cp -a db.local pjh.zone /etc/bind/pjh.zone



 

 


 

우분투에서 master server 우리 조원 두명 slave 세팅

 

/etc/bind/named.conf.external.zones

zone "pjh.com" IN {
        type master;
        file "/etc/bind/pjh.zone";
        allow-transfer { 192.168.10.112; 192.168.10.111; };
        allow-update { none; };

};

 

우분투에서 slave server 우리 조원(효정씨) master인 세팅

 

zone "mater도메인" IN {
        type slave;
        file "마스터.zone";
        masters { 마스터 아이피; };
};

 

rm -rf /etc/bind/pjh.zone

/etc/netplan/00-installer-config.yaml nameservers에 마스터 아이피 넣어주깅! netplan apply후 ip a 한다음

 

 

기도하고 systemctl restart named

 

chj.zone파일이 잘 있다

 

 


우분투에서 slave server 우리 조원(유진씨) master인 세팅

 

/etc/netplan/00-installer-config.yaml nameservers에 마스터 아이피 넣어주깅! netplan apply후 ip a 한다음

 

기도하고 systemctl restart named

jin.zone 파일이 잘 있다~ 달다 달아

 


 

우분투에서 master server 우리 조원 두명 (rocky9) slave 세팅

 

 

슈퍼나이스 닷컴 드가자~

 

 

apache2설치해주고 요렇게index파일 세팅해주고 웹에서 supernice.com을 치면!

 

 

 


 

로키에서 slave server 우리 조원(효정씨) master인 세팅

 

 

짱구 닷컴 드가자~

 

 

 

 

 

 

캬 짱구존~

 

캬 홈페이지까지 ㅋㅋㅋ사진 야무지시네 ㅋㅋㄹㅇㅋㅋㅋ


 

 

오후 수업..ansible..대망의...덜덜

=============================
 Ansible을 이용한 리눅스 서버 자동화 관리
=============================

**서버에 SSH 설치되고 관리자 로그인이 허용되어 있어야 함
**Clone 작업전에 BASIC으로 초기화할 것
**기존에 GNS3에 연동하던 서버는 그대로 놔두고 새로 Clone으로 작업할 것!!

☞ Rocky 9 3대 -----------------------------> Bridge Mode
☞ Ubuntu Desktop 3대   -----------------> Bridge Mode
☞ Ubntun Server 3대      -----------------> Bridge Mode
===================================================
Rocky 9-1 192.168.10.241 Master
Rocky 9-2 192.168.10.242 node1-bluescreen.com      RAM 4GB
Rocky 9-3 192.168.10.243 node2-bluescreen.com      RAM 1GB
Ubutnu d-1 192.168.10.244 node3-bluescreen.com      RAM 1GB
Ubutnu d-2 192.168.10.245 node4-bluescreen.com      RAM 1GB
Ubutnu d-3 192.168.10.246 node5-bluescreen.com      RAM 1GB
Ubutnu s-1 192.168.10.247 node6-bluescreen.com      RAM 1GB
Ubutnu s-2 192.168.10.248 node7-bluescreen.com      RAM 1GB
Ubutnu s-3 192.168.10.249 node8-bluescreen.com      RAM 1GB
====================================================
유진 192.168.10.31 ~ 39
효정 192.168.10.41 ~ 49
지혜 192.168.10.51 ~ 59
부성 192.168.10.61 ~ 69
한빛 192.168.10.71 ~ 79
희원 192.168.10.81 ~ 89
지용 192.168.10.91 ~ 99
종훈 192.168.10.101 ~ 109
현호 192.168.10.111 ~ 119
준영 192.168.10.121 ~ 129
동찬 192.168.10.131 ~ 139
상우 192.168.10.141 ~ 149
장원 192.168.10.151 ~ 159
상윤 192.168.10.161 ~ 169
정민 192.168.10.171 ~ 179
현우 192.168.10.181 ~ 189

 

 

사전작업 

1. 아이피 설정  9번을 마스터, node 1번은은 아이피 1, node 2번은 아이피 2번

2. 호스트 네임 변경 mast, node1,node2...

3. SSH 관리자 로그인 허용까지 걸어두기

☞새터미널 열어서 확인

☞ssh localhost

☞grep Root /etc/ssh/sshd_config

☞ssh node1 ~ node8 접속확인

192.168.10.59 master
192.168.10.51 node1
192.168.10.52 node2
192.168.10.53 node3
192.168.10.54 node4
192.168.10.55 node5
192.168.10.56 node6
192.168.10.57 node7
192.168.10.58 node8

 

for i in $(seq 1 9);

do

ping -c 1 192.168.10.5$i;

done

 

 

올핑 잘 떨어진다

 


 

웹에서 리눅스 서버 관리하는 방법

 

dnf update -y && dnf upgrade -y 먼저 이후

 

cockpit을 깔아보자

 

ss -napt는 구동중인 서비스 확인 9090이 cockpit 포트임

 

그리고 웹에서

https://192.168.10.59:9090해서 고급 클릭 후 들어가서 user0 123456들어가면

 

짜자잔 이렇게 뜬다
에 루트 막아뒀죠? 어떻게 들어가나요? 네 터미널로 이동 ㄱㄱ
터미널에서 su -하면 루트로 짜자잔~


ansible 설치하기

 

ansible은 마스터만 설치, 클라이언트는 x

클라이언트가 망가져서, 클라이언트 들어갈일은 있어도

우리가 node1~8까지 직접 들어갈 일x

마스터에서 다 작업해요~!

 


(1) 레드헷 계열에서 설치하는 경우

dnf install epel-release 해서 패키지 저장소부터 설치하기

 

이제부터 중요한거는 앞으로는 -y빼고 설치하기

실무에서는 보안팀이 검수 및 보안팀이 직접 패키지 설치함, 업데이트 설치 마음대로 xxx

그래서 -y를 함부로 붙이면 안돼요

 

 

 

dnf install ansible 저기 종속꾸러미들이 epel에서 추가로 알아서 자동 다운해주는거다 python이 들어가있다
밑에 보이는 gpg가 인증키라 생각하면 된다 ssh에서 printfinger그거임 ㅋㅋ

 


 

(2) 우분투에서 설치하는 경우

 

sudo apt update

sudo apt install software-properities-common

sudo add-apt-repository --yes --update ppa:ansible/ansible

sudo apt install ansible

sudo ansible --version

 


(3) 데비안 계열에서 설치하는 경우

 


ansible이 제대로 설치됐는지 점검하는거 사전점검!!

 

 

내가 만든거 그룹으로 보여줍니다 -i는 생략가능하면 알아서 가져오고 -i는 특정 인벤토리 가져오는거임

[root@master my-ansible]# ansible-inventory -i ./inventory  --list
{
    "_meta": {
        "hostvars": {}
    },
    "all": {
        "children": [
            "ungrouped"
        ]
    },
    "ungrouped": {
        "hosts": [
            "192.168.10.51",
            "192.168.10.52",
            "192.168.10.53",
            "192.168.10.54",
            "192.168.10.55",
            "192.168.10.56",
            "192.168.10.57",
            "192.168.10.58"
        ]
    }
}

 

 

conf = configure =cfg 다 환경설정 파일들! 콤푸들~

경로 요렇게 요약 가능하쥬? 왜? my-ansible이랑 inventory랑 같은 경로니까~

 

 

요러면 ansible 사전 준비는 끝!

 


 

 

플레이북~(노드들을 제어하는 북!!)

그래서 이 북을 제어하기 위한 필수 파일들은!

1. ansible.cfg

2.inventory

 

 

 

 

[defaults]
inventory = ./inventory #인벤토리 파일 경로 지정해주는거
remote_user = user 		#노드에 접속할 계정명! (생략시 현재 사용중인 계정으로 접속하는거임!)
ask_pass = false		#암호 물어봐! false지? 응 안물어봐~ 이파일 사용시 암호는 생략할게요!(암호는 ssh접속암호임 123456)

[privilege_escalation]	#보안설정하고 감사(보안이 잘 작동하는지 확인하는거)
become = true			#권한 에스컬레이션 활성화 하겠다! true!
become_method = sudo	#sudo 권한도 허용해줄거임!
become_user = root		#관리자 권한 허용 해줄꺼임!
become_ask_pass =false	#암호 물어봐? 응 생략~

 

 

SSH 자동인증: 암호 없이 로그인 설정!! 미리 걸어둬야함

 

예를 들어 노드가 900개야 그럼 암호를 900번쳐야함ㅋㅋㅋㅋ엌ㅋㅋㅋ

그래서 SSH 자동로그인을 걸어둬야함,.^^

우린 파일명지정안하니 (엔터), 비밀번호도 지정안할꺼니(엔터)

 

[root@master my-ansible]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 파일명 없지롱 엔터
Enter passphrase (empty for no passphrase): 비밀번호도 세팅안해 엔터
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa 여기 경로에 공개키
Your public key has been saved in /root/.ssh/id_rsa.pub 여기 경로에 개인키
The key fingerprint is:
SHA256:1bFkfb8uSVERPy8km00voK25YZJhAfgUsSlkcOX8edI root@master
The key's randomart image is:
+---[RSA 3072]----+
|  ..+o=o    +. oo|
|   +.o.+   + o..o|
|    .o= . . = +oo|
|     ... = o X .+|
|        S E + = +|
|       . = o . + |
|        o = . o  |
|         o o o . |
|          .   .  |
+----[SHA256]-----+
[root@master my-ansible]# ls -a /root/.ssh/
.  ..  id_rsa  id_rsa.pub  known_hosts  known_hosts.old

 

 

 

 

 for i in $(seq 1 8);
> do
> ssh-copy-id root@192.168.10.5$i;
> done

자 하나씩 달려봅시다..!

짜자잔 비번 안치고~ 이제 그냥접속 가능

 

편안하죠? 바로 접속?

 

클라이언트 node1에서는 이렇게 인증키가 잘있다!


 

 

이제 ansible 이용한 점검 드가자!!

 

잘 묶어줍시다!! 정리정리! 아이피는 랜덤 골고루으로~
어라라 핑이 안떨어짐;; ansible -m ping db 왜냐? user로 핑이갔으니....
우리가 아까 remote_user를 user로 넣었죠? 이걸 root로 바껴줄거에요!
ㄱ그럼 이렇게 잘 갑니다!!!