Mặc dù Linux là một nền tảng có độ an toàn cao, nhưng không có nghĩa nó hoàn toàn miễn nhiễm với các rủi ro bảo mật. Do đó, bài viết sau đây sẽ hướng dẫn chi tiết các cách hiệu quả nhất để bảo mật Linux VPS.
Nội dung
Giới thiệu về bảo mật Linux VPS
Việc nắm được quyền kiểm soát của server Linux sẽ giúp ta dễ dàng thử nghiệm, tận dụng sức mạnh và tính linh hoạt của nền tảng này. Tuy nhiên, quyền kiểm soát lớn đồng nghĩa với trách nhiệm lớn. Admin của server Linux phải theo dõi và đảm bảo hoạt động của các máy được kết nối qua mạng. Từ đó giữ hệ thống luôn được bảo mật và an toàn.
Do đó, bài viết sau đây sẽ định hướng một số giải pháp bảo mật Linux VPS phổ biến nhất. Hãy bắt đầu ngay thôi!
Chặn truy cập bằng firewall
Một trong những cách đơn giản nhất chính là kích hoạt và cấu hình firewall. Firewall hoạt động như một hàng rào giữa lưu lượng truy cập chung của internet và máy tính của mình. Cụ thể, các firewall này sẽ xem xét cẩn thận các lưu lượng vào và ra. Từ đó quyết định có nên cho phép gửi thông tin hay không.
Firewall sẽ kiểm tra các lưu lượng dựa trên một bộ quy tắc (rule) được cấu hình sẵn bởi người dùng. Thông thường, một server sẽ chỉ sử dụng một vài port mạng cho các dịch vụ hợp pháp. Các cổng còn lại không được sử dụng, và sẽ được bảo vệ an toàn ở sau firewall. Và firewall sẽ chặn mọi lưu lượng đi đến các cổng này.
Do đó, ta có thể dễ dàng loại bỏ dữ liệu không mong muốn. Thậm chí là cấu hình các điều kiện cho việc sử dụng các dịch vụ.
Hiện nay có khá nhiều giải pháp firewall có sẵn để bảo mật Linux VPS. Cụ thể có thể xem ở dưới đây:
UFW
UFW là viết tắt của uncomplicated firewall, được thiết kế để cung cấp khả năng bảo vệ tốt mà không cần các cú pháp phức tạp.
Giống với hầu hết các loại firewall Linux, UFW có bản chất là một front-end. Các UFW có nhiệm vụ kiểm soát netfilter firewall có trong Linux kernel. Đây thường là một firewall đơn giản, chủ yếu dành cho những người dùng chưa quen với các giải pháp firewall Linux.
IPTables
Đây chính là giải pháp firewall Linux phổ biến nhất hiện nay. IPTables là một thành phần khác để quản lý netfilter firewall có trong Linux kernel. IPTables đã xuất hiện từ hơn 20 năm trước, đồng thời đã trải qua rất nhiều lần kiểm tra bảo mật để được đảm bảo an toàn. Ngoài ra, còn có một phiên bản khác có tên ip6tables, chuyên dùng để hạn chế IPv6.
Các cấu hình IPTables cũng rất phổ biến trong việc quản lý các máy Linux. Cú pháp của IPTables tương đối phức tạp, tuy nhiên đây là một công cụ vô cùng mạnh mẽ, sở hữu rất nhiều rule linh hoạt.
Bạn có thể tham khảo thêm: iptables là gì và cách sử dụng
IP6Tables
Như đã đề cập ở trên, bên cạnh iptables thì còn có ip6tables, dùng để hạn chế các địa chỉ IPv6.
Firewall netfilter ở trong Linux kernel lưu giữ IPv4 và IPv6 ở các table khác nhau. Do đó, chúng được tách biệt hoàn toàn với nhau. Các rule quyết định bước cuối cùng của packet được xác định bởi phiên bản giao thức đang được sử dụng.
Vì vậy, sẽ cần có một bộ rule riêng biệt khi IPv6 được enable. Lệnh ip6tables có cú pháp tương tự như lệnh itpables. Vì vậy việc hạn chế các địa chỉ với ip6tables cũng tương đối đơn giản. Tất nhiên chúng phải với các lưu lượng truy cập hướng đến địa chỉ IPv6 của mình để ip6tables có thể hoạt động chính xác.
NFTables
Gần đây, có một firewall mới đã được thêm vào Linux kernel, được gọi là nftables firewall. Phiên bản này cũng được phát triển bởi chính nhóm tạo ra iptables. Ngoài ra, nó cũng được kỳ vọng là sẽ thay thế firewall iptables cũ.
Firewall nftables triển khai các cú pháp dễ đọc hơn, đồng thời kết hợp khả năng hỗ trợ IPv6 lẫn IPv4 chỉ trong một công cụ duy nhất. Mặc dù kernel của hầu hết các phiên bản Linux đều không đủ mới để có thể triển khai nftables, nhưng nó sẽ sớm trở nên phổ biến để có thể thay thế người đàn anh của mình.
Đăng nhập từ xa an toàn tuyệt đối với SSH
Một cách khác để bảo mật Linux VPS chính là sử dụng SSH (Secure Shell) khi không có quyền truy cập vào một server cục bộ.
Cụ thể, SSH cung cấp khả năng mã hóa end-to-end, cùng với đó là tunnel các lưu lượng không an toàn qua một kết nối bảo mật, X-fowarding (GUI qua một kết nối mạng), và còn rất nhiều tiện ích khác. Về cơ bản, khi ta không có quyền truy cập vào kết nối cục bộ hay quản lý out-of-band, thì SSH chính là cách tốt nhất để có thể tương tác với máy.
Mặc dù bản thân giao thức này đã rất bảo mật, và cũng trải qua nhiều quá trình nghiên cứu, code review khác nhau…Nhưng các lựa chọn cấu hình có thể tác động tích cực hoặc tiêu cực đến tính bảo mật của dịch vụ. Do đó, ta cần tìm hiểu rõ về cách cấu hình của SSH để bảo mật Linux VPS. Cụ thể ở dưới đây:
Password và SSH-Key Login
SSH có một mô hình xác thực linh hoạt, cho phép đăng nhập bằng nhiều phương pháp khác nhau. Trong đó, hai phương pháp phổ biến nhất là xác thực bằng password và SSH-key.
Xác thực bằng password chắc hẳn là mô hình “tự nhiên” nhất cho phần lớn người dùng. Nhưng thật ra nó lại không bảo mật bằng SSH-Key. Sở dĩ vì đăng nhập bằng password cho phép kẻ xâm nhập liên tục đoán mật khẩu, cho đến khi tìm ra được tổ hợp chính xác. Đây còn được gọi là brute-forcing. Và nó có thể dễ dàng được tự động hóa bằng các công cụ hiện đại ngày nay.
Mặt khác, SSH-key lại hoạt động bằng cách khởi tạo các key pair có tính bảo mật rất cao. Các key pair này được tạo ra dưới dạng một test để xác định danh tính của người dùng. Nó cũng có thể được chia sẻ công khai dễ dàng. Và mục đích sử dụng của nó chỉ là xác thực người dùng và cho phép người dùng truy cập với private key phù hợp. Private key nên được giữ bí mật và chỉ được dùng để thực hiện các test của public key liên quan.
Về cơ bản, ta có thể thêm SSH public key trên server, và nó sẽ cho phép ta đăng nhập với một private key hợp lệ. Các key này cực kỳ phức tạp, nên brute-forcing sẽ không thể làm được gì cả. Hơn nữa, ta có thể thêm các passphrase vào trong key để tăng tính bảo mật.
Sử dụng fail2ban để ban các địa chỉ IP độc hại
Có thêm một cách để tăng tính bảo mật của cấu hình SSH là sử dụng các giải pháp như fail2ban. Cụ thể, fail2ban là một dịch vụ giám sát các log file để xem xét các hệ thống ở xa. Nếu các hệ thống này là người dùng không hợp pháp, fail2ban sẽ tạm thời chặn các lưu lượng truy cập trong tương lai từ các địa chỉ IP được liên kết.
Sử dụng Intrusion Detection System để phát hiện entry trái phép
Một cách quan trọng nữa để bảo mật Linux VPS là triển khai các chiến lược phát hiện những usage trái phép.
Hệ thống IDS (Intrusion Detection System), sẽ lập danh mục các cấu hình và chi tiết của file khi nó đang ở trạng thái bình thường. Sau đó, IDS sẽ so sánh với các trạng thái khác. Từ đó kiểm tra xem file đã bị chỉnh sửa hay cài đặt có bị thay đổi không.
Sau đây là một số hệ thống IDS phổ biến nhất:
Tripwire
Một trong những giải pháp IDS phổ biến nhất chính là tripwire. Nó có nhiệm vụ biên dịch một cơ sở dữ liệu (CSDL) gồm các file hệ thống. Đồng thời bảo vệ các config file và binary bằng một bộ key. Sau khi cấu hình chi tiết được xác định, các lần chạy tiếp theo sẽ thông báo về bất kỳ thay đổi nào đối với các file được tripwire giám sát.
Mô hình của chính sách có tính linh hoạt rất cao. Nó cho phép định hình các thuộc tính đặc trưng để có thể phù hợp với môi trường của mình. Sau đó, ta có thể cấu hình tripwire chạy thông qua một cron job. Hoặc thậm chí nó có thể thông báo qua email về các hoạt động bất thường.
Aide
Có một tùy chọn khác để bảo mật Linux VPS là Aide. Nó cũng tương tự như tripwire – hoạt động bằng cách xây dựng một CSDL. Sau đó so sánh các trạng thái với nhau và thông báo cho admin khi có lỗi phát sinh.
Để chọn ra giải pháp phù hợp với nhu cầu cá nhân, hãy tìm đọc các tài liệu liên quan đến tripwire và aide ở trên Google hoặc trang web chính thức để có được các bản so sánh cụ thể nhất.
Psad
Đối với công cụ psad, thay vì giám sát các file hệ thống thì nó sẽ theo dõi các file log của firewall. Từ đó nhanh chóng tìm ra các hoạt động độc hại.
Lấy ví dụ, nếu một người dùng cố gắng thăm dò các lỗ hổng tấn công bằng port scan, psad có thể phát hiện ra hoạt động này. Sau đó tự động thay đổi các rule của firewall để chặn người dùng đó. Ngoài ra, công cụ này cũng cho phép thiết lập nhiều mức độ nguy hiểm khác nhau để giải quyết vấn đề. Psad cũng hỗ trợ chức năng gửi thông báo qua email.
Bro
Bro thật ra là một framework giám sát mạng, có thể được dùng như một IDS. Ngoài ra, Bro còn có thể thu thập số liệu thống kê, kiểm tra sự cố, phát hiện các mẫu…
Hệ thống của Bro bao gồm hai lớp. Lớp đầu tiên giám sát hoạt động và tạo ra các event. Lớp thứ hai sẽ chạy các event này, được tạo thông qua một framework policy. Framework này sẽ quyết định cách xử lý các traffic. Sau đó, nó có thể tạo ra các cảnh báo, thực hiện các lệnh hệ thống, hoặc chỉ ghi lại các hoạt động,…
RKHunter
Mặc dù về mặt kỹ thuật, rkhunter không phải là một hệ thống IDS. Nhưng nó lại hoạt động trên các rule tương tự như những hệ thống IDS thực thụ. Từ đó cũng có thể phát hiện các rootkit hay malware nhanh chóng.
Mặc dù Linux có rất ít virus, nhưng malware và rootkit lại tương đối phổ biến. Chúng có thể xâm nhập vào các box hoặc cho phép truy cập để khai thác dữ liệu. RKHunter sẽ tải xuống danh sách các khai thác đã biết, sau đó kiểm tra hệ thống dựa trên CSDL. Ngoài ra, RKHunter cũng có thể cảnh báo cho admin nếu phát hiện các cài đặt không an toàn trong ứng dụng.
Lời khuyên chung để bảo mật Linux VPS
Mặc dù các công cụ và cấu hình trên có thể giúp bảo mật hệ thống, nhưng việc bảo mật Linux VPS cũng yêu cầu sự cẩn thận và xem xét kỹ lưỡng của các quản trị viên.
Sau đây là một số nguyên tắc chung để ta có thể bảo vệ hệ thống một cách hiệu quả nhất:
Chú ý cập nhật thường xuyên
Các nhà bảo trì phân phối luôn cố gắng cập nhật các bản vá mới nhất để khắc phục sớm mọi lỗ hổng phần mềm trên hệ thống. Do đó, hãy luôn chú ý đến các bản cập nhật. Và thường xuyên cài đặt chúng để bảo vệ hệ thống của mình.
Cẩn thận khi tải các phần mềm bên ngoài
Người dùng thường lựa chọn sử dụng các phần mềm từ những repository chính thức và có uy tín. Tuy nhiên, các phần mềm từ những repository ngẫu nhiên và PPA lại thường được duy trì bởi những người hay tổ chức lạ. Do đó sẽ có rủi ro bảo mật rất cao.
Những phần mềm này thường không có rule được thiết lập, chủ yếu là không từ những nguồn không chính thức. Do đó, hãy luôn cân nhắc cẩn thận khi sử dụng các phần mềm bên ngoài.
Giới hạn các dịch vụ
Mục đích chính của server là cung cấp các dịch vụ để mọi người có thể truy cập. Tuy nhiên, ta nên giới hạn các dịch vụ mà ta đang cần và sử dụng trên máy riêng của mình. Bởi vì mỗi dịch vụ được enable chính là một vector rủi ro cho mình. Vì vậy hãy loại bỏ nhiều vector như vậy nhất có thể. Tất nhiên là việc này không được ảnh hưởng đến chức năng cốt lõi.
Nếu đang sử dụng một server headless (không kết nối với monitor) hay không chạy bất kỳ chương trình độ họa (non-web) nào, hãy disable chúng. Thậm chí, hãy uninstall cả server X-display của mình. Giải pháp này cũng có thể được áp dụng trong nhiều trường hợp khác. Không có máy in? Hãy disable dịch vụ “Ip”. Không chia sẻ mạng Windows? Vậy thì hãy disable dịch vụ “samba”! Khi đó ta có thể loại trừ được phần lớn rủi ro về bảo mật Linux VPS.
Hãy sử dụng SFTP thay cho FTP
Chúng tôi hiểu việc này không hề dễ dàng cho nhiều người. Nhưng ta cần phải biết, FTP vốn dĩ là một giao thức không an. toàn. Tất cả xác thực đều được gửi dưới dạng text thuần túy. Do đó, bất kỳ ai theo dõi kết nối giữa server và máy cục bộ để có được thông tin đăng nhập của ta.
Thực tế, có rất ít trường hợp mà ta cần triển khai FTP. Cụ thể, giả sử ta chỉ sử dụng một mirror ẩn danh, public, read-only download. Thì chỉ cần sử dụng FTP là đủ. Ngoài ra, FTP cũng có thể được dùng khi cần chuyển các file giữa hai máy tính. Và hai máy này được đặt sau một firewall có NAT. Lúc đó kết nối hoàn toàn được bảo mật.
Còn lại, chúng ta nên sử dụng một giải pháp thay thế an toàn hơn như vậy. Bộ SSH có một giao thức thay thế gọi là SFTP, hoạt động tương tự như FTP. Nhưng nó lại có được tính bảo mật tuyệt vời của giao thức SSH.
Khi đó, ta có thể an tâm chuyển các thông tin đến và đi từ server của mình. Bên cạnh đó, hầu hết các FTP client cũng có thể giao tiếp với server SFTP.
Triển khai các Chính sách Bảo mật Người dùng hợp lý
Sau đây là một số giải pháp bảo mật Linux VPS giúp ta quản lý người dùng tốt hơn:
Disable root login
Các root user có thể xuất hiện ở bất cứ đâu trên các hệ thống tương tự như POSIX. Ngoài ra, nó cũng là một tài khoản toàn năng đúng nghĩa. Vì vậy đây cũng là một mục tiêu lý tưởng cho các cuộc tấn công. Do đó, ta nên disable root login nếu đã cấu hình quyền truy cập sudo
, hoặc nếu thích sử dụng su
command hơn.
Ta có thể disable root login ở xa trong SSH daemon, hoặc disable các login cục bộ. Cụ thể, chỉ cần tạo các hạn chế ở trong file /etc/securetty
.
Tạo các tài khoản đặc thù
Một cách khác để bảo mật Linux VPS chính là tạo các tài khoản đặc thù cho từng người dùng và dịch vụ. Đồng thời chỉ cấp cho các tài khoản này những quyền tối thiểu để thực hiện các tác vụ. Hãy khóa mọi thứ mà các tài khoản này không cần truy cập.
Đây là một chính sách bảo mật rất quan trọng. Nếu được thiết lập hợp lý, thì khi người dùng hay dịch vụ bị xâm phạm, nó sẽ không dẫn đến hiệu ứng domino cho phép các kẻ tấn công có quyền truy cập vào lượng lớn các hệ thống. Do đó, nó sẽ cách ly được các vấn đề, hạn chế tối đa rủi ro bảo mật.
Bên cạnh đó, ta cũng nên chú ý disable các tài khoản không cần thiết sau khi gỡ các phần mềm, hoặc các user không còn quyền truy cập vào hệ thống nữa.
Chú ý đến các thiết lập quyền truy cập
Việc cân bằng đến các thiết lập truy cập sao cho không ảnh hưởng đến tiến độ công việc, mà cũng không gây rủi ro bảo mật không phải là một việc dễ dàng. Do đó, ta cần phải cẩn thận xem xét trong nhiều tình huống khác nhau.
Vì vậy, luôn suy nghĩ kỹ trước khi đặt quyền truy cập cho bất kỳ thứ gì, đặc biệt là trên internet. Ngoài ra, cần tránh đặt bit SGID hay SUID trong quyền truy cập, trừ khi biết rõ mình đang làm gì.
Cài đặt quyền truy cập với các file sẽ phụ thuộc rất nhiều vào mục đích sử dụng cụ thể. Tuy nhiên, hãy cố gắng thiết lập quyền truy cập càng ít càng tốt. Đây cũng chính là một trong những lĩnh vực khó nhất và dễ hiểu sai nhất.
Kiểm tra malware trên server thường xuyên
Đúng là Linux thường ít bị tấn công bởi malware hơn Windows. Nhưng điều này không có nghĩa là nó hoàn toàn miễn nhiễm với các phần mềm độc hại. Bên cạnh việc triển khai IDS để bảo mật Linux VPS, thì việc scan malware cũng giúp xác định các hoạt động xấu trên máy.
Kết luận
Sau bài viết này, chắc hẳn ta đã hiểu rõ về các phương pháp bảo mật chung có thể dễ dàng triển khai trên Linux. Tất nhiên, quyết định vẫn thuộc về các bạn. Hãy cố gắng chọn ra giải pháp tối ưu nhất cho mục đích sử dụng của mình. Từ đó bảo mật Linux VPS một cách toàn diện, hiệu quả nhất. Chúc các bạn thành công!
Theo DigitalOcean.