[리눅스] 방화벽 컴퓨터 만들기

요즘 방화벽을 구축하지 않는 회사를 찾기가 더 힘든데요
방화벽은 외부에서 비업무적인 접근을 선별적으로 차단해주는 네트워크 보안 장치입니다.

내부 네트워크와 외부 네트워크를 차단하는 방법은 보편적으로 사설(private) IP 를 사용하는 방법입니다
nonroutable IP 라고도 불리는데요

 

10.0.0.0~10.255.255.255
172.16.0.0~172.31.255.255
192.168.0.0~192.168.255.255

세가지 범위로 나누어지는데
이 주소 범위에 있는 컴퓨터는 인터넷 라우터를 통과할 수 없습니다.
외부에서도 물론 내부의 이 주소 IP에 접근할 수 없습니다
이런 사설IP 주소가 외부 인터넷에 접속할 수 있도록 하는 방법을 마스커레이딩
Masquerading 이라고 부릅니다. IP위장이라고도 부릅니다.

 

NAT 개념을 조금 설명하자면

SNAT(Source NAT)

PC가 사설IP1 로 외부서버와 통신을 하고자할 때
방화벽의 사설IP 3과 공인IP 1을 통해 외부 서버에 접속하겠다는 패킷을 보냅니다
그러면 외부서버는 응답 패킷을 사설IP1이 아닌 공인IP1로 알고 있어 공인으로 보내줍니다 그러면 방화벽은 해당 패킷을 사설 IP1로 전송해주게 됩니다

 

DNAT(Destination NAT)

외부에서 사설IP2를 이용하는 리눅스 웹서버에 접속하고자 할때
우선적으로 방화벽의 공인IP1에 접속하여 방화벽이 이 패킷을 내부 사설IP2 로 전달해주게 됩니다

이러한 부분은 자동설정되는 것이 아닌 서버 관리자가 여러 규칙을 통해서 정책을 수립해 주어야 합니다

 

 



방화벽 컴퓨터로 운영하기 위한 server 는
랜카드가 2개는 설치가 되어 있어야 합니다
NAT를 사용하는 것과 Bridge 가 하나 있어야합니다
vmware 에서 설정할 때는 vm을 종료하고 랜카드 추가를 진행해 주셔야합니다
bridge 랜카드 부분에는 gateway 가 필요 없으므로 아래의 값들을 제거해 줍니다.

인터페이스 설정

/etc/sysconfig/network-scripts/ifcfg-ens~~
부분에서
GATEWAY=
DEFROUTE=
두 부분을 삭제해 줍니다

계획한 정책을 적용해야 합니다
마스커레이드를 설정해 주어야 하는데 방화벽에서는 iptables 명령어를 주로 사용하게 될 겁니다

sysctl.conf

/etc/sysctl.conf 수정을 해서
net.ipv4.ip_forward =1
값을 넣어줍니다 컴퓨터가 재부팅 되어도 ip_forward 값이 항상 1이 될 수 있게 합니다

ip 포워딩

바로 ip포워딩이 될수 있도록

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

 

명령어를 입력해 주고

 

# cat /proc/sys/net/ipv4/ip_forward

잘 입력 되어 있는지 확인하기 위해 위 명령어를 사용해
1 값이 출력되는지 확인합니다.

 



iptables 명령어는 잘 실행된다면 아무 메시지도 출력되지 않습니다

iptalbes --policy FORWARD DROP
iptalbes --policy INPUT DROP
iptalbes --policy OUTPUT DROP

 

내부의 사설 네트워크와 연결 장치인 server의 ens34와
외부 인터넷과 연결되는 장치인 ens32에 모든 패킷이 통과하도록 설정해야 합니다

 

iptables --append INPUT -in-interface 내부사설네트워크와 연결되는네트워크장치 --source 10.1.1.0/24 --match state --state NEW,ESTABLISHED --jump ACCEPT

iptables --append OUTPUT -out-interface 내부사설네트워크와연결되는네트워크장치 --destination 10.1.1.0/24 --match state --state NEW,ESTABLISHED --jump ACCEPT

iptables --append FORWARD -out-interface 내부사설네트워크와연결되는네트워크장치 --source 10.1.1.0/24 --destination 0.0.0.0/0 --match state NEW,ESTABLISHED --jump ACCEPT

iptables --append FORWARD -in-interface 외부인터넷과연결되는네트워크장치 --destination 10.1.1.0/24 --match state --state ESTABLISHED --jump ACCEPT

 

ens32 nat ens34 bridge
외부 인터넷으로 연결되는 장치인 ens32에 마스커 레이드를 허가해줍니다
내부 사설 네트워크와 연결되는 장치인 ens34와 연결된 모든 컴퓨터는 외부와 인터넷이 가능하게 됩니다

iptables --table nat --append POSTROUTING --out-interface 외부인터넷과연결되는네트워크장치 --jump MASQUERADE

 

#ens32 에 마스커레이드 허가를 해줘야합니다 그래야만 ens32를 통해 외부 인터넷으로 연결될 수 있습니다

# service iptables save

 

iptables를 저장해 줍니다

방화벽 설정에서 Masquerade zone 마스커레이딩을 허용해줍니다

이렇게 구성을 해주시면
client > 게이트웨이 > 방화벽공인IP > 외부인터넷
방법으로 통신이 됩니다
마스커레이드는 IP 공유기의 역할 중 하나입니다
리눅스 장비가 있다면 IP공유기를 별도로 구매하지 않고도 IP 공유해 사용할 수 있습니다.

댓글

Designed by JB FACTORY