포스트

통합 실습 1 - 윈도우 서버(NAT 서버) + 리눅스 서버(HTTP, DNS, FTP) + SSH 접속


윈도우 서버 NAT 서버로 활용(SNAT, DNAT)해서 리눅스 서버들에 접속할 수 있도록 설정하고, 가상의 외부 인터넷에서 서비스를 접근할 수 있는지 확인하는 실습을 진행한다.




시나리오


  • SVR1 (Window 2022 서버) => NAT 서버

    • Ethernet0 (NIC)

      • IP : 192.168.1.110/24 GW : 192.168.1.2

      • 외부 인터넷에서 모든 서버는 이 주소로 인식함.

    • Ethernet1 (NIC)

      • IP : 10.10.10.253/24

      • 내부의 서버들이 외부와 통신할 때 사용하는 게이트웨이

  • 리눅스 서버

    • CentOS8 => HTTP, FTP 서버

      • IP : 10.10.10.10/24 GW : 10.10.10.253

      • FTP

        • ID : ftpuser PW : 1234
      • HTTP

        • 접속하면 “Welcome minyeokue.gitblog => centos8”가 출력되도록 한다.
      • PuTTY를 통해 외부에서 SSH로 접근할 때 22000포트를 사용한다.

      • 위의 사항들은 HTTP FTP 서버 구동 단계에서 진행한다.

    • CentOS7 => DNS 서버

      • IP : 10.10.10.20/24 GW : 10.10.10.253

      • 웹 브라우저 주소창에 “www.minyeokue.gitblog”를 입력하면 접속할 수 있도록 한다.


시나리오 토폴로지 시나리오 토폴로지

최종적으로 SVR2라는 가상의 외부 IP에서 테스트를 진행하면서 실습을 마칠 것이다.



환경 구성


리눅스 서버 설정


CentOS8을 설정한다.

  • IP : 10.10.10.10/24 GW : 10.10.10.253 DNS : 8.8.8.8

  • 서버 이름 : web-ftp

CentOS8 설정 1 CentOS8 설정 1

CentOS8 설정 2 CentOS8 설정 2


위의 사진들과 같이 설정한 뒤, nmcli con up [NIC 이름] 명령어를 통해 NIC를 재활성화해서 입력한 IP 정보들이 적용될 수 있도록 한다.


CentOS7을 설정한다.

  • IP : 10.10.10.20/24 GW : 10.10.10.253 DNS : 8.8.8.8

  • 서버 이름 : dns


위에서 입력했듯이 hostnamectl set-hostname [변경하고자 하는 이름] 명령어를 입력해 서버의 이름을 바꾸고, nmtui 명령어를 입력해 위의 리스트와 같도록 설정한다.


현재 NAT 서버를 활성화하지 않았다. ping 명령어로는 내부 네트워크의 web-ftp 서버와는 통신이 가능하지만, 게이트웨이가 없고 외부 네트워크와 통신할 수 없다.

CentOS7 통신 불가 CentOS7 통신 불가


통신이 안되는 것이 정상적인 상태이고 기본 설정을 마쳤으니, 이제 윈도우 서버에서 진행한다.



윈도우 서버 설정


윈도우 서버 2022를 부팅하고 로그인하면 자동으로 실행되는 서버 관리자의 화면이다.

Win2022 서버 관리자 Win2022 서버 관리자


강조된 로컬 서버를 클릭한다.


Win2022 로컬 서버창 상태 Win2022 로컬 서버창 상태

컴퓨터 이름은 SVR1이며, 현재 랜카드를 2개 장착한 상태이기 때문에, Ethernet0와 Ethernet1이 존재하고, IE 보안 강화 구성이 해제된 상태이다.


빨간 박스로 강조된 Ethernet0와 Ethernet1의 파란 글씨 부분을 클릭한다.


Win2022 네트워크 연결 설정 Win2022 네트워크 연결 설정

내부 게이트웨이 역할을 수행할 Ethernet1을 설정한다.


Win2022 IP 설정 Win2022 IP 설정

1 -> 2 -> 3 -> 4 -> 확인 -> 확인 -> 닫기 순으로 진행한다.


다시 서버 관리자로 돌아와서 다음의 강조된 부분을 주의한다.

Win2022 IP 설정 Win2022 IP 설정


관리 메뉴 -> 역할 및 기능 추가를 선택한다.


역할 및 기능 추가 마법사라는 창이 뜰 것인데, 다음 버튼을 누르고, 역할 기반 또는 기능 기반 설치가 체크되어 있는지 확인 후, 다음 버튼을 누른다.

역할 및 기능 추가 마법사 설정 1 역할 및 기능 추가 마법사 설정 1


역할 및 기능을 설치할 서버를 현재 서버 -> SVR1로 선택하고 다음 버튼을 클릭한다.

특수한 상황이 아니면 기본으로 선택되어 있다.

역할 및 기능 추가 마법사 설정 2 역할 및 기능 추가 마법사 설정 2


서버의 역할을 선택할 때 원격 액세스 체크 박스를 선택하고 다음 버튼을 클릭한다.

역할 및 기능 추가 마법사 설정 3 역할 및 기능 추가 마법사 설정 3


다음 버튼을 누르면 나오는 다음 단계에서는 아무것도 선택하지 않고 다음, 다음 버튼 연속으로 2번 누른다.

역할 및 기능 추가 마법사 설정 4 역할 및 기능 추가 마법사 설정 4


역할 서비스 선택에서 DirectAccess 및 VPN(RAS)라우팅을 선택하면 나오는 팝업창도 기능 추가 버튼을 누른 뒤, 다음 버튼을 누른다.

역할 및 기능 추가 마법사 설정 5 역할 및 기능 추가 마법사 설정 5

역할 및 기능 추가 마법사 설정 6 역할 및 기능 추가 마법사 설정 6

역할 및 기능 추가 마법사 설정 7 역할 및 기능 추가 마법사 설정 7


이제 웹 서버 역할(IIS) 단계일 때와 역할 서비스 단계에서 다음 버튼을 총 2번 누른다.

확인 단계에서 설치 버튼을 선택한다.

역할 및 기능 추가 마법사 설정 8 역할 및 기능 추가 마법사 설정 8


설치가 진행되고 프로그레스바가 가득 차서 완료되면 닫기 버튼을 누른다.

역할 및 기능 추가 마법사 설정 완료 역할 및 기능 추가 마법사 설정 완료


역할 및 기능 추가 마법사창을 닫고 나면 알림이 경고 표시가 나오게 된다. 시작 마법사 열기를 선택한다.

알림창 경고 표시 알림창 경고 표시


시작 마법사 열기를 누르면 잠시 뒤 Remote Access 구성창이 나오게 된다. 맨 아래의 VPN만 배포를 선택한다.

Remote Access 구성 Remote Access 구성


VPN만 배포를 선택하면 라우팅 및 원격 액세스창이 팝업된다. 해당 창에서 SVR1(로컬)을 오른쪽 마우스 클릭으로 눌러서 -> 라우팅 및 원격 액세스 구성 및 사용 메뉴를 선택한다.

라우팅 및 원격 액세스 구성 라우팅 및 원격 액세스 구성


라우팅 및 원격 액세스 구성 및 사용을 선택하면 라우팅 및 원격 액세스 서버 설치 마법사창이 팝업된다.

다음 버튼을 누른 뒤, NAT(네트워크 주소 변환) 라디오 버튼을 선택하고 다음 버튼을 누른다.

라우팅 및 원격 액세스 서버 설치 마법사 1 라우팅 및 원격 액세스 서버 설치 마법사 1


외부와 연결될 가상의 공인 IP를 가진 네트워크 인터페이스를 선택하고 다음 버튼을 누른다.

라우팅 및 원격 액세스 서버 설치 마법사 2 라우팅 및 원격 액세스 서버 설치 마법사 2

만약 어떠한 네트워크 인터페이스도 나오지 않는다면 다음 버튼을 누른 뒤, 나오는 단계에서 마침 버튼을 누르고 다시 SVR1(로컬)을 오른쪽 마우스 클릭하고 라우팅 및 원격 액세스 구성 및 사용 메뉴를 선택한다. -> 지금까지 진행한 과정을 빠트리지 않았다면, 위의 사진과 같게 나올 것이다.


기본 이름 및 주소 서비스 사용 라디오 버튼이 체크되어 있을 것이다. 다음 버튼을 선택한다.

라우팅 및 원격 액세스 서버 설치 마법사 3 라우팅 및 원격 액세스 서버 설치 마법사 3


주소 범위 할당 단계에서 윈도우-서버-설정에서 4번째 사진에서 진행했던 설정대로 진행할 것인지 나오게 된다. 다음 버튼을 선택하고, 마침 버튼을 누른다.

설정이 완료되고 SVR1(로컬)에 초록색 화살표가 위로 향하는 아이콘과 함께라면 활성화된 상태이다.

이제 리눅스 서버에 HTTP, FTP, DNS 서버를 구축할 수 있다.


리눅스 서버 HTTP, FTP 서버 구동


필요한 패키지를 설치하기 전에, 외부 인터넷과 통신이 가능한지 ping 명령어로 확인한다.

CentOS8에서 Win2022 NAT 서버를 통해 통신 가능 CentOS8에서 Win2022 NAT 서버를 통해 통신 가능


통신이 가능한지 확인했으니, yum -y install httpd vsftpd vim 명령어를 입력해 CentOS8에 웹 서버와 FTP 서버를 구축하기 위한 패키지들을 설치한다.


설치가 완료되면 echo 'Welcome minyeokue.gitblog => centos8' > /var/www/html/index.html 명령어를 입력해 리디렉션으로 기본 웹 페이지를 저장한다.

/var/www/html은 HTTP 서비스의 기본 디렉토리이고 해당 디렉토리에 index.html이 없다면 CentOS8 기본 웹 페이지가 출력되게 된다.

/etc/httpd/conf/httpd.conf에서 약 CentOS8기준 166번 줄에서 정의하고 있는 DirectoryIndex에서 값을 변경하면 기본 파일을 변경할 수 있다.

/etc/httpd/conf/httpd.conf 기본 html 파일 이름 설정 /etc/httpd/conf/httpd.conf 기본 html 파일 이름 설정


systemctl enable --now httpd 명령어를 입력해 아파치 웹 서버를 구동하면서 컴퓨터를 재부팅해도 웹 서비스 데몬이 실행될 수 있도록 한다.


이제 FTP 서버에 접속할 때 사용할 계정을 생성하자. useradd ftpuser를 입력하고, 바로 이어서 password ftpuser를 입력한다.

시나리오에서 설정했듯이 비밀번호는 “1234”로 한다.

systemctl enable --now vsftpd 명령어를 입력해 FTP 서버를 구동하면 CentOS8에서의 설정은 끝났다.


리눅스 DNS 서버 구성 및 구동


DNS 서버 구동을 위해 필요한 패키지를 다음 명령어를 입력해 설치한다.

1
2
3
4
5
6
7
8
9
# 패키지 설치
[root@dns ~]# yum -y install vim caching-nameserver

# ...
# ...
Complete!

# DNS 서버 설정 파일 수정
[root@dns ~]# vim /etc/named.conf

/etc/named.conf 수정 /etc/named.conf 수정


이어서 /etc/named.rfc1912.zones를 수정한다.

/etc/named.rfc1912.zones 수정 /etc/named.rfc1912.zones 수정

화살표처럼 수정할 수 있도록 한다.


이제 /var/named로 이동해서 기본 영역 파일을 권한과 함께 복사하도록 한다.


영역 파일 권한과 함께 복사 영역 파일 권한과 함께 복사


/var/named/minyeokue.gitblog.zone 수정 /var/named/minyeokue.gitblog.zone 수정

위와 같이 192.168.1.110으로 준 이유는 외부 인터넷에서 봤을 때 DNS 서버와 HTTP 서버가 192.168.1.110으로 SNAT 되었기 때문이다.

SNAT란 Source NAT의 줄임말로, 단순히 말해서 출발지의 IP를 변경하는 것이다. 공인 IP 주소의 목적지에서 다시 출발지로 응답을 받기 위해서 출발지 IP 주소가 필요한데, 공인 대역에서는 사설 대역으로의 경로를 알 수 없으므로 공인 IP 목적지로 서비스를 요청할 때 출발지에서는 사설 IP를 별도의 공인 IP로 NAT하는 것을 말한다.


이 과정까지 진행되었다면, 이제 방화벽 설정을 수정한다.

systemctl status firewalld 명령어를 입력해 리눅스 OS 방화벽 상태를 확인한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@dns ~]# systemctl status firewalld
# ...
# 활성화 상태 확인
# ...

# 방화벽 상태 확인
[root@dns ~]# firewall-cmd --list-all
# ...
# ...

# DNS 서비스 추가
[root@dns ~]# firewall-cmd --permanent --zone=public --add-service=dns
# ...
# ...

# 방화벽 변경 적용
[root@dns ~]# firewall-cmd --reload


NAT 서버 포트포워딩


DNAT는 Destination NAT의 줄임말로, 단순히 말해서 포트포워딩과 의미가 비슷하다. 공인 IP로 들어온 요청을 사설 IP에 구축된 목적지로 연결하기 위한 서비스이다.


윈도우 서버 설정의 마지막 부분으로 돌아가서 SVR1(로컬)을 확장 -> IPv4를 확장 -> NAT 더블 클릭 -> Ethernet0(공인 IP와 연결)을 오른쪽 마우스 클릭 -> 속성을 누른다.

NAT 서버 포트포워딩 1 NAT 서버 포트포워딩 1


Ethernet0 속성창에서 필요한 서비스는 FTP, HTTP, DNS인데 먼저 맨 위의 FTP 서버를 선택한다.

NAT 서버 포트포워딩 2 NAT 서버 포트포워딩 2

NAT 서버 포트포워딩 3 NAT 서버 포트포워딩 3


이어서 맨 아래 부분으로 스크롤을 내려서 웹 서버(HTTP)를 선택한다.

NAT 서버 포트포워딩 4 NAT 서버 포트포워딩 4

NAT 서버 포트포워딩 5 NAT 서버 포트포워딩 5


그리고 DNS 서버인데, DNS는 목록에 없기 때문에 우리가 추가해주도록 한다.

NAT 서버 포트포워딩 6 NAT 서버 포트포워딩 6


DNS 서버에 질의를 보낼 때 UDP를 사용하고, Zone Transfer나 512Byte를 초과하는 패킷을 보낼 때 TCP를 사용하기 때문에 TCP와 UDP 모두 추가해줘야 한다.

다음과 같이 진행한다.

NAT 서버 포트포워딩 7 NAT 서버 포트포워딩 7

NAT 서버 포트포워딩 8 NAT 서버 포트포워딩 8

NAT 서버 포트포워딩 9 NAT 서버 포트포워딩 9


총 4개의 포트포워딩을 마친 상태이다. 적용 혹은 확인 버튼을 누른다.

NAT 서버 포트포워딩 완료 NAT 서버 포트포워딩 완료


테스트


SVR2 -> IP : 192.168.1.120/24에서 테스트를 진행한다. 가상의 외부 인터넷에서 진행한다고 가정할 것이다.

SVR2 테스트를 위한 IP 설정 SVR2 테스트를 위한 IP 설정


웹 서버 구동 확인 웹 서버 구동 확인

DNS 서버 구동 확인 DNS 서버 구동 확인


FTP 서버 구동 확인 FTP 서버 구동 확인


PuTTY로 NAT 서버에 22000번 포트로 접속하면 CentOS8의 22번 포트와 연결시켜보겠다.

보안적으로는 CentOS8의 포트도 22000번으로 바꾸는 것이 좋다.

NAT 서버에서 포트포워딩을 진행한다.

SSH 포트포워딩 SSH 포트포워딩


CentOS8에서 SSH로 접속할 때 root 계정으로 접속할 수 없도록 해야하니 수정하도록 한다.

ssh 관련 설정 파일은 /etc/ssh/sshd_config에서 수정한다.

vim /etc/ssh/sshd_config 명령어를 입력한다.

SSH root 계정 로그인 금지 SSH root 계정 로그인 금지


ssh 관련 설정을 변경했으니 systemctl restart sshd를 입력하는 것을 잊지 않아야 한다.

이제 ssh 사용자를 위한 계정을 생성하자.

useradd sshuser, passwd sshuser 명령어를 연달아 입력해서 생성하고 암호를 지정한다. 암호는 1234로 하겠다.


이제 PuTTY로 HostOS에서 접속해보자.

HostOS에서 PuTTY 접속 HostOS에서 PuTTY 접속

모든 테스트가 완료되었다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.