Ansible 설치 방법 : https://dobby-isfree.tistory.com/85
Ansible 설치 방법은 위 게시물에 나와있듯이 매우매우 쉽다.
이번에는 Ansible을 통해 실제 서버 점검 스크립트를 자동으로 돌리기 위한 방법에 대해 알아보자!!
Ansible 원격 접속 허용 사전 작업
먼저 Ansible은 아래 그림에서 알 수 있듯이, Server - Client 구조로 되어 있고, Server -> Client로 SSH 접속을 하는 구조이다.
그렇기에 먼저 Ansible Server에서 Client로 SSH 접속을 할 수 있는 환경을 만들어야 한다.
1. Ansible Server에서 SSH 공개키 생성한다.
아래와 같이 ssh-keygen을 하고 나면 ~/.ssh 경로에 RSA 키 파일이 생성된다. 하나는 공개키, 하나는 개인키이다.
공개키는 말 그대로, 공개된 키 정보이므로, Ansible Client로 공개키를 복사하고 Ansible Server에서는 접속할 때 공개키/개인키를 비교하여 적절한 정보임을 확인하고 접속 한다.
1) id_rsa : SSH 접속을 위한 RSA 개인키이다.
2) id_rsa.pub : SSH 접속을 위한 RSA 공개키이다. 우리는 SSH 공개키를 Ansible Client로 복사해야 한다.
[Ansible Server]
sudo ssh-keygen
cat ~/.ssh/id_rsa.pub
2. Ansible Client로 SSH 공개키 복사한다.
SSH 공개키를 복사하기 위해서는 2가지 방법이 있다. 아래 내용을 참고하여 본인 환경에 맞춰서 선택하면 된다.
1) 운영중인 서버에서 sshd_config 설정 변경이 가능 + sshd 서비스 재기동이 가능한 경우
(1) Ansible Client의 sshd 설정을 변경한다.
- PermitRootLogin은 SSH 접속시 바로 root 로그인 접속을 허용하는 설정이다.
서버 점검 스크립트를 실행할 것이기에 root로 로그인하기 위해 설정하였다. root로 로그인 필요가 없다면 변경하지 않아도 된다.
- PasswordAuthentication은 패스워드 인증을 허용하는 정책이다. SSH 공개키를 복사할 때 ssh-copy-id 명령어를 사용한다.
이때 root 계정에 대해 패스워드로 인증을 해야 한다. 해당 설정을 변경하지 않으면 permisstion deny가 발생한다.
[Ansible Client]
vi /etc/ssh/sshd.config
PermitRootLogin yes
PasswordAuthentication yes
systemctl start sshd.service
(2) root 계정 비밀번호를 설정한다.
만약 root 계정의 비밀번호를 알고있으면, 해당 과정은 진행하지 않아도 된다.
[Ansible Client]
passwd root
새 암호 입력 :
새 암호 재입력 :
(3) Ansible Server에서 Ansible Client로 SSH 공개키 원격 업데이트한다.
ssh-copy-id 후, Ansible Client의 ~/root/.ssh/authorized_keys를 열어보면 id_rsa.pub와 동일한 정보가 업데이트 되어 있다.
[Ansible Server]
sudo ssh-copy-id root@"Ansible Client Ip"
root Password 입력 # Ansible Client의 root PW 입력
2) 운영중인 서버에서 sshd_config 설정 변경이 어려운 경우
위 1)의 과정을 하지 않고, Ansible Server의 SSH 공개키id_rsa.pub) 정보를 Ansible Client의 /root/.ssh/authrized_keys
파일에 직접 복사하면 된다.
[Ansible Server]
cat ~/root/.ssh/id_rsa.pub > 내용 복사
[Ansible Client]
vi ~/root/.ssh/authrized_keys) > 내용 붙여넣기
Ansible 원격 접속 테스트
1. Ansible Server → Ansible Client로 ssh 접속 테스트
[Ansible Server]
ssh@"Ansible Client IP"
[root@"Ansible Client IP" ~]# #SSH 비밀번호 입력 없이 접속 성공
2. Ansible Server에서 Ansible Client ping 테스트 진행
단, Ansible Server에서 사전에 hosts 파일을 수정해야 한다.
[Ansible Server]
ansible -u root clients -m ping
"Ansible Client IP" | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pon
위와 같이 진행하면 Ansible CLI 환경에서 테스트를 할 수 있다.
근데, CLI 환경에서의 작업은 사용자 친화적이지도 않고 작업에 대한 감사 로그 등의 확인이 어려운 단점이 있다.
이런 요구사항에 맞춰 제작된것이 Ansible Tower 또는 AWX 와 같은 솔루션이다.
다음 게시물에서는 AWX에 대해 알아보도록 하자!!
'기술 이모저모 > [Ops] Devops' 카테고리의 다른 글
[Github] Container Image 취약점 점검 Trivy[1/2] (0) | 2022.11.26 |
---|---|
[Ansible] Ansible을 이용한 서버 점검 스크립트 실행 자동화 구현 (0) | 2022.05.29 |
[Ansible] 서버 스크립트 자동 점검 Ansible 설치 방법 [1/2] (0) | 2022.05.26 |
[Gophish] 악성메일 모의훈련 Gophish 운영 방법[2/2] (2) | 2022.05.18 |
[Gophish] 악성메일 모의훈련 Gophish 설치 방법[1/2] (0) | 2022.05.18 |