본문 바로가기
Linux & UNIX

방화벽 pc 구축

by fabxoe 2019. 9. 22.

이전 포스트에서 서브넷 마스크에 대해서 공부했었다.

 

이번에는 방화벽에 대해서 배우기 시작했고

본격적으로 사설IP에 대한 개념이 필요하게 되었다.

(네트워크 구축 전문 엔지니어가 아닌이상, 컴퓨터 유저로서 내가 세팅하고 접하는 IP는 거의 사설 IP였다.

그동안 너무 익숙하고도 가까이 하고 있어서 자세히 볼 상황이 거의 없었기 때문일 것이다)

 

 

나중에 참아보고 이 포스트에 업데이트 할 궁금증들

 

사설 IP주소의 범위는, 도대체 어떤 이유가 있어서

172.0.0.0 ~ 172.255.255.255 또는

차라리 100.0.0.0 ~ 200.0.0.0처럼 딱 끊어지는 숫자가 아니라

 

172.16.0.0~172.31.255.255나

192.168.0.0~192.168.255.255같이 특징적인 숫자로 가지는 걸까?

 

또 왜 하필이면 세범위로 나위어져 있는가?

 

 


 

외부 아이피로 접속하면 방화벽에서 타겟PC를 매칭시켜 준다.

방화벽pc 역할은 외부로 부터 네트워크의 내부를 분리 시켜주는 효과를 낸다.

 

 

이번 실습에서 Server pc는 방화벽 pc역할을 하고

Server(B) pc가 웹서버 역할을 할 것이다.


 

이번 실습은 윈도우10에서 수행할 경우

VMware를 반드시 관리자 모드로 실행해야 정상적으로 진행이 가능하다.

Virtual Network Editor에서 VMnet0 Bridged가 관리자 모드에서만 활성화 되기 때문이다.

 

 

 

그림과 같이 Server(B) pc의 네트워크 어댑터를 NAT에서 Bridged로 변경한다.

 

nmtui

IP도 10.1.1.20으로 변경한다.

Gateway와 DNS서버도 변경한다.

네임서버는 KT의 것을 사용하자.

그런 다음 재부팅하자.

 

 

 

 


 

이제 Client pc를 설정하러 가자.

NAT->Bridged 설정후

nmtui실행

Automatic->Manual       동적IP설정을 고정IP설정으로 변경한다.

 

IP 10.1.1.10으로 설정

Gateway와 DNS설정.

 

 

 

 

Server(B)와 Client간에 핑테스트가 정상적이라면 사설망 구성은 잘 완료되었다.


Server pc의 네트워크 어댑터가 외부로 잘 설정되어 있는지 확인하였다.

 

 

 

전원을 꺼주고

내부로의 연결을 위해서 네트워크 어댑터를 하나 더 추가해주자.

Bridged로 설정한다.

 

 

 

 

다시 전원을 켜고

우측상단의 시계왼쪽의 네트워크 아이콘 -> 네트워크 설정 -> 새로 추가된 네트워크 어댑터 클릭-> 톱니모양 아이콘

->신원

 

 

 

 

이름을 역할과 장치의 이름을 반영해서 in_eno33554944 라고 해주었다.

이름의 길이가 15자 이상이면 나중에 문제가 생긴다.

 

 

 

IPv4탭으로 가서 주소를 수동으로 변경하자.

주소 10.1.1.1

넷마스크 255.255.255.0

게이트웨이 10.1.1.1

로 설정하자. 

 

네임서버를 끄자

적용버튼을 누르자.

 

Ipv6도 끄고 적용시키고 재부팅하자.

 

 

 

 

vi /etc/sysconfig/network-scripts/ifcfg-in_eno33554944

 

GATEWAY0=10.1.1.1
DEFROUTE=yes

위의 두 줄은 필요없는 것이므로 지우자.

 

 

 

systemctl restart network
ifconfig

inet을 확인하자.

설정이 잘 완료되었다.

 

 

 

 

 

이제 정책을 정해주어야 한다.

vi /etc/sysctl.conf

 

net.ipv4.ip_forward=1

위 파일에 설정 한 줄을 추가한다.

 

 

echo 1 > /proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/ip_forward

포워드에 관한 세팅이다.

내부의 Client와 Server(B)가 외부로 나갈 수 있게 설정한 것이다. 

 

 

iptables --policy FORWARD DROP
iptables --policy INPUT DROP
iptables --policy OUTPUT DROP

iptables를 이용하여 정책을 설정하기 이전에 DROP부터 시켜서 초기화 해주자.

 

 

 

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

in_eno33554944에 외부에서 내부로 들어오는 것을 위한 통로역할을 하도록 만드는 설정이다.

 

 

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

in_eno33554944에 내부에서 외부로 나가는 것을 위한 통로역할을 하도록 만드는 설정이다.

 

 

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

in_eno33554944가 eno16777736를 연결한다.

 

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

eno16777736가 in_eno33554944에 연결한다.

 

 

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

 

eno16777736에 Masquerading(사설IP주소의 컴퓨터가 외부의 인터넷으로 접속 할 수 있도록 하는 방법)을 걸어주자.

 

service iptables save

설정들을 저장한다.

 

firewall-config

마스커레이딩을 위해서 포트를 열어주자

영구적을 클릭하고 [마스커레이딩 포트]탭으로 가서 마스커레이딩 영역을 체크해준다.

 

 

 

Client pc에서 웹사이트에 접속이 되면 성공한 것이다.

방화벽 개념에서는 결국 Client pc가 인터넷에 접속할때 eno16777736의 아이피인 192.168.111.100을 이용해서 접속한다.

외부에서는 Client pc가 접속했는지 Server(B)가 했는지 알 수 없어서 보안성이 좋아진다.

 

 

 

 

이제 외부 역할에 해당하는 WinClient pc에 FTP서버를 만들자.

Client pc를 외부pc에 접근 시켰을 때,

실제로 IP가 192.168.111.100로 나오는지 확인해보자.

 

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

WinClient pc에 파일질라 서버를 설치하고 centos라는 이름으로 유저를 추가해주자 비밀번호는 1234로 했다.

 

위의 명령어를 명령프롬프트에 타이핑하여 FTP의 포트를 열어주었다.

 

 

yum -y install ftp
ftp 192.168.111.153

Client pc에서 WinClient의 FTP서버로 접근하고나서 

 

 

WinClient pc에서 현재 접속자를 보여주는 명령어를 타이핑 했더니 Client의 사설아이피가 아닌 방화벽pc의 192.168.111.100가 확실히 적혀 있었다.

 

 

 

 

 

 

그러면 반대로 외부에서 192.168.111.100를 웹서버로 생각하고 요청을 할 경우에는 방화벽이 어떻게 해야할까?

내부의 웹서버인 Server(B)를 찾아주는 정책이 꼭 필요하다.   

 

 

yum -y install httpd
firewall-cmd --add-service=http

정책을 만들기 전에 Server(B) pc를 웹서버로 만들자.

웹서버 역할을 하도록 패키지를 설치하고

http 포트를 열어주었다.

 

cd /var/www/html
touch index.html
vi index.html
systemctl restart httpd
systemctl enable httpd

 

 

 

 

iptables --table nat --append PREROUTING --proto tcp --in-interface eno16777736 --dport 80 --jump DNAT --to-destination 10.1.1.20

Server pc(=현재 방화벽 pc)로 가서 외부에서 80번 포트요청시 Server(B)로 이어주는 정책을 만들자.

 

 

service iptables save

정책 설정을 저장한다.

 

테스트를 위해 WinClient에서 브라우저에 192.168.111.100:80을 요청하자.

index.html 의 내용을 볼 수 있다.


출처: 이것이 리눅스다

https://youtu.be/vG_RDMSraIE

 

'Linux & UNIX' 카테고리의 다른 글

mac ssh로 CentOS7에 접속시  (0) 2020.03.24
Top명령어 단축키  (0) 2020.03.18
프록시 서버 구축  (0) 2019.09.22
서브넷 마스크 정리잘 되어 있는 곳  (0) 2019.09.22
FTP 서버 구축  (0) 2019.09.22

댓글