Thứ sáu, 23/09/2016 | 00:00 GMT+7

Cách tạo mạng nội bộ với OpenVPN trên Ubuntu 16.04

Intranet là mạng riêng do các tổ chức tạo ra để dễ dàng giao tiếp và truyền dữ liệu. Mạng nội bộ được xây dựng bằng cách kết nối nhiều mạng trên toàn thế giới để tạo ra một mạng ảo mới. User được kết nối với mạng nội bộ có thể truy cập các trang web nội bộ nhất định hoặc có quyền truy cập vào các dịch vụ mạng và nội dung khác trên mạng nội bộ. Ví dụ: nếu một nhân viên bên ngoài công ty muốn truy cập thông tin nhạy cảm nằm trên mạng chính của người sử dụng lao động của họ, nhân viên đó sẽ kết nối với một server VPN đặt trên mạng chính tại văn phòng. Kết nối VPN này sẽ tạo ra một tunnel an toàn giữa nhân viên và văn phòng. Trên mạng, kết nối của nhân viên sẽ xuất hiện như thể họ được kết nối local với mạng chính và không sử dụng kết nối ngoài trang web.

Trong hướng dẫn này, bạn sẽ cấu hình các dịch vụ chỉ khả dụng cho các client được kết nối với VPN, bao gồm chia sẻ file và trang web, đồng thời bạn sẽ học cách quản lý quyền truy cập vào các tài nguyên đó. Khi hoàn tất, bạn sẽ có một mạng nội bộ cơ bản, bạn có thể dễ dàng mở rộng để đáp ứng nhu cầu của bạn .

Yêu cầu

Để hoàn thành hướng dẫn này, bạn cần những thứ sau:

  • Server Ubuntu 16.04 mới.
  • Một account user tiêu chuẩn với các quyền sudo . Bạn có thể cài đặt một account tiêu chuẩn theo các Bước 2 và 3 của Hướng dẫn Cài đặt Server Ban đầu với Ubuntu 16.04 .
  • OpenVPN đã được cài đặt và cấu hình trên server của bạn. Hoàn thành hướng dẫn Cách cài đặt Server OpenVPN trên Ubuntu 16.04 trước khi tiếp tục. Ta sẽ giả định server VPN được đặt tại địa chỉ IP 10.8.0.1 trên VPN, đây là địa chỉ được sử dụng trong hướng dẫn OpenVPN và bạn có thể kết nối với VPN từ máy local của bạn .
  • Tên domain đã đăng ký và quyền truy cập để thêm các mục nhập DNS. Ta sẽ sử dụng example.com trong suốt hướng dẫn này và ta sẽ sử dụng dịch vụ DNS của DigitalOcean. Để sử dụng dịch vụ DNS của DigitalOcean với domain của bạn, hãy làm theo bước 1 và 2 trong hướng dẫn Cách cài đặt tên server với DigitalOcean của ta để trỏ domain của bạn đến server định danh của DigitalOcean.
  • Apache được cài đặt với hai server ảo được cấu hình cho domain của bạn. Làm theo hướng dẫn Cách cài đặt server ảo Apache trên Ubuntu 16.04 để cài đặt hai server ảo có tên example.comintranet. example.com , mỗi trang có một trang HTML mặc định.

Bước 1 - Cài đặt và cấu hình server file Samba

Hãy bắt đầu bằng cách cài đặt Samba để mọi người trong mạng nội bộ của ta có thể chia sẻ file . Samba khác với các ứng dụng chia sẻ file khác như Dropbox ở chỗ nó không có giao diện web hoặc bất kỳ giới hạn lưu trữ nào. Thay vào đó, Samba chia sẻ các folder và file trên chính server để bạn không phải tải dữ liệu của bạn lên bất kỳ server bên ngoài nào mà bạn không kiểm soát.

Ta sẽ tạo hai folder chia sẻ. Thư mục đầu tiên sẽ được truy cập bởi tất cả user trên mạng riêng của ta . Thư mục thứ hai sẽ chỉ được truy cập bởi những user mà ta chỉ định. Ta sẽ đặt tên tương ứng cho những chia sẻ này là AllusersRestricted .

Trước tiên, hãy cài đặt Samba và các yêu cầu của nó bằng lệnh sau:

  • sudo apt-get install samba samba-common python-glade2 system-config-samba

Tiếp theo, hãy backup file cấu hình Samba đề phòng trường hợp ta mắc lỗi khi sửa đổi nó sau này.

  • sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup

Samba cũng cần truy cập thông qua firewall , vì vậy hãy thêm luật cho lưu lượng Samba:

  • sudo ufw allow samba

Bây giờ hãy tạo các folder mà ta sẽ chia sẻ. Đầu tiên, tạo folder allusers :

  • sudo mkdir -p /samba/allusers

Sau đó, tạo folder restricted :

  • sudo mkdir -p /samba/restricted

Bây giờ, hãy chỉnh sửa file cấu hình Samba để cài đặt dịch vụ và xác định các lượt chia sẻ. Mở file cấu hình Samba:

  • sudo nano /etc/samba/smb.conf

Sau đó, xóa tất cả nội dung vì ta sẽ viết cấu hình của riêng mình từ đầu.

Đầu tiên, ta chỉ định một số cài đặt chung cho server Samba. Thêm các dòng sau vào file cấu hình:

/etc/samba/smb.conf
[global]         workgroup = WORKGROUP         server string = Samba Server %v         netbios name = ubuntu         security = user         map to guest = bad user         dns proxy = no         interfaces = 10.8.0.1/8         bind interfaces only = yes 

Hãy chia nhỏ từng cài đặt:

Cài đặt workgroup chỉ định group làm việc mà server sẽ xuất hiện khi client truy vấn. Group mặc định là WORKGROUP cho Windows, nhưng bạn có thể thay đổi nó nếu bạn đã có tên group làm việc đang sử dụng.

Chuỗi server string và dòng netbios chỉ định tên của server Samba và nền tảng của nó tương ứng.

Cài đặt security chỉ định rằng đây sẽ là một server file độc lập với các account user của chính nó. Cài đặt map to guest coi tất cả các thông tin đăng nhập bằng tên user hoặc password không hợp lệ là user khách và cài đặt dns proxy yêu cầu Samba không cố gắng phân giải domain vì ta không chạy DNS của riêng mình cho mạng nội bộ này.

Với cài đặt interfaces , ta chỉ định rằng ta chỉ lắng nghe các kết nối sử dụng IP của server VPN, không phải IP có thể truy cập . bind interface yêu cầu Samba chỉ lắng nghe các yêu cầu bắt nguồn từ VPN của ta .

Tiếp theo, ta cần chỉ định cài đặt ghi log cho Samba. Thêm đoạn cấu hình này vào file , trong phần [global] :

/etc/samba/smb.conf
[global]         ...          ## Logging         log level = 2         log file = /var/log/samba.log.%m         max log size = 50         debug timestamp = yes 

Cài đặt log level xác định mức độ chi tiết bạn muốn trong các file log của bạn . Các cấp độ này dao động từ 1 đến 10, nhưng ta sẽ gắn bó với cấp độ 2 vì nó là cấp độ gỡ lỗi tương đối nhẹ. Cài đặt log file chỉ định đường dẫn file và tên của file log , với max log size giới hạn kích thước của file log . Cài đặt debug timestamp bao gồm dấu thời gian trong log .

Điều đó sẽ chăm sóc cài đặt chung cho server của ta . Bây giờ ta hãy tạo các định nghĩa chia sẻ thực tế. Các cài đặt này chỉ định các file ta muốn chia sẻ và ai được phép truy cập các file đó.

Ta muốn có hai cổ phiếu; một cái gọi là Allusers và một cái khác gọi là Restricted . Trước tiên, hãy xác định phần Allusers . Đối với phần chia sẻ này, user có thể duyệt, ghi và đọc các file trong folder /samba/allusers . Thêm cấu hình này vào file :

/etc/samba/smb.conf
#============ Share Defenitions ================== [Allusers]         path = /samba/allusers         browsable = yes         writable = yes         guest ok = yes         read only = no         force user = nobody 

Khối [Allusers] cho biết các cài đặt sau đó chỉ áp dụng cho phần Allusers . Nó cũng xác định tên của chia sẻ mà user sẽ thấy. Cài đặt path chỉ định folder file của folder mà ta muốn chia sẻ trên mạng nội bộ của bạn . Đặt browsablebrowsable writable thành yes cho phép user duyệt trong folder đó cũng như đọc và ghi file .

Ta muốn tất cả user truy cập vào phần chia sẻ này, ngay cả khi họ không có account user trên server . Lưu ý trong global phần ta xác định map to guest khung cảnh, nghĩa là user không có account hoặc thông tin đăng nhập hợp lệ file vẫn còn truy cập có thể chia sẻ như một khách mời. Ta cho phép những khách đó truy cập vào phần chia sẻ này bằng cách đặt guest ok từ yes và sau đó ta buộc user đó phải thừa nhận danh tính của nobody với force user = nobody .

Group user nobody là group user mặc định đã biết trên bất kỳ hệ thống Linux nào. Ta có thể đặt các quyền mong muốn trên folder /samba/allusers thành nobody dùng. Sau đó, với Samba, ta cho phép nhiều khách sử dụng danh tính đó. Bằng cách này, ta có thể dễ dàng quản lý quyền truy cập của user khách vào hệ thống của bạn .

Để biết thêm thông tin về nobody user , hãy truy cập wiki Ubuntucâu trả lời này trên StackExchange .

Bây giờ ta hãy tạo Restricted file chia sẻ, mà chỉ nên được truy cập bởi các thành viên của smbrestricted group :

/etc/samba/smb.conf
[Restricted]         path = /samba/restricted         valid users = @smbrestricted         guest ok = no         writable = yes         browsable = yes 

, ta bắt đầu bằng cách chỉ định folder ta muốn chia sẻ và cấp quyền duyệt và viết, giống như ta đã làm với chia sẻ allusers . Sau đó, ta đặt valid users = @smbrestricted , điều này yêu cầu Samba chỉ cho phép các thành viên của group bị smbrestricted chế truy cập chia sẻ. Ta sẽ sớm tạo group này.

Điều đó thực hiện được đối với file smb.conf . Tệp của bạn sẽ giống như ví dụ sau:

/etc/samba/smb.conf
[global]         workgroup = WORKGROUP         server string = Samba Server %v         netbios name = ubuntu         security = user         map to guest = bad user         dns proxy = no         interfaces = 10.8.0.1/8         bind interfaces only = yes          ## Logging         log level = 2         log file = /var/log/samba.log.%m         max log size = 50         debug timestamp = yes  #============ Share Defenitions ==================  [Allusers]         path = /samba/allusers         browsable = yes         writable = yes         guest ok = yes         read only = no         force user = nobody  [Restricted]         path = /samba/restricted         valid users = @smbrestricted         guest ok = no         writable = yes         browsable = yes 

Với cấu hình Samba tại chỗ, ta có thể tạo ra các smbrestricted group và tạo user đầu tiên của ta .

Bước 2 - Cấu hình Quyền truy cập vào Chia sẻ Samba

Để cho phép truy cập vào các chia sẻ của bạn , ta phải tạo một account user và áp dụng các quyền thích hợp cho các folder mà ta định chia sẻ.

Đầu tiên, tạo các smbrestricted group với lệnh sau đây:

  • sudo addgroup smbrestricted

Bây giờ, tạo một account user trên server và thêm nó vào smbrestricted group . Ta sẽ tạo một account cho client1 , phù hợp với tên của kết nối VPN được tạo trong hướng dẫn yêu cầu :

  • sudo useradd client1 -G smbrestricted

Cuối cùng, ta cần gán password Samba cho client1 . Với cấu hình ta đã cài đặt , Samba sử dụng hệ thống xác minh thông tin xác thực của riêng mình, tách biệt với hệ thống xác minh thông thường của hệ thống Linux. Điều này thật tuyệt vì ta có thể tạo user có thể truy cập vào phần chia sẻ file với Samba mà không cần cấp cho họ quyền truy cập để đăng nhập vào chính máy.

Tạo password Samba cho user client1 bằng lệnh sau:

  • sudo smbpasswd -a client1

Lưu ý : Nếu bạn có user trên hệ thống của bạn mà bạn cũng muốn có thể truy cập các chia sẻ Samba, bạn cũng cần tạo password Samba cho những user đó, vì hệ thống đăng nhập riêng biệt với cấu hình này.

Tiếp theo, ta đặt quyền cho các folder mà ta muốn chia sẻ. Đầu tiên, ta sẽ đặt các quyền cho folder allusers :

  • sudo chmod -R 766 /samba/allusers
  • sudo chown -R nobody:nogroup /samba/allusers

Điều này cấp cho chủ sở hữu của folder đầy đủ quyền và chỉ cấp quyền đọc và ghi cho group và mọi người khác. Sau đó, ta thay đổi chủ sở hữu và group của folder chia sẻ thành nobody:nogroup bằng lệnh chown .

Tuy nhiên, có một vấn đề nhỏ khi thay đổi chủ sở hữu và group thành nobody:nogroup . Lệnh chmod -R 766 chỉ cấp quyền đọc và ghi cho các file / folder hiện tại và mới trong folder /samba/allusers , dù ai đã tạo các file hoặc folder đó. Điều này nghĩa là ngay sau khi bạn thử và tạo một file mới bên trong một folder nằm trong folder /samba/allusers bạn sẽ gặp lỗi không đủ quyền. Lưu ý khi bạn làm việc trong Allusers share, bạn đang giả định danh tính của nobodynobody có quyền rất hạn chế.

Để khắc phục sự cố này, ta sử dụng Danh sách kiểm soát truy cập hoặc ACL. Các luật ACL cho phép ta tự động gán quyền cho user và / hoặc group đối với các file và folder mới được tạo.

Đặt luật ACL cho folder /samba/allusers bằng các lệnh sau:

  • sudo setfacl -dm g:nogroup:rw /samba/allusers/
  • sudo setfacl -dm u:nobody:rw /samba/allusers/

Lệnh setfacl -dm cho biết ta đang xác định các luật cấp phép mới cho một folder hoặc file và trong tương lai, các quyền này cũng sẽ được áp dụng cho các đối tượng mới được tạo. g:nogroup:rwu:nobody:rw là các luật ACL mới cấp quyền đọc và ghi cho user nobody và các thành viên của group nogroup .

Bạn có thể tìm hiểu thêm về ACL từ Ubuntu Wiki .

Điều đó quan tâm đến phần khách. Bây giờ ta có thể đặt quyền cho folder restricted :

  • sudo chmod -R 770 /samba/restricted
  • sudo chown root:smbrestricted /samba/restricted

Lần này ta hoàn toàn chặn truy cập vào folder này trừ cho chủ sở hữu và các thành viên của smbrestricted group với chmod 770 . Ta không cần đặt luật ACL vì các quyền hoạt động bình thường trong folder chia sẻ này vì ta đang sử dụng account user đã xác thực.

Bây giờ ta đã cấu hình các chia sẻ, hãy khởi động lại server Samba để nó sử dụng file cấu hình mới:

  • sudo service smbd restart

Bây giờ ta có thể kết nối với server Samba để tải lên hoặc download file .

Bước 3 - Kết nối với server Samba từ client

Mục tiêu của mạng nội bộ của ta là truy cập và chia sẻ file trong môi trường an toàn như thể ta đã kết nối với mạng chính. Khi một client kết nối với Samba, nó sẽ gắn các folder chia sẻ trong trình khám phá file của client đó. Hãy kiểm tra điều này.

Kết nối từ Windows

Để kết nối từ Windows, hãy mở Windows Explorer. Trong thanh chuyển , nhập địa chỉ server Samba, \\10.8.0.1 và nhấn phím Enter .

Kết nối khám phá Windows thông qua thanh  chuyển

Có thể mất vài phút để Windows kết nối. Khi kết nối thành công, bạn sẽ thấy các folder chia sẻ được lưu trữ trên mạng nội bộ:

Cổ phiếu có sẵn

Lưu ý một điểm mount mạng mới được tạo trong tab Mạng trong thanh công cụ Truy cập nhanh . Tên của điểm mount là 10.8.0.1 , giống như IP của VPN.

Bạn truy cập chia sẻ Allusers giống như bất kỳ folder nào khác, vì không cần thông tin xác thực. Chỉ cần nhấp đúp vào folder để xem nội dung của nó:

Allusers chia sẻ nội dung

Để truy cập Chia sẻ Restricted , hãy nhấp đúp vào folder có tên Restricted . Cửa sổ bật lên Bảo mật Windows sẽ xuất hiện cho biết rằng thông tin đăng nhập mạng là bắt buộc để có quyền truy cập.

 Dấu nhắc  quyền chia sẻ bị hạn chế

Nhập tên user và password cho user bạn đã tạo, và tùy chọn chọn hộp để ghi nhớ thông tin đăng nhập của bạn. Sau đó bấm Ok để kết nối.

Nội dung của cổ phần bị hạn chế

Sau khi kết nối, bạn có thể tạo file hoặc folder mới hoặc thậm chí kéo các folder vào server của bạn để tải chúng lên.

Kết nối từ Ubuntu

Để kết nối từ Ubuntu, hãy mở trình khám phá file và chọn tùy chọn Kết nối với Server trong thanh bên ở bên trái. Thao tác này sẽ mở ra một màn hình mới, nơi ta có thể nhập địa chỉ server .

Tùy chọn Kết nối với  Server

Nhập smb://10.8.0.1/ và nhấp vào nút Kết nối ở góc dưới cùng bên phải. Có thể mất vài giây để PC của bạn kết nối với server tùy thuộc vào tốc độ kết nối của bạn. Khi bạn đã kết nối, một màn hình hiển thị tất cả các folder được chia sẻ trên server sẽ xuất hiện:

Cổ phiếu có sẵn

Để truy cập phần chia sẻ Allusers , chỉ cần nhấp đúp vào folder . Màn hình đăng nhập sẽ xuất hiện yêu cầu nhập tên user và password . Chia sẻ Allusers không yêu cầu bất kỳ tên user và password nào, vì vậy bạn nên chọn Ẩn danh cho tùy chọn Connect As . Nhấp vào Kết nối và nó sẽ mở folder chia sẻ cho bạn.

Kết nối ẩn danh

Lưu ý cách các folder chia sẻ này được mount trong hệ thống file của bạn sau khi bạn đã truy cập chúng. Chia sẻ Allusers được mount như một ổ đĩa mạng cùng với các ổ đĩa local khác.

Samba-6

Ổ đĩa sẽ được gắn cho đến khi hệ thống được khởi động lại hoặc ổ đĩa được ngắt kết nối.

Để truy cập Chia sẻ Restricted , bạn cần có tên user và password hợp lệ để đăng nhập. Nhấp đúp vào Chia sẻ Restricted
và màn hình đăng nhập sẽ xuất hiện trở lại. Đối với tùy chọn Connect As, chọn User đã Đăng ký và điền tên user và password
trong các trường thích hợp, giữ nguyên tùy chọn Miền .Sau đó nhấp vào Kết nối và bạn có thể truy cập các file được chia sẻ.

Kết nối  với quyền   user  client1

Kết nối từ máy Mac

Để kết nối từ máy Mac của bạn, hãy mở Finder, chọn menu Go và chọn Connect to Server… . Sau đó, sử dụng smb://10.8.0.1/ cho Địa chỉ server :

Kết nối từ máy Mac

Phần còn lại của quy trình kết nối giống với quy trình kết nối từ Linux hoặc Windows. Bạn sẽ được yêu cầu nhập tên user và password và sẽ có thể xem và kết nối với các chia sẻ có sẵn.

Điều đó sẽ chăm sóc server file của ta . Bây giờ ta hãy xem cách cấu hình Apache để lưu trữ các trang web bên trong và bên ngoài trên cùng một server .

Bước 4 - Cấu hình quyền truy cập vào server ảo Apache

Trước hướng dẫn này, bạn đã tạo hai server ảo mà ta sẽ cấu hình để sử dụng trên server của bạn . Server đầu tiên, example.com , sẽ được công chúng truy cập. Đây có thể là trang web công cộng chính cho domain của bạn. Server thứ hai, intranet. example.com , sẽ chỉ có thể truy cập được bởi các client được kết nối với mạng nội bộ.

Để hạn chế quyền truy cập vào intranet. example.com , ta sẽ chỉnh sửa file cấu hình cho server ảo đó. Mở file /etc/apache2/sites-available/intranet. example.com .conf :

  • sudo nano /etc/apache2/sites-available/intranet.example.com.conf

Sau đó, thay đổi khai báo VirtualHost từ sau:

example.com.conf '> / etc / apache2 / sites-available / mạng nội bộ. example.com .conf
<VirtualHost *:80> 

đến điều này:

example.com.conf '> / etc / apache2 / sites-available / mạng nội bộ. example.com .conf
<VirtualHost 10.8.0.1:80> 

Trước khi thay đổi, Apache sẽ phục vụ các yêu cầu internal. example.com trên tất cả các network interface . Sau thay đổi này, nó chỉ phục vụ các yêu cầu trên network interface nội bộ của ta . Điều này tương tự như cấu hình ta đã sử dụng cho Samba.

Lưu file và khởi động lại dịch vụ Apache:

  • sudo systemctl restart apache2

Ta cũng cần cho phép các kết nối thông qua UFW để Apache hoạt động bình thường. Nếu bạn chưa làm như vậy, hãy thực hiện lệnh này để cho phép lưu lượng truy cập qua firewall cho Apache:

  • sudo ufw allow http

Và nếu bạn dự định cho phép truy cập HTTP S, hãy cho phép điều đó ngay bây giờ hoặc cấu hình nó sau bằng:

  • sudo ufw allow https

Bây giờ, hãy cấu hình domain để ta có thể dễ dàng truy cập tài nguyên của bạn hơn.

Bước 5 - Cấu hình domain

Trong bước này, ta sẽ cấu hình domain của bạn để chuyển hướng lưu lượng truy cập cho mạng nội bộ đồng thời phục vụ trang web có thể truy cập . Trước khi bắt đầu bài viết này, bạn nên trỏ domain của bạn đến các server định danh của DigitalOcean.

Lưu ý : Nếu bạn có server định danh của riêng mình, bạn cần thực hiện các cài đặt này trong console của nhà cung cấp DNS của bạn .

Đăng nhập vào account DigitalOcean của bạn và nhấp vào tab Mạng ở thanh trên cùng. Sau đó, bạn sẽ thấy một màn hình như sau:

Màn hình domain -1

Để thêm domain vào account DigitalOcean của bạn, hãy nhập domain của bạn vào hộp đầu tiên bên dưới tiêu đề Thêm domain . Trong hộp thứ hai, nhập IP công cộng của server mạng nội bộ của bạn và nhấp vào nút Tạo bản ghi .

Màn hình domain -2

Tên domain mới của bạn sau đó sẽ xuất hiện dưới tiêu đề phụ Tên domain như trong hình thứ hai. Bây giờ hãy nhấp vào Thêm bên cạnh domain bạn muốn sử dụng, sau đó chọn Xem domain .

Miền xem

Thao tác này sẽ mở ra trang cài đặt cho domain cụ thể đó.

 Cài đặt  domain

Ta cần thêm ba bản ghi cho domain này. Một cho Mạng nội bộ và hai nữa đảm bảo rằng các yêu cầu đối với trang web công cộng của ta được giải quyết chính xác.

Đầu tiên, tạo bản ghi cho mạng nội bộ.

  1. Nhấp vào hộp 'A' màu cam bên dưới Chọn loại bản ghi .
  2. Nhập intranet vào trường Nhập Tên .
  3. Đối với địa chỉ IP, hãy nhập địa chỉ IP riêng cho server của bạn, địa chỉ này phải là 10.8.0.1 .

Tạo bản ghi domain  phụ Intranet

Tiếp theo, ta cần một bản ghi hướng lưu lượng truy cập không phải mạng nội bộ đến đúng nơi. Tạo một bản ghi 'A' khác, đặt tên thành @ và đặt IP thành IP công cộng của server của bạn.

Tạo bản ghi @ A

Cuối cùng, tạo bản ghi CNAME cho www . Nhấp vào tab CNAME ở góc trên cùng, đặt tên thành www và nhập domain của bạn ( example.com làm Tên server :

Tạo bản ghi CNAME www

Khi bạn hoàn tất, các bản ghi domain của bạn sẽ giống như hình ảnh sau:

Xem lại tất cả profile

Bản ghi A của intranet hướng các yêu cầu đến intranet. example.com chỉ khi nó bắt nguồn từ server VPN. Điều này nghĩa là chỉ những client được kết nối với VPN mới có thể truy cập nội dung web được lưu trữ trên intranet. example.com . Bản ghi 'A' thứ hai và CNAME ghi lại lưu lượng truy cập trực tiếp không có quyền truy cập vào mạng nội bộ đến trang web có sẵn công khai.

Lưu ý : Có thể mất đến 72 giờ để những thay đổi DNS này có hiệu lực.

Truy cập trình duyệt của bạn và truy cập http://intranet. example.com mà không được kết nối với VPN . Bạn sẽ thấy trình duyệt của bạn cố gắng tải trang web chỉ để trả về lỗi. Bây giờ hãy kết nối với VPN của bạn và reload trang web. Đến đây bạn có thể truy cập trang web, vì mục nhập DNS sẽ giải quyết.

Kết nối thành công với trang web nội bộ

Bây giờ ta đã cấu hình kỹ và kiểm tra mạng nội bộ của bạn , hãy xem cách ta quản lý quyền truy cập vào mạng mới tạo này.

Bước 6 - Quản lý quyền truy cập vào Intranet

Bước cuối cùng trong hướng dẫn này sẽ giải quyết việc quản lý quyền truy cập vào mạng nội bộ của ta và các file được chia sẻ của nó. Đầu tiên, ta sẽ xem xét cách thu hồi certificate ứng dụng client để truy cập VPN. Sau đó ta sẽ xem xét làm thế nào để loại bỏ user khỏi group smbrestricted. Cuối cùng, ta sẽ xem xét việc thêm user bổ sung và cung cấp cho họ quyền truy cập mà họ cần.

Thu hồi quyền truy cập VPN

Để thu hồi quyền truy cập vào VPN, ta sẽ thu hồi certificate của khách hàng. Điều này cho phép ta từ chối quyền truy cập vào mạng nội bộ của bạn mà không tạo certificate mới cho bất kỳ client nào khác hoặc server .

Trước tiên, ta cần thêm một dòng bổ sung vào file cấu hình của server VPN để cho phép ta thu hồi bất kỳ certificate ứng dụng client nào mà không thay đổi certificate CA root hoặc certificate server . Điều này giúp kiểm soát truy cập
dễ dàng hơn nhiều vì giờ đây bạn có thể dễ dàng thu hồi một certificate đơn lẻ khi đang di chuyển mà không làm gián đoạn bất kỳ kết nối client nào khác.

Mở file cấu hình VPN:

  • sudo nano /etc/openvpn/server.conf

Thêm dòng mã sau vào cuối file :

/etc/openvpn/server.conf
crl-verify crl.pem 

Điều này yêu cầu server VPN tìm kiếm file crl.pem , là Danh sách thu hồi certificate . Nó sẽ chứa danh sách tất cả các certificate không còn được phép truy cập vào VPN của ta .

Lưu file cấu hình, nhưng chưa khởi động lại server ; ta cần tạo file crl.pem mà cấu hình của ta đang tìm kiếm.

Để tạo file này, hãy thay đổi thành folder ~/openvpn-ca/ trên server của bạn:

  • cd ~/openvpn-ca/

Giả sử rằng ta cần thu hồi các certificate của client1 vì chúng không còn hoạt động cho tổ chức của ta nữa. Để thực hiện việc này, hãy chạy các lệnh sau:

  • source vars
  • ./revoke-full client1

Bạn sẽ thấy kết quả sau:

Output
Using configuration from /home/intranetexapmle/openvpn-ca/openssl-1.0.0.cnf Revoking Certificate 02. Data Base Updated Using configuration from /home/intranetexample/openvpn-ca/openssl-1.0.0.cnf client1.crt: C = US, ST = NY, L = New-York City, error 23 at 0 depth lookup:certificate revoked

Dòng cuối cùng của kết quả phải luôn chỉ ra lỗi 23 . Lỗi này chỉ xác nhận các certificate đã bị thu hồi.

Thao tác này cũng tạo crl.pem trong folder ~/openvpn-ca/keys/ . Để xác nhận certificate đã bị thu hồi, hãy mở file keys/index.txt bằng bất kỳ editor nào hoặc hiển thị nội dung của nó với cat :

  • cat keys/index.txt

Sẽ có một "R" bên cạnh khách hàng có certificate mà ta đã thu hồi:

Output
V 260904153313Z 01 unknown /C=US/ST=NY/L=New York/O=DigitalOcean/OU=Community/CN=server/name=server/emailAddress=me@example.com R 260904172539Z 160915150543Z 02 unknown /C=US/ST=NY/L=New York/O=DigitalOcean/OU=Community/CN=client1/name=server/emailAddress=me@example.com

Bây giờ sao chép file crl.pem vào folder /etc/openvpn/ , đó là nơi ta đã yêu cầu server OpenVPN của ta tìm kiếm file :

  • sudo cp keys/crl.pem /etc/openvpn/

Sau đó khởi động lại server OpenVPN để tùy chọn thu hồi certificate có hiệu lực.

  • sudo systemctl restart openvpn@server

Server OpenVPN tham khảo ý kiến file crl.pem mỗi khi kết nối mới với server . Mỗi khi bạn thu hồi certificate của khách hàng, bạn sẽ thay thế file crl.pemcrl.pem file mới. Bạn không cần phải khởi động lại server .

Điều quan trọng cần lưu ý là sau khi certificate VPN đã bị thu hồi, certificate này không thể được sử dụng lại trong tương lai. Ứng dụng khách có certificate VPN đã bị thu hồi sẽ certificate request mới nếu ta muốn họ có thể kết nối lại với mạng.

Chặn quyền truy cập của user vào Chia sẻ bị hạn chế.

Ta tạo ra một folder chia sẻ mà chỉ truy cập bởi user trong group smbrestricted. Để từ chối quyền truy cập của user đã có trong group đó, ta xóa user đó khỏi group đó. Ví dụ, để loại bỏ client1 , hãy sử dụng lệnh sau:

  • sudo deluser client1 -G smbrestricted

Bạn sẽ thấy kết quả sau:

Output
Removing user `client1' from group `smbrestricted' ... Done.

Nếu bạn không chắc liệu user đã có trong group hay chưa hoặc bạn muốn kiểm tra lại xem user đã bị xóa chưa, bạn có thể sử dụng lệnh members :

  • sudo apt-get install members
  • members smbrestricted

Mọi user trong group sẽ được hiển thị trên màn hình.

Thêm user mới vào mạng nội bộ

Mỗi user mới của mạng nội bộ sẽ certificate request VPN của riêng họ, vì vậy bạn sẽ làm theo các bước trong hướng dẫn Cách cài đặt Server OpenVPN trên Ubuntu 16.04 từ các yêu cầu cho mỗi user . Ví dụ: để tạo một user có tên là client2 , bạn sẽ làm như sau:

Đầu tiên, xây dựng khóa:

cd ~/openvpn-ca ./build-key client2 

Sau đó, tạo cấu hình client :

  • cd ~/client-configs
  • ./make_config.sh client2

Sau đó, trên máy local của bạn, download cấu hình client :

  • sftp sammy@openvpn_server_ip:client-configs/files/client2.ovpn ~/

Để cấp cho user mới quyền truy cập vào các file bị hạn chế, hãy làm theo các bước tương tự bạn đã sử dụng cho client1 trong phần Samba của hướng dẫn này:

  • Tạo user và thêm chúng vào smbrestricted group .
  • Tạo password Samba cho user bằng smbpassword .
  • Kiểm tra kết nối.

Sau đó, lặp lại quy trình này cho từng user bạn cần thêm.

Kết luận

Bạn đã tạo và bảo mật thành công mạng nội bộ riêng của bạn bằng OpenVPN, Samba và Apache. Bạn có một trang web nội bộ và hai file chia sẻ.

Nơi bạn đi tiếp theo phụ thuộc vào những gì bạn sẽ sử dụng mạng nội bộ của bạn . Vì hầu hết các ứng dụng server sử dụng một trang web để hiển thị thông tin, bạn có thể hạn chế quyền truy cập vào trang đó bằng cách sử dụng cấu hình server ảo giống như cấu hình ta đã làm trong hướng dẫn này. Bạn có thể mở rộng mạng của bạn bằng cách lưu trữ nhiều dịch vụ từ mạng xã hội nội bộ, Wiki hoặc dịch vụ E-mail để đặt tên cho một số dịch vụ. Và để quản lý hiệu quả hơn các file được chia sẻ, bạn có thể download và cài đặt Công cụ quản trị web Samba . Sử dụng những gì bạn đã học ở đây, bạn có thể cấu hình bất kỳ số lượng dịch vụ nào để sử dụng với mạng nội bộ mới của bạn .


Tags:

Các tin liên quan

Cách thiết lập server OpenVPN trên Ubuntu 16.04
2016-05-04
3 cách duyệt Internet an toàn với OpenVPN trên Debian 8
2015-08-31
Cách thiết lập server OpenVPN trên Debian 8
2015-08-10
Cách cấu hình và kết nối với server OpenVPN riêng trên FreeBSD 10.1
2015-04-14
Cách chạy OpenVPN trong Docker Container trên Ubuntu 14.04
2015-02-02
Cách thiết lập server OpenVPN trên Ubuntu 14.04
2015-01-28
Cách cài đặt và cấu hình server truy cập OpenVPN trên CentOS 6.5
2014-04-04
Cách bảo mật lưu lượng truy cập giữa các VPS bằng OpenVPN
2013-09-26
Cách thiết lập và cấu hình server OpenVPN trên Debian 6
2013-05-03
Cách thiết lập và cấu hình server OpenVPN trên CentOS 6
2013-05-02