Cấu hình bảo mật cho hệ thống Web Server sử dụng Apache

1268
18-01-2018
Cấu hình bảo mật cho hệ thống Web Server sử dụng Apache

Web Server là một phần quan trọng trong ứng dụng trên nền web. Apache Web Server thường là thành phần tương tác trực tiếp với người dùng do đó nó trở thành một trong những dịch vụ dễ bị tổn thương nhất để tấn công. Với việc sử dụng cấu hình mặc định cung cấp nhiều thông tin nhạy cảm có thể giúp hacker chuẩn bị cho một cuộc tấn công máy chủ web. 

Phần lớn các cuộc tấn công ứng dụng web thường được sử dụng thông qua tấn công XSS, rò rỉ thông tin (Info Leakage), Quản lý Phiên(Session Management) và các cuộc tấn công PHP Injection do mã lập trình yếu kém và cơ sở hạ tầng ứng dụng web không đủ đáp ứng. Theo hãng bảo mật Cenzic, 96% ứng dụng được thử nghiệm có lỗ hổng. Cùng Bizfly Cloud  tìm hiểu thông tin dưới đây nhé! 

1. Tránh rò rỉ thông tin (Information Leakage)

Trong cấu hình mặc định của Apache sẽ có nhiều chứa thông tin nhạy cảm, có thể được sử dụng để chuẩn bị cho một cuộc tấn công. Đây là một trong những nhiệm vụ quan trọng nhất để quản trị viên hiểu và bảo mật chúng.

1.1 Gỡ bỏ thông tin về version và banner

Việc để lộ phiên bản máy chủ web đang sử dụng có nghĩa đang giúp hacker đẩy nhanh tiến trình rà quét truy cập. Cấu hình mặc định sẽ hiển thị phiên bản Apache và hệ điều hành sử dụng như hình bên dưới.

Cấu hình bảo mật cho hệ thống Web Server sử dụng Apache - Ảnh 1.

Thực hiện cấu hình trong file httpd.conf và khởi động lại apache

ServerSignature Off

ServerTokens Prod

Kết quả sau khi cấu hình:

Cấu hình bảo mật cho hệ thống Web Server sử dụng Apache - Ảnh 2.

1.2 Vô hiệu hoá danh sách thư mục trên web

Vô hiệu hoá danh sách thư mục trong một trình duyệt để khi người dùng truy cập sẽ không nhìn thấy tất cả các tập tin và thư mục bạn có trong thư mục gốc hoặc thư mục con. Với việc sử dụng cấu hình mặc định khi truy cập vào link http://localhost/test

Cấu hình bảo mật cho hệ thống Web Server sử dụng Apache - Ảnh 3.

Cấu hình trong file httpd.conf chỉnh tham số Options bằng None hoặc –Indexes và khởi động lại apache

Options None

Hoặc

Options –Indexes

Kết quả:

Cấu hình bảo mật cho hệ thống Web Server sử dụng Apache - Ảnh 4.

  • Multiviews: hỗ trợ hiển thị nội dung tương ứng khi website hỗ trợ đa ngôn ngữ.
  • ExecCGI: thực hiện các script có trong thư mục /cgi-bin.
  • FollowSymLinks & SymLinksIfOwnerMatch: khuyến cáo không nên sử dụng disable nếu có thể. Vì viêc sử dụng symbolic link sẽ tăng rủi ro vị tấn công bằng việc attack sử dụng symbolic link để truy cập những nội dung ngoài của document root web server, attack cũng có kết hợp với lỗ hổng bảo mật để tạo ra một link không đúng.
  • Includes & IncludesNOEXEC: IncludesNOEXEC chỉ nên sử dụng khi server có những yêu cầu cần thiết. Includes không nên sử dụng vì option này cũng có khả năng cho phép thực hiện câu lệnh shell.

1.3 Etags

Cho phép những kẻ tấn công từ xa có được thông tin nhạy cảm như số inode, đa biên MIME, và tiến trình con thông qua tiêu đề Etag. Để ngăn chặn lỗ hổng này, thực hiện thiết lập như bên dưới dể khắc phục sự cố theo yêu cầu PCI.

Thiết lập:

Cấu hình trong file httpd.conf chỉnh tham số FileTag và khởi động lại apache

FileTag None

Kết quả:

Cấu hình bảo mật cho hệ thống Web Server sử dụng Apache - Ảnh 5.

2. Phân quyền truy cập (Authorization)

2.1 Chạy ứng dụng Apache với user không có đặc quyền trong hệ thống (non-privileged account)

Mặc định cấu hình apache là chạy với quyền nobody hay daemon. Cách tốt nhất để giảm thiểu việc tấn công là tạo user và group không có đặc quyền cho một ứng dụng, không chạy ứng dụng với user và group "nobody" hoặc "daemon". Thay thế vào đó tạo tài khoản chỉ được sử dụng bởi apache và không có quyền được truy cập vào các service khác có trên hệ thống. Ngoài ra UID của user này không được sử dụng bởi các user thông thường tức là user apache nằm trong khoảng từ 1-999 đối với hệ thống systemD và từ 1-499 đối với hệ thống systemV hoặc upstart.

Thiết lập:

1. Nếu apache user và group không tồn tại, tạo tài khoản hệ thống cho user apache:

# groupadd -r apache

# useradd apache -r -g apache -d /var/www -s /sbin/nologin

2. Cấu hình Apache user và group trong file cấu hình apache httpd.conf:

User apache Group apache

3. Khởi động lại Apache

Kiểm tra:

Cấu hình bảo mật cho hệ thống Web Server sử dụng Apache - Ảnh 6.

2.2 Khóa tài khoản user apache

Tài khoản apache nên bị khóa để ngăn chặn user bình thường có trong hệ thống có thể su sang user apache bằng việc sử dụng mật khẩu. Tốt nhất là không nên cho bất cứ ai còn thể su sang tài khoản apache. Khi cần thiết thì có thể sử dụng sudo thay thế mà không cần yêu cầu mật khẩu đăng nhập

Thiết lập:

Sử dụng passwd để khóa tài khoản apache:

# passwd -l apache

2.3 Phân quyền thư mục các file và thư mục trong apache

Các file và thư mục trong apache nên được thiết lập giới hạn tối thiểu quyền hạn với các user khác trong hệ thống có thể thay đổi file. Mặc định cấu hình cho các thư mục quyền rwxr-xr-x (755) và file quyền rw--r--r-- (644). Với việc cấu hình cho phép thay đổi nội dung dữ liệu có thể sẽ dẫn đến việc bị chèn thêm file hoặc phần mềm độc hại vào trong hệ thống.

Thiết lập:

Thực hiện lệnh sau để bỏ quyền ghi cho các file trong thưc mục apache:

# chown -R 750 $web_server

Kiểm tra:

Cấu hình bảo mật cho hệ thống Web Server sử dụng Apache - Ảnh 7.

3. Bảo vệ cấu hình hệ thống

Trong cài đặt mặc định, người dùng có thể ghi đè lên cấu hình apache sử dụng .htaccess. Việc sử dụng file .htaccess để thực hiện phân quyền quản lý kiểm soát truy cập dẫn đến việc tăng nguy cơ bị xâm nhập thay đổi cấu hình server bằng file .htaccess giả mạo. Một số lỗ hổng phổ biến trong máy chủ hoặc các ứng dụng web cho phép các tin được xem và chỉnh sửa, khi đó sẽ có khả năng bị thay thế file .htaccess. Vì vậy để người dùng không thay đổi được cài đặt trên apache cấu hình thêm AllowOverride to None như thể hiện dưới đây.

Thiết lập

Thêm vào file cấu hình Directory cho thư mục Root và khởi động lại Apache

AllowOverride None

. . .

4. Giới hạn phương thức HTTP request

Giao thức HTTP 1.1 cung cấp một vài phương thức request thường hiếm được sử dụng và có khả năng rủi ro cao khi sử dụng. Ví dụ, phương thức PUT và DELETE thường hiếm được sử dụng và nên được disabled mặc dù phương thức này cho phép chỉnh sửa lại nội dung trên web server bởi theo mục tiêu của bảo mật là sử dụng tối thiểu các đặc tính và option. Trong việc vận hành một web site thông thường chỉ cần 3 phương thức là GET, HEAD và POST cho phép download nội dung website và submit thông tin lên web. Phương thức OPTIONS cũng được cho phép sử dụng trong HTTP request. Phương thực TRACE không được cho phép cấu hình trong khuyến cáo benchmark với thông số cấu hình là TraceEnable.

Thiết lập:

1. Thêm các chỉ thị sau cho document root

Require all denied

2. Tìm trên các file cấu hình của apache và thêm cấu hình tương ứng.

. . .

# Limit HTTP methods Require all denied

Theo Bizfly Cloud chia sẻ

SHARE