[Article] Tự làm VPN đơn giản với m0n0wall |
13/07/2006 22:26:15 (+0700) | #1 | 6367 |
dusan
Member
|
0 |
|
|
Joined: 12/04/2004 12:17:57
Messages: 23
Offline
|
|
Tự làm VPN đơn giản với m0n0wall
Chúng tôi là người dùng Windows. Nếu có lỡ viết câu nào sai về các hệ thống *NIX, xin mọi người hãy cười và bỏ qua cho nhé.
Bài này gửi tại forum của hiệp hội hacker HVA để tỏ lòng biết ơn sâu sắc tới những *NIX hackers đã viết ra m0n0wall, một phần mềm nguồn mở hết sức hữu ích.
1. m0n0wall – đặc điểm
m0n0wall http://www.m0n0.ch/wall) là phần mềm chia xẻ Internet và kết nối VPN cho người dùng Internet đầu cuối. Là chọn lựa rất tốt khi bạn muốn:
• chia xẻ một kết nối Internet băng rộng duy nhất cho mạng LAN của mình;
• qua Internet, nối thông mạng LAN của mình với một hay nhiều mạng LAN ở xa (thường được gọi là site-to-site, net-to-net hay gateway-to-gateway VPN);
• sử dụng đồng thời dịch vụ DNS ở cả hai nơi, hay nhiều nơi (split DNS);
• thiết đặt mọi thứ qua giao diện Web; và
• một thiết bị, thường gọi là VPN router, phần cứng rẻ tiền, phần mềm miễn phí, nhưng vẫn đảm bảo ổn định, an toàn.
Có nhiều phần mềm như thế, nhưng m0n0wall nổi bật với:
• kích thước rất nhỏ (< 6 MB);
• không tiếng ồn, tiết kiệm điện (nó chỉ dùng bộ nhớ RAM, không dùng swap và tắt đĩa cứng trong khi làm việc); và
• một giao diện Web hoạt động thật nhanh nhẹn và hình thức thật dễ thương.
m0n0wall không phù hợp cho bạn (rất tiếc) nếu:
• bạn biết và thích dùng những thứ như console, command, config,... để chỉnh thiết bị;
• bạn cần một cache proxy như squid hay một IDS như snort;
• bạn có 2 hay nhiều kết nối Internet và vì thế cần giao thức định tuyến; hoặc
• bạn cần một địa chỉ IP cho kết nối VPN, qua đó có thể định tuyến, cản lọc gói, điều tiết băng thông trong mạng ảo y hệt như trong mạng thực.
2. Chia xẻ kết nối Internet
Chuẩn bị phần cứng:
• một máy tính nhúng với 200-300 MHz x86 CPU, 64 MB RAM, ít nhất 2 giao diện mạng, một cổng serial, card CF (Compact Flash) hoặc IDE flash module 16MB cắm vào IDE slot; hoặc
• một máy tính x86 PC cấu hình tương đương, có bàn phím và màn hình, tốt nhất nên chọn loại nào không dùng quạt mà chỉ dùng cánh tản nhiệt. Một ổ đĩa cứng bất kỳ có thể thay cho card CF / flash module.
Bạn có thể mua hoặc tự lắp một máy tính nhúng chỉ tiêu thụ khoảng 5 - 10W, với chi phí chừng 200 USD. (Trên thị trường, nhiều m0n0wall appliance được bán với giá gấp 2-3 lần như thế.) Máy PC (cũ) rẻ hơn nhiều, có thể rẻ đến mức... không tốn một xu, nhưng sẽ tốn điện hơn nhiều lần.
Chuẩn bị phần mềm:
• m0n0wall binary image tùy theo platform của bạn. Thí dụ nếu platform là máy PC, bạn cần download file generic-pc-xxx.img, trong đó xxx là số hiệu phiên bản m0n0wall. CF và đĩa cứng đều cùng một image.
• một phần mềm làm Certification Authority (CA). Chúng tôi thường dùng một phần mềm nguồn mở chạy trên Windows tên là XCA http://freshmeat.net/projects/xca). Đối với người dùng Linux phần mềm thích hợp có lẽ là TinyCA http://tinyca.sm-zone.net/ )
Để cài đặt và dùng m0n0wall bạn không cần phải biết một chút gì về các hệ thống *NIX nhưng xin viết thêm vài dòng tham khảo. Phiên bản m0n0wall chính thức mới nhất hiện nay là 1.22, dựa trên hệ điều hành FreeBSD 4.11. Việc chuyển đặt m0n0wall lên FreeBSD 6.1 đã diễn ra, nhưng rất chậm. Tác giả ban đầu của nó đã treo giải thưởng 1000 USD và thời hạn đến tháng 10/2006 cho người nào chuyển đặt thành công sớm nhất. Phiên bản 1.22 hiện thời chỉ hỗ trợ vài loại card mạng không dây với chip Prism. Vì thế, bài này sẽ không nói tới thiết lập điểm truy cập không dây - một chức năng sẵn có trong m0n0wall. Nếu bạn có card mạng không dây với chip Atheros, bạn có thể dùng tạm phiên bản 1.2 beta 7 dựa trên FreeBSD 5.3 hoặc 1.3 alpha 3 dựa trên FreeBSD 6.1. http://chrisbuechler.com/m0n0wall/downloads/ ). Nhưng cần chú ý rằng về hiệu suất của phần mềm hệ thống mạng (network stack), so với FreeBSD 4.x, FreeBSD 5.x chậm hơn đến 40% còn FreeBSD 6.x chậm hơn đến 20%. Ở những máy có CPU yếu, sự giảm hiệu suất đó dẫn đến giảm băng thông và nâng cấp phần mềm chưa chắc đã là một quyết định sáng suốt.
Cài đặt:
Ghi image file vào card CF hoặc đĩa cứng. Việc này tương tự như ghi .iso image vào CD. Bạn có thể dùng một tiện ích nhỏ của Windows tên là physwrite.exe (có sẵn trên Website của m0n0wall). Chi tiết xem hướng dẫn sử dụng.
Ghi xong, cắm CF / đĩa cứng vào đúng vị trí cũ. Nếu appliance là PC thì cắm màn hình, bàn phím, còn nếu là máy nhúng thì cắm một PC vào cổng serial để điều khiển (dùng Microsoft Hyperterminal). Boot máy.
Trong các giao diện mạng, chỉ định cái nào bạn chọn làm giao diện LAN và đặt cho nó một địa chỉ IP và netmask, mặc định là 192.168.1.1/24. Đây là lần duy nhất bạn dùng tới console. Từ giờ, bạn có thể rút bỏ màn hình, bàn phím (hoặc dây serial).
Cắm cổng LAN vào switch, cổng WAN vào modem. Nếu bạn dùng ADSL router thì tắt chế độ router, bật chế độ bridge để nó hoạt động như một modem.
Từ Web browser truy nhập trang điều khiển qua địa chỉ IP, tên người dùng là mặc định là admin và mật khẩu mặc định là mono.
m0n0wall boot mặc định với:
• một DHCP client nhận địa chỉ cho giao diện WAN;
• một DHCP server bật sẵn cung cấp địa chỉ IP cho mạng LAN và các địa chỉ DNS servers lấy từ nhà cung cấp dịch vụ Internet;
• một NTP client (msntp) dùng NTP server pool.ntp.org, còn bản thân m0n0wall không có dịch vụ NTP;
• NAT bật sẵn;
• DNS forwarder (dnsmasq) bật sẵn.
• bộ cản lọc gói (ipfilter) mở (thông) cho mọi kết nối hướng ra và đóng (chặn) cho mọi kết nối hướng vào;
• bộ điều tiết băng thông (traffic shaper) tắt.
Bạn có thể bật tắt, chỉnh sửa các dịch vụ nói trên theo nhu cầu thực tế.
Chú ý. Có vài việc thường làm sau khi thiết lập xong đường hầm VPN nhưng chúng tôi viết trước luôn vào đoạn này cho tiện.
1. DNS forwarder cho phép bạn sử dụng DNS của ISP cho nhu cầu giải tên thông thường, đồng thời dùng DNS server khác cho nhu cầu giải tên miền đặc biệt nào đó (thí dụ, mycompany.local.) Khi DNS server "đặc biệt" như thế được đặt ở mạng LAN xa thì bạn chỉ có thể truy nhập được qua đường hầm VPN. Nếu bạn muốn chuyển DNS query vào một DNS server ở xa xuyên qua đường hầm VPN thì chỉ chỉnh DNS forwarder thôi là không đủ; m0n0wall phục vụ cho các máy khác rất tốt nhưng khi phục vụ bản thân nó dường như "lú lẫn", cứ "đâm đầu xin chết" ở giao diện WAN. Bạn phải giúp cho nó "tỉnh ra" bằng một static route hướng vào giao diện LAN. Thí dụ, với đường hầm:
192.168.1.0/24---192.168.1.1, 50.51.52.53---Internet---60.61.62.63, 192.168.2.1---192.168.2.0/24
muốn forward DNS query từ m0n0wall (192.168.1.1, 50.51.52.53) tới DNS server 192.168.2.10 chẳng hạn, cần thiết lập static route với Destination network = 192.168.2.10/32 (hoặc 192.168.2.0/24, /25,... gì đó cũng được), Interface = LAN và Gateway = 192.168.1.1.
2. Bạn có thể cản lọc kết nối hướng ra mạng xa qua đường hầm VPN bằng luật Firewall trên giao diện LAN.
3. Bạn có thể điều tiết băng thông (thí dụ, để ưu tiên VoIP) ở kết nối hướng ra mạng xa qua đường hầm VPN bằng luật Traffic Shaper trên giao diện WAN. (Chúng tôi chưa thử điều này.)
Nếu kiểm tra thấy chia xẻ Internet tốt và mạng LAN vẫn thông bình thường như trước thì phần chia xẻ Internet coi như xong. Ta có thể bắt tay vào lập đường hầm VPN.
(còn nữa) |
|
|
|
|
[Article] Tự làm VPN đơn giản với m0n0wall (Phần 2) |
15/07/2006 22:20:00 (+0700) | #2 | 6952 |
dusan
Member
|
0 |
|
|
Joined: 12/04/2004 12:17:57
Messages: 23
Offline
|
|
(tiếp theo)
3. Đường hầm VPN
Ở m0n0wall, đường hầm site-to-site VPN sử dụng IPsec.
Để lập một đường hầm, bạn cần khai báo các tham số mạng và lựa chọn các tham số an ninh cho cả hai appliance ở hai đầu đường hầm.
Để xác định các tham số mạng, dễ nhất là nhìn vào hình vẽ:
192.168.1.0/24---192.168.1.1, 50.51.52.53---Internet---60.61.62.63, 192.168.2.1--- 192.168.2.0/24
(192.168.1.1, 50.51.52.53) gọi là thiết bị bên trái.
(192.168.2.1, 60.61.62.63) gọi là thiết bị bên phải.
Cả hai appliance đều kết nối VPN qua giao diện WAN.
Giải sử thiết bị bên trái là m0n0wall. Đối với nó:
50.51.52.53 gọi là local gateway.
60.61.62.63 gọi là remote gateway.
192.168.1.0/24 gọi là local subnet.
192.168.2.0/24 gọi là remote subnet.
Để ý hai subnet là rời nhau (không chứa địa chỉ nào chung). Đây là yêu cầu bắt buộc.
Đoạn này hướng dẫn m0n0wall nối thông với m0n0wall. Thiết lập m0n0wall với các thiết bị IPsec khác sẽ được trình bày ở đoạn sau. Như thế thiết bị bên phải cũng là m0n0wall. Khi đó bạn cần khai báo tham số mạng ở bên phải giống như bên trái, nhưng phải đảo chiều để cho cái-gì-local của bên trái trở thành cái-đó-remote của bên phải, và ngược lại.
Trong IPsec hai bên liên lạc là ngang hàng với nhau. Bất cứ bên nào cũng có thể là bên khởi xướng (initiator) còn bên kia sẽ là bên phúc đáp (responder) trong quá trình đàm phán. Đối chiếu với quan niệm về ứng dụng client-server thì cả hai bên đều có thể là "server", khi bên này là "server" thì bên kia là "client" và ngược lại. Điều quan trọng là có thể bạn tạo thành công đường hầm khi máy của bạn là intiator, nhưng không nhất thiết thành công khi nó ở vai trò responder.
Vì thế, khi thử nghiệm một thiết bị, bạn nên tạo tình huống thử từng trường hợp. Cách đơn giản nhất là khai báo tắt Keep Alive ở cả hai bên rồi thử ping qua đường hầm từ bên initiator.
Chú ý là đối với m0n0wall, remote gateway phải có địa chỉ IP công khai và tĩnh. Không đặt remote gateway sau NAT là để tránh rắc rối về bảo mật. Không dùng địa chỉ IP động vì m0n0wall chỉ cho phép khai báo remote gateway bằng địa chỉ IP chứ không cho phép dùng tên.
Tham số mạng chỉ có bấy nhiêu Phần còn lại của đoạn này sẽ nói về các tham số an ninh.
a) IPsec tunnel hay là IPIP over IPsec transport?
IPsec tunnel và IPIP over IPsec transport (IIPtran) là hai kiểu đường hầm có cùng định dạng gói. Vì thế chúng tương thích với nhau theo nghĩa thiết bị kiểu này có thể "nói chuyện được" (thông đường hầm) với thiết bị kiểu kia. IPsec tunnel không bắt buộc phải có (và cũng thường không có) giao diện ảo với địa chỉ IP. IIPtran có định nghĩa giao diện ảo với địa chỉ IP nên giúp dễ dàng giải quyết các vấn đề mạng như định tuyến động, cản lọc gói và điều tiết băng thông. IPsec tunnel có cơ chế kiểm soát truy nhập, chỉ cho phép gói từ local subnet đã khai báo đi vào đường hầm. IIPtran không có cơ chế này nên sau khi hình thành đường hầm, mọi gói đều có thể đi vào và việc kiểm soát truy nhập nếu cần phải được thực hiện bằng phương tiện ngoài giao thức (như tường lửa). Do IIPtran là kết hợp chồng chất của hai giao thức riêng biệt (IPIP thực hiện đường hầm và IPsec transport mã hóa), việc thực thi lệch lạc có thể dẫn đến sự cố an ninh. Sự cố có thể nhẹ như để gói lạ xâm nhập đường hầm, hay có thể rất nghiêm trọng như thả gói không mã hóa đi qua đường hầm mà người dùng không hề hay biết. (Đây cũng là vấn đề chung của mọi giao thức đường-hầm-over-IPsec-transport.) Tóm lại, trong khi trên nguyên tắc cả hai dạng đường hầm đều có thể tiện dụng và bảo mật như nhau, trên thực tế một cài đặt IIPtran thường tiện dụng hơn nhưng bảo mật thường thua một cài đặt IPsec tunnel. Cài đặt IIPtran phải cố gắng đạt tới độ bảo mật của IPsec tunnel bằng cách thực hiện thật chính xác từng giao thức và kết hợp hai giao thức thật ăn khớp. Cài đặt IPsec tunnel phải cố gắng đạt tới độ tiện dụng của IPsec transport bằng nhiều cách, kể cả cố gắng nặn ra giao diện ảo với địa chỉ IP.
Với m0n0wall, bạn không thể chọn lựa: nó chỉ cho phép IPsec tunnel.
b) Lifetime?
Khi nói đến IPsec tunnel, thực ra chúng tôi nghĩ đến ESP tunnel. ESP (Encapsulating Security Payload) là giao thức truyền dữ liệu, bao gồm cả mã hóa dữ liệu và xác thực dữ liệu. Có thể nhìn một đường hầm ESP như một kênh an toàn.
Để có chìa khóa bí mật cho ESP, hai bên dùng IKE. IKE (Internet Key Exchange) là giao thức để hai bên đàm phán, trao đổi chìa khóa, xác thực danh tính và cũng để trao đổi các thông tin tạo ra, duy trì và hủy bỏ các đường hầm trong vòng bí mật. IKE cũng dùng để tạo ra, duy trì và hủy bỏ các phiên liên lạc của chính bản thân IKE. Có thể nhìn một phiên IKE như một kênh an toàn khác.
Như vậy đàm phán IKE có hai loại, gọi là 2 phases. Phase 1 để tạo kênh IKE còn Phase 2 để tạo kênh ESP trong khuôn khổ của một kênh IKE. Khi hủy bỏ một kênh IKE, mọi kênh ESP tạo ra trong khuôn khổ của kênh ấy cũng bị hủy theo. Kênh an toàn có thể được hủy bỏ do trục trặc kỹ thuật, khởi động lại máy hay đã hết thời hạn tồn tại (lifetime). Về thời gian, các kênh ESP tồn tại song song và nối tiếp (gối đầu) nhau. Nếu bạn bật Keep alive, hai bên sẽ duy trì ít nhất 1 cặp kênh (1 thu, 1 phát) luôn sẵn sàng làm việc. Khi cặp kênh sắp hết hạn, hai bên sẽ tự động đàm phán tạo cặp kênh mới.
Mọi thông tin bí mật về một kênh an toàn, bao gồm các địa chỉ IP, tên thuật giải và quan trọng nhất là các chìa khóa mật mã, được hai bên chứa trong cái gọi là SA (Security Association). Trong thuật ngữ IPsec, SA của kênh IKE gọi là ISAKMP SA, SA của kênh ESP gọi là IPsec SA.
Lựa chọn lifetime hợp lý được khuyến cáo như sau.
Khi vận hành chính thức:
• ISAKMP SA lifetime = 24 tiếng,
• IPsec SA lifetime = 8 tiếng.
Khi thử nghiệm:
• ISAKMP SA lifetime = 20 phút,
• IPsec SA lifetime = 10 phút.
Khuyến cáo lifetime cho vận hành chính thức để duy trì độ bảo mật hợp lý đồng thời tránh nguy cơ rớt mạng khi thay đổi chìa khóa quá thường xuyên, nhưng quan trọng nhất để đảm bảo đàm phán thành công. Khi các mạng đều trong tầm kiểm soát của bạn, bạn có thể đặt cho mọi thiết bị một lifetime thống nhất nào đó khác. Chẳng hạn, khi vận hành chính thức chúng tôi thường sử dụng ISAKMP SA lifetime = 7 ngày đêm.
c) PSK hay là certificate?
Sau khi trao đổi chìa khóa, hai máy ở hai bên bước vào vòng đàm phán bí mật trong đó có một việc là đôi bên xác thực danh tính của nhau. Có hai cách xác thực là PSK và certificate (chữ ký điện tử).
PSK nhanh hơn certificate nhiều. Có thể nói là PSK "nhanh như chớp".
Nhưng PSK là một chìa khóa bí mật dùng chung nghĩa là cả hai bên cùng biết. Khi dùng certificate, mỗi bên có một chìa khóa bí mật riêng. Đối phương đứng giữa đường muốn nghe trộm cuộc liên lạc giữa hai máy A và B phải giả làm A để liên lạc với B và giả làm B để liên lạc với A. Trường hợp A, B dùng PSK, đối phương chỉ cần đột nhập được một máy (A hoặc B) là đủ lấy được PSK. Trường hợp A, B dùng certificate, đối phương phải đột nhập được vào cả hai máy A và B thì mới lấy được cả hai chìa khóa bí mật, việc này khó hơn so với trường hợp trước. Vậy certificate bảo mật hơn PSK.
Việc lựa chọn là tùy ở bạn. Tuy nhiên, kể cả khi quyết định sẽ dùng certificate bạn nên luôn luôn thử nghiệm thiết bị với PSK trước và chỉ chuyển sang thử nghiệm với certificate khi sau khi liên lạc PSK đã thông suốt. Lý do: identifier với certificate là điểm dễ bất đồng nhất trong kết nối giữa các cài đặt IPsec khác nhau.
d) Main mode, Base mode hay là Aggressive mode?
Aggressive mode nhanh nhất. Aggressive mode được dùng khi một bên (initiator, client) có địa chỉ IP biến động còn bên kia (responder, server) có địa chỉ IP tĩnh. (Khi client là một máy đơn lẻ, kết nối như thế thường gọi là road-warrior.) Aggressive mode có sai lầm nghiêm trọng về bảo mật khiến nó có thể lộ mật khi dùng với PSK. Ngay cả khi dùng certificate Aggresive mode cũng không an toàn bằng Main mode. Khi đàm phán Main mode bất thành, một vài loại appliance tự động chuyển sang Aggresive mode. Nhưng thật may mắn m0n0wall không thuộc loại đó.
Base mode không có trong m0n0wall.
Main mode an toàn nhất. Theo chúng tôi, main mode là mode duy nhất chấp nhận được để net-to-net VPN thật sự an toàn.
e) PFS hay là không PFS?
PFS (Perfect Forward Secrecy) là một lựa chọn tùy biến khi đàm phán trong khuôn khổ một ISAKMP SA để bên này yêu cầu bên kia trao đổi chìa khóa mới cho IPsec SA mới hoàn toàn độc lập với những chìa khóa đã dùng trong các IPsec SA trước đây. Như vậy, nếu bạn dùng PFS thì bảo mật sẽ rất là tốt.
Nhưng thực tế khi liên lạc giữa các cài đặt khác nhau của IPsec (và đôi khi, kể cả giữa hai máy cùng kiểu, với cùng một cài đặt!) PFS là điểm khá problematic. Đàm phán dễ thất bại khi bạn bật PFS.
Vì thế, người ta thường khuyến cáo thử nghiệm thiết bị tắt PFS trước. Chỉ khi liên lạc đã thông suốt mới bật PFS thử tiếp.
f) SHA hay là MD5?
Đây là một câu hỏi về chọn lựa thuật giải. Những câu hỏi tương tự có thể là: AES hay là 3DES? AES128 hay là AES256? RSA hay là DSA? Để chọn lựa thuật giải, cần để ý:
- Diffie-Hellman (DH) không có gì thay thế được.
- AES nhanh hơn 3DES vài lần.
- RSA nhanh hơn DSA vài lần,
- MD5 nhanh hơn SHA1 vài lần.
- Khi dùng PSK, mỗi ký tự ngẫu nhiên tương đương với khoảng 5-6 bit.
- Ở thuật giải cho phép độ dài chìa khóa tùy biến, chìa khóa càng dài, tính toán càng chậm.
- Độ bảo mật của các thuật giải (xem bảng).
Code:
Độ bảo mật (bit) Thuật giải
56 DES
80 Skipjack
96 ?
112 3DES
128 HMAC MD5, AES 128
160 HMAC SHA1
192 AES 192
256 AES 256
Độ bảo mật (bit) Thuật giải
56 DH,RSA,DSA 416
80 DH,RSA,DSA 1024
96 DH,RSA,DSA 1536
112 DH,RSA,DSA 2048
128 DH,RSA,DSA 3072
160 DH,RSA,DSA 4864
192 DH,RSA,DSA 7680
256 DH,RSA,DSA 15360
(Nguồn: hai bảng trên do bạn LTVA cung cấp)
Độ bảo mật của một hệ thống nhiều khâu bằng độ bảo mật ở khâu yếu nhất. Cái giá trả cho bảo mật cao là tiêu hao nhiều điện năng và thời gian CPU. Lựa chọn lệch với những giải thuật mạnh yếu khác nhau dẫn đến lãng phí điện năng và thời gian CPU vô ích. Để máy chạy được hiệu quả cao nhất, bạn cần chọn lựa các thuật giải có độ bảo mật đồng đều.
Như vậy, với một đường hầm với cả hai gateway ở hai đầu đều là m0n0wall, chọn lựa giải thuật hợp lý như sau.
Phase 1 dùng
• DH 1536 DH key group (mức cao nhất có ở m0n0wall),
• PSK 20 ký tự hoặc X509 certificate với RSA 2048,
• 3DES (không có chọn lựa AES cho phase 1), và
• HMAC MD5.
Phase 2 dùng
• DH 1536 PFS key group (mức cao nhất có ở m0n0wall),
• AES 128, và
• HMAC MD5.
Tuy nhiên, nhiều loại card mạng có chức năng offload IPsec có thể thực hiện các phép tính 3DES, SHA,... Với PC có những card mạng này, bạn nên chọn những thuật giải sẵn có trong phần cứng như vậy để giảm nhẹ công việc cho CPU. Việc offload IPsec là hoàn toàn tự động và bạn không có tuỳ biến nào để bật hay tắt nó trong giao diện Web của m0n0wall.
(còn nữa) |
|
|
|
|
[Question] Tự làm VPN đơn giản với m0n0wall |
17/07/2006 18:51:03 (+0700) | #3 | 7381 |
dusan
Member
|
0 |
|
|
Joined: 12/04/2004 12:17:57
Messages: 23
Offline
|
|
Nếu muốn nhìn thấy tận mắt giao diện web admin của m0n0wall "in action", mời bạn xem địa chỉ sau:
http://www.monowall.procad.sk/manual/system.php
Chú ý. Trong trang web trên có mục 'OpenVPN' nhưng đó là giao diện m0n0wall phiên bản 1.2 beta 7. Việc tích hợp OpenVPN vào m0n0wall đã khởi động từ đầu năm 2005 nhưng đến nay vẫn còn chưa xong vì nhiều khó khăn kỹ thuật. Phiên bản ổn định hiện nay (1.22) không chứa OpenVPN.
|
|
|
|
|
[Article] Tự làm VPN đơn giản với m0n0wall (Phần 3) |
18/07/2006 19:25:13 (+0700) | #4 | 7676 |
dusan
Member
|
0 |
|
|
Joined: 12/04/2004 12:17:57
Messages: 23
Offline
|
|
(tiếp theo)
4. m0n0wall với các thiết bị khác
Việc kết nối giữa hai thiết bị IPsec khác loại là một việc mệt mỏi. IPsec có nhiều tham số tuỳ biến và bạn thường phải thử nghiệm thật lâu để chọn lựa được tuỳ biến tốt nhất có trong cả hai thiết bị.
Sau đây là vài cấu hình hoạt động được.
a) m0n0wall với pfsense
pfsense www.pfsense.com) là một phần mềm VPN router nguồn mở xuất xứ từ m0n0wall, nhưng đã nâng cấp lên FreeBSD 6.1. Trong khi m0n0wall dùng ipfilter, pfsense dùng pf, bộ cản lọc gói nhanh chuyển đặt từ hệ điều hành OpenBSD. Cùng với vài tính năng khác nữa như failover, load balancing, OLSR (giao thức định tuyến mạng không dây), OpenVPN, các gói phần mềm cài thêm (squid, ntop,...) và SSH daemon, đối với một số doanh nghiệp, pfsense có thể là chọn lựa thích hợp hơn m0n0wall.
Vì pfsense xuất xứ từ m0n0wall, việc kết nối không có gì trở ngại. Thực tế, mọi hướng dẫn kết nối m0n0wall - m0n0wall đều có thể dùng cho trường hợp m0n0wall - pfsense. Hơn thế nữa, pfsense còn cho phép khai báo remote gateway bằng tên miền (thay vì địa chỉ IP), điều này có ích khi m0n0wall không có địa chỉ IP tĩnh.
b) m0n0wall với IPCop
IPCop (ipcop.org) là một phần mềm VPN router nguồn mở dựa trên Linux kernel 2.4.x, được dùng rất rộng rãi. Cũng tương tự như pfsense, IPCop với những tính năng như squid, snort, OpenVPN (gói cài thêm) có thể thích hợp hơn m0n0wall đối với một số doanh nghiệp.
Theo thử nghiệm của chúng tôi, m0n0wall đàm phán tốt với IPCop nếu dùng PSK, nhưng đàm phán thất bại khi mưu toan dùng certificate. Lý do là IPCop không hiểu và không chấp nhận danh tính của m0n0wall.
Kết nối m0n0wall - IPCop là một "ca" điển hình về bế tắc đàm phán giữa hai cài đặt IPsec khác hẳn nhau.
(Một cài đặt IPsec thường có hai phần: phần kerneland thực hiện ESP và phần userland thực hiện IKE. Các hệ thống FreeBSD như m0n0wall và pfsense dùng fast_ipsec trong kerneland và racoon trong userland. Các hệ thống Linux có thể lựa chọn netkey hoặc klips cho kerneland và lựa chọn racoon hoặc pluto cho userland. Cấu trúc klips khác xa fast_ipsec. Cấu trúc netkey khá gần với fast_ipsec. Các distro Linux 2.6.x thường dùng netkey + racoon, IPCop dùng klips + pluto. Đàm phán racoon - pluto có lẽ sẽ thành công, cả hai đều là những cài đặt IPsec có tên tuổi, nhưng đàm phán m0n0wall - IPCop hầu như thất bại vì chúng là những Web GUI chỉ cho phép vài tuỳ biến trong số nhiều tuỳ biến của racoon - pluto.)
c) m0n0wall với Planet VRT311
Planet VRT311 là một VPN router rẻ tiền (khoảng 200 USD), phần cứng và phần mềm đều là proprietary. Web GUI của nó cho phép rất nhiều tuỳ biến IPsec. (Tuy nhiên, Web GUI có nhiều lỗi nặng, khiến chúng tôi đâm ra hoài nghi về chất lượng phần mềm chung của thiết bị này.)
Đàm phán m0n0wall - VRT311 về cơ bản là khả dĩ. Hướng dẫn trong đoạn 3 vẫn dùng được cho m0n0wall - VRT311. Chỉ có những khác biệt sau:
• Trên VRT311, tắt IKE PFS (nhưng vẫn bật được ESP PFS ).
• Trên m0n0wall, phải có một bản sao certificate của VRT311.
• Certificate của m0n0wall phải có subject alternative name trùng với Identifier của nó.
• Dùng DH 1024 và RSA 1024.
Lý do. Nếu VRT311 bật IKE PFS, m0n0wall xoá hết các SA sau khi đàm phán với tư cách initiator. VRT311 không gửi certificate cho m0n0wall trong một thông điệp yêu cầu phải chứa certificate. VRT311 bỏ qua subject và chỉ dựa vào subject alternative name. DH 1024 là mức bảo mật cao nhất của VRT311.
Trên đây là ba thí dụ về m0n0wall interoperability mà bản thân chúng tôi đã có dịp trải qua. Còn vô số thí dụ khác bạn có thể tham khảo trong mail list lưu tại trang web của m0n0wall, một kho kinh nghiệm quý báu của cộng đồng người dùng phần mềm này.
(còn nữa) |
|
|
|
|
[Question] Re: Tự làm VPN đơn giản với m0n0wall |
28/07/2006 16:33:26 (+0700) | #5 | 10574 |
dusan
Member
|
0 |
|
|
Joined: 12/04/2004 12:17:57
Messages: 23
Offline
|
|
Sau đây là một trình tự cài đặt dễ chịu hơn cho máy tính PC với một ổ CD boot được và có thể truy nhập được một Web server chứa file generic-pc-xxx.img. (Xin nhắc lại, file đó là binary image của m0n0wall, với xxx là số hiệu phiên bản; hiện nay xxx = 1.22.)
Cảnh báo. Cài đặt m0n0wall vào đĩa cứng sẽ xoá sạch mọi phân vùng đĩa cứng.
1. Chuẩn bị một Linux live CD, như Knoppix, DSL (Dam* Small Linux), Puppy, Hacao,...
2. Boot máy từ live CD đó.
3. Download generic-pc-xxx.img file, cất vào /ramdisk/home/knoppix (thư mục knoppix có thể xuất hiện dưới một tên gì đó khác tuỳ theo distro của bạn)
4. Từ root shell, gõ dòng lệnh
Code:
gunzip -c /ramdisk/home/knoppix/generic-pc-xxx.img | dd of=/dev/hda bs=16k
5. Xong. Chúc bạn may mắn. |
|
|
|
|
[Article] Tự làm VPN đơn giản với m0n0wall (Phần 4) |
28/07/2006 17:59:23 (+0700) | #6 | 10586 |
dusan
Member
|
0 |
|
|
Joined: 12/04/2004 12:17:57
Messages: 23
Offline
|
|
(tiếp theo)
5. Windows domain qua đường hầm VPN
Với các đoạn hướng dẫn trên, bạn đã có thể dùng mọi dịch vụ IP "thông thường" như DNS, Web, scp, rsync,... giữa các mạng LAN thông nhau qua đường hầm VPN.
Nhưng với các dịch vụ của Windows, có thể còn trục trặc. Một ưu thế của site-to-site so với host-to-host VPN là admin chỉ cần thiết đặt các gateway chứ không phải cài đặt hay chỉnh sửa gì ở trên các host (mà số lượng host có thể rất nhiều!). Nhưng có điều là, Windows có thể không cho bạn may mắn với ưu thế đó.
Đoạn này hướng dẫn giải quyết một trục trặc thông thường khi vận hành Windows domain qua đường hầm VPN ở Layer 3 mà m0n0wall IPsec tunnel là một kiểu đường hầm như thế.
Trục trặc này là hoàn toàn là lỗi của Windows.
Cấu hình trục trặc:
- domain controller (DC) Windows 2000 + SP4
- workstation Windows XP pro + SP2
- Hai máy này nằm ở hai mạng LAN khác nhau thông với nhau qua đường hầm VPN.
Hiện tượng trục trặc:
1. quá trình join domain rất chậm, người dùng logon domain rất chậm, hoặc connect (map) các share dữ liệu ở DC rất chậm.
Thế nào là "chậm"? Khi cả hai gateway có băng thông uplink tối thiểu 128 kb/s và không áp dụng roaming profile hay folder wwwection cho người dùng, quá trình join/logon/connect từ máy xa qua đường hầm so với từ máy nối trực tiếp qua mạng LAN 100 mb/s có tốc độ hầu như không khác gì nhau. Nếu không đạt được như vậy thì có thể coi là "chậm". Thực tế, "cái sự chậm" (tắc mạng) ấy thể hiện rất rõ. Để nhận biết nó, bạn không cần phải dùng tới đồng hồ. Thứ thích hợp hơn có lẽ là một tách cà phê.
2. Lệnh ping qua đường hầm với độ dài payload 2048 bytes cho kết quả Request Timeout.
3. Ở máy trạm Windows XP, Application log ghi lại sự kiện
Source: SceCli
Event ID: .... (Xin lỗi, vì hiện chúng tôi không logon as admin nên không xem được event này. Sẽ bổ sung sau.)
Event Type: Error
Description: ....
4. Ở máy trạm Windows XP, Application log ghi lại sự kiện
Source: Userenv
Event ID: 1054
Event Type: Error
Description: Windows cannot obtain the domain controller name for your computer network. (The specified domain either does not exist or could not be contacted. ). Group Policy processing aborted.
5. Ở máy trạm Windows XP, User Enviroment debug log (userenv.log) có thông báo lỗi "DSGetDCName failed with 59". (Xem thêm MS KB221833 và KB910206.)
Bản chất trục trặc:
Windows ước tính băng thông mạng dựa vào trễ mạng qua lệnh ping với một gói dữ liệu lớn. Khi không ping được (bị mất gói), Windows sẽ tưởng là rớt mạng.
Giải quyết trục trặc:
Có hai cách.
a) Giảm PingBufferSize. Bạn cần đọc MS KB816045 và bạn phải có hotfix KB816045 và cài lên máy trạm Windows XP. Hotfix này có trong SP3, sắp phát hành.
b) Tắt PMTU Discovery và tắt Group Policy Slow Link Detection (bằng cách thiết đặt GroupPolicyMinTransferRate =0) trên cả DC Windows 2000 lẫn máy trạm Windows XP. Xin nhấn mạnh là tắt chứ không bật. Xem thêm MS KB120642, KB314861, KB227260, KB227369.
(-- hết --) |
|
|
|
|
[Question] Re: Tự làm VPN đơn giản với m0n0wall |
14/08/2006 20:53:26 (+0700) | #7 | 14918 |
dusan
Member
|
0 |
|
|
Joined: 12/04/2004 12:17:57
Messages: 23
Offline
|
|
Phụ lục A. Cấu hình mạng
Mọi tham số cấu hình chứa trong file config.xml. Để backup / restore toàn bộ hệ thống bạn chỉ cần backup / restore file duy nhất này.
Từ file này, m0n0wall tự động sinh ra các file cấu hình cho các chương trình ứng dụng:
resolv.conf cho dnsmasq,
dhcpd.conf cho dhcpd,
racoon.conf cho racoon, v.v.
Bạn có thể xem chi tiết tất cả các file cấu hình, cũng như trạng thái tức thời của hệ thống hiển thị trong một trang web với địa chỉ:
https://192.168.1.1/status.php
Dưới đây là vài trích đoạn từ báo cáo đó.
Code:
System uptime
12:41AM up 167 days, 22:50, 0 users, load averages: 0.00, 0.00, 0.00
Processes
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
root 0 0.0 0.0 0 0 ?? DLs 28Feb06 0:00.00 (swapper)
root 30865 0.0 0.9 1332 968 ?? SN 12:41AM 0:00.00 sh -c ps xauww 2>&1
root 30843 0.0 1.7 2376 1812 ?? S 12:41AM 0:00.05 /usr/local/sbin/mini_httpd -S -E...
root 30842 0.0 1.7 2376 1812 ?? S 12:41AM 0:00.00 /usr/local/sbin/mini_httpd -S -E...
root 30841 0.0 6.3 7388 6820 ?? SN 12:41AM 0:02.23 /usr/local/bin/php status.php
root 59869 0.0 1.4 1880 1568 ?? INs 28Feb06 0:02.27 /usr/local/sbin/dhcpd -cf... xl0
nobody 59864 0.0 0.8 1040 844 ?? SN 28Feb06 0:40.57 /usr/local/sbin/dnsmasq --server=...
root 59818 0.0 2.0 2504 2152 ?? INs 28Feb06 5:09.18 /usr/local/sbin/racoon -d -f ...
root 25043 0.0 0.8 1104 824 ?? IN 28Feb06 0:02.24 /usr/local/bin/msntp -r -P no -l ...
root 25042 0.0 0.9 1332 996 ?? IN 28Feb06 0:00.11 /bin/sh ...
root 252 0.0 0.7 1016 788 ?? SN 28Feb06 0:09.24 /usr/local/bin/ez-ipupdate -c ...
root 166 0.0 0.8 1336 904 ?? I 28Feb06 0:00.22 /bin/sh /etc/rc.initial console
root 157 0.0 0.8 1224 856 ?? Is 28Feb06 0:05.02 /usr/sbin/dropbear -r ... -d...
root 100 0.0 1.5 2292 1644 ?? Ss 28Feb06 12:28.75 /usr/local/sbin/mini_httpd -S -E -c...
root 97 0.0 0.7 1004 736 ?? Ss 28Feb06 14:35.56 /usr/sbin/syslogd -ss
root 88 0.0 1.1 1456 1224 ?? Ss 28Feb06 20:00.48 /sbin/ipmon...
root 77 0.0 1.0 1444 1100 ?? Is 28Feb06 0:10.13 /sbin/dhclient -nw -cf ... fxp0
root 9 0.0 0.0 0 0 ?? DL 28Feb06 1:12.24 (vnlru)
root 8 0.0 0.0 0 0 ?? DL 28Feb06 3:08.83 (syncer)
root 7 0.0 0.0 0 0 ?? DL 28Feb06 57:42.83 (bufdaemon)
root 6 0.0 0.0 0 0 ?? DL 28Feb06 0:10.76 (pagedaemon)
root 5 0.0 0.0 0 0 ?? DL 28Feb06 0:00.00 (usbtask)
root 4 0.0 0.0 0 0 ?? DL 28Feb06 0:01.64 (usb0)
root 3 0.0 0.0 0 0 ?? DL 28Feb06 0:00.00 (taskqueue)
root 2 0.0 0.0 0 0 ?? DL 28Feb06 0:00.00 (cryptoret)
root 1 0.0 0.6 1060 696 ?? ILs 28Feb06 1:05.89 /sbin/init --
root 30866 0.0 0.6 1084 676 ?? RN 12:41AM 0:00.00 ps xauww
Code:
Interfaces
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=40<POLLING>
inet 50.51.52.53 netmask 0xffffff00 broadcast 50.51.52.255
ether 00:a0:49:e1:e2:e4
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=1<RXCSUM>
inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
ether 00:50:50:d8:a8:56
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
xl1: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
options=1<RXCSUM>
ether 00:50:50:d8:b1:8e
media: Ethernet autoselect (none)
status: no carrier
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 50.51.52.1 UGSc 5 70117308 fxp0
50.51.52/24 link#1 UC 1 0 fxp0
50.51.52.1 00:13:11:13:b4:ad UHLW 5 67 fxp0 1199
50.51.52.53 127.0.0.1 UGHS 0 0 lo0
127.0.0.1 127.0.0.1 UH 1 0 lo0
192.168.2.10/32 192.168.1.1 UGSc 1 2 xl0
192.168.1 link#2 UC 3 0 xl0
192.168.1.1 00:50:50:d8:a8:56 UHLW 4 0 lo0
192.168.1.17 00:04:76:36:77:7c UHLW 2 161523 xl0 1141
192.168.3.16/32 192.168.1.1 UGSc 1 9145 xl0
Code:
ipfw show
50000 723957 140632208 allow ip from 192.168.1.1 to any
50001 479961 59527905 allow ip from any to 192.168.1.1
50002 8873712 726357103 queue 7 tcp from any 6881-6999 to any in via fxp0
50003 0 0 queue 7 tcp from any to any dst-port 6881-6999 in via fxp0
50004 0 0 queue 5 tcp from any 6881-6999 to any out via fxp0
50005 9107395 818207561 queue 5 tcp from any to any dst-port 6881-6999 out via fxp0
50006 0 0 queue 7 ip from any 412 to any in via fxp0
50007 0 0 queue 7 ip from any to any dst-port 412 in via fxp0
50008 0 0 queue 5 ip from any 412 to any out via fxp0
50009 0 0 queue 5 ip from any to any dst-port 412 out via fxp0
50010 2291 829355 queue 7 ip from any 1044-1045 to any in via fxp0
50011 40411 1926621 queue 7 ip from any to any dst-port 1044-1045 in via fxp0
50012 40659 2961631 queue 5 ip from any 1044-1045 to any out via fxp0
50013 2821 494679 queue 5 ip from any to any dst-port 1044-1045 out via fxp0
50014 3 792 queue 7 ip from any 1214 to any in via fxp0
50015 1091 305412 queue 7 ip from any to any dst-port 1214 in via fxp0
50016 1137 155949 queue 5 ip from any 1214 to any out via fxp0
50017 5 454 queue 5 ip from any to any dst-port 1214 out via fxp0
50018 7 348 queue 7 ip from any 2340 to any in via fxp0
50019 2139 571035 queue 7 ip from any to any dst-port 2340 in via fxp0
50020 2307 411250 queue 5 ip from any 2340 to any out via fxp0
50021 7 1034 queue 5 ip from any to any dst-port 2340 out via fxp0
50022 0 0 queue 7 ip from any 4329 to any in via fxp0
50023 283 104332 queue 7 ip from any to any dst-port 4329 in via fxp0
50024 332 26344 queue 5 ip from any 4329 to any out via fxp0
50025 0 0 queue 5 ip from any to any dst-port 4329 out via fxp0
50026 301708 14926636 queue 7 ip from any 4661-4665 to any in via fxp0
50027 33814 4297927 queue 7 ip from any to any dst-port 4661-4665 in via fxp0
50028 33517 2342698 queue 5 ip from any 4661-4665 to any out via fxp0
50029 309789 26084187 queue 5 ip from any to any dst-port 4661-4665 out via fxp0
50030 354 148622 queue 7 ip from any 5190 to any in via fxp0
50031 0 0 queue 7 ip from any to any dst-port 5190 in via fxp0
50032 0 0 queue 5 ip from any 5190 to any out via fxp0
50033 263 31657 queue 5 ip from any to any dst-port 5190 out via fxp0
50034 2449 116307 queue 7 ip from any 5500-5503 to any in via fxp0
50035 0 0 queue 7 ip from any to any dst-port 5500-5503 in via fxp0
50036 0 0 queue 5 ip from any 5500-5503 to any out via fxp0
50037 2502 167472 queue 5 ip from any to any dst-port 5500-5503 out via fxp0
50038 339938 16902251 queue 7 ip from any 6346 to any in via fxp0
50039 0 0 queue 7 ip from any to any dst-port 6346 in via fxp0
50040 0 0 queue 5 ip from any 6346 to any out via fxp0
50041 352959 37879703 queue 5 ip from any to any dst-port 6346 out via fxp0
50042 3336 346923 queue 7 ip from any 6666-6668 to any in via fxp0
50043 0 0 queue 7 ip from any to any dst-port 6666-6668 in via fxp0
50044 0 0 queue 5 ip from any 6666-6668 to any out via fxp0
50045 3461 198648 queue 5 ip from any to any dst-port 6666-6668 out via fxp0
50046 230 15112 queue 7 ip from any 6699-6701 to any in via fxp0
50047 0 0 queue 7 ip from any to any dst-port 6699-6701 in via fxp0
50048 0 0 queue 5 ip from any 6699-6701 to any out via fxp0
50049 372 49649 queue 5 ip from any to any dst-port 6699-6701 out via fxp0
50050 5 904 queue 7 ip from any 7668 to any in via fxp0
50051 0 0 queue 7 ip from any to any dst-port 7668 in via fxp0
50052 0 0 queue 5 ip from any 7668 to any out via fxp0
50053 5 519 queue 5 ip from any to any dst-port 7668 out via fxp0
50054 0 0 queue 7 ip from any 7788 to any in via fxp0
50055 0 0 queue 7 ip from any to any dst-port 7788 in via fxp0
50056 0 0 queue 5 ip from any 7788 to any out via fxp0
50057 2 182 queue 5 ip from any to any dst-port 7788 out via fxp0
50058 0 0 queue 7 ip from any 8311 to any in via fxp0
50059 0 0 queue 7 ip from any to any dst-port 8311 in via fxp0
50060 0 0 queue 5 ip from any 8311 to any out via fxp0
50061 0 0 queue 5 ip from any to any dst-port 8311 out via fxp0
50062 52795 3242968 queue 7 ip from any 8888-8889 to any in via fxp0
50063 0 0 queue 7 ip from any to any dst-port 8888-8889 in via fxp0
50064 0 0 queue 5 ip from any 8888-8889 to any out via fxp0
50065 53475 4417424 queue 5 ip from any to any dst-port 8888-8889 out via fxp0
50066 0 0 queue 7 ip from any 28864-28865 to any in via fxp0
50067 0 0 queue 7 ip from any to any dst-port 28864-28865 in via fxp0
50068 0 0 queue 5 ip from any 28864-28865 to any out via fxp0
50069 0 0 queue 5 ip from any to any dst-port 28864-28865 out via fxp0
50070 19068605 1060939020 queue 3 tcp from any to any iplen 0-80 tcpflags ack out via fxp0
50071 2339266 198780287 queue 1 ip from any to any iplen 0-100 out via fxp0
50072 426 53888 queue 1 udp from any to any dst-port 53 out via fxp0
50073 0 0 queue 1 ah from any to any out via fxp0
50074 318665 46414984 queue 1 esp from any to any out via fxp0
50075 0 0 queue 1 gre from any to any out via fxp0
50076 208 39438 queue 2 icmp from any to any out via fxp0
50077 5949458 1472340168 queue 4 ip from any to any out via fxp0
50078 30577 2307318 queue 8 icmp from any to any in via fxp0
50079 23943933 975608454 queue 8 ip from any to any iplen 0-100 in via fxp0
50080 0 0 queue 8 ah from any to any in via fxp0
50081 529415 271660772 queue 8 esp from any to any in via fxp0
50082 0 0 queue 8 gre from any to any in via fxp0
50083 2922832 3094296768 queue 6 ip from any to any in via fxp0
65535 74736589 8762863319 allow ip from any to any
Code:
ipfstat -nio
@1 pass out quick on lo0 from any to any
@2 pass out quick on xl0 proto udp from 192.168.1.1/32 port = 67 to any port = 68
@3 pass out quick on fxp0 proto udp from any port = 68 to any port = 67
@4 pass out quick on fxp0 proto udp from 50.51.52.53/32 port = 500 to any
@5 pass out quick on fxp0 proto esp from 50.51.52.53/32 to any
@6 pass out quick on fxp0 proto ah from 50.51.52.53/32 to any
@7 pass out quick on xl0 proto udp from 192.168.1.1/32 port = 500 to any
@8 pass out quick on xl0 proto esp from 192.168.1.1/32 to any
@9 pass out quick on xl0 proto ah from 192.168.1.1/32 to any
@10 pass out quick on xl0 from any to any keep state
@11 pass out quick on fxp0 from any to any keep state
@12 block out log quick from any to any
@1 pass in quick on lo0 from any to any
@2 block in log quick from any to any with short
@3 block in log quick from any to any with ipopt
@4 pass in quick on xl0 proto udp from any port = 68 to 255.255.255.255/32 port = 67
@5 pass in quick on xl0 proto udp from any port = 68 to 192.168.1.1/32 port = 67
@6 block in log quick on fxp0 from 192.168.1.0/24 to any
@7 block in log quick on fxp0 proto udp from any port = 67 to 192.168.1.0/24 port = 68
@8 pass in quick on fxp0 proto udp from any port = 67 to any port = 68
@9 skip 3 in on xl0 from 192.168.3.16/32 to any
@10 skip 2 in on xl0 from 192.168.2.10/32 to any
@11 skip 1 in on xl0 from 192.168.1.0/24 to any
@12 block in log quick on xl0 from any to any
@13 block in log quick on fxp0 from 10.0.0.0/8 to any
@14 block in log quick on fxp0 from 127.0.0.0/8 to any
@15 block in log quick on fxp0 from 172.16.0.0/12 to any
@16 block in log quick on fxp0 from 192.168.0.0/16 to any
@17 pass in quick on fxp0 proto udp from any to 50.51.52.53/32 port = 500
@18 pass in quick on fxp0 proto esp from any to 50.51.52.53/32
@19 pass in quick on fxp0 proto ah from any to 50.51.52.53/32
@20 pass in quick on xl0 proto udp from any to 192.168.1.1/32 port = 500
@21 pass in quick on xl0 proto esp from any to 192.168.1.1/32
@22 pass in quick on xl0 proto ah from any to 192.168.1.1/32
@23 skip 1 in proto tcp from any to any flags S/FSRA
@24 block in log quick proto tcp from any to any
@25 block in log quick on xl0 from any to any head 100
@1 pass in quick from 192.168.1.0/24 to 192.168.1.1/32 keep state group 100
@2 block in quick from 192.168.1.64/26 to 192.168.0.0/16 group 100
@3 block in quick from 192.168.1.128/25 to any group 100
@4 pass in quick from 192.168.1.0/24 to any keep state group 100
@26 block in log quick on fxp0 from any to any head 200
@27 block in log quick from any to any
|
|
|
|
|
[Question] Re: Tự làm VPN đơn giản với m0n0wall |
14/08/2006 21:09:44 (+0700) | #8 | 14922 |
dusan
Member
|
0 |
|
|
Joined: 12/04/2004 12:17:57
Messages: 23
Offline
|
|
Phụ lục B. Cấu hình VPN
Code:
racoon.conf
path pre_shared_key "/var/etc/psk.txt";
path certificate "/var/etc";
remote 70.71.72.73 {
exchange_mode main;
my_identifier fqdn "1234.mycompany.com.vn";
certificate_type x509 "server1-signed.pem" "server1-key.pem";
peers_certfile "peer1-signed.pem";
peers_identifier address 70.71.72.73;
initial_contact on;
support_proxy on;
proposal_check obey;
proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method rsasig;
dh_group 2;
lifetime time 604800 secs;
}
lifetime time 604800 secs;
}
sainfo address 192.168.1.0/27 any address 192.168.3.0/27 any {
encryption_algorithm rijndael;
authentication_algorithm hmac_md5;
compression_algorithm deflate;
pfs_group 2;
lifetime time 28800 secs;
}
remote 60.61.62.63 {
exchange_mode main;
my_identifier fqdn "1234.mycompany.com.vn";
certificate_type x509 "server2-signed.pem" "server2-key.pem";
peers_identifier address 60.61.62.63;
initial_contact on;
support_proxy on;
proposal_check obey;
proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method rsasig;
dh_group 5;
lifetime time 604800 secs;
}
lifetime time 604800 secs;
}
sainfo address 192.168.1.0/27 any address 192.168.2.0/27 any {
encryption_algorithm rijndael;
authentication_algorithm hmac_md5;
compression_algorithm deflate;
pfs_group 5;
lifetime time 28800 secs;
}
SPD
192.168.1.0/24[any] 192.168.1.1[any] any
in none
spid=27 seq=5 pid=30876
refcnt=1
192.168.3.0/27[any] 192.168.1.0/27[any] any
in ipsec
esp/tunnel/70.71.72.73-50.51.52.53/unique#16402
spid=30 seq=4 pid=30876
refcnt=1
192.168.2.0/27[any] 192.168.1.0/27[any] any
in ipsec
esp/tunnel/60.61.62.63-50.51.52.53/unique#16404
spid=32 seq=3 pid=30876
refcnt=1
192.168.1.1[any] 192.168.1.0/24[any] any
out none
spid=28 seq=2 pid=30876
refcnt=1
192.168.1.0/27[any] 192.168.3.0/27[any] any
out ipsec
esp/tunnel/50.51.52.53-70.71.72.73/unique#16401
spid=29 seq=1 pid=30876
refcnt=1
192.168.1.0/27[any] 192.168.2.0/27[any] any
out ipsec
esp/tunnel/50.51.52.53-60.61.62.63/unique#16403
spid=31 seq=0 pid=30876
refcnt=1
SAD
50.51.52.53 70.71.72.73
esp mode=tunnel spi=3661296152(0xda3af218) reqid=16401(0x00004011)
E: rijndael-cbc aa568542 7e3c4a68 47334abf 2a15fc36
A: hmac-md5 47ca65a4 e0698485 9b9041f0 0a0f82fc
seq=0x00000f14 replay=4 flags=0x00000000 state=mature
created: Aug 13 18:42:08 2006 current: Aug 14 00:41:53 2006
diff: 21585(s) hard: 28800(s) soft: 23040(s)
last: Aug 14 00:41:46 2006 hard: 0(s) soft: 0(s)
current: 680448(bytes) hard: 0(bytes) soft: 0(bytes)
allocated: 3860 hard: 0 soft: 0
sadb_seq=3 pid=30878 refcnt=2
70.71.72.73 50.51.52.53
esp mode=tunnel spi=145706343(0x08af4d67) reqid=16402(0x00004012)
E: rijndael-cbc fcbc7fba 828b27a1 36415592 30c26179
A: hmac-md5 36e837c9 f772708e 5d4884cf 65014749
seq=0x00000ee2 replay=4 flags=0x00000000 state=mature
created: Aug 13 18:42:08 2006 current: Aug 14 00:41:53 2006
diff: 21585(s) hard: 28800(s) soft: 23040(s)
last: Aug 14 00:41:46 2006 hard: 0(s) soft: 0(s)
current: 748767(bytes) hard: 0(bytes) soft: 0(bytes)
allocated: 3810 hard: 0 soft: 0
sadb_seq=2 pid=30878 refcnt=1
50.51.52.53 60.61.62.63
esp mode=tunnel spi=45808782(0x02bafc8e) reqid=16403(0x00004013)
E: rijndael-cbc 818a7e9d 2115a45c f2271aff 171cecda
A: hmac-md5 9fc84bf5 8cacf00c 4cf615f4 890d9ffb
seq=0x00000289 replay=4 flags=0x00000000 state=mature
created: Aug 13 21:00:15 2006 current: Aug 14 00:41:53 2006
diff: 13298(s) hard: 28800(s) soft: 23040(s)
last: Aug 14 00:41:36 2006 hard: 0(s) soft: 0(s)
current: 160040(bytes) hard: 0(bytes) soft: 0(bytes)
allocated: 649 hard: 0 soft: 0
sadb_seq=1 pid=30878 refcnt=2
60.61.62.63 50.51.52.53
esp mode=tunnel spi=209810343(0x0c8173a7) reqid=16404(0x00004014)
E: rijndael-cbc 82d2908e 88368716 9da0d6b1 b8dac65c
A: hmac-md5 78fa014d 793d9706 1e095ae8 0d8e286f
seq=0x00000213 replay=4 flags=0x00000000 state=mature
created: Aug 13 21:00:15 2006 current: Aug 14 00:41:53 2006
diff: 13298(s) hard: 28800(s) soft: 23040(s)
last: Aug 14 00:41:36 2006 hard: 0(s) soft: 0(s)
current: 82847(bytes) hard: 0(bytes) soft: 0(bytes)
allocated: 531 hard: 0 soft: 0
sadb_seq=0 pid=30878 refcnt=1
|
|
|
|
|
[Question] Tự làm VPN đơn giản với m0n0wall |
07/12/2006 14:35:58 (+0700) | #9 | 28734 |
dusan
Member
|
0 |
|
|
Joined: 12/04/2004 12:17:57
Messages: 23
Offline
|
|
Bổ sung cho phần 5. Windows domain qua đường hầm VPN
Giải quyết trục trặc
Thêm cách thứ ba:
c) Thêm firewall rule(s) cho phép lưu thông qua đường hầm VPN với lựa chọn Allow fragmented packets. Bạn thường chỉ cần thêm một rule duy nhất ở mục firewall, tab LAN, trước default rule. Theo cách này bạn chỉ cần chỉnh sửa ở máy gateway, không cần chỉnh sửa gì ở các máy host. Cách c) này là cách giải quyết nhanh gọn nhất.
-------------------------------------------------------------------------------------
Bổ sung cho phần 3. Đường hầm VPN
Mạng hình sao
Một mạng LAN tham gia vào VPN được gọi là một site. Muốn tạo một VPN có 3 sites trở lên, từng cặp sites đều có đường hầm nối thẳng với nhau. Cách nối này gọi là mạng lưới đủ (full-mesh topology).
Thí dụ, với 4 site A, B, C, D, để có full mesh bạn cần tạo 6 đường hầm AB, AC, AD, BC, BD, CD. Nếu thiếu đường hầm AB chẳng hạn thì A và B sẽ không thể thông với nhau.
Còn một dạng VPN khác, với một site được chọn làm trung tâm và các site còn lại (gọi là chi nhánh) chỉ có 1 đường hầm nối với site trung tâm, nhưng các chi nhánh không những thông mạng với trung tâm mà còn thông được với nhau một cách gián tiếp qua trung tâm. Cách nối này gọi là mạng hình sao (star topology).
Thí dụ, với 4 site A, B, C, D để có star bạn chỉ cần 3 tạo đường hầm AB, AC, AD. Trong đó A được chọn là site trung tâm.
Bởi đường đi qua trung tâm thường dài hơn đường nối trực tiếp giữa hai chi nhánh, mạng hình sao thường có hiệu quả thấp hơn mạng full-mesh. Nhưng mạng hình sao cần tạo ít đường hầm hơn nên cài đặt, bảo trì cũng dễ hơn.
Khi khai báo đường hầm cho mạng full-mesh, local subnet và remote subnet là hai mạng rời nhau (đã viết ở trên). Trái lại, ở đường hầm cho mạng star, local subnet và remote subnet được khai báo là hai mạng lồng nhau. Chi tiết cách làm được chỉ qua thí dụ sau đây.
Thí dụ. Trong star topology, nhánh mạng
192.168.1.0/24---192.168.1.1, 50.51.52.53---Internet---60.61.62.63, 192.168.2.1--- 192.168.2.0/24
với site bên trái là trung tâm, site bên phải là chi nhánh, được thiết lập bằng một đường hầm với tham số như sau.
Ở thiết bị bên trái (trung tâm)
local gateway = 50.51.52.53
remote gateway = 60.61.62.63
local subnet = 192.168.0.0/16
remote subnet = 192.168.2.0/24
Ở thiết bị bên phải (chi nhánh)
local gateway = 60.61.62.63
remote gateway = 50.51.52.53
local subnet = 192.168.2.0/24
remote subnet = 192.168.0.0/16
Mọi gói tin xuất phát từ chi nhánh 192.168.2.0/24 nhằm tới 192.168.27.65 chẳng hạn đều được gửi qua đường hầm tới trung tâm 192.168.1.1. Tại đây nó sẽ được vứt bỏ hoặc chuyển tới mạng 192.168.27.0/24, nếu mạng ấy tồn tại. Trường hợp mạng ấy cũng là một chi nhánh, gói tin sẽ lại được chuyển qua một đường hầm VPN. |
|
|
|
|
[Article] Tự làm VPN đơn giản với m0n0wall |
17/12/2009 19:00:41 (+0700) | #10 | 201108 |
youmakemefeel
Member
|
0 |
|
|
Joined: 11/01/2007 23:14:17
Messages: 23
Offline
|
|
Thanks bác dusan vì bài viết rất hữu ích. Lần trước có đọc bài viết rất hay của bác về bảo mật mạng cho doanh nghiệp nhỏ mà e search mãi ko thấy, chỉ có tìm thấy có phần 1 . Bác còn lưu post lại cho e tham khảo với.
thanks! |
|
|
|
|
[Article] Tự làm VPN đơn giản với m0n0wall |
17/12/2009 22:43:29 (+0700) | #11 | 201150 |
facialz
Elite Member
|
0 |
|
|
Joined: 20/07/2004 03:48:17
Messages: 197
Location: HoChiMinh city
Offline
|
|
Tui xin đóng góp 2 dạng VPN nữa giữa m0n0 v.1.3 với thiết bị ipsec khác: Draytek Vigor 29xx và Fortinet Fortigate w/FortiOS v.4
1. m0n0 - Vigor
192.168.0.1/24 m0n0 111.0.0.1 --- INTERNET --- 222.0.0.2 Vigor 172.16.0.1/16
1.1. m0n0
Interface: WAN
Enable NAT-T: No
DPD Interval: bỏ trống
Local subnet: LAN subnet
Remote subnet: 172.16.0.0/16
Remote gateway: 222.0.0.2
Phase 1 proposal:
Nego mode: main
My Identifier: My IP address
Encryption Algo: AES
Hash Algo: SHA1
DH key group: 2
Lifetime: 86400 seconds
Auth method: Pre-shared key
Pre-Share Key: 0123456789ABCDEFGHIJKLMN
Phase 2 proposal:
Protocol: ESP
Encryption Algo: 3DES, Rijndael (AES)
Hash Algo: SHA1, MD5
PFS key group: 2
Lifetime: 3600 seconds
1.2. Vigor
LAN to LAN
Common settings
Enable this profile: yes
VPN Dial-Out through: WAN1 only (hoặc WAN2 only)
Call Direction: Both
Always on: yes
Enable ping to keep alive: yes
PING to the IP: 192.168.0.1
Dial-Out settings
Type of server I'm calling: IPSec tunnel
Server IP/hostname: 111.0.0.1
IKE auth method: Pre-shared key
Pre-shared key: 0123456789ABCDEFGHIJKLMN
IPsec security method: High (ESP) - AES with auth
Advanced:
IKE phase 1 mode: main mode
IKE phase 1 proposal: AES128_SHA1_G2
IKE phase 2 proposal: AES_SHA1
IKE phase 1 key lifetime: 86400
IKE phase 2 key lifetime: 3600
Perfect Forward Secret: Enable
Local ID: 222.0.0.2
Dial-In settings
Allowed Dial-In type: IPSec tunnel
Specify remote VPN gateway: yes
Peer VPN server IP: 111.0.0.1
IKE auth method: Pre-shared key
IKE pre-shared key: 0123456789ABCDEFGHIJKLMN
IPSec Security method: 3DES, AES
TCP/IP Network settings
My WAN IP: 222.0.0.2
Remote gateway IP: 111.0.0.1
Remote network IP: 192.168.0.0
Remote network mask: 255.255.255.0
Local network IP: 172.16.0.0
Local network mask: 255.255.0.0
RIP direction: disable
2. m0n0 - Fortigate
192.168.0.1/24 m0n0 111.0.0.1 --- INTERNET --- 222.0.0.2 Fortigate 172.16.0.1/16
2.1. m0n0
Interface: WAN
Enable NAT-T: No
DPD Interval: bỏ trống
Local subnet: LAN subnet
Remote subnet: 172.16.0.0/16
Remote gateway: 222.0.0.2
Phase 1 proposal:
Nego mode: main
My Identifier: My IP address
Encryption Algo: AES
Hash Algo: SHA1
DH key group: 5
Lifetime: 86400 seconds
Auth method: Pre-shared key
Pre-Share Key: 0123456789ABCDEFGHIJKLMN
Phase 2 proposal:
Protocol: ESP
Encryption Algo: 3DES, Rijndael (AES)
Hash Algo: SHA1, MD5
PFS key group: 5
Lifetime: 3600 seconds
2.2. Fortigate
Phase 1
Name: My Home
Remote gateway: Static IP address
IP address: 111.0.0.1
Local interface: WAN1 (hoặc WAN2, WAN3,...)
Mode: Main (ID protection)
Auth method: preshared key
Pre-shared key: 0123456789ABCDEFGHIJKLMN
Advanced...
Enable IPsec Interface mode: yes
IKE version: 1
Local gateway IP: Main Interface IP
P1 proposal: 1-Encryption: AES128, Authentication: SHA1
DH group: 5
Keylife: 86400
Local ID: bỏ trống
XAUTH: disable
NAT Traversal: no
Keepalive frequency: 10
Dead Peer Detection: no
Phase 2
P2 proposal:
1-Encryption: AES128, Authentication: SHA1
2-Encryption: AES128, Authentication: MD5
3-Encryption: 3DES, Authentication: SHA1
4-Encryption: 3DES, Authentication: MD5
Enable replay detection: no
Enable perfect forward secrecy (PFS): yes
DH group: 5
Keylife: seconds 3600
Autokey Keep Alive: enable
Quick mode selector:
Source addr: 172.16.0.0/16
Source port: 0
Destination addr: 192.168.0.0/24
Destination port: 0
Protocol: 0
Lưu ý:
Trường hợp sau Vigor/Fortigate có nhiều subnet (192.168...., 172...., 10....), muốn cho bao nhiêu subnet vào VPN thì:
-- trên Vigor/Fortigate tạo bấy nhiêu phase 2 (trong một phase 1 duy nhất),
-- trên m0n0 tạo bấy nhiêu VPN profile đầy đủ cả phase 1 lẫn phase 2 nhưng các phase 1 đều giống nhau, kể cả pre-shared key cũng phải trùng nhau; mỗi phase 2 cho 1 local subnet. |
|
|
|
|
|
|
|
Users currently in here |
1 Anonymous
|
|
Powered by JForum - Extended by HVAOnline
hvaonline.net | hvaforum.net | hvazone.net | hvanews.net | vnhacker.org
1999 - 2013 ©
v2012|0504|218|
|
|