가상머신

[가상머신] 리눅스 방화벽 구축 실습

HoOn_Y 2024. 11. 20. 21:38

위 구현도를 기반으로 함

 

1) Virtual Network Editor 접속

 

VMnet8 IP대역을 192.168.111.0으로 변경

 

2) Server2 접속

3) 우측 상단 Network Adapter 우클릭 설정

 Network Adapter 설정 >> Network Connection >> Bridged: Connected directly to the physcial network 체크

 

 

 

 

 

4) nmtui edit ens160 >> 바로 ens160 랜카드 설정으로 접속 됨.

 

위와 같이 설정 후

ifdown ens160

ifup ens160

 

or

 

nmcli connection down ens160

nmcli connection up ens160

 

vi /etc/selinux/config >> selinux = disabled 인지 확인

 

5) Client도 마찬가지로 접속해서

 Network Adapter 설정 >> Network Connection >> Bridged: Connected directly to the physcial network 체크

 

6) Client도 nmtui나 GUI를 이용해서

 

IPv4 : 10.10.10.10 /24

Gateway : 10.1.1.1

DNS : 8.8.8.8

 

설정

 

Client도 vi /etc/selinux/config >> selinux = disabled 인지 확인

 

7) Server >> Settings

 

Add > Network Adapter2 추가 >> Network Adapter2 Bridged 체크

 

 

8) 추가된 랜카드 아래와 같이 설정

설정 후 ifdown ens224 / ifup ens224

 

9) vi /etc/sysconfig/network-scripts/ifcfg-ens224

GATEWAY, DEFROUTE 주석처리

 

 

10) vi /etc/sysctl.conf

net.ipv4.ip_forward = 1 맨 아래 입력

 

 

11) echo 1 > /proc/sys/net/ipv4/ip_forward >> ‘1’은 활성화, ‘0’은 비활성화

 

12) iptables --policy FORWARD DROP

      iptables --policy INPUT DROP

      iptables --policy OUTPUT DROP

 

(5월 28일 실습에서는 10.10.10.0 대역으로 변경함)

 

13) iptables - -append INPUT - -in-interface ens224 --source 10.1.1.0/24 --match state --state NEW,ESTABLISHED --jump ACCEPT

  1. 어떤 데이터를 받아들일지 결정해요 : **INPUT**은 시스템에 들어오는 데이터를 의미합니다. 즉, 시스템에 온 데이터를 다룰 거에요.
  2. 어떤 인터페이스를 사용할지 결정해요 : **ens224**는 특정 네트워크 인터페이스를 가리킵니다. 이 규칙은 ens224 인터페이스를 통해 들어오는 데이터를 다룰 거에요.
  3. 어디서 오는 데이터를 받아들일지 결정해요 : **10.1.1.0/24**는 특정한 네트워크 주소 범위를 가리킵니다. 여기서는 **10.1.1.0**부터 **10.1.1.255**까지의 모든 주소를 가리킵니다.
  4. 어떤 종류의 데이터를 받아들일지 결정해요 : 여기서는 **NEW**와 **ESTABLISHED**라는 두 가지 상태에 있는 데이터를 받아들이겠다고 설정했어요. **NEW**는 새로운 연결을 의미하고, **ESTABLISHED**는 이미 연결이 설정된 데이터를 의미합니다.
  5. 데이터를 허용할지 거부할지 결정해요 : 마지막으로 **j ACCEPT**는 해당 조건에 맞는 데이터를 허용하겠다는 것을 나타냅니다. 따라서 이 명령어는 설정한 모든 조건에 부합하는 데이터를 허용합니다.

요약하면, 이 명령어는 ens224 인터페이스를 통해 10.1.1.0/24 네트워크에서 오는 새로운 연결과 이미 설정된 연결을 허용합니다.

 

iptables - -apend OUTPUT - -out-interface ens224 - -destination 10.1.1.0/24 - -match state - -state NEW, ESTABLISHED - -jump ACCEPT

 

iptables - -append FORWARD - -in-interface ens224 - -source 10.1.1.0/24 - -destination 0.0.0.0/0 - -match state - -state NEW,ESTABLISHED - -jump ACCEPT

 

iptables - -append FORWARD - -in-interface ens160 - -destination 10.1.1.0/24 - -match state - -state ESTABLISHED - -jump ACCEPT

 

 

14)

iptables --table nat --append POSTROUTING --out-interface ens160 --jump MASQUERADE

 

nat테이블에 POSTROUTING이라는 체인이 있는데 거기에

 

iptables-save > /etc/sysconfig/iptables-config

 

 

iptables -L << 정책이 잘 적용됐는지 확인하는 명령어

 

15) 방화벽 열어서

 

설정 : 영구적 > 마스커레이딩 >> 마스커레이딩 영역 체크

 

16) 이후 본 PC(윈도우)에서 Filezilla 다운로드

(실습에서는 ‘FileZilla_Server-0_9_60_2’ 버전 사용)

  1. 파일질라 접속 후 비밀번호 ‘1234’ 쳐서 로그인
  2. 좌측 상단 ‘Edit’ > ‘Users’ 밑에 add 눌러서 ‘centos’, 비밀번호도 ‘centos’ 계정 추가
  3. shared folder는 C:\로 설정
  4. 우측 FIles, Directories 권한 모두 체크   

17)윈도우 방화벽 파워쉘로 설정하기

netsh advfirewall firewall add rule name="FTP서버" dir=in action=allow protocol=tcp localport=21

 

 

iptables 설정 > filezilla 서버 로그인 >> 윈도우 powershell에서 netstat /an 쳤는데

외부 ip 주소로 192.168.111.0 대역이 뜨는지 확인(안 뜨는 경우, 문제는 없으나 그냥 안 뜨는 오류일 수도 있음)

 

 

18) server2에 httpd 서버 설정

  1. httpd 패키지 설치
  2. vi /etc/www/html/config 접속
  3. vi index.html (내용은 아무렇게나)
  4. firewall-cmd --permanent - -add-service=http / firewall-cmd --permanent --add-service=https / firewall-cmd --reload

19) server에 가서

iptables --table nat --append PREROUTING --proto tcp --in-interface ens160 --dport 80 --jump DNAT --to-destination 10.10.10.230(Server B의 ip)

 

작성 후

 

 

iptables-save > /etc/sysconfig/iptables 명령어로 저장

 

 

20)

nmcli connection down ens160

nmcli connection up ens160

 

 

21) 원래 PC(윈도우)에서 인터넷창을 키고 http 웹서버에 접속하려고 하면

웹서버가 있는 Server2의 ip를 입력하는게 아닌 방화벽 서버인 Server의 아이피

(192.168.111.130)을 입력해야 함