Bài số 2: Thiết lập rule cho các vùng orange, green và blue

Mặc định, IPFire thiết lập các qui tắc cho phép/cấm kết nối giữa các mạng như sau:

Có thể thấy rằng tất cả các truy nhập từ Internet (vùng red) vào các vùng phía trong firewall (green, blue và orange) đều bị cấm (Closed). Để cho phép một truy nhập, cần thiết lập luật “port forwarding” tương ứng. Ngược lại, các truy nhập từ cùng nội bộ (green) hoặc DMZ (orange) ra Internet đều được phép (Open). Dựa trên bảng qui tắc trên, cần tạo ra các luật (firewall rule) để cấm hoặc cho phép các kết nối mạng.

Bước 1: Kiểm tra kết nối giữa các vùng

Có thể sử dụng lệnh ping hoặc iperf3 để kiểm tra kết nối giữa các vùng. Ví dụ, có thể ping từ một trạm cùng green hoặc orange đến một trạm ngoài Interent và thấy thành công.

[root@C2 ~]# ping 205.192.25.17
PING 205.192.25.17 (205.192.25.17) 56(84) bytes of data.
64 bytes from 205.192.25.17: icmp_seq=1 ttl=62 time=3.17 ms
64 bytes from 205.192.25.17: icmp_seq=2 ttl=62 time=1.91 ms
64 bytes from 205.192.25.17: icmp_seq=3 ttl=62 time=2.16 ms
^C
--- 205.192.25.17 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2181ms
rtt min/avg/max/mdev = 1.918/2.419/3.177/0.546 ms

Nếu ping từ green sang orange hoặc ngược lại, từ orange sang blue cũng thành công:

[root@C2 ~]# ping 192.168.2.3
PING 192.168.2.3 (192.168.2.3) 56(84) bytes of data.
64 bytes from 192.168.2.3: icmp_seq=1 ttl=63 time=1.49 ms
64 bytes from 192.168.2.3: icmp_seq=2 ttl=63 time=1.44 ms
64 bytes from 192.168.2.3: icmp_seq=3 ttl=63 time=1.14 ms
^C
--- 192.168.2.3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2178ms
rtt min/avg/max/mdev = 1.142/1.360/1.494/0.161 ms

[root@C1 ~]# ping 192.168.1.15
PING 192.168.1.15 (192.168.1.15) 56(84) bytes of data.
64 bytes from 192.168.1.15: icmp_seq=1 ttl=63 time=1.26 ms
64 bytes from 192.168.1.15: icmp_seq=2 ttl=63 time=1.28 ms
64 bytes from 192.168.1.15: icmp_seq=3 ttl=63 time=1.47 ms
^C
--- 192.168.1.15 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2511ms
rtt min/avg/max/mdev = 1.261/1.339/1.472/0.103 ms

Ngược lại, nếu ping từ một trạm ngoài Internet vào trạm orange hoặc green thì thấy thất bại:

[root@Cx ~]# ping 192.168.1.15
PING 192.168.1.15 (192.168.1.15) 56(84) bytes of data.
^C
--- 192.168.1.15 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2760ms

Bước 2: Kiểm tra kết nối đi ra Internet với cơ chế NAT

Mặc định IPFire cho phép các kết nối từ bên trong firewall (vùng green, orange và blue) ra Internet. Hơn nữa, cơ chế để một trạm nội bộ kết nối ra Internet là sử dụng NAT. Điều này có thể được kiểm tra như sau. Trên một trạm Internet (giả sử có địa chỉ 205.192.25.17), chạy iperf3 chế độ server ở cổng TCP 5100:

[root@Cx ~]# iperf3 -s -p 5100
-----------------------------------------------------------
Server listening on 5100
-----------------------------------------------------------

Trên một trạm nội bộ thuộc vùng green (giả sử có địa chỉ 192.168.1.15), chạy iperf3 chế độ client để kết nối đến server iperf3 bên ngoài Internet. Kết quả kết nối thành công:

[root@C2 ~]# iperf3 -c 205.192.25.17 -p 5100
Connecting to host 205.192.25.17, port 5100
[  4] local 192.168.1.15 port 36854 connected to 205.192.25.17 port 5100
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  20.9 MBytes   175 Mbits/sec    1    682 KBytes      
[  4]   1.00-2.00   sec  27.1 MBytes   227 Mbits/sec   25    615 KBytes      
[  4]   2.00-3.00   sec  30.0 MBytes   251 Mbits/sec    0    677 KBytes      
[  4]   3.00-4.00   sec  28.3 MBytes   238 Mbits/sec    5    519 KBytes      
[  4]   4.00-5.00   sec  27.0 MBytes   226 Mbits/sec    0    554 KBytes      
[  4]   5.00-6.00   sec  24.7 MBytes   207 Mbits/sec    0    574 KBytes      
[  4]   6.00-7.00   sec  24.6 MBytes   207 Mbits/sec    0    584 KBytes      
[  4]   7.00-8.00   sec  19.6 MBytes   164 Mbits/sec    0    588 KBytes       
[  4]   8.00-9.00   sec  23.7 MBytes   199 Mbits/sec    0    588 KBytes      
[  4]   9.00-10.00  sec  23.2 MBytes   194 Mbits/sec    0    590 KBytes      
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   249 MBytes   209 Mbits/sec   31             sender
[  4]   0.00-10.00  sec   247 MBytes   208 Mbits/sec                  receiver

iperf Done.

Về phía server iperf3, kết quả kết nối từ client cũng được thể hiện:

[root@Cx ~]# iperf3 -s -p 5100
-----------------------------------------------------------
Server listening on 5100
-----------------------------------------------------------
Accepted connection from 203.162.5.11, port 36852
[  5] local 205.192.25.17 port 5100 connected to 203.162.5.11 port 36854
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-1.00   sec  19.0 MBytes   159 Mbits/sec                 
[  5]   1.00-2.00   sec  26.9 MBytes   225 Mbits/sec                 
[  5]   2.00-3.00   sec  29.4 MBytes   246 Mbits/sec                 
[  5]   3.00-4.00   sec  28.6 MBytes   240 Mbits/sec                 
[  5]   4.00-5.00   sec  27.4 MBytes   230 Mbits/sec                 
[  5]   5.00-6.00   sec  24.4 MBytes   204 Mbits/sec                  
[  5]   6.00-7.00   sec  24.4 MBytes   204 Mbits/sec                 
[  5]   7.00-8.00   sec  19.6 MBytes   164 Mbits/sec                 
[  5]   8.00-9.00   sec  23.7 MBytes   198 Mbits/sec                 
[  5]   9.00-10.00  sec  23.1 MBytes   194 Mbits/sec                 
[  5]  10.00-10.05  sec  1.19 MBytes   203 Mbits/sec                 
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-10.05  sec  0.00 Bytes  0.00 bits/sec                  sender
[  5]   0.00-10.05  sec   247 MBytes   207 Mbits/sec                  receiver
-----------------------------------------------------------
Server listening on 5100
-----------------------------------------------------------

So sánh thông tin log của iperf3 phía client và server thấy cơ chế NAT được thể hiện như sau:

  • Client chạy trên máy 192.168.1.15, cổng TCP 36854 để kết nối đến server 205.192.25.17 tại cổng TCP 5100.
  • Server nhận được kết nối của client từ địa chỉ 203.162.5.11. Như vậy, server nhận kết nối từ client theo địa chỉ IP mặt ngoài (kết nối red) của IPFire, không phải từ địa chỉ IP nội bộ của client (là 192.168.1.15).
  • Thông tin các kết nối trên có thể được xem trong IPFire (menu Status/Connections). Nhìn vào danh sách các kết nối này, có thể thấy cơ chế NAT được thể hiện trong cột “Source IP: Port” theo dạng 192.168.1.15 > 203.162.5.11. Tương ứng với kết nối này, cột “Dest. IP; Port” cho thấy thông tin trên iperf3 server (203.192.25.17: 5100).

Bước 3: Thiết lập cho phép kết nối từ Internet vào vùng DMZ

DMZ là vùng chứa các máy chủ dịch vụ như Web, FTP, Mail, v.v.. mà cho phép các trạm ngoài Internet kết nối đến. Giả sử máy chủ Web của công ty được cài đặt tại địa chỉ 192.168.2.3 (là một địa chỉ thuộc vùng orange), luật port forwarding được thiết lập như sau:

Sử dụng iperf3 để giả lập Web server trên máy 192.168.2.3 và cũng cùng iperf3 giả lập web client trên máy ngoài Internet (địa chỉ 205.192.25.17). Kết quả là sau khi có luật port forwarding, máy ngoài Internet đã truy nhập được đến cổng 80 (web) của máy trong DMZ zone (orange) thông qua địa chỉ mặt ngoài của firewall.

[root@web ~]# iperf3 -s -p 80
-----------------------------------------------------------
Server listening on 80
-----------------------------------------------------------
Accepted connection from 205.192.25.17, port 34392
[  5] local 192.168.2.3 port 80 connected to 205.192.25.17 port 34393
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-1.00   sec  25.7 MBytes   215 Mbits/sec                 
[  5]   1.00-2.00   sec  30.1 MBytes   254 Mbits/sec                 
[  5]   2.00-3.00   sec  28.6 MBytes   240 Mbits/sec                  
[  5]   3.00-4.00   sec  26.8 MBytes   225 Mbits/sec                 
[  5]   4.00-5.00   sec  28.7 MBytes   241 Mbits/sec                 
[  5]   5.00-6.00   sec  28.1 MBytes   236 Mbits/sec                 
[  5]   6.00-7.00   sec  29.5 MBytes   248 Mbits/sec                 
[  5]   7.00-8.00   sec  29.9 MBytes   251 Mbits/sec                 
[  5]   8.00-9.00   sec  30.3 MBytes   254 Mbits/sec                 
[  5]   9.00-10.00  sec  30.1 MBytes   253 Mbits/sec                 
[  5]  10.00-10.05  sec  1.10 MBytes   200 Mbits/sec                 
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-10.05  sec  0.00 Bytes  0.00 bits/sec                  sender
[  5]   0.00-10.05  sec   289 MBytes   241 Mbits/sec                  receiver

[root@Cx ~]# iperf3 -c 203.162.5.11 -p 80
Connecting to host 203.162.5.11, port 80
[  4] local 205.192.25.17 port 34393 connected to 203.162.5.11 port 80
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  29.4 MBytes   246 Mbits/sec   33    382 KBytes      
[  4]   1.00-2.00   sec  28.8 MBytes   242 Mbits/sec    0    420 KBytes      
[  4]   2.00-3.00   sec  28.4 MBytes   238 Mbits/sec    0    443 KBytes      
[  4]   3.00-4.00   sec  27.0 MBytes   227 Mbits/sec    0    455 KBytes      
[  4]   4.00-5.00   sec  29.3 MBytes   246 Mbits/sec    0    461 KBytes      
[  4]   5.00-6.00   sec  27.8 MBytes   233 Mbits/sec    0    461 KBytes      
[  4]   6.00-7.00   sec  29.8 MBytes   250 Mbits/sec   19    373 KBytes      
[  4]   7.00-8.00   sec  29.7 MBytes   249 Mbits/sec    0    414 KBytes      
[  4]   8.00-9.00   sec  30.5 MBytes   256 Mbits/sec    0    440 KBytes      
[  4]   9.00-10.00  sec  29.6 MBytes   248 Mbits/sec    0    455 KBytes      
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   290 MBytes   243 Mbits/sec   52             sender
[  4]   0.00-10.00  sec   289 MBytes   243 Mbits/sec                  receiver

iperf Done.

Ngoài cổng 80 này, các truy nhập khác đều bị cấm:

[root@Cx ~]# iperf3 -c 203.162.5.11 -p 21
iperf3: error - unable to connect to server: No route to host

Có thể thấy cơ chế Port Forwarding được thể hiện trong các connections trên IPFire: