Linux

Linux #27

broom7946 2023. 5. 3. 15:49

가상화 서버(Hypervisor KVM) 설정 및 활용

 가상화(Virtualization)는 물리적으로 존재하지 않지만 존재하는 것처럼 활용할 수 있는 기법을 말한다. 컴퓨터에서의 가상화는 주로 강력한 하드웨어를 기반으로 해서 구성되지만(이를 수직적 개념으로 부름), 성능이 떨어지는 여러 머신들을 조합해서(이를 수평적 개념이라고 부름) 분산파일 시스템 구조로 성능 좋은 시스템을 꾸릴 수도 있다. 현재 실습에서 사용하는 VMware VMware, Oracle VirtualBox, MS VirtualPC는 클라이언트용 가상머신이다.

  가상화란 예를 들어서 VMware Citrix와 같은 가상화 서버로 구축할 수 있는 도구를 이용해서 물리적으로 존재하지 않는 서버나 클라이언트 머신들을 파일로 만들어 준다. 이렇게 하면 가상머신들을 어디나 둘 수 있고, 자유롭게 가상머신 객체를 복사/삭제/이동할 수 있게 된다.

  Windows Server에서의 가상화 시스템이 Hyper-V이고,

  Linux에서의 가상화 시스템이 KVM이다.

  가상화 구축에는 가상 노드들이 여유롭게 운영될 수 있도록 매우 강력한 하드웨어(i.e, 100TB HDD, 50GB RAM, 3개의 물리적 CPU를 장착한 머신 정도)가 뒷받침 되어야만 한다. www.virt-tools.org/learning에서 가상화에 관한 정보를 얻을 수 있다.

 

  GUI 상태에서 가상머신들을 생성할 수도 있지만 명령어로 생성할 수도 있는데

virt-install --name=ubuntu-vm --ram=1024 --os-type=linux

--os-variant=ubuntu precise --hvm-connect=qemu:///system

--network network:default --cdrom=/dev/sr0/Ubuntu-12.04.2-desktop-i386.iso --disk-path=/home/virtual_machines/ubuntu-vm식으로 해주면 된다.

 

  하나의 QEMU 가상머신을 선택한 뒤 우클릭하고 메뉴에서 Clone, Migrate...등을 선택해서 추가적인 작업을 해줄 수 있다.

 

  DHCP 서버(dhcp3) 구축하기

  이번에는 로컬 네트워크에서 호스트들에게 IP 주소와 서브넷마스크, 게이트웨이 주소, DNS 서버 주소, DHCP 서버 주소 등을 자동으로 할당해주는 DHCP 서버를 설치해서 활용해보자. DHCP 서버가 있는 곳에서는 각 호스트에 작업그룹과 호스트_명만 관리자가 지정해주면 나머지는 자동으로 설정되어서 인터넷 연결이 된다.

 

  타임서버(NTP:Network Time Protocol) 설정 및 활용

  네트워크상의 모든 호스트들의 시간을 일치시키는 것은 매우 중요한데 시스템 관리나 보안 침투 사고 시 매우 요긴한 정보를 제공하기 때문이다. 여기서 외부 인터넷 전자시계를 서버 시스템과 네트워크 노드들의 시간으로 일치시키는 타임서버(NTP)를 구성할 수 있다.

  로컬 네트워크에서 타임 서버를 설정해 두면 클라이언트 머신의 /etc/rc.local 파일에서 타임서버와 시간을 맞춘 뒤 시스템을 시작시킬 수 있다.

 

  NIS(Network Information System) 설정 및 활용

  현재 Oracle에 합병된 과거 Sun Microsystems사는 유명한 UNIX 운영체제 Solaris와 더불어 서버와 클라이언트 디렉터리 서비스를 위한 yp 프로토콜을 만들어서 사용했다. 이 프로토콜은 네트워크상의 여러 서버가 실행되고 있을 때 다수의 사용자들이 일일이 자신의 크레덴셜로 각 서버에 일일이 로그인하지 않고 NIS 서버에 사용자를 생성해두고 그것을 통해서 각 서버에 일괄 로그인을 인증해주는 서비스이다. 그러므로 NIS는 일종의 중앙 인증과 자원관리 서버로써 LDAP와 유사한 역할을 한다.

  작동 원리는 NIS 서버가 각 사용자에 대한 정보 토큰(token)을 소유하고 있다가 NIS 대응파일으로 변환해서(mapping) NIS 클라이언트들이 로그인할 때 이 대응 파일이 네트워크를 통해서 로그인하고자 하는 서버에 인증을 제공해주는 방식이다. 네트워크에 사용자와 컴퓨터들의 정보를 배포하는 한 가지 방법으로 로그인/패스워드, 홈 디렉터리에 대한 정보를 사용자가 얻을 수 있게 한다. 하지만 안전을 염두에 둔 것이 아니라 편리성을 위한 설정이기 때문에 보안에 취약한 단점이 있어서 현재 널리 사용되지는 않는다.

 

  원격 로그서버(rsyslog) 구축하기

  syslog를 통해서 각 서버에서 생성되는 로그들을 중앙 로그서버로 보내는 rsyslog를 설정해보자. 앞에서 실습했었던 Bacula 백업/복원 서버처럼 각 리얼 서버(Web, Mail, Database, ...)에서 발생되는 로그들을 저장할 중앙 로그 서버(CentOS2)를 두고, 예를 들어 리얼 서버(CentOS1) sshd 데몬을 실행시켜두고, 외부 머신(Ubuntu1) SSH로 리얼 서버에 침투하면 리얼 서버가 로그를 발생시켜서 자신과 원격지의 로그 서버로 로그를 보내는 메카니즘이다. 해커는 A 시스템 침투 후 '흔적 지우기'를 통해서 자신이 침투했었던 흔적이 남아있는 로그를 수정하기 때문에 침투를 당한 A 시스템 이외의 B 시스템에 A 시스템의 로그를 저장해두는 것이 일반적이다. 일반적으로 백업 데이터나 시스템의 설정 파일, 시스템의 로그 파일 등은 별도의 시스템의 저장공간을 사용한다.

Bacula 서버는 웹, 디비, 파일 서버 등에서 발생하는 데이터를 백업/복원하는 도구이고

Rsyslog(원격로그) 서버는 웹, 디비, 파일 서버 등에서 발생되는 로그를 중앙에서 모아두는 도구이다.

 

  NAT(Masquerade) 서버 설정 및 활용

  현재 우리가 가상머신을 구성해서 실습하고 있는 VMware는 이 가상머신들에게 자동으로 라우터와 스위치의 역할을 해주기 때문에 VMware의 네트워크 설정을 NAT로 해서 192.168.100.0과 같은 네트워크 주소로 지정해주면, VMware 안의 각 가상머신들도 네트워크 설정을 NAT로 했을 때 192.168.100.0 네트워크상의 ~.128, ~.129, ~.130, ...식의 IP 주소와 게이트웨이 주소 192.168.100.2를 자동으로 받게 된다.

  내부 사설 IP 주소가 외부로 나갈 때 공적 IP 주소로 바뀌거나,

  외부 공적 IP가 내부로 들어올 때 내부 사설 IP로 전환되게 해주는 기술이 바로 NAT (Network Address Translation)이다.

 

  Kerberos 서버 구축

  Kerberos 서버는 네트워크 인증 프로토콜이다. 티켓(ticket) 기반의 강력한 암호 인증을 호스트에 제공해서 클라이언트와 서버가 더욱 안전한 상태에서 통신하게 한다. 방화벽이 외부에서 침투를 감지한다면 케버러스는 내부 네트워크에서의 침투를 감지한다고 볼 수 있다. 현재 케버러스는 KRB5로 불리는데 서버에 설치해서 중앙에서 인증해주는 시스템으로써 KDC(Key Distribution Center)로 불린다. 이런 구조는 이 KDC 서버에 등록된 리얼 서버에 접속하는 클라이언트들을 신뢰하게 한다. KDC 케버러스 서버는 사용자와 각 호스트에 관한 비밀키를 가지고 있다가 클라이언트가 파일, FTP, SSH, 웹 서버 등에 접속하려고 TGT(Ticket -Granting Ticket)를 요청해 오면 클라이언트에게 티켓을 발행해주고, 클라이언트는 이 티켓으로 인증을 받아서 원하는 서버에 접속할 수 있게 하는 구조이다. 토큰을 사용하는 NIS 서버와 작동 매커니즘이 유사하다. 무선과 Windows 서버에서 원격 접속자를 인증해주는 RADIUS(Remote Authentication Dial In User Service) 인증 서버와 유사하다. 케버러스 서버에서 각 호스트나 사용자를 위해서 토큰을 발급하는데 이를 Ticket으로 부른다.

  Linux 인증 서버인 Kerberos를 통해서 호스트와 사용자를 인증해보자. Kerberos는 시간정보에 민감하므로 서버와 클라이언트 간의 시간 동기화(NTP 서버 이용)가 꼭 필요하다.