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.
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
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).
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: