.. _installing-policy-server-ubuntu:

.. role:: raw-html(raw)
    :format: html
      
Ubuntu OS 설치
=================================
ZTNA를 설치하기 위해서는 사전에 **Ubuntu OS (20.04.4 LTS)** 설치가 필요합니다. 
    .. note::
      가상화 환경에서 Ubuntu OS를 설치하기 전 **secure boot** 설정 **disable** 을 권고합니다. :raw-html:`<br/>`
      enable 상태에서는 일부 모듈들이 정상적으로 로드되지 않을 수 있습니다. :raw-html:`<br/>`
      `vmware secure boot 설정`_

하드웨어 준비
---------------
물리적 시스템 또는 가상 시스템에 정책서버를 설치할 수 있습니다.

**시스템 할당 자원(최소 요구사항)**
    ZTNA Policy Server 
        - CPU : Intel(R) Celeron(R) CPU G3900 @ 2.80 GHz 이상 
        - 메모리 : 8GB 이상
        - 디스크 : 120GB 이상 권장
  
    ZTNA Network Sensor
        - CPU : Intel(R) Celeron(R) CPU J1800 @ 2.41 GHz 이상 
        - 메모리 : 8GB 이상
        - 디스크 : 64GB 이상 권장
        
**가상머신**
    가상 시스템에 정책서버를 설치할 수 있습니다. 
    Genian ZTNA는 VMWare, VirtualBox, XenServer와 같은 다양한 하이퍼 바이저를 지원합니다.

 
사전준비
------------

**1. 이미지 파일 준비**

- Ubuntu 20.04.4 LTS 이미지 파일은 `우분투 공식 홈페이지 <https://releases.ubuntu.com/20.04/>`_ 에서 다운로드 할 수 있습니다. 
     - Ubuntu Desktop과 Ubuntu Server 모두 사용 가능 합니다.

**2. H/W에 설치하는 경우, 부팅USB를 제작해주시기 바랍니다.**

.. toctree::
   :maxdepth: 1

   bootable-usbdrive

**3. AWS 인스턴스에 설치하는 경우 ,** :ref:`인스턴스 생성 방법<instance-setting>` **을 참고하여 설치해 주시기 바랍니다.**




 

Ubuntu OS 설치 - Ubuntu Desktop
------------------------------------
Ubuntu 공식 홈페이지 이미지 파일을 이용하여 Ubuntu Desktop 설치를 진행할 수 있습니다.

**Step 1: 장비 부팅**
    

    * H/W 혹은 가상머신에 설치하기
        - 부팅 USB를 통해 H/W 장비를 부팅 합니다.
        - 다운로드한 ISO파일을 가상머신에 업로드합니다.
         

**Step 2: 최초 Ubuntu 설치**

1. Ubuntu Desktop 설치 이미지가 있는 부팅 가능한 USB 드라이브로 부팅 합니다. 가상 머신일 경우 다운로드한 ISO 파일을 가상 머신에 업로드 한 후 가상머신을 실행 시킵니다.
:raw-html:`<br/>`
	
2. 사용자 환경에 맞는 Ubuntu Desktop 언어 설정을 하고 **Install Ubuntu** 를 클릭합니다.
:raw-html:`<br/>`

3. 키보드 레이아웃을 선택하고 **Continue** 버튼을 클릭합니다.
:raw-html:`<br/>`

4. ZTNA 구축에 불필요한 프로그램 설치를 하지 않기 위하여 설치 옵션을 **Minimal Installation** 선택하고 **Continue** 버튼을 클릭합니다.
:raw-html:`<br/>`

5. 설치 타입을 **Erase disk and install Ubuntu** 를 선택하고 **Install Now** 를 클릭합니다.  
:raw-html:`<br/>`

     - 설치 타입 **Something else** 를 선택시 운영체제의 파티션·파일 시스템을 직접 구성 할 수 있습니다. 
  
6. 파티션 변경 사항을 확인하고 **Continue** 를 클릭합니다.
:raw-html:`<br/>`

7. 타임존을 설정하고 **Continue** 를 클릭합니다.
:raw-html:`<br/>`

8. Ubuntu OS 사용자 정보를 입력하고 **Continue** 를 클릭합니다. **Continue** 클릭 시 설치가 진행됩니다. 
:raw-html:`<br/>`

            .. note ::                        
                +----------------------+--------------------------------------------------------+  
                | 필드 명              | 설명                                                   |
                +----------------------+--------------------------------------------------------+
                | Your name            | 사용자 이름 입력                                       |
                +----------------------+--------------------------------------------------------+
                |Your computer’s name  | 장비 이름 입력                                         |
                +----------------------+--------------------------------------------------------+
                |Pick a username       |사용자가 Ubuntu에 로그인 시 사용할 계정(ID) 입력        |
                +----------------------+--------------------------------------------------------+
                |Choose a password     |사용자가 Ubuntu에 로그인 시 사용할 계정 비밀번호 입력   | 
                +----------------------+--------------------------------------------------------+
                |Confirm your password |사용자가 Ubuntu에 로그인 시 사용할 계정 비밀번호 재입력 |
                +----------------------+--------------------------------------------------------+


    
9.  설치가 완료 되면 **Restart Now** 버튼을 클릭해 재부팅 합니다.
:raw-html:`<br/>`

10.  부팅 가능한 USB를 제거하고 **Enter** 키를 입력합니다. 가상화 장비일 경우 바로 **Enter** 키를 입력하여 다음 과정으로 넘어 갑니다.
:raw-html:`<br/>`

11.  사용자 계정을 클릭하고 8번 과정에서 입력 했던 사용자 정보로 로그인 합니다.
:raw-html:`<br/>`    


.. _ubuntu-desktop-networksetting:

Ubuntu Desktop 네트워크 설정
'''''''''''''''''''''''''''''''
- 고정 IP를 할당하여 장비를 운용하는 것을 권장 합니다. 동적 IP 사용시, 장비의 IP가 변경될때 마다 장비 configuration을 수정해야 합니다.

- On-premise 환경에서 Ubuntu Desktop의 고정 IP 설정 방법이 작성된 문서입니다.



1. 바탕화면 우측 상단 **▼ => Settings** 를 클릭합니다.
   
.. image:: /images/UbuntuOS_network(1).png
   :width: 450px

2. **Network => Wired** 안에 있는 톱니바퀴 아이콘을 클릭합니다.

.. image:: /images/UbuntuOS_network(2).png
   :width: 450px

3. **IP Method => Manual** 선택 후 IP 설정을 진행 합니다.

.. image:: /images/UbuntuOS_network(3).png
   :width: 450px

4. 설정 완료 후 Wired 옵션을 비 활성화 한 다음, 다시 활성화 시킵니다.

.. image:: /images/UbuntuOS_network(4).png
   :width: 450px

.. image:: /images/UbuntuOS_network(5).png
   :width: 450px

5. Wired의 톱니바퀴 아이콘을 클릭해 IP 주소 입력이 제대로 적용 되었는지 확인합니다.
   
.. image:: /images/UbuntuOS_network(6).png
   :width: 450px



Ubuntu OS 설치 - Ubuntu Server
---------------------------------

Ubuntu 공식 홈페이지 이미지 파일을 이용하여 Ubuntu Server 설치를 진행할 수 있습니다.

**Step 1: 장비 부팅**
    

    * H/W 혹은 가상머신에 설치하기
        - 부팅 USB를 통해 H/W 장비를 부팅 합니다.
        - 다운로드한 ISO파일을 가상머신에 업로드합니다.

**Step 2: 최초 Ubuntu 설치**

1. Ubuntu Server 설치 이미지가 있는 부팅가능한 USB 드라이브로 부팅합니다. 가상 머신일 경우 다운로드한 ISO 파일을 가상 머신에 업로드 한 후 가상머신을 실행 시킵니다.
:raw-html:`<br/>`

2. 사용자 환경에 맞는 언어를 선택합니다.
:raw-html:`<br/>`

3. 키보드 레이아웃을 설정 합니다.
:raw-html:`<br/>`

4. 네트워크 연결 설정을 위해 사용중인 네트워크 인터페이스를 선택합니다.
:raw-html:`<br/>`

5. **Edit IPv4** 를 선택합니다.
:raw-html:`<br/>`

6. **Automatic (DHCP)** 옵션을 **Manual** 로 바꾸어 선택합니다.
:raw-html:`<br/>`

7. 하단의 표를 참고 하여 각 항목에 알맞은 값을 입력하고 **Save** 를 선택합니다.
:raw-html:`<br/>`

            .. note ::                        
                +---------------------------+--------------------------------------------------------+  
                | 항목(필수 입력)           | 내용                                                   |
                +===========================+========================================================+
                |  subent(필수 입력)        | 서브넷 마스크 입력                                     |
                +---------------------------+--------------------------------------------------------+
                |  Adress(필수 입력)        | 해당 장비에서 사용할 IP 주소                           |
                +---------------------------+--------------------------------------------------------+
                |  Gateway(필수 입력)       | 게이트 웨이 주소                                       |
                +---------------------------+--------------------------------------------------------+
                |  Name Server(필수 입력)   | DNS 서버 주소                                          | 
                +---------------------------+--------------------------------------------------------+
                | Search domains            | 공란                                                   |
                +---------------------------+--------------------------------------------------------+

8. 네트워크 인터페이스 하단에 설정한 IP가 있는지 확인합니다.
:raw-html:`<br/>`

9.  Proxy Address를 입력하지 않고 **Done** 을 선택합니다.
:raw-html:`<br/>`

10. 리눅스 업데이트 서버 설정 과정은 수정하지 않고 **Done** 을 선택합니다. 
:raw-html:`<br/>`

11. 리눅스 업데이트 진행 여부를 묻는 과정 입니다. **Continue without updating** 을 선택해 업데이트를 실시 하지 않고 설치를 진행합니다. 
:raw-html:`<br/>`

     - 리눅스 업데이트 진행 시, ZTNA 설치가 정상적으로 안 될 수 있습니다.

12.  **Use an entire disk** 와 **Set up this disk as an LVM group** 를 체크하고 **Done** 을 선택합니다.
:raw-html:`<br/>`

     - 12번 과정 진행 중 **Custom storage layout** 을 선택하면 운영체제의 파티션 · 파일 시스템을 직접 구성할 수 있습니다.

13.  변경되는 파티션과 파일 시스템을 확인 하고 **Done** 을 선택합니다.
:raw-html:`<br/>`

14. 파티션 변경 사항이 이상이 없을 경우 **Continue** 를 선택합니다.
:raw-html:`<br/>`

15. Ubuntu OS 사용자 정보를 입력하고 **Done** 을 선택합니다.
:raw-html:`<br/>`

            .. note ::                        
                +----------------------+--------------------------------------------------------+  
                | 필드 명              | 설명                                                   |
                +----------------------+--------------------------------------------------------+
                | Your name            | 사용자 이름 입력                                       |
                +----------------------+--------------------------------------------------------+
                |Your computer’s name  | 장비 이름 입력                                         |
                +----------------------+--------------------------------------------------------+
                |Pick a username       |사용자가 Ubuntu에 로그인 시 사용할 계정(ID) 입력        |
                +----------------------+--------------------------------------------------------+
                |Choose a password     |사용자가 Ubuntu에 로그인 시 사용할 계정 비밀번호 입력   | 
                +----------------------+--------------------------------------------------------+
                |Confirm your password |사용자가 Ubuntu에 로그인 시 사용할 계정 비밀번호 재입력 |
                +----------------------+--------------------------------------------------------+

16. Ubuntu 개발 회사인 Canonical의 유료 기술 지원을 받기 위한 Token을 설정하는 과정은 값을 입력하지 않고 **Done** 을 선택합니다. 
:raw-html:`<br/>`

17. 운영을 위해 외부 Terminal 접속이 필요한 환경일 경우 **Install OpenSSH server** 를 체크 합니다. 필요하지 않은 경우 체크 하지 않고 **Done** 을 선택 합니다.
:raw-html:`<br/>`

18. Ubuntu Server에서 추가 기능 설치 부분은 추가 하지 않고 **Done** 을 클릭합니다.
:raw-html:`<br/>`

19. 좌측 상단에 **Install complete** 가 출력되면 **Reboot Now** 를 선택합니다.
:raw-html:`<br/>`

20. 부팅 USB가 연결되어 있을 경우 제거하고 **Enter** 를 입력합니다.
:raw-html:`<br/>`

21. 15번 과정에서 입력한 사용자 정보로 로그인을 진행합니다.
:raw-html:`<br/>`



Ubuntu Server 네트워크 설정
'''''''''''''''''''''''''''''''
- 고정 IP를 할당하여 장비를 운용하는 것을 권장 합니다. 동적 IP 사용시, 장비의 IP가 변경될때 마다 장비 설정을 수정해야 합니다.
 
- On-promise 환경에서 Ubuntu Server 고정IP 설정 방법이 작성된 문서입니다.

.. note :: Ubuntu Server 설치 과정에서 네트워크 설정을 하지 못했을 경우 해당 문서를 참조 하십시오.

1. root 계정으로 전환합니다. 
:raw-html:`<br/>`

2. 장비의 네트워크 인터 페이스를 확인합니다.  
:raw-html:`<br/>`

3.  **/etc/netplan**  경로로 이동합니다.
:raw-html:`<br/>`

4. 해당 경로에 존재하는 .yaml 파일을 편집기로 수정합니다.
:raw-html:`<br/>`

 .. code-block:: bash    

    $ sudo su # root 계정으로 전환
    $ ifconfig # 장비의 네트워크 인터페이스 확인
    $ cd /etc/netplan # yaml파일 설정을 위해 디렉토리 이동
    $ vim 파일명.yaml # 파일 편집기를 통해 yaml파일 수정 

5. 2번 과정에서 확인한 인터페이스가 .yaml파일에 있는지 확인합니다.
:raw-html:`<br/>`

6. 고정 IP 설정을 진행합니다.
:raw-html:`<br/>`

.. image:: /images/UbuntuOS_network(7).png
   :width: 450px

7. 장비를 재부팅 하고 해당 문서의 2번 과정을 통해 IP가 정상적으로 변경 되었는지 확인합니다.
:raw-html:`<br/>`


외부 접속을 위한 OpenSSH-Server 설치 방법 
---------------------------------------------

SSH 접근을 위해 Ubuntu OS 장비에 OpenSSH-Server 설치가 필요 합니다.

.. code-block:: bash

     $ sudo su # root 권한 획득
     $ apt install openssh-server # openssh-server 설치
     $ systemctl status ssh # openssh-server 동작 상태 확인 

- OpenSSH-Server 설치 후 , SSH Client를 통해 장비에 접속 합니다. 

.. _기술지원센터: https://genians.slack.com/

.. _VMWARE secure boot 설정: https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.security.doc/GUID-898217D4-689D-4EB5-866C-888353FE241C.html