스타트업 시스템 구성에 대한 보고서
1. 전체 시스템 구성도
Rainbow 시스템 구성도
▶ 스타트업 이름: Rainbow
▶ 팀원 이름: red, yello, green
위 사진은 Rainbow 시스템의 전체 구성도이다. 내부 컴퓨터인 Server(b)에 Web server, DB server, OpenSSH server를 두었다. 여기서 추가적으로, 외부에서 내부 네트워크의 OpenSSH 서버를 접속하기 위해서는 SSH Tunnel이나 VPN 등을 활용해야할 것이다. Server에는 방화벽을 구현하였고, DNS server, Mail server, OpenSSH server를 구축하였다.
2. 각 구성에 대한 간단한 설명 & 각 구성에 대한 시연 영상
1) "각자 서버에 접속할 수 있는 계정이 있었으면 좋겠다. (인원은 3명)"
스타트업 시스템 구성에 Server와 Server(b)가 활용되므로 Server와 Server(b)에 각각 adduser 명령어를 활용하여 팀원 red, yellow, green에 대한 사용자 계정을 생성하였다. (adduser red, adduser yello, adduser green 입력)
adduser 명령어를 실행하면 /etc/passwd, /etc/shadow, /etc/group 파일에 새로운 행이 추가된다.
시연 영상
▶ Server에 red, yellow, green 사용자 계정 생성
▶ Server(b)에 red, yellow, green 사용자 계정 생성
2) "재택근무가 가능하도록 서버에 원격으로 접속하면 좋겠다."
원격접속은 OpenSSH Server을 활용하였다. Telnet은 암호화되지 않은 데이터를 전송하므로 네트워크 스니핑, IP 스푸핑과 같은 공격에 매우 취약하다. 따라서 데이터를 전송할 때 패킷을 암호화하는 SSH 서버를 사용하기로 하였다.
실습 과정
- apt update 입력 후 apt install openssh-server로 SSH 설치
- 설치 후 systemctl restart ssh로 ssh를 가동한 뒤, systemctl enable ssh로 ssh 상시 가동 설정하고, systemctl status ssh를 입력하여 ssh 가동 여부를 확인하였다.
- ufw allow 22/tcp로 방화벽에서 ssh의 22번 포트를 허용하도록 해주었다.
시연 영상
Server(192.168.91.139)는 OpenSSH Server를 PuTTY에서 접속하고, Server(b) (192.168.91.128)는 OpenSSH Server를 Git-Bash에서 접속해보았다.
Server를 PuTTY에서 red, yellow, green 각각 원격 접속
Server(b)를 Git-Bash에서 red, yellow, green 각각 원격 접속
아래 5번 방화벽 구축에서 IP 주소 변경 후 Server(b)를 리눅스에서 red, yellow, green 각각 원격 접속
3) "스타트업 이름의 메일 서비스가 별도로 있었으면 좋겠다."
DNS Server와 Mail Server 모두 Server(192.168.91.139)에서 구축을 진행했다. 구축 시 Windows Terminal을 활용하여 원격접속 후 진행하였다.
또한 메일 전송 테스트를 위해 Evolution을 활용하였고, 이것은 Client(Kubuntu)를 이용했다.
실습 과정
*DNS Server 구축*
- apt install bind9 bind9utils로 패키지를 설치한다.
- /etc/bind/named.conf.options, /etc/bind/named.conf.local, /etc/bind/rainbow.com.db 경로에서 DNS Server 구축을 위한 내용을 입력해준다.
- named-checkconf 입력, named-checkzone rainbow.com /etc/bind/rainbow.com.db를 입력하여 설정이 제대로 되었는지 확인한다.
- systemctl restart bind9 명령어로 bind9을 재시작한 뒤 systemctl enable bind9, systemctl status bind9 입력
- ufw disable로 방화벽을 비활성화한 뒤 /etc/resolv.conf에서 nameserver의 경로를 Server의 IP 주소(192.168.91.139)로 변경한다.
- nslookup으로 질의하여 잘 설정되었는지 확인한다.
*Mail Server 구축*
- apt install sendmail로 패키지를 설치한다.
- /etc/hostname에서 server 이름을 mail.rainbow.com으로 변경하였다.
- /etc/hosts와 /etc/mail/local-host-names에서 IP와 URL 설정 뒤, /etc/resolv.conf에서 DNS 서버가 잘 설정되어있는지 확인하고 재부팅한다.
- hostname을 입력하여 host 이름이 잘 바뀌었는지 확인한다.
- /etc/mail/sendmail.cf에서 98행을 수정하고 269, 270행의 addr=127.0.0.1을 삭제하여 다른 Client의 ip주소에서도 메일을 보낼 수 있도록 수정한다.
- /etc/mail/access에서도 파일을 수정해준 뒤 makemap hash /etc/mail/access < /etc/mail/access 입력 후 sendmail을 재시작해준다. (systemctl restart sendmail, systemctl enable sendmail)
- apt install dovecot-pop3d을 입력해 패키지를 설치한다.
- /etc/dovecot/dovecot.conf, /etc/dovecot/conf.d/10-mail.conf에서 내용 수정 후 dovecot을 재시작해준다.
- ufw disable 명령어로 방화벽을 비활성화 해주었다.
*Evolution 설치*
- apt update 후 apt install evolution으로 evolution을 설치해준다.
- Client의 네트워크 설정에서 DNS 서버를 192.168.91.139로 설정해준 뒤 재부팅한다.
- Evolution의 사용자는 red로 설정하였고, red와 yellow, green이 각각 메일을 주고받는 시연영상을 업로드하였다.
시연 영상
red@rainbow.com이 yellow@rainbow.com, green@rainbow.com에게 "Hi, I'm red." 메세지를 전송하고, yellow@rainbow.com이 red@rainbow.com, green@rainbow.com에게 "Hi, I'm yellow." 메세지를 전송하고, green@rainbow.com이 red@rainbow.com, yellow@rainbow.com에게 "Hi, I'm green." 메세지를 전송하는 시연영상이다.
4) "스타트업 제품을 홍보할 웹 페이지가 있었으면 좋겠다."
Web Server는 Server(b)인 192.168.91.128에 구축하였다. 아래 5번 방화벽 설정 문제에서 Server(b)가 내부 네트워크에 포함될 것이다.
실습 과정
- 먼저 웹 서버에 필요한 패키지들을 다운받아야한다. 방법은 apt install lamp-server^로 다운받는 방법과, 도커를 활용하는 방법이 있는데 이번 실습에는 전자의 방법으로 진행했다.
- apt install lamp-server^ 로 웹 서버에 필요한 패키지 Apache, PHP, Mysql을 한번에 설치해주었다.
- ufw allow 80으로 방화벽에서 외부 접속을 허용해준다. 이제 호스트 컴퓨터의 웹 브라우저에서 192.168.91.128로 접속하면 아파치 웹서버가 정상적으로 작동하고 있는 것을 확인할 수 있다.
- mysql 쉘에서 rainbow_db를 생성하고 DB 설정을 진행한다.
-그리고 /var/www.html 경로에서 wget https://wordpress.org/latest.tar.gz 를 입력하여 워드프레스를 설치했다.
- 워드프레스와 아파치 서버 설정 파일을 변경해준 뒤 웹 브라우저에서 192.168.91.128로 접속하여 최종적으로 Wordpress를 설치해주었다.
시연 영상
Rainbow 웹페이지 시연영상이다. 스타트업 제품을 홍보할 수 있도록 메인 페이지에 여러 게시글을 작성할 수 있도록 하였으며 스타트업 소개 페이지와 여러가지 카테고리가 존재한다.
5) "팀 내에서 사용하는 서버에 해커가 침입하지 않았으면 좋겠다."
방화벽 정책
정책1. 내부 컴퓨터는 외부 인터넷을 사용할 수 있도록 한다.
정책2. 외부 컴퓨터는 내부에 접속할 수 없도록 한다.
정책3. 외부 컴퓨터가 방화벽 서버의 공인 IP로 웹 서비스를 요청할 때는 내부에 있는 웹 서버가 서비스 한다.
실습에는 스타트업에서 사용하는 서버가 구축되어있는 Server, Server(b)를 활용하였다.
Rainbow 웹페이지를 구축했던 Server(b)는 내부 네트워크에 포함시켰고, Server는 방화벽 컴퓨터로 구현하였다.
그리고 외부 네트워크에 속하는 외부 컴퓨터는 특정한 컴퓨터가 아닌 인터넷 상의 모든 컴퓨터를 말한다.
실습 과정
- Server(b)의 네트워크를 NAT에서 Bridged로 변경해준 뒤, 아래와 같이 네트워크를 설정해주었다.
*Server(b)
→ IP: 10.1.1.20, 넷 마스크: 255.255.255.0, 게이트웨이: 10.1.1.1, DNS: 8.8.8.8
- Server는 네트워크 장치를 추가해서 Bridged로 설정한다. 추가한 네트워크 설정에서도 마찬가지로 아래와 같이 설정한다.
*Server
→ ens32의 경우, IP: 192.168.91.139, 넷 마스크: 255.255.255.0, 게이트웨이 & DNS: 192.168.91.2
→ ens35의 경우, IP: 10.1.1.1, 넷 마스크: 255.255.255.0
- 방화벽 정책 1, 2에 대한 설정을 진행한다.
- 특히 방화벽 정책2 설정 과정에서 ens35, en32 장치로 모든 패킷이 통과하도록 설정하고, ens32에 마스커레이드를 허가해주면 내부 컴퓨터가 인터넷 접속이 가능해지는 것을 확인할 수 있다.
- 방화벽 정책3 구현하기 전에, Server(b)에서 앞에서 만들었던 Wordpress 웹사이트를 준비하고, 아파치 서버를 재시작한 뒤 ufw allow http 명령어를 통해 http로 접근하는 패킷 접속을 허용해주었다.
- 이제 Server에서 아래와 같이 규칙을 추가하여 정책 3번까지 구현하고 iptables.rules에 규칙을 반영해주면 정책 1~3번까지 구현이 완료된다.
iptables --table nat --append PREROUTING --in-interface ens32 --jump DNAT --proto tcp --dport 80 --to-destination 10.1.1.20
(ens32 장치로 패킷이 들어오면, 도착지 주소를 변경 DNAT 하는데, tcp 프로토콜인지 체크하고 도착지 ip 주소는 10.1.1.20으로 설정한다.)
시연 영상
방화벽 정책 1, 2, 3번 모두 잘 적용되었는지 시연해보았다. 정책 1, 2번을 확인하기 위해 ping 테스트를 진행했고, 3번은 위 4번에서 만든 웹사이트를 외부에서 접속해보았다.
▶정책 1번 테스트: 외부 컴퓨터인 Host computer로 각각 ping 보내기
외부 컴퓨터는 내부에 접속할 수 없는 것을 확인할 수 있다.
▶정책 2번 테스트: 내부 컴퓨터인 Server(b)에서 각각 ping 보내기
Host computer의 IP주소: 192.168.0.1
내부 컴퓨터는 내부와 외부 모두 접속이 가능한 것을 확인할 수 있다.
▶정책 2번 테스트: 내부 컴퓨터인 Server(b)에서 각각 ping 보내기
Host computer에서 웹 서버를 접속하고, Server(b)에서 netstat 명령어로 접속한 ip 주소를 확인하는 영상
내부 네트워크에 포함된 Server(b)에서 Wordpress 사이트를 구축했지만, 외부 컴퓨터인 Host computer에서 Server의 IP주소를 입력했을 경우 방화벽 정책 3번으로 인해 웹 서버에 잘 접속되는 것을 확인할 수 있다. (Host computer의 IP주소: 192.168.0.1)
3. 회고
수업 시간 내에 실습할 때는 매주 초기화를 한 뒤 네임 서버, 메일 서버, 웹서버 등을 구축하였지만, 이번 기말 과제를 통해 초기화를 하지 않고 모두 한번에 구축을 해볼 수 있었다. 전체 시스템 구성도를 그려보면서 현재까지 배웠던 다양한 서버들을 머릿 속에 정리할 수 있어 좋았다. 다만 이번 실습을 하면서 아쉬웠던 것은, IP 주소 설정과 방화벽 구축을 먼저 한 뒤에 메일 서버, 웹서버를 구축했으면 더 수월히 진행되었을 것 같다는 생각이 들었다. 4번까지 웹페이지를 만든 후에 방화벽 정책을 적용하니 페이지는 잘 접속되었지만, CSS가 깨지는 것을 확인할 수 있었다. 따라서 방화벽 구축 후에 다시 워드프레스를 재설정해주는 작업이 필요했다. 약간의 시행착오를 겪긴 했지만, 스타트업에서 사용할 환경을 모두 구축하고, 연결해볼 수 있어 좋은 경험이 되었던 것 같다!
'Linux > 실습 기록' 카테고리의 다른 글
VirtualBox에서 CentOS SSH 설정 및 접속하기 (0) | 2022.04.08 |
---|---|
[컴퓨터시스템관리] 2021.06.01 14주차 실습일지 - 방화벽 서버 구축, Docker 실습 (0) | 2021.06.02 |
[컴퓨터시스템관리] 2021.05.25 13주차 실습일지 - Web Server (0) | 2021.05.25 |
[컴퓨터시스템관리] 2021.05.18 12주차 실습일지 - Mail Server (0) | 2021.05.18 |
[컴퓨터시스템관리] 2021.05.11 11주차 실습일지 - Domain Name Server (0) | 2021.05.11 |