Authenticate VPN by RADIUS + MySQL on Linux

Configuring OpenVPN + FreeRADIUS + MySQL
Đây là bài viết cuối cùng nằm trong chuỗi bài liên quan đến việc cài đặt, cấu hình chứng thực VPN trên Linux. Bài viết ứng dụng khả năng chứng thực từ xa của Radius vào việc đăng nhập mạng riêng ảo VPN trên Linux. Đây là một trong những đề tài seminar tốt nghiệp của sinh viên CNTT, mong nó sẽ hữu ích với ai đó đang tìm hiểu về đề tài này.

#bl2 Đây là topology của chúng ta. Mô hình bao gồm
#bl3 RADIUS server (PC) đồng thời đại diện cho PC bên trong LAN
- OS: Tùy ý
- IP : 172.16.0.2/24
- Gateway : 172.16.0.1 (IP của VPN_SERVER)
- NIC adapter: Host-only
#bl3 PC2 (VPN_SERVER) có 2 card mạng.
- OS: Rethat 5
Card 1 : Được nối với LAN
- IP : 172.16.0.1 /24
- NIC adapter: Host-only
Card 2 : Mô phỏng card nối ra ngoài internet
- IP : 192.168.1.111/24
- NIC adapter: Nat
#bl3 PC3 (VPN_CLIENT) bên ngoài internet tạo kết nối VPN để truy cập vào server.
- OS: WinXP
- IP : 192.168.1.222/24
- NIC adapter: Nat

#bl0 Quá trình cài đặt
- Ở bài viết này s sử dụng gói freeRADIUS để cài đặt cho RADIUS server, gói openVPN để cài đặt cho VPN server. Quá trình cài đặt s đã mô tả cụ thể ở những bài viết trước nên s sẽ không hướng dẫn lại trong bài viết này.
- Sau khi thực hiện cài đặt, chúng ta sẽ thiết lập ip như trong topology. Để thiết lập ip, ta có thể sử dụng lệnh setup trong terminal hoặc config trong file /etc/sysconfig/network-scripts/ifcfg-eth0 như sau:
#code DEVICE=eth0
BOOTPROTO=none
HWADDR=00:0c:29:f5:cf:65
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=172.16.0.2
TYPE=Ethernet
#/code - Restart lại dịch vụ
#code service network restart #/code
#bl0 Cấu hình RADIUS server
- Chúng ta sẽ cấu hình tại tập tin radiusd.conf. Tất cả s sẽ để như mặc định chỉ thay đổi một ít để cho phép ghi lại hoạt động chứng thực trong file log mà thui.
#code 293 # Log authentication requests to the log file.
294 #
295 # allowed values: {no, yes}
296 #
297 log_auth = yes
#/code - Tiếp theo ta sẽ khai báo một RADIUS client (chính là VPN server) cần được chứng thực bởi RADIUS server tại tập tin clients.conf
#code # vi /etc/raddb/clients.conf

** Thêm vào đoạn bên dưới
96 client 172.16.0.1 {
97 secret = s3cr3t
98 shortname = vpn server
99 nastype = other
100 }
#/code Lưu ý 172.16.0.1 là địa chỉ card giao tiếp với mạng bên trong của VPN server. secret được xem như là password để RADIUS client có thể kết nối RADIUS server. Vậy là việc khai báo đã xong, ta restart lại dịch vụ và tắt firewall (nếu ta không am hiểu nó).
#code # service radiusd start

** Disable firewall
# service iptables stop
#/code
#bl0 Cấu hình VPN server
- Tại đây, dùng trình duyệt truy cập địa chỉ https://192.168.1.111:943/admin/. Sau khi đăng nhập, ta vào phần Authentication > RADIUS. Sau đó điền vào địa chỉ của RADIUS server, khóa secret một cách chính xác như ta khai báo trong clients.conf
- Save lại và click Update running server.
- Tiếp theo ta sẽ cấu hình một chút để gói tin từ ngoài internet được phép vào trong LAN.
#code # echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -A FORWARD -i tun+ -j ACCEPT
# iptables -A INPUT -p udp --dport 1194 -j ACCEPT
#/code- Vậy là ta đã hoàn thành quá trình cấu hình. Chúng ta sẽ vào VPN clients đăng nhập bằng một user được lưu trữ trong MySQL của RADIUS server.
- Để kiểm tra quá trình VPN, trên VPN server ta vào phần Status > ... Và trên RADIUS server ta vào file log
#code # vi /var/log/radius/radius.log

** Đây là một ví dụ login thành công được log lại
Wed Jun 13 02:09:12 2012 : Info: Ready to process requests.
Wed Jun 13 02:10:16 2012 : Auth: Login OK: [sali/] (from client vpnserver port 0)
#/code
Chúc thành công @hanhphuc!!

Cùng SaliproIT BlogCộng đồng Linux 4 chia sẻ.
SHARE
    Blogger Comment
    Facebook Comment

3 comments :

  1. mình làm jong bạn vậy nhưng xp ko su dung dc user trong mysql tren radius de login. bạn nói rõ dc khhong.giup minh với

    ReplyDelete
  2. This comment has been removed by a blog administrator.

    ReplyDelete
  3. chao ban, minh login bang user vpn thi ok, nhung user mysql thi failed.minh radtest sali ben radius thi ok,giong cau hinh radius.

    ReplyDelete