Monday, July 1, 2024

[OPNSense] – Lesson 11 – Thiết lập Port Forward trong OPNsense

-

Tổng quan.

NAT (Network Address Translation) là một kỹ thuật được sử dụng để chuyển đổi địa chỉ IP trên một mạng sang một địa chỉ IP khác trên một mạng khác. NAT thường được sử dụng để kết nối một mạng nội bộ với Internet, bằng cách chuyển đổi địa chỉ IP nội bộ sang địa chỉ IP công cộng.

Trong Opnsense, NAT được sử dụng để kết nối các mạng nội bộ với Internet. Các chức năng của NAT trong Opnsense bao gồm:

  • Port Forward: Chức năng này cho phép kết nối từ Internet tới một địa chỉ IP nội bộ trên một cổng (port) cụ thể.
  • One-to-One: Chức năng này cho phép NAT một địa chỉ IP nội bộ sang một địa chỉ IP công cộng cụ thể.
  • Outbound: Chức năng này cho phép NAT các gói tin đi ra từ mạng nội bộ sang Internet.
  • NPTv6: Chức năng này cho phép NAT địa chỉ IPv6 từ mạng nội bộ sang Internet.

Tóm lại, NAT trong Opnsense là một kỹ thuật chuyển đổi địa chỉ IP được sử dụng để kết nối mạng nội bộ với Internet. Các chức năng của NAT bao gồm Port Forward, One-to-One, Outbound và NPTv6.

Thực hành tạo Port Forward RDP (3389).

Trước tiên hãy theo dõi sơ đồ đấu nối của tôi trước.

Mình dùng một máy chạy MacOS với vai trò là thiết bị ngoài Internet.

hoanghd@Has-iMac ~ % ifconfig en0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=40b<RXCSUM,TXCSUM,VLAN_HWTAGGING,CHANNEL_IO>
	ether 00:1e:67:35:0e:63
	inet6 fe80::47c:b54b:220b:120d%en0 prefixlen 64 secured scopeid 0x8
	inet 172.16.3.252 netmask 0xffffff00 broadcast 172.16.3.255
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect (100baseTX <full-duplex>)
	status: active

Không thể ping tới 172.16.101.1/24.

hoanghd@Has-iMac ~ % ping 172.16.101.1
PING 172.16.101.1 (172.16.101.1): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3

--- 172.16.101.1 ping statistics ---
5 packets transmitted, 0 packets received, 100.0% packet loss

Telnet port 3389 cũng vậy.

hoanghd@Has-iMac ~ % telnet 172.16.101.1 3389
Trying 172.16.101.1...
telnet: connect to address 172.16.101.1: Operation timed out
telnet: Unable to connect to remote host

Bây giờ hãy tiến hành Forwarding port 3389 ra ngoài theo quy trình sau:

Bước 1: Hãy vào Port Forward và bấm vào dấu (+).

Bước 2: Hãy điền các thông tin mình đánh dấu như dưới.

  • Interface: Là WAN interface bạn muốn cấu hình.
  • TCP/IP Version: xác định loại IPv4 hay IPv6.
  • Protocol: loại giao thức cho phép đi vào.
  • Destination: Là địa chỉ IP mà ở ngoài được phép kết nối tới, chỗ này bạn có thể sử dụng địa chỉ IP của Wan interface, WAN address hoặc sử dụng This Firewall (This Firewall và WAN address chính là địa chỉ IP của interface này).
  • Destination port range: range port được phép truy cập vào địa chỉ của Destination (là địa chỉ IP của WAN interface).
  • Redirect target IP: chính là IP của thiết bị nằm trong local.
  • Redirect target port: range port của Redirect target IP được phép truy cập.

Sau khi thiết lập xong bạn đã có 1 Port Forward đầu tiên như dưới, hãy bấm Apply changes.

Nếu bạn chuyển qua Rule của interface WAN bạn sẽ thấy hệ thống tự tạo cho bạn 1 rule lúc bạn thêm 1 Port Forward mới. Rule này có ý nghĩa cho phép tất cả các địa chỉ IP ngoài internet được phép RDP vào port 3389.

Khi khởi tạo card WAN, mặc định 2 tính năng Block private networks và Block bogon networks sẽ được enable, bạn hãy tắt nó đi. Block private networks và Block bogon networks là hai tùy chọn chặn các địa chỉ IP không hợp lệ trong các gói tin mạng. Cụ thể:

  • Block private networks: Tùy chọn này sẽ chặn các gói tin mạng có địa chỉ IP thuộc các mạng riêng (private networks) như 10.0.0.0/8, 172.16.0.0/12 và 192.168.0.0/16. Việc chặn các gói tin này giúp ngăn chặn các cuộc tấn công từ bên trong mạng nội bộ, nơi mà các địa chỉ IP thuộc các mạng riêng này thường được sử dụng.
  • Block bogon networks: Tùy chọn này sẽ chặn các gói tin mạng có địa chỉ IP không hợp lệ (bogon networks). Các bogon networks là các địa chỉ IP không thuộc bất kỳ mạng nào trên Internet hoặc các địa chỉ IP được gán cho các mạng riêng tư, quản lý trong bảng định tuyến hoặc bị lưu trữ sai trong bảng định tuyến. Việc chặn các gói tin mạng có địa chỉ IP không hợp lệ giúp giảm thiểu các cuộc tấn công từ bên ngoài mạng và là một phương pháp cơ bản để bảo mật mạng.

Cả hai tùy chọn này đều giúp ngăn chặn các gói tin mạng không hợp lệ đi vào mạng của bạn và cần được cấu hình đúng để đảm bảo an toàn cho mạng của bạn.

Và đây là kết quả khi telnet port 3389 vào IP WAN của OPNSense 192.168.13.231.

hoanghd@Has-iMac ~ % ifconfig en0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=40b<RXCSUM,TXCSUM,VLAN_HWTAGGING,CHANNEL_IO>
	ether 00:1e:67:35:0e:63
	inet6 fe80::47c:b54b:220b:120d%en0 prefixlen 64 secured scopeid 0x8
	inet 172.16.3.252 netmask 0xffffff00 broadcast 172.16.3.255
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect (100baseTX <full-duplex>)
	status: active

hoanghd@Has-iMac ~ % telnet 192.168.13.231 3389
Trying 192.168.13.231...
Connected to 192.168.13.231.
Escape character is '^]'.

Và đây là kết quả khi mình remote vào IP 192.168.13.231, đây chính là máy ảo có IP Private là 172.16.101.1/24 được Forwarding port 3389 ra ngoài.

Tổng kết

Như vậy nếu tôi muốn Forwarding 3 Server trên sơ đồ (Server 01, Server 02 và Server 03) thì tôi phải đổi port mặc định 3389 cho các 2 Server còn lại vì Port 3389 tôi đã gán vào IP WAN cho Server 1 rồi.

Ý tưởng của tôi là sẽ sửa lại port mặc định 3389 của Server 1 thành một port khác (ví dụ đổi từ 3389 sang 31011). Tiếp theo đó tôi sẽ Forwarding RDP của 2 server còn lại với thông tin như sau:

  • Server 01 – 172.16.101.1:3389 -> 192.168.13.231:31011
  • Server 02 – 172.16.102.1:3389 -> 192.168.13.231:31021
  • Server 03 – 172.16.103.1:3389 -> 192.168.13.231:31031

Và đây là rule của mình sau khi Forwarding.

Kết quả khi telnet port nhé.

hoanghd@Has-iMac-Pro ~ % telnet 192.168.13.231 31011
Trying 192.168.13.231...
Connected to 192.168.13.231.
Escape character is '^]'.

hoanghd@Has-iMac-Pro ~ % telnet 192.168.13.231 31021
Trying 192.168.13.231...
Connected to 192.168.13.231.
Escape character is '^]'.

hoanghd@Has-iMac-Pro ~ % telnet 192.168.13.231 31031
Trying 192.168.13.231...
Connected to 192.168.13.231.
Escape character is '^]'.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories