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.1trê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.comtrong 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.comvàintranet. 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à Allusers và Restricted .
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:
[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] :
[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 :
#============ 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 browsable và browsable 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 Ubuntu và câ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 :
[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:
[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 nobody và nobody 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:rw và u: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 . 
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ộ:
  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ó: 
 Để 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. 
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.
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 .
 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: 
 Để 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. 
 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. 
Ổ đĩ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 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  : 
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: 
<VirtualHost *:80> đến điều này:
<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:
Để 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 .
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 .
Thao tác này sẽ mở ra trang cài đặt cho domain cụ thể đó.
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ộ.
- Nhấp vào hộp 'A' màu cam bên dưới Chọn loại bản ghi .
-  Nhập intranetvào trường Nhập Tên .
-  Đố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.
 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. 
 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 : 
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:
 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. 
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 :
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:
OutputUsing 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:
OutputV       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.pem cũ crl.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:
OutputRemoving 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 smbrestrictedgroup .
-  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 .
Các tin liên quan
Cách thiết lập server OpenVPN trên Ubuntu 16.042016-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
 

