Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Web Development

Tường lửa Linux

by
Difficulty:AdvancedLength:LongLanguages:

Vietnamese (Tiếng Việt) translation by Thai An (you can also view the original English article)

Có một số ứng dụng tường lửa cho Linux, nhưng điều bạn có thể không nhận ra là, trung tâm của tất cả các chương trình này là một ứng dụng toàn năng duy nhất được tích hợp ngay trong Linux Kernel: iptables. Đây là tường lửa Linux. Bất kể chương trình nào bạn sử dụng để định cấu hình tường lửa của mình trong Linux, cuối cùng tất cả đều thuộc về iptables. Tất cả những gì các chương trình khác làm là cấu hình nó.

Vì vậy, đây là câu hỏi: nếu những chương trình đó chỉ đơn giản là cấu hình iptables, tại sao bạn không tự cấu hình nó trực tiếp? Làm như vậy dễ hơn bạn tưởng!


Mạng nền

Nếu bạn quen thuộc với các thuật ngữ mạng, như kết nối, IP, TCP và Cổng, thì hãy thoải mái bỏ qua bước tiếp theo. Mặt khác, nếu bạn chưa quen với mạng, hãy đọc tiếp để làm quen với các thuật ngữ mà bạn sẽ cần hiểu, để làm theo hướng dẫn này.

Xin lưu ý rằng các điều khoản và định nghĩa dưới đây đã được cố ý đơn giản hóa quá mức. Chúng có nghĩa là cho người dùng hàng ngày, không phải sysadins. Vì vậy, nếu bạn là một sysadmin dày dạn hoặc bạn có CCNA trong túi, xin vui lòng cho tôi biết vì đã không nhập chi tiết.

TCP / IP

TCP / IP là một giao thức cho phép các máy tính liên lạc với nhau qua Internet và Mạng Ethernet.

Thất bại là biện pháp cuối cùng.

Hãy tưởng tượng Mạng Ethernet là một mạng cục bộ nhỏ (LAN - mạng cục bộ), như PC tại nhà, máy tính xách tay và điện thoại thông minh của bạn. Đó là một mạng lưới không đồng nhất nhỏ, tách biệt với phần còn lại của thế giới. Một mạng lưới các mạng như vậy là những gì chúng ta đều biết là Internet: một tập hợp các mạng được kết nối với nhau.

TCP / IP là sự kết hợp của hai giao thức làm việc ở các cấp độ khác nhau trong hệ thống phân cấp của chuỗi truyền thông mạng. Chúng tôi sẽ không đi sâu vào chi tiết về hệ thống phân cấp đó. TCP là viết tắt của Giao thức điều khiển chuyển giao và trách nhiệm cốt lõi của nó là đảm bảo truyền thông thành công. Nó kiểm soát tính chính xác của dữ liệu được gửi và đảm bảo thành công của nó. Nó có các thuật toán khác nhau để thực hiện tổng kiểm tra tinh vi, tự động sửa lỗi và thử lại. Thất bại là biện pháp cuối cùng. Tên, IP đến từ Giao thức Internet. Bạn có thể liên kết nó tốt nhất với "số điện thoại" của PC. Mỗi máy có khả năng giao tiếp qua Internet phải có một địa chỉ IP - một số điện thoại duy nhất - để các gói liên lạc có thể tìm thấy điểm đến của chúng. Gói tin là một phần nhỏ của dữ liệu trong luồng truyền thông, được chứa độc lập và có thể được kiểm tra tính chính xác. Về cơ bản, chúng ta có thể nói rằng máy tính của chúng ta gửi các gói TCP qua Internet bằng giao thức IP.

Mỗi giao tiếp mạng được liên kết với một cổng cụ thể. Các cổng mạng nằm trong khoảng từ 0 đến 2 ^ 16 (65536). Mỗi kết nối mạng có một cổng gửi đi cho người khởi tạo nó và một cổng gửi đến cho người đang nghe tin nhắn của các máy tính khác. Có thể có một số kết nối giữa một số máy tính trên các cổng giống hệt nhau. Tuy nhiên, một máy tính có thể nói chuyện qua nhiều cổng cùng một lúc. Vì vậy, về cơ bản, các cổng rất tốt để xác định các dịch vụ và xác định các kênh liên lạc, nhưng chúng không giới hạn số lượng dữ liệu hoặc kết nối.

Một số máy tính có thể có địa chỉ IP tương tự. Bạn có thể đã quan sát thấy rằng cả máy tính của bạn ở nhà và tại nơi làm việc đều có địa chỉ IP có dạng một cái gì đó dọc theo dòng 192.168.s Something.s Something, hoặc 10.0.s Something.s Something, hoặc 172.16.s Something.s Something. Đây là những địa chỉ IP riêng được gọi là chỉ có thể được sử dụng trong mạng LAN của bạn. Bạn không thể truy cập Internet với các địa chỉ IP như thế này. Chúng gần giống với số nội thất cho mạng điện thoại của công ty bạn.

Cổng & Cầu

Cầu là những gì máy tính có địa chỉ IP thực (công khai) truyền qua Internet.

The bridge

Về cơ bản, các máy tính này có quyền và khả năng nói chuyện trực tiếp với nhau trên Internet. Nhưng, vì không có kết nối trực tiếp giữa tất cả các máy tính trên thế giới (điều đó sẽ khá khó thực hiện), các cây cầu có trách nhiệm kết nối các phân đoạn của Internet.

Giữ cho sự tương tự điện thoại của chúng tôi tồn tại, bạn có thể tưởng tượng những cây cầu này tương tự như các trung tâm điện thoại trong thị trấn hoặc khu phố của bạn. Nếu bạn thực hiện cuộc gọi đến một số địa phương khác (các máy tính bên trái trong lược đồ của chúng tôi), việc liên lạc có thể được thực hiện trực tiếp bởi trung tâm điện thoại của bạn bằng cách kết nối thực tế đường dây của bạn với hàng xóm của bạn. Tuy nhiên, nếu bạn muốn gọi cho chú Bob xa của mình, cuộc gọi của bạn sẽ phải được chuyển hướng qua một số trung tâm điện thoại cho đến khi điện thoại của chú bạn có thể được kết nối. Chúng tạo thành một cây cầu giữa thị trấn của bạn và thị trấn của anh ấy.

Cổng là cách để các máy tính từ mạng riêng (LAN có địa chỉ IP riêng) liên lạc với các máy tính khác trên Internet.

Gateway

Mạng riêng giống như mạng điện thoại riêng của công ty bạn. Bạn có thể gọi các số nội thất, nhưng để gọi cho ai đó ngoài mạng của công ty bạn - như vợ bạn ở nhà - trước tiên bạn phải quay số đặc biệt hoặc tiền tố.

Máy tính thực sự hoạt động theo cách tương tự. Khi bạn ở trên một mạng riêng, bạn có một cái gọi là máy tính cổng. Khi máy tính của bạn cố gắng nói chuyện với một máy tính khác trên Internet, nó sẽ tự động liên lạc với cổng trước và yêu cầu "một đường dây" với thế giới bên ngoài. Cổng sẽ thực hiện việc nói chuyện với máy tính được tìm thấy trên Internet và sẽ chuyển tiếp tin nhắn trở lại máy tính của bạn. Bạn, như một người dùng bình thường, không thấy sự khác biệt giữa một cây cầu và một cổng. Máy tính của bạn sẽ biết làm thế nào để đối phó với chúng.


Định nghĩa của tường lửa

Tường lửa là một chương trình chạy trên Cổng, Cầu hoặc PC / Máy tính xách tay / Điện thoại thông minh có khả năng lọc các gói mạng đến, đi và chuyển tiếp. Tường lửa về cơ bản là một công cụ cho phép bạn hạn chế quyền truy cập Internet hoặc mạng của bạn và người khác truy cập từ Internet vào mạng của bạn.

Và đúng vậy, trên thực tế, bộ định tuyến cáp hoặc Wi-Fi gia đình của bạn là một tường lửa cho tất cả các máy tính và thiết bị của bạn kết nối với internet thông qua nó.


Vấn đề chúng tôi sẽ giải quyết

Để đặt bối cảnh, hãy tưởng tượng một kiến trúc mạng rất có thể. Tôi đã thấy nhiều công ty nhỏ hoạt động tương tự như thế này.

Network

Những gì chúng ta có ở đây thực sự là một cái gì đó khá đơn giản:

  • Một vài máy tính và các thiết bị kết nối mạng khác - các hộp màu xanh lá cây
  • Một máy chủ email - hộp màu đỏ
  • Máy chủ Microsoft Active Directory - hộp màu xanh
  • Một cổng, cũng là một tường lửa, cho mạng của chúng tôi chạy Linux - hộp đen
  • Giữa tất cả những điều này là một chuyển đổi mạng đơn giản

Trong phần sau, chúng tôi sẽ định cấu hình iptables trên cổng đó, để nó cho phép tất cả các thiết bị trong mạng kết nối với Internet. Nó sẽ cho phép chúng tôi kết nối với nó, thông qua SSH và sẽ cho phép các máy chủ thư bên ngoài truy cập máy chủ thư trong mạng của chúng tôi - một máy tính thậm chí không có địa chỉ IP công cộng; chỉ một tư nhân.


Thành phần Iptables

Tên của Iptables thực sự có ý nghĩa trong chức năng của nó. Đó là một tập hợp các bảng địa chỉ IP và cổng với một số hành động được đính kèm. Theo thuật ngữ của iptable, các bảng này được gọi là chuỗi. Một iptables trống, chưa được định cấu hình có thể trông như thế này:

Bạn có thể quan sát thấy có ba chuỗi chính:

  • INPUT - tất cả các kết nối đến
  • FORWARD - kết nối đi qua
  • OUTPUT - kết nối khởi hành từ máy chủ này

Thuật ngữ "ACCEPT chính sách" trong ngoặc đơn có nghĩa là ACCEPT được đặt làm chính sách mặc định cho chuỗi cụ thể đó. Vì vậy, khi không có kết quả khớp nào cho kết nối, quy tắc đó sẽ được áp dụng. Có ba khái niệm chính bạn có thể sử dụng khi định cấu hình tường lửa của mình:

  • chính sách mặc định CHẤP NHẬN & từ chối một cách có chọn lọc tất cả những gì bạn cần - có thể khó xác định tất cả những gì bị từ chối. Tôi không khuyên bạn nên tiếp cận phương pháp này.
  • chính sách mặc định DROP hoặc DỰ ÁN & cho phép chọn lọc tất cả những gì bạn cần - điều này tốt hơn, nhưng nó có vấn đề. Nếu bạn mắc lỗi trong cấu hình iptables của mình, bạn có thể dễ dàng duy trì các chuỗi trống từ chối quyền truy cập vào mọi thứ và mọi người, kể cả bạn. Vì vậy, trừ khi bạn luôn có quyền truy cập vật lý vào máy chủ / máy tính tường lửa của mình, tôi khuyên bạn nên sử dụng phương pháp tiếp theo.
  • chính sách mặc định CHẤP NHẬN & một chính sách rõ ràng để DROP tất cả & sau đó cho phép chọn lọc tất cả những gì bạn cần - đây là giải pháp kết hợp giữa hai khả năng đầu tiên. Nó sẽ sử dụng chính sách mặc định ACCEPT, vì vậy nếu có sự cố, bạn có thể đăng nhập lại SSH hoặc bất kỳ kết nối từ xa nào bạn sử dụng cho tường lửa của mình. Đồng thời, quy tắc DROP rõ ràng cho mọi kết nối chưa từng có đảm bảo rằng bạn an toàn. Chỉ cho phép những gì bạn biết và thực sự cần sử dụng mang lại sự bảo vệ tốt nhất có thể.

Thêm quy tắc vào Iptables

Có hai cách để thêm quy tắc mới vào iptables. Một là chèn nó vào lúc bắt đầu một chuỗi. Tùy chọn khác là nối nó vào cuối chuỗi. Tại sao nó quan trọng theo thứ tự các quy tắc xảy ra?

Quan trọng: iptables kiểm tra các quy tắc trong một chuỗi từ trên xuống dưới. Nó sẽ dừng tìm kiếm của nó ở trận đấu đầu tiên.

Bạn phải thiết kế các quy tắc của mình theo cách như vậy để xem xét hành vi được đề cập ở trên của iptables. Sau trận đấu đầu tiên của quy tắc, iptables sẽ thực hiện các hành động được chỉ định bởi quy tắc và sau đó dừng tìm kiếm. Nếu không có quy tắc nào khớp với kết nối được chọn, chính sách mặc định sẽ được áp dụng.

Chèn một quy tắc mới

Hãy nói rằng chúng tôi muốn thêm một quy tắc vào iptables của chúng tôi sẽ cho phép mọi người kết nối với cổng 22 trên tường lửa của chúng tôi. Cổng 22 là cổng cho giao thức SSH. Tất nhiên, một quản trị viên máy chủ giỏi sẽ thay đổi cổng này thành một điều bất ngờ vì lý do bảo mật / che khuất rõ ràng, nhưng đó là một câu chuyện khác cho một hướng dẫn khác. Chúng tôi sẽ gắn bó với 22.

Tôi đoán rằng địa chỉ IP đối diện với Internet với IP công cộng trên địa chỉ đó là trên giao diện mạng, được gọi là eth0. Hãy mổ xẻ lệnh này:

  • -Tôi - là viết tắt của quy tắc chèn
  • INPUT - chỉ định chuỗi mong muốn
  • -i - là viết tắt của giao diện mạng - trong trường hợp của chúng tôi, eth0
  • -p - dành cho giao thức (tcp hoặc udp)
  • --dport 22 - dành cho cổng đích 22 - nó có phiên bản - cổng tương ứng để xác minh cổng nguồn
  • -j - thực sự xuất phát từ "nhảy" và được theo sau bởi một hành động - trong trường hợp của chúng tôi, hành động chấp nhận kết nối

Tuy nhiên, bạn có thể đã đoán rằng quy tắc này ít có tác dụng tại thời điểm này. Chính sách mặc định của chúng tôi là CHẤP NHẬN, do đó, việc chấp nhận một cái gì đó rõ ràng không cung cấp cho chúng tôi bất kỳ chức năng bổ sung nào. Bây giờ, hãy nhớ cách thứ ba được đề xuất để thiết lập tường lửa của chúng tôi: quy tắc rõ ràng để từ chối mọi thứ không khớp. Hãy thêm quy tắc đó.

Quy tắc bổ sung

Chúng tôi muốn chắp thêm một quy tắc chặn lưu lượng đến. Nhưng hãy cẩn thận: chúng tôi chỉ muốn chặn những gì có thể gây hại. Nếu chúng tôi chặn mọi thứ, chúng tôi sẽ không thể làm bất cứ điều gì, vì các phản hồi cho các yêu cầu của chúng tôi sẽ bị từ chối. Ví dụ: khi bạn duyệt một trang web, bạn đưa ra yêu cầu, sau đó bạn nhận được câu trả lời. Câu trả lời này đi vào máy tính của bạn, vì vậy, trên chuỗi INPUT, chúng ta phải có một quy tắc để cho phép nó.

Đầu tiên, chúng tôi sẽ thêm một quy tắc để chấp nhận lưu lượng truy cập đến cho các kết nối đã được thiết lập, chẳng hạn như phản hồi cho các yêu cầu.

Bây giờ chúng tôi đã bảo vệ các kết nối hiện có của mình và trả lời các kết nối chúng tôi đã khởi tạo, chúng tôi có thể từ chối mọi thứ khác không phù hợp.

Chúng tôi đã nối thêm một dòng khác, với quy tắc DROP tất cả các kết nối khớp. Hãy nhớ rằng: quy tắc này sẽ chỉ áp dụng nếu không có quy tắc nào trước đây thực sự khớp.

Có hai cách để từ chối kết nối.

  1. Bạn có thể sử dụng DROP, tương đương với quay số điện thoại không tồn tại với sự khác biệt là sau một thời gian, kết nối mạng hết thời gian. Với số điện thoại, robot thông báo cho bạn rằng số đó không tồn tại. Nhưng kết quả cuối cùng theo quan điểm của người gọi là như nhau: nó nghĩ rằng đích đến không tồn tại.
  2. Cách thứ hai để từ chối kết nối là với quy tắc, DỰ ÁN và một thông báo tùy chọn. Điều này tương tự với số bạn đang cố gọi là đang bận. Bạn có thể biết rằng có một số, bạn biết nó có thể được gọi, nhưng nó chỉ đơn giản là từ chối nhận cuộc gọi của bạn. Tùy chọn, bạn có thể cung cấp một thông báo với quy tắc RE DỰ ÁN; mặc định là "cổng ICMP không thể truy cập" hoặc một cái gì đó tương tự.

Cho phép máy tính truy cập Internet

Tại thời điểm này, chúng tôi có một số quy tắc cơ bản cho chuỗi INPUT. Nhưng chúng tôi có một mạng lưới các máy tính có địa chỉ IP riêng. Chúng tôi cần cung cấp một cổng vào Internet. Điều này cũng được thực hiện bởi iptables: tường lửa.

Dịch địa chỉ mạng (NAT)

Có khả năng, bạn đã nghe thuật ngữ này: NAT. Điều này đề cập đến thủ tục dịch một địa chỉ mạng này sang địa chỉ khác và chuyển tiếp thông tin giữa hai địa chỉ. Nó được sử dụng thường xuyên nhất trong các kiến trúc như của chúng ta. Cổng phải thực hiện NAT để dịch IP của bất kỳ máy tính nào từ mạng LAN sang IP công cộng của chính nó và sau đó quay lại.

Định tuyến là thủ tục mà một hệ thống có thể tìm ra giao diện mạng nào và hướng tới cổng nào nó có thể giao tiếp để đến đích. Mỗi máy tính có một bảng định tuyến riêng để xác định điều này. Iptables có thể móc vào thủ tục định tuyến này ở hai điểm khác nhau: trước và sau khi thủ tục đã xảy ra.

Hẹn hò với Iptables

Lệnh này thêm một quy tắc là ĐIỂM vào bảng NATing (-t nat). Về cơ bản, có nghĩa là các gói đầu tiên vượt qua cơ chế định tuyến trên cổng và chỉ sau khi chúng được sửa đổi. Quy tắc -j SNAT có nghĩa là Nguồn NAT; địa chỉ nguồn của các gói sẽ được thay đổi thành địa chỉ trên giao diện được chỉ định bởi -o eth0 - trong trường hợp của chúng tôi, thành địa chỉ IP được chỉ định bởi tùy chọn, --to-source. Vì vậy, bất cứ ai được liên lạc bởi một máy tính trong mạng của bạn sẽ cho rằng nó đang nói chuyện trực tiếp với cổng của bạn. Nó sẽ hoàn toàn không có manh mối về thực tế là các gói được dành cho một số máy tính khác nhau. Cổng, sử dụng iptables, sẽ giữ một danh sách nội bộ của tất cả các địa chỉ IP được dịch và khi có phản hồi, nó sẽ hoàn nguyên thay đổi và chuyển câu trả lời cho máy tính bên trong mạng.


Cho phép khách hàng từ Internet đến máy chủ email

Một vấn đề khác mà chúng ta phải đối mặt là phải làm gì khi chúng ta có một máy chủ đứng sau tường lửa. Chúng tôi cần cho phép các khách hàng, đến từ Internet, giao tiếp với máy chủ của chúng tôi theo một cách nào đó. Đây là trường hợp với máy chủ thư của chúng tôi. Khi một email đến phải được gửi đến một tài khoản thư trên máy chủ của chúng tôi, máy chủ gửi email sẽ phải kết nối với một người nhận của chúng tôi.

Nhưng máy chủ mail của chúng tôi chỉ có một địa chỉ IP riêng. Không có cách nào mà một máy tính bên ngoài có thể kết nối trực tiếp với nó. Mặt khác, cổng của chúng tôi có IP bên ngoài mà bất kỳ ai cũng có thể kết nối. Giải pháp? Mở một cổng trên cổng của chúng tôi để yêu cầu từ Internet đến cổng đó sẽ thực sự đến máy chủ email của chúng tôi. Câu trả lời, tất nhiên, sẽ đi qua cổng trở lại máy khách. Bí quyết là sử dụng một loại NAT khác ở đây, được gọi là Destination NAT. Điều này thay đổi đích gói và sau đó hoàn nguyên chúng khi phản hồi xảy ra. Hãy nghĩ về DNAT như mặt trái của SNAT.

Mẹo: Bạn có thể biết tính năng này là "Máy chủ ảo", nếu bạn đã từng chơi xung quanh với các bộ định tuyến gia đình nhỏ.

Vậy thì chuyện gì đã xảy ra ở đây? Một gói đến cổng của chúng tôi tại cổng 25 (cổng được sử dụng cho SMTP, giao thức email mà toàn bộ Internet sử dụng). Quy tắc trên bắt gói tin này vì tùy chọn --dport 25, về cơ bản nói: "Khớp mọi thứ đi đến cổng này trên giao diện được chỉ định bởi -i eth0. Bây giờ gói đã được khớp, hãy thay đổi đích của nó từ máy hiện tại (cổng) đến một được chỉ định bởi - đến đích. " Xin lưu ý rằng bạn có thể chỉ định cổng rõ ràng sau địa chỉ IP bằng cách tách cổng đó bằng dấu hai chấm.

Cuối cùng, lưu ý rằng đây là trong hook PREROUTING. Điểm đến phải được thay đổi trước khi việc định tuyến thực sự diễn ra. Nếu không, các gói sẽ kết thúc trên cổng và không tìm thấy đường nào đến máy chủ thư.


Cấu hình iptables bền bỉ

Các quy tắc bạn chèn hoặc nối vào iptables nằm trong bộ nhớ. Sau khi khởi động lại, giả mạo: mọi thứ đã biến mất! Để lưu cấu hình của bạn, bạn nên kết xuất nó vào một tệp, như vậy:

Tên của tệp không quan trọng, cũng không phải là phần mở rộng của nó. Để khôi phục các quy tắc, hãy chạy lệnh này khi máy tính của bạn khởi động.

Nếu bạn xem nội dung đã lưu, bạn sẽ thấy rằng chúng giống với các tham số mà chúng ta đã sử dụng với các lệnh iptables. Có một số khác biệt nhỏ, nhưng bạn có thể dễ dàng hiểu tệp đã lưu và thậm chí có thể viết các tệp đó của riêng bạn bằng tay và tải chúng.


Suy nghĩ cuối cùng

Cuối cùng, đây là một số suy nghĩ về việc khi nào và khi nào không sử dụng tường lửa với máy tính Linux.

Sử dụng tường lửa trên Linux khi bạn định cấu hình máy chủ (như cổng trong ví dụ của chúng tôi) hoặc khi bạn có một máy tính có thông tin quan trọng trên đó được tiếp xúc trực tiếp với Internet. Trước khi bạn bắt đầu định cấu hình iptables của mình, hãy xem xét mối nguy hiểm tiềm ẩn. Hãy tự hỏi: máy tính của tôi có được biết đến trên Internet không? Có một vài tỷ máy tính ngoài kia. Nếu bạn chỉ là một, cơ hội được nhắm mục tiêu là cực kỳ thấp. Có những người quan tâm trực tiếp đến thông tin của bạn? Tin tặc không lãng phí thời gian để đánh cắp dữ liệu ngẫu nhiên với hy vọng rằng chúng có thể tìm thấy thứ gì đó. Họ thường biết những gì họ đang tìm kiếm, và sau đó nhắm mục tiêu các máy tính có chứa thông tin mong muốn. Tất nhiên, có vô số cuộc tấn công chống lại các máy tính ngẫu nhiên cố gắng cài đặt một số loại sâu hoặc virus, nhưng trên Linux, bạn miễn dịch theo thiết kế.

Đừng lãng phí thời gian của bạn với việc định cấu hình tường lửa trên Linux khi đó là một máy tính nằm sau tường lửa, chẳng hạn như máy tính cá nhân của bạn phía sau bộ định tuyến gia đình hoặc khi bạn không có thông tin đặc biệt quan trọng trên máy tính xách tay của mình. Nếu bạn giữ các dịch vụ nghe trên mạng ở mức tối thiểu và có mật khẩu an toàn, bạn có thể quên tường lửa của mình. Cá nhân tôi không có máy tính cá nhân, máy tính xách tay hoặc điện thoại thông minh có tường lửa đang chạy. Tuy nhiên, tôi có một bộ định tuyến gia đình với tường lửa được cấu hình tốt.

Tôi nghĩ bạn cũng có thể áp dụng những ý tưởng này một cách an toàn cho Mac OSX. Nếu bạn là người dùng Windows, xin lỗi: tường lửa là tuyến phòng thủ đầu tiên của bạn. Tuy nhiên, đối với Linux hoặc MacOSX, tường lửa là tuyến phòng thủ cuối cùng của bạn. Mật khẩu được chọn cẩn thận và không chạy các dịch vụ vô dụng sẽ xử lý phần lớn bảo vệ máy tính của bạn.

Cảm ơn vì đã đọc. Câu hỏi?

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.