IT/ㄴ HPE & Juniper

Juniper SRX 기본 Lab 구성(IP 설정 / Zone 지정 / 내부 서비스 허용 / SNAT / DNAT)

TIENE 2025. 9. 17. 15:48

1. IP 설정 및 Routing 설정

- SRX - 

# Untrust Interface (WAN)
set interfaces ge-0/0/0 unit 0 family inet address 192.168.123.170/24

# Trust Interface (LAN)
set interfaces ge-0/0/2 unit 0 family inet address 172.30.0.1/24

# Default Routing (VM 8 Adapter)
set routing-options static route 0.0.0.0/0 next-hop 192.168.123.2
commit

 

- Linux -

 

테스트를 위해 host-inbound-traffic 허용

set security zones security-zone untrust host-inbound-traffic system-services ping
set security zones security-zone untrust host-inbound-traffic system-services https
set security zones security-zone untrust host-inbound-traffic system-services ssh
set security zones security-zone untrust host-inbound-traffic system-services http
commit

 

- 접속 확인 완료

Web 접속을 하기 위해서는 인터페이스를 지정해야한다.

set system services web-management https interface ge-0/0/0.0
set system services web-management https system-generated-certificate
commit

 

 

- 지정을 하지 않으면 접근 거부된다.

 

 

2. Zone 지정

- SRX - 

Untrust와 Trust에 인터페이스를 할당한다.

set security zones security-zone trust interfaces ge-0/0/2.0
set security zones security-zone untrust interfaces ge-0/0/0.0

 

SRX의 Trust IP로 통신을 위해서는 위에서와 마찬가지로 추가 설정이 필요하다.

set security zones security-zone trust host-inbound-traffic system-services ping

 

- 이 설정을 다시 지우면 서비스 허용이 삭제되어 ping이 되지 않는다.

 

 

3. 정책 설정

- 화이트리스트 정책의 일환으로 필요한 것만 열고 전부 닫는 정책을 수립해본다.

- Linux에서 웹 서핑만 가능하도록 구성해본다.

 

- 웹 서핑 정책 -

- Trust 대역을 address-book으로 그룹화한다.

- 출발지는 Trust 대역에서 목적지는 any / 웹서핑에 필요한 포트(80,443,53) 을 지정

- 위 룰이 전부 match되면 허용하고 log를 남긴다.

set security zones security-zone trust address-book address TRUST_NET 172.30.0.0/24

set security policies from-zone trust to-zone untrust policy permit-WEB match source-address TRUST_NET
set security policies from-zone trust to-zone untrust policy permit-WEB match destination-address any
set security policies from-zone trust to-zone untrust policy permit-WEB match application junos-https
set security policies from-zone trust to-zone untrust policy permit-WEB match application junos-dns-udp
set security policies from-zone trust to-zone untrust policy permit-WEB match application junos-http
set security policies from-zone trust to-zone untrust policy permit-WEB match application junos-icmp-all
set security policies from-zone trust to-zone untrust policy permit-WEB match application junos-dns-tcp
set security policies from-zone trust to-zone untrust policy permit-WEB then permit
set security policies from-zone trust to-zone untrust policy permit-WEB then log session-init

set security policies from-zone trust to-zone untrust policy default-deny match source-address any
set security policies from-zone trust to-zone untrust policy default-deny match destination-address any
set security policies from-zone trust to-zone untrust policy default-deny match application any
set security policies from-zone trust to-zone untrust policy default-deny then deny
set security policies from-zone trust to-zone untrust policy default-deny then log session-init

commit

 

 

4. SNAT 정책

- 바로 이어서 NAT 정책을 설정한다.

- Zone 정책만 세워도 NAT 정책이 없으면 통신을 할 수 없다.

- Trust 존에서 Untrust 존으로 출발지가 172.30.0.0/24 대역이면 eggress Interface로 SNAT 처리를 한다.

set security nat source rule-set SRC-NAT from zone trust
set security nat source rule-set SRC-NAT to zone untrust
set security nat source rule-set SRC-NAT rule r1 match source-address 172.30.0.0/24
set security nat source rule-set SRC-NAT rule r1 then source-nat interface
commit

https://www.juniper.net/documentation/us/en/software/junos/nat/topics/topic-map/nat-security-source-and-source-pool.html

 

1. SNAT 규칙 

 - Traffic direction 지정

    - From (interface / zone / routing-instance) To (interface / zone / routing-instance)

 - Packet info 지정

    - src / dst IP, src / dst Port, Protocol, Application 등

 - Matcing Priority

    - Interface > Zone > Routing-Instance (더 구체적인 규칙 우선 적용)

 - 위의 조합으로 가능한 액션

    - Off = SNAT 수행 X

    - Pool = SNAT을 수행하기 위해 사용자가 지정한 Address Pool

    - Interface =  SNAT을 수행하기 위해 egreses interface 지정

 

- 설정이 완료되었으니 테스트를 해본다.

- Linux에서 NAVER로 웹 접속을 해본다.

 

- 정상적으로 잘 접속되었고, 이를 SRX에서 확인해본다.

- Trust 172.30.0.101에서 외부 443 포트로 나가고자 할 때, Untrust Interface로 외부 443 포트로 나갈 때, Untrust Interface가 지정되어 192.168.123.170에 임의 포트가 붙여서 통신이 되었다.

show security flow session

 

- 만약, IP를 지정하고 싶다면, address-book을 생성한 뒤 지정하면 된다.

set security nat source pool PUB-POOL address 192.168.123.170/32
set security nat source rule-set SRC-NAT from zone trust
set security nat source rule-set SRC-NAT to zone untrust
set security nat source rule-set SRC-NAT rule r1 match source-address 172.30.0.0/24
set security nat source rule-set SRC-NAT rule r1 then source-nat pool PUB-POOL

 

5. DNAT 정책

- 외부에서 Trust에 있는 Linux FTP Server에 접속하는 테스트를 진행한다.

- 외부에서 방화벽 Untrust Interface의 IP에 21번 포트로 접속하면 내부 172.30.0.100의 21번 FTP로 포트 포워딩하는 정책을 수립한다.

set security nat destination pool ftp-pool address 172.30.0.100/32
set security nat destination rule-set PERMIT-FTP from zone untrust
set security nat destination rule-set PERMIT-FTP rule r-ftp match destination-address 192.168.123.170/32
set security nat destination rule-set PERMIT-FTP rule r-ftp match destination-port 21
set security nat destination rule-set PERMIT-FTP rule r-ftp match destination-port 20
set security nat destination rule-set PERMIT-FTP rule r-ftp then destination-nat pool ftp-pool
commit

 

 - 화이트리스트 정책의 일환이기 때문에 FTP만 열고 다 Deny처리를 한다

set security policies from-zone untrust to-zone trust policy permit-FTP match source-address any
set security policies from-zone untrust to-zone trust policy permit-FTP match destination-address TRUST_NET
set security policies from-zone untrust to-zone trust policy permit-FTP match application junos-ftp
set security policies from-zone untrust to-zone trust policy permit-FTP match application junos-ftp-data
set security policies from-zone untrust to-zone trust policy permit-FTP match application junos-icmp-all
set security policies from-zone untrust to-zone trust policy permit-FTP then permit
set security policies from-zone untrust to-zone trust policy permit-FTP then log session-init
set security policies from-zone untrust to-zone trust policy permit-FTP then log session-close
set security policies from-zone untrust to-zone trust policy permit-FTP then count

set security policies from-zone untrust to-zone trust policy default-deny match source-address any
set security policies from-zone untrust to-zone trust policy default-deny match destination-address any
set security policies from-zone untrust to-zone trust policy default-deny match application any
set security policies from-zone untrust to-zone trust policy default-deny then deny
set security policies from-zone untrust to-zone trust policy default-deny then log session-init

commit

 

 

- Linux -

- systemctl status vsftpd로 실행하고 있는지 확인하고, 실행하고 있지 않으면 systemctl start vsftpd로 실행한다.

 

- vsFTP를 설치하고 실행한 뒤, 21번 포트로 listening하고 있는지 확인한다.

 

- 그리고 root 접속을 위해, ftpusers와 user_list에서 root를 지운다.

 

 

- 이제 ftp 프로그램으로 ftp server에 접속해본다. 포트포워딩이기 때문에 방화벽 Untrust IP로 접근해야한다.

- 정상적으로 접속되는 것을 확인했다.

 

5. 트러블 슈팅

- 정책은 Top-Down이고 deny 정책이 없으면 암묵적 Deny라는 점을 기억하자

- 화이트리스트의 개념을 다시 바로 잡아보았다. top-down이기 때문에 필요한 정책을 위에서부터 쌓아가고, 최하단에는 All-Deny 정책을 넣어야한다.

- 위에서 통신이 안 되었을 때는 최상단에 All-Deny가 존재한 뒤 필요한 정책을 열었기 때문에 안 되었다. 뭔가 단단히 착각을 했었다.

- 다 막고 필요한 것만 여는 것은 맞는데, 정책 설정 상 필요한 것만 다 열고 All-Deny 해야한다.

- 이것때문에 헷갈렸다.

- 반대로 블랙리스트는 위에서부터 닫아야하는 정책을 쌓고 All-Permit 그리고 최하단에 All-Deny 정책으로 마무리한다.

- DNAT 테스트할 때 정책에서 문제가 있는 줄 알고 한참을 헤맸는데 혹시나 싶어서 찾아보니 Linux 방화벽으로 막혀있었다.

- 아래 사진은 명령어를 통해 추가해서 21/tcp가 있지만, 트러블슈팅할 때는 없었다.