Information Security Study
240222 송신서버->수신서버로 로그 전송하기 본문
할 일
인스턴스 생성 = ubuntu 컨테이너 추가 생성 or 가상머신(hostos1, hostos2) 생성
1) 로그를 수납하는 서버를 따로 두겠습니다. 인스턴스 두 개를 더 만들어주세요.
하나는 수납용 서버, 이제 우리가 수업에 활용한 서버 + 방금 생성한 서버가 로그를 발송하는 서버가 됩니다.
2) 양 서버에서 크론탭에서 어플리케이션 및 서버 자원에 대해 주기적으로 로그를 찍어주는 크론잡을 등록해주세요.
예를들어 로그를 분마다 찍는다면 n시간에 1번 그간 쌓인 로그파일의 이름을 전송하는 시점.log로 변경한 다음, 로그 수납 서버로 전송하고, 원본 서버에 있던 로그는 지우는 크론잡을 작성해주세요.
이 때, 발송서버가 2개이므로, 각 발송된 로그파일은 어떤 서버에서 발송했는지 확인할 수 있도록 해 주세요.
3) 위 과정을 완성하셨다면 해당 작업에 대해 노션이나 블로그 포스팅을 남겨주세요.
4) 위 과정이 완료되었다면 어떤 도메인의 인프라를 활용할지도 설계하고 운영 시나리오를 작성해주세요.
컨테이너 3개로 시도하기
1) 두 개의 우분투 컨테이너 생성
수업 때 활용한 서버(shellprac 컨테이너): 발송 서버
ubuntu로 컨테이너 두 개를 생성했다.
log_storage: 수납용 서버
log_sender: 발송용 서버
위 명령어로 log_storage 컨테이너에 접속했다.
storage 계정을 생성한 뒤 디렉토리도 만들어줬다.
storage 서버에서 hostname -I로 ip주소를 확인한 뒤
수업 때 사용한 발송용 컨테이너인 shellprac에서 아래와 같이 로그 생성 및 전송 스크립트를 작성한다.
저장한 뒤에는 실행 권한을 부여한다.
그 후에는 크론잡을 등록한다.
새로 생성한 서버인 log_sender 컨테이너에도 셸 스크립트를 작성하고 크론탭을 수정한다.
수신 서버에는 아래와 같이 셸, 크론잡을 작성한다.
위와 같이 등록하면 매 분마다 각 서버에서 로그를 생성하고 전송하는 작업이 실행된다.
sender1에서 보면 로그가 생성은 됐는데 전송이 되질 않아 삭제가 안되었다!
수신 서버인 storage가 요청을 수락하는지 확인해 보니 연결이 거부되었다고 뜬다.... 왜...이러지
이런 오류가 발생할 경우
1) ssh 서비스가 실행되지 않을 경우
ssh 서비스가 실행중으로 이 경우는 아니다.
2) ssh 포트가 올바르게 열리지 않음
ufw 명령어로 iptables를 확인하려 했는데 이런 오류가.. 혹시 이거 때문에? 근데 이거 gpt한테 물어봐도 답이 없다..
3) 목표 서버 ip나 호스트 이름이 정확하지 않음
이건 아닌듯
4) ssh 서비스가 다른 포트에서 실행 중
이건 아닐듯 ssh 서비스 쓴 적이 없다..
+) 컨테이너말고 host 3개로 시도해야 할 것 같다..
네트워크 브릿지 설정 후 해야 컨테이너끼리 통신이된다!
네트워크(브릿지) 생성한 후 그 위에 인스턴스를 올려야 통신이 가능하다.
네트워크 없이 호스트 위에 도커엔진, 그 위에 컨테이너를 올려 그 컨테이너끼리 통신이 안된다!
나는 이 경우에 해당해서 통신이 안됐던 거다..
컨테이너 아이피는 매번 달라지기 때문에 지정해서 하면 더 수월할 거다!
호스트 3개로 시도하는 건
아래 글 참고하기
https://velog.io/@xeomina/VirtualBox-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%84%A4%EC%A0%95
[VirtualBox] 네트워크 설정
{} : 여러개uname : 시스템 정보 출력날짜 관련목록 확인cd : 디렉토리 이동/생략 가능root@localhost /Tue Apr 5 17:16:38 KST 2022Linuxroot@localhost / September 2020Su Mo Tu We Th
velog.io
네트워크 위에 컨테이너 3개 올려서 다시 시도
컨테이너 3개를 올릴 컨테이너를 생성한 후
컨테이너와 네트워크를 connect 명령어로 연결한 후 bash에 진입한다.
log_storage와 log_sender 컨테이너도 동일하게 진행한다.
수신 서버의 22번 포트가 닫혀있다고 해서 ssh 접근에 대한 설정을 바꾸기로 했다.
opnessh-server를 설치한 뒤
위 라인의 주석을 해제했다.
그러나 아직도 크론탭으로 로그가 자동 발송되지 않는다..
셸 스크립트를 ./log_scriplt.sh 로 직접 실행하니 전송이 되었다.
셸 스크립트의 문제는 아니다.
문제 해결!!
ssh 키 발급을 root가 아닌 sender 계정에서 하면 해결 된다..
storage 계정에도 athorized_keys 파일을 만들어 sender의 공개키를 저장한다.
로그 전송 셸 스크립트에서 scp 구문 앞 뒤에 백틱 `을 넣어주고
sender 크론탭에 bash를 붙여준다.
모두 제대로 작성되었는데 만일 안 된다면
root로 빠져나와
service cron restart를 해서 크론 서비스를 재시작하면 실행이 될 것이다.
+) sender 서버 2에서 크론이 작동하지 않아 위 명령어로 시도하니 제대로 작동할 수 있었다.
과제 성공~~!!!
눈물이 난다...
'네트워크 캠퍼스 > 1차 프로젝트' 카테고리의 다른 글
240227 스프링부트-DB 연결 (1) | 2024.02.27 |
---|---|
240223 젠킨스 호스트-워커 3대 연결 (0) | 2024.02.27 |
240223 도커-스프링부트 연결 시 포트 접속 안 되던 문제 해결 (0) | 2024.02.23 |
240222 도커-스프링부트 연결 (0) | 2024.02.22 |
240221 로그 내역 -> 메일로 전송하기 (0) | 2024.02.21 |