실습과제 결과
방화벽 컴퓨터를 구축 (사설IP 주소 사용) 하고, Server(b)에 웹 서버 구축 한 뒤 wordpress 를 설치하여 Host Computer에서 접속하기
새로 배운 내용
1. 방화벽 Firewall
1) 방화벽이란
- 방화벽: 미리 정의된 보안 규칙에 기반하여, 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어하는 네트워크 보안 시스템
- 정책 기반 방화벽
ex) 특정 서버에서 오는 얼마 이상의 http 트래픽을 허용하고 로그 남기기
- 구현 방법에 따른 방화벽 분류
• SW 방화벽: 상대적으로 속도가 느리지만 쉽게 설정하고 제어할 수 있음.
• HW 방화벽: 속도와 성능이 좋은 대신에 비용이 많이 든다. 설정하는데 어려움. 초당 패킷 처리 수 증가
• NPU 기반 방화벽: SW+HW 방화벽
2) 방화벽의 역사
1세대 방화벽: 패킷 필터
=>패킷 단위로 검사함. 하지만 패킷 수가 증가하게 되면 시간이 매우 오래걸림.
2세대 방화벽 : 스테이트풀 인스펙션
=>1세대 방화벽의 단점을 보완. 세션 단위로 검사함.
3세대 방화벽: 애플리케이션 방화벽
=>응용 프로그램에 미칠 영향을 분석하는 방화벽.
3) iptables
- 시스템 관리자가 리눅스 커널 방화벽이 제공하는 테이블과 그것을 저장하는 체인, 규칙들을 구성할 수 있도록 해주는 사용자 공간 응용 프로그램
- 체인 chain : 넷필터에서 제공하는 5개의 hook 지점 (패킷처리 지점)
(1) PREROUTING: 장치에 패킷이 도착했을 때
(2) INPUT: 호스트 컴퓨터를 향한 모든 패킷에 대한 처리
(3) OUTPUT: 호스트 컴퓨터에서 발생하여 외부로 내보내는 패킷에 대한 처리
(4) FORWARD: 호스트 컴퓨터가 목적지가 아닌(단지 지나가는) 패킷에 대한 처리
(5) POSTROUTING: 패킷이 장치 밖으로 나가는 시점
• 규칙 : ACCEPT, DROP(없던 것 처럼 버림), REJECT(버리고 응답 패킷 전송), LOG, RETURN(호출 체인 내에서 패킷 처리 계속)
• 기본정책 : 모든 패킷에 대해 DROP 하고, 특별히 지정된 포트와 IP주소에 대해 ACCEPT 수행
4) nonroutable IP 주소를 활용한 네트워크 구성
- 사설 IP를 이용하여 내부 컴퓨터 사이의 트래픽은 허용하고, 외부 인터넷과의 접속은 허용 또는 제한하는 방법
5) IP 마스커레이딩 IP Masquerading
- 내부 컴퓨터들이 리눅스 서버를 통해 인터넷 등 다른 네트워크에 접속할 수 있게 해주는 기능
실습. 방화벽 컴퓨터 구현하기
1. 방화벽 정책
1) 내부 컴퓨터는 외부 인터넷을 사용할 수 있도록 한다.
2) 외부 컴퓨터는 내부에 접속할 수 없도록 한다.
3) 외부 컴퓨터가 방화벽 서버의 공인 IP로 웹 서비스를 요청할 때는 내부에 있는 웹 서버가 서비스 한다.
2. Server(b) 설정
1) 네트워크 설정을 Bridged로 설정한 뒤 실행
2) IP 주소 변경
3. Client 설정 (Kubuntu)
마찬가지로 네트워크 설정을 bridged로 설정 후 실행 후 아래와 같이 설정
Serber(b)로 ping 3번 보내기. 외부망에는 접속할 수 없음.
4. Server 설정 - 방화벽 역할
1) 이번에는 Settings에서 Network adapter를 하나 더 추가해서 Bridged로 설정 후 실행
2) 네트워크 설정에서 하나는 자동, 나머지 하나는 수동으로 설정
정책 1 적용: 외부 컴퓨터는 내부에 접속할 수 없도록 한다.
정책 2 적용: 내부 컴퓨터는 외부 인터넷을 사용할 수 있도록 한다.
/etc/sysctl.conf에서 28행 주석 제거
방화벽 규칙 추가 후 iptables -nL --line-numbers 명령어로 규칙 확인
ens32 에 마스커레이드 허가 후 iptables-save > /etc/iptables.rules 로 설정한 내용 저장
이제 Client에서 인터넷 접속이 잘 되는 것을 확인할 수 있다. (이제 내부 컴퓨터가 외부망에 연결 가능)
5. 웹 서버 연결하기
Server(b)에 nginx 웹 서버 설치(apt install nginx) 후 http로 접근하는 패킷 접속을 허용해준다.
정책 3 적용: server에 다음과 같이 규칙 추가
- nat 테이블에 규칙 추가함.(append)
- ens32 장치로 패킷이 들어오면, 패킷의 도착지 주소를 변경(DNAT) 하는데, tcp 프로토콜(80번 포트)인지 체크하고, 도착지 ip 주소는 10.1.1.20 로 설정한다.
Host computer 에서 웹 서버 접속
도커 Docker
- 컨테이너 기반의 오픈소스 가상화 플랫폼
- 컨테이너 container: 격리된 공간에서 프로세스가 동작하는 기술로 가상화 기술 중 하나
→ 컨테이너는 CPU 나 메모리를 필요한 만큼만 추가로 사용하여 성능 저하 문제가 거의 없음
- 이미지 Image: 컨테이너 실행에 필요한 파일과 설정값 등이 포함되어 있는 것
→ 이미지 내부에는 컨테이너 실행을 위한 모든 정보(의존성 파일)가 포함됨
Docker 실습
1. Docker 실행
2. Docker를 활용하여 mysql 설치하기
3. 컨테이너 생성 및 실행 & container name 붙이기
- 컨테이너 이름은 mysql-container, sql 패스워드는 1234, 연결 포트는 3306, 실행 버전은 mysql:latest 버전
4. Mysql 컨테이너 접속
문제가 발생하거나 고민한 내용 & 해결 과정
▶ 문제 발생
실습 과제를 할 때 Server(b)를 /etc/netplan/00-installer-config.yaml 경로에서 네트워크를 알맞게 설정했는데도 불구하고 reboot를 했을 때 ip주소가 적용이 되지 않았다. 다시 reboot를 시도해도 적용이 되지 않았다.
▶ 해결 방안
Server(b)를 초기화 한 뒤에 동일하게 진행하였더니 해결할 수 있었다.
참고할 만한 자료
방화벽 iptables 설정 시 참고:
https://yunyoung1819.tistory.com/20
https://library.gabia.com/contents/infrahosting/2214/
회고 (+, -, !)
+: 실습을 통해 방화벽의 역할을 직접 실감할 수 있었던 수업이었다. Server(b)와 Client가 처음에는 외부망으로 연결되지 못했지만, Server의 방화벽 정책 설정 뒤 외부망으로 접속이 가능하게 되는 것을 확인해보았던 과정이 흥미로웠다. 또한 방화벽 정책 설정을 통해서 내부망과 외부망 그리고 DMZ에 대한 이해를 다시 생각해 볼 수 있었던 시간이었다.
-: 방화벽 iptable 기본 정책을 설정하는 방법에 대해 더 자세히 알아보지 못해 아쉬웠다. 시험기간이 끝나면 방화벽 iptable 정책을 설정하는 방법을 더 자세히 공부하고 직접 리눅스에서 적용해보고 싶다.
!: 실습 부분에서 iptable을 직접 설정해볼 수 있었다. PREROUTING, INPUT, OUTPUT, FORWARD, POSTROUTING에 대한 개념을 정리할 수 있었다. 그리고 내부 컴퓨터들이 리눅스 서버를 통해 인터넷 등 다른 네트워크에 접속할 수 있게 해주는 기능인 마스커레이드에 대해 알게 되었다. 이번 수업에서 실습해본 방화벽 정책 이외에도 여러 새로운 정책을 직접 적용해보는 실습을 진행해봐야겠다.
'Linux > 실습 기록' 카테고리의 다른 글
VirtualBox에서 CentOS SSH 설정 및 접속하기 (0) | 2022.04.08 |
---|---|
[컴퓨터시스템관리] 2021.06.12 15주차 기말 과제 (0) | 2021.06.12 |
[컴퓨터시스템관리] 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 |