Hyper-v 서버에 연결(원격)

Hyper-V Server 2016 / 2019 free 의 경우 서버 생성 및 관리를 위해서 서버에 접속하여 사용이 되지 않고

자신의 PC 에 Hyper-V를 활성화 한뒤에 “서버에 연결…” 기능을 통해서 관리가 가능 하다. (Hyper-V – 나무위키 (namu.wiki))

즉 자신의 PC 에서 설정을 한뒤 아래와 같이 화면이 나오면 이를 통해서 관리 할 수 있다.

20240710_164937

다만 그냥 연결을 시도 해봐야 연결이 될리가 없고 꽤 번거로운 설정이 필요 하다.

기존 메뉴얼의 경우 찾아 보았으나 IP를 근거로 활용해서 접속하는 방법과 2개 이상 Hyper-V Server 를 접속하는 방법을 찾아서 포스팅을 한다 ‘ㅅ’a

 


 

일단 Hyper-V Server 에 원격으로 접속된 화면 에서 다음과 같이 “7) 원격 데스크톱”이 사용(보안 수준이 높은 클라이언트만) 으로 설정 되어 있어야 한다.
20240710_161201

 


 

자신의 PC 에 Hyper-V를 설치 하고 PowerShell 창을 열어서 다음과 같은 명령어를 실행 한다.

Hyper-v 의 두개 일 경우에 대한 설명이기 때문에 자신에 맞게 하나만 쓴다던가 하자 ‘ㅅ’a

cmdkey 의 경우 자격 증명 관리자에 아래 그림과 같이 windows 자격 증명을 생성하게 된다.

20240710_163851

 


 

로컬 컴퓨터 정책(gpedit.msc) 을 실행해서 컴퓨터 구성 >> 시스템 >> 자격 증명 위임 >> 서버 인증이 NTLM 전용일 경우 새로운 자격 증명 허용 으로 이동하고 아래 그림과 같이 “WSman/[서버IP]” 설정을 추가 하고 적용 한다.

20240710_16214420240710_16225620240710_162618

 


 

마지막으로 접속할 PC의 Hyper-V 에서 “서버에 연결…” 버튼으로 연결을 한다.

20240710_163450

 

연결이 된다면 첫번째 스크린샷과 같이 자신의 PC 의 Hyper-V 와 원격 Hyper-V Server 가 목록에 나타나고 관리를 할 수 있다. 🙂

 

 

Docker 로그 설정

WEB 및 WAS 를 docker 를 이용해서 구현을 하다 보니 디스크 사용량이 점점 많이 증가 하게 된다.

컨테이너를 지우고 새로 띄우면 로그는 날라 가지만 주기적으로 해야 하는 불편함…..

 

그래서 docker 에서 /etc/docker/daemon.json 에 로그 관련 설정을 추가 한다. (50MB, 10개)

 

그리고 Docker 를 재시작 한다.

 

이미 실행된 Container 에는 적용 되지 않는다. 즉 새롭게 생성한 Container만 적용이 된다.

docker container update 로도 변경 되지 않는 항목이기 때문에 컨테이너를 삭제하고 run을 새로 해야 한다.

CVE-2024-6387 – regreSSHion 취약점

openssh 명령어의 취약점이 공개 되었다.

인터넷 진흥원 공지: https://www.krcert.or.kr/kr/bbs/view.do?searchCnd=&bbsId=B0000133&searchWrd=&menuNo=205020&pageIndex=1&categoryCode=&nttId=71480

심각도가 high 이고 root 권한 탈취가 가능하기 때문에 외부에 ssh 가 공개되는 서버는 필히 업데이트를 하는것이 좋다.

 

영향을 받는 ubuntu 버전은 22.04 ~ 24.04 이며 RHEL 9 의 경우 업데이트가 필요 하다. (ssh -V 를 했을때 버전 8.5p1 ~ 9.8p1)

 

다른 방법 으로는 sshd_config 에서 LoginGraceTime 을 0으로 수정하는 방법이 있는데 DDOS 에 취약해지니까 가급적 패치를 하도록 한다.

 

Ubuntu 공지: https://ubuntu.com/blog/ubuntu-regresshion-security-fix

RockyLinux 공지: https://rockylinux.org/news/2024-07-01-openssh-sigalrm-regression

Docker 와 firewall-cmd 사용법

Rockylinux(OracleLinux) 8.x 에서 Docker 는 run/start/stop 을 할때
Docker-proxy 가 iptables 를 이용해서 DOCKER, DOCKER-USER, DOCKER-ISOLATION-STAGE-1, DOCKER-ISOLATION-STAGE-2 등의 Chain을
만들어 관리 하기 때문에 기존에 설정된 firewall 설정을 무시하고 호출이 가능한 상태가 된다.

OCI 에서는 인스턴스에 시큐리티 리스트에서 아이피/포트를 관리할 수 있으나
스위치의 access_list 처럼 같은 서브넷에 속한 모든 서버가 영향을 받기 때문에 firewall 에서
설정한 포트만 오픈을 하고자 할때 사용할 수 있는 방법이다.(OCI 안에서 여러 인스턴스를 운영하거나 로컬에서 Docker 서버를 운영할때..)

AWS 의 보안 그룹은 각 인스턴스 별로 작동하기 때문에 불필요 하다.


  1. 먼저 도커의 iptables 사용 옵션을 끄고 docker 를 재시작 한다.
  2. firewalld 에서 설정된 값을 모두 초기화 한다.
  3. Docker 의 네트워크 정보를 확인 한다.
  4. Container 에서 호스트롤 통해 outbound 를 위한 설정을 추가 한다. (첫번째줄에 Docker의 네트워크 정보를 입력해서 실행 해야 한다.)
  5. inbound 를 위한 설정을 추가 한다.
  6. 필요에 따라 아래와 같이 inbound 설정을 추가 한다. (nginx-docker 를 위한 80(tcp), 443(tcp/udp) 을 연다.)

 

마지막에 여는 명령어를 보면 알겠지만 열려고 하는 컨테이너의 IP를 알아야 한다.

때문에 Container 으로 진입해서 ifconfig 를 보면 알 수 있겠지만 매우 귀찬은 관계로 스크립트를 작성 하였다.

실행하면 아래와 같이 나오는데 필요한 Container 부분만 실행을 해서 사용하면 된다.

20240620_131234


출처: https://firewalld.org/2024/04/strictly-filtering-docker-containers

Docker 를 이용한 데이터베이스 사용법

Web / Was 만 도커를 이용해 배포하는 이유는 Mysql, MariaDB 등의 공식 도커가 너무 잘되어 있어서 이다.

그래서 이용하는 법만 알면 되는데.  ‘ㅅ’a

공식 소개 페이지에 잘 나와 있긴 하지만 docker 사전 지식 없이 사용을 하기엔 설명을 건너 뛴 부분이 많다.

 

여기서는 MariaDB 공식 도커이미지를 가지고 간단히 DB를 띄우는 방법에 대한 부분만 설명 한다.

사용할 버전은 10.11 버전이다. 10.11을 사용하는 이유는 LTS 이기 때문에 지금 당장은 가장 오랜 업데이트가 지원될 예정이기 때문이다. (https://endoflife.date/mariadb)

 

사용할 도커 이미지: mariadb – Official Image | Docker Hub

 

1. 이미지 pull 및 run을 한다.

 

2. mysql을 이용 한다. = _ =..

 

3. 그냥 글을 마무리 하기 심심하니.. 데이터베이스 생성, 유져 생성 쿼리…

 


 

PS. docker run 에 대한 옵션에 대한 설명.

--restart unless-stopped : stop 명령을 내린게 아니라면 (재부팅 또는 도커를 스탑 한경우..) 자동으로 시작 하는 옵션.

-v /etc/mysql/mariadb.conf.d/:/etc/mysql/mariadb.conf.d/ : my.cnf 수정이 필요한 DB 튜닝의 경우 /etc/mysql/mariadb.conf.d/custom.cnf 파일을 만들고 내용을 넣고 컨테이너를 재시작 하면 적용 된다.

-v /var/lib/mysql:/var/lib/mysql : mysql 의 데이터 폴더를 마운트 한다.

docker를 이용한 데이터베이스 사용은 업데이트를 편하게 하기 위함이기 때문에 container 를 다시 run 하면 안의 내용을 모두 유실 하게 된다. 때문에 이와 같이 주요 폴더는 호스트OS 와 연결 하여 사용 하면 된다.

--env TZ=Asia/Seoul 만들려는 인스턴스의 timezone을 Seoul(+9) 으로 설정 한다.

--env MARIADB_ROOT_PASSWORD=루트패스워드 run 할때 루트패스워드를 지정해서 생성 한다.(미지정시 랜덤 생성)

 


 

연결할 WEB / WAS 구현은 아래 글을 확인합니다 ‘ㅅ’a

OCI arm 인스턴스에서 docker로 web, was 사용