20 cách giúp tăng cường bảo mật cho Linux server – Phần 1


Bảo mật cho máy chủ Linux của bạn là điều hết sức quan trọng để bảo vệ dữ liệu, các sở hữu trí tuệ, và cả thời gian, tiền bạc khỏi “bàn tay đen” của các hacker. Người quản trị hệ thống chịu trách nhiệm chính cho việc bảo mật trên máy chủ Linux. Trong phần đầu tiên của loạt bài viết về bảo mật Linux server, tôi sẽ cung cấp cho các bạn 20 thủ thuật giúp tăng cường an ninh cho Linux server.

Tác giả Vivek Gite

Dịch bởi Mẫn Thắng

–Bài viết gốc–

#1: Mã hóa dữ liệu được truyền đi

Tất cả các dữ liệu gửi qua môi trường mạng đều có nguy cơ bị hacker tóm được (sniff) ngay trên đường truyền. Vì vậy, bất cứ khi nào có thể bạn nên mã hóa dữ liệu được truyền đi với thuật toán mã hóa và mật khẩu đủ mạnh hay sử dụng các chứng thư số (certificate).

  1. Sử dụng các chương trình scp, ssh, rsync hoặc sftp để truyền file qua mạng. Với 2 công cụ fusesshfs, bạn cũng có thể mount các file system nằm trên server ở xa (remote server file system) một cách an toàn thông qua SSH.
  2. GnuPG giúp mã hóa dữ liệu và tạo chữ ký số cho file, thêm vào đó là tính năng quản lý khóa mã hóa tiện lợi.
  3. Fugu là một frontend có giao diện đồ họa cho SFTP. SFTP cũng giống với FTP, chỉ khác là SFTP sẽ mã hóa toàn bộ phiên làm việc, có nghĩa rằng cả mật khẩu và các dữ liệu khác sẽ được mã hóa trước khi gửi đi. Và như vậy dù cho hacker có tóm được dữ liệu đó cũng không thể nào đọc được thông tin đã được mã hóa bởi SFTP. Một tùy chọn khác là FileZilla – chương trình client chạy trên nhiều nền tảng như Linux, Windows… (cross-platform), hỗ trợ các giao thức như FTP, FTPS (FTP over SSL/TSL), SFTP (SSH FTP)…
  4. OpenVPN chương trình SSL/VPN nhẹ nhàng, hiệu quả.
  5. Lighttpd SSL (Secure Server Layer) Https <= xem thêm cách cài đặt và cấu hình
  6. Apache SSL (Secure Server Layer) Https (mod_ssl) <= xem thêm cách cài đặt và cấu hình.

#1.1: Tránh sử dụng FTP, Telnet, và Rlogin / Rsh

Bất kỳ ai nằm trên cùng một mạng với bạn đều có thể sử dụng một trình bắt gói tin (packet sniffer) để tóm lấy các thông tin (như thông số cấu hình mạng, username, password, câu lệnh, file…) chưa được mã hóa được gửi bởi các chương trình như FTP, Telnet, Rlogin/Rsh. Giải pháp chung cho vấn đề này là chuyển sang sử dụng các chương trình như OpenSSH , SFTP, hoặc FTPS. Đối với Fedora/CentOS/RHEL, gõ câu lệnh sau để xóa bỏ NIS, rsh và các dịch vụ lỗi thời khác:

# yum erase inetd xinetd ypserv tftp-server telnet-server rsh-serve

#2: Giảm tối thiểu các gói phần mềm được cài đặt

Bạn có thật sự cần cài đặt hết tất cả các loại web service (Apache, IIS…) không? Hãy tránh cài đặt các gói phần mềm không cần thiết để tránh nguy cơ lỗ hổng ẩn chứa trong các phần mềm đó bị khai thác. Sử dụng các trình quản lý gói như yum, rpm, apt-get, dpkg… để xem tất cả các gói đã cài trên hệ thống. Sau đó, xóa bỏ các gói không cần thiết.

Đối với Redhat-based Distro

# yum list installed
# yum list packageName
# yum remove packageName

Hoặc với Debian-based Distro

# dpkg –list
# dpkg –info packageName
# apt-get remove packageName

#3: Mỗi dịch vụ mạng chạy trên một hệ thống thực (hoặc máy ảo) riêng biệt

Nếu có thể, bạn nên chạy các dịch vụ mạng khác nhau trên các server tách biệt nhau. Điều này giúp giảm thiểu rủi ro các dịch vụ sẽ bị “chết chùm” khi chúng nằm trên cùng một server. Ví dụ, nếu một hacker có thể khai thác thành công một lỗ hổng của phần mềm như Apache, hắn sẽ có toàn quyền truy cập vào server và gây ảnh hưởng cho các dịch vụ khác như MySQL, e-mail nằm trên cùng server với Apache. Xem thêm cách cài đặt và cấu hình môi trường ảo hóa trên Linux:

#4: Cập nhật đầy đủ và thường xuyên cho Linux kernel và các phần mềm khác

Áp dụng các bản vá bảo mật là một công việc quan trọng trong kế hoạch bảo trì Linux sever. Linux cung cấp tất cả các công cụ cần thiết để đảm bảo hệ thống của bạn luôn được cập nhật, đồng thời giúp nâng cấp dễ dàng giữa các phiên bản. Bạn nên kiểm duyệt và áp dụng tất cả các bản cập nhật ngay khi có thể. Một lần nữa, sử dụng yum, apt-get… để thực hiện việc cập nhật này.

# yum update

hoặc

# apt-get update && apt-get upgrade

Bạn có thể cấu hình cho Red hat / CentOS / Fedora để nhận thông báo về các bản cập nhật mới qua email (xem thêm update notification via email), dưới Debian / Ubuntu có thể sử dụng apticron. Một tùy chọn khác để cài đặt tất cả các bản cập nhật là sử dụng cron (xem thêm all security updates ).

#5: Sử dụng Linux Security Extensions

Có nhiều công cụ giúp bảo vệ Linux trước các lỗi bảo mật như cấu hình hệ thống lỏng lẻo, tạo kẽ hở cho kẻ xâm nhập, các chương trình bị tấn công… Nếu có thể, bạn nên sử dụng SELinux và các security extension khác để quản lý chặt chẽ các chương trình và mạng (xem thêm SELinux and other Linux security). Ví dụ, SELinux cung cấp khá nhiều các chính sách bảo mật khác nhau dành cho Linux kernel.

#5.1: SELinux

Khuyến khích các bạn sử dụng cơ chế Mandatory Access Control (MAC) mà SELinux cung cấp. Còn theo cơ chế DAC (Discretionary Access Control), một ứng dụng hoặc tiến trình được khởi chạy bởi người dùng nào đó thì ứng dụng này có các quyền hạn trên các đối tượng (file, socket,…) giống với quyền hạn của người dùng đã khởi chạy nó. Việc chạy MAC giúp bảo vệ hệ thống khỏi bị phá hoại bởi các chương trình độc hại hoặc chứa lỗi. Giải thích chi tiết cấu hình cho SELinux có trong kho tài liệu chính thức của Redhat.

Xem thêm:
20 cách giúp tăng cường bảo mật cho Linux server – Phần 1
20 cách giúp tăng cường bảo mật cho Linux server – Phần 2
20 cách giúp tăng cường bảo mật cho Linux server – Phần 3

–manthang

6 comments

  1. Bài dịch của bạn hay đấy. Thành có một điều này muốn chia sẽ, Rằng nếu mình chạy server ảo trên server thật thì thế nào nhỉ, khi server thật chết thì chẳng khác nào mấy anh em server ảo cũng tiêu tùng luôn ấy chư!

    1. Nhận định của Thành rất đáng quan tâm!

      Để giải quyết vấn đề các máy ảo sẽ chết theo khi máy thật bị sập thì theo mình được biết, các hãng như VMware (sản phẩm vSphere), Microsoft (sản phẩm Hyper-V) đều đưa ra các tính năng như Clustering, Failover Clustering, Load balancing nhằm tạo ra tính High Availability (độ sẵn sàng cao) cho nền tảng áo hóa.

      P/s: Hai trong nhiều nguyên nhân khiến website Việt dễ dàng bị tấn công là do không chịu tuân thủ 2 nguyên tắc của bảo mật: Mỗi dịch vụ chạy trên một máy chủ riêng biệt và cập nhật thường xuyên cho hệ điều hành và các ứng dụng (do sử dụng các phần mềm lậu dẫn tới không nhận được các bản vá lỗ hổng bảo mật).

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s