Bài viết mới nhất về "Apache"
Showing posts with label Apache. Show all posts

Giới Thiệu

Apache là một trong những Web Server được sử dụng rộng rãi và phổ biến nhất trên thế giới, nó cũng là một trong những web server an toàn nhất. Trong bài viết này, tôi sẽ hướng dẫn một số mẹo và thủ thuật để bảo mật Apache server.

Yêu Cầu

  • Máy chủ chạy CentOS 7 và đã cài đặt Apache
  • Trình duyệt Firefox đã cài add-on Firebug để test

Ẩn Phiên Bản Apache

Mở trình duyệt Firefox lên. Kích hoạt Firebug bằng cách nhấn vào biểu tượng Firebug ở phía trên bên phải, sau đó truy cập vào địa chỉ IP server của bạn.

Kiểm tra các kết quả trả về trong Firebug bạn sẽ thấy các phiên bản Apache cùng với tên hệ điều hành và phiên bản, như hình ở dưới đây

Một số phương pháp bảo mật Apache Web Server trên CentOS 7

Để giấu các thông tin này từ trình duyệt, bạn sẽ cần phải thực hiện một số thay đổi trong tập tin cấu hình chính của Apache.

Bạn có thể làm điều này bằng cách chỉnh sửa các httpd.conf tập tin:

sudo nano /etc/httpd/conf/httpd.conf

Thêm các dòng sau vào cuối file:

ServerSignature Off
ServerTokens Prod

Lưu lại và khởi động lại Apache để xác nhận lại thay đổi:

sudo apachectl restart

Bây giờ, bạn mở Firefox và truy cập vào máy chủ web của bạn. Kiểm tra các kết quả trả về trong Firebug, Bạn có thể thấy rằng việc thiết ServerSignature để Off đã loại bỏ các thông tin phiên bản từ máy chủ.

Một số phương pháp bảo mật Apache Web Server trên CentOS 7

Tắt danh sách thư mục

Danh sách thư muc nếu không có file index tập tin được kích hoạt theo mặc định trong Apache. Danh sách thư mục sẽ hiển thị tất cả các file từ thư mục gốc web Apache. Nếu điều này được kích hoạt, sau đó một hacker có thể dễ dàng xem bất kỳ tập tin, phân tích nó, và có được thông tin nhạy cảm về một ứng dụng của máy chủ Apache.

Dưới đây là một ví dụ về danh sách thư mục của thư mục gốc web Apache của bạn:

Một số phương pháp bảo mật Apache Web Server trên CentOS 7

Bạn có thể tắt tính năng này bằng cách sử dụng các Options chỉ thị trong tập tin cấu hình Apache cho một thư mục web cụ thể.

sudo nano /etc/httpd/conf/httpd.conf

Tìm phần bắt đầu với Directory /var/www/html và thêm -Indexes vào Options chỉ thị:

<Directory /var/www/html/>
    Options -Indexes
    AllowOverride None
    Require all granted
</Directory>

Lưu lại và khởi động lại Apache để xác nhận lại thay đổi:

sudo apachectl restart

Tiếp theo, hãy truy cập lại để xem kết quả. Bạn sẽ nhận được một lỗi "cấm" như thể hiện trong hình dưới đây.

Một số phương pháp bảo mật Apache Web Server trên CentOS 7

Vô hiệu hóa các module không cần thiết

Theo mặc định Apache đi kèm với rất nhiều các module cài đặt không cần thiết. Đây là một cách tốt để vô hiệu hóa bất kỳ các module không cần thiết mà không được sử dụng.

Bạn có thể liệt kê tất cả các module được kích hoạt trên máy chủ của bạn bằng cách sử dụng lệnh sau:

sudo grep LoadModule /etc/httpd/conf.modules.d/00-base.conf

Từ các mô-đun cho phép trong 00-base.conf tập tin, một số mô-đun như mod_infomod_userdirmod_autoindex được kích hoạt nhưng không cần thiết.

Bạn có thể vô hiệu hóa các module này bằng cách chỉnh sửa trong 00-base.conf:

sudo nano /etc/httpd/conf.modules.d/00-base.conf

Thêm # vào đầu những dòng sau để vô hiệu hóa các modules:

#LoadModule info_module modules/mod_info.so
#LoadModule userdir_module modules/mod_userdir.so

Lưu lại và khởi động lại Apache để xác nhận lại thay đổi:

Vô hiệu hóa FollowSymLinks của Apache

Theo mặc định Apache sau liên kết tượng trưng (symlink). Khuyến khích tắt chức năng này để bảo mật.

Để làm điều này, bạn cần phải chỉnh sửa file httpd.conf

sudo nano /etc/httpd/conf/httpd.conf

Tìm với Directory /var/www/html. Thêm -FollowSymLinks vào:

<Directory /var/www/html/>
    Options -Indexes -FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

Bây giờ khởi động lại Apache để xác nhận những thay đổi.

Bảo về Apache từ các cuộc tấn công Clickjacking

Clickjacking (còn được gọi là "UI redress attack") là một thuật ngữ diễn tả việc lừa người sử dụng click chuột vào một liên kết nhìn bề ngoài có vẻ "trong sạch" trong các trang web, tuy nhiên qua cú click chuột đó hacker có thể lấy được các thông tin bí mật của người sử dụng hay kiểm soát máy tính của họ.

Để tránh điều này, bạn cần sử dụng X-FRAME-OPTIONS để ngăn chặn trang web của bạn sử dụng clickjackers.

Bạn có thể làm điều này bằng cách chỉnh sửa file httpd.conf:

sudo nano /etc/httpd/conf/httpd.conf

Thêm dòng sau:

Header append X-FRAME-OPTIONS "SAMEORIGIN"

Lưu lại và khởi động lại Apache:

sudo apachectl restart

Bây giờ, bạn mở Firefox và truy cập trang web của bạn. Kiểm tra các kết quả trả về trong Firebug, bạn xem X-Frame-Options như hình dưới đây:

Một số phương pháp bảo mật Apache Web Server trên CentOS 7

Bảo về Apache từ các cuộc tấn công XSS

Cross-site Scripting (XSS) là lỗ hổng cho phép hacker có thể chèn những đoạn mã client-script (thường là Javascript hoặc HTML) vào trang web, khi người dùng vào những trên web này, mã độc sẽ được thực thi trên máy của người dùng.

Bạn có thể làm điều này bằng cách chỉnh sửa file httpd.conf:

sudo nano /etc/httpd/conf/httpd.conf

Thêm các dòng sau:

<IfModule mod_headers.c>
    Header set X-XSS-Protection "1; mode=block"
</IfModule>

Lưu lại và khởi động lại Apache để xác nhận lại thay đổi.

Bây giờ, bạn mở Firefox và truy cập trang web của bạn. Kiểm tra các kết quả trả về trong Firebug, bạn sẽ thấy rằng XSS được kích hoạt chế độ mode=block.

Một số phương pháp bảo mật Apache Web Server trên CentOS 7

Trước khi bắt đầu bạn phải đảm bảo rằng Apache đã được cài đặt và đang chạy. Nếu bạn chưa cài đặt Apache thì hãy chạy lệnh sau để cài đặt:

Cài đặt Apache:

sudo apt-get update
sudo apt-get install apache2

Trong bài hướng dẫn này, giả định tôi sẽ hướng dẫn các bạn cấu hình virtual host cho một website có tên miền demo.dev

Bước 1: Tạo cấu trúc thư mục

Ở bước đầu tiên này ta phải tạo thư mục chứa mã nguồn của website, để apache có thể tìm được thì thư mục chứa mã nguồn website của bạn phải thuộc thư mục var/www/

Tạo thư mục có cấu trúc như sau:

sudo mkdir -p /var/www/demo/public

Bước 2: Thiết lập Ownership và Permissions

Thư mục vừa tạo thuộc sở hữu của người dùng root, để mọi người dùng có thể điều chỉnh nội dung bên trong thư mục /demo/public ta phải cấp lại quyền sở hữu cho bằng lệnh sau:

sudo chown -R $USER:$USER /var/www/demo/public

Tham số $USER sẽ có giá trị bằng với người dùng đang đăng nhập hệ thống.

Thiết lập quyền đọc

sudo chmod -R 755 /var/www/

Bước 3: Tạo một trang web cho website

sudo nano /var/www/demo/public/index.html

Thêm vào nội dung sau:

<html>
 <head>
     <title>Welcome!</title>
   </head>
   <body>
  <h1>Success: Welcome to demo.dev!</h1>
   </body>
</html>

Sau đó lưu file lại.

Bước 4: Tạo file Virtual host

Apache đã có sẵn một file cấu hình mẫu có tên 000-default.conf, để tạo mới một file virtual host từ file mẫu bạn chạy lệnh sau:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/demo.conf

Mở file demo.conf vừa tạo lên

sudo nano /etc/apache2/sites-available/demo.conf

Bây giờ bạn sẽ thay đổi nội dung file lại như sau:

<VirtualHost *:80>
    ServerAdmin admin@demo.dev
    ServerName demo.dev
    ServerAlias www.demo.dev
    DocumentRoot /var/www/demo/public
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Tiếp theo, tiến hành enable cấu hình mới:

sudo a2ensite demo.conf

Restart apache

sudo service apache2 restart

Bước 5: Cập nhật virtual hosts file

Chạy lênh sau để mở và cập nhật nội dung file hosts:

sudo nano /etc/hosts

Thêm vào dòng sau:

127.0.0.1 demo.dev

Xong, cuối cùng mở trình duyệt lên và gõ: http://demo.dev.

Chúc bạn thành công!

Cài đặt Apache, MySQL, PHP (LAMP) trên hệ điều hành Ubuntu

Giới thiệu LAMP

- LAMP là một thuật ngữ được dùng khá phổ biến hiện nay, là một hệ thống đáp ứng đầy đủ những tính năng khó nhất của ứng dụng web như: Database, Mail, SOAP.
- LAMP là cụm từ víêt tắt từ những từ: Linux, Apache, MySQL, PHP là một hệ thống hoàn toàn mở và miễn phí.
- Khóa học LAMP là khóa học đặc biệt và đầu tiên tại Việt Nam, bởi ngoài lý thuyết cơ bản nhất về hệ thống LAMP, học viên còn tiếp cận được những kỹ năng lập trình, tư duy logic, thuật toán, đủ khả năng trở thành một LAMP Webmaster.

Lý do chính chọn LAMP

- Miễn phí bản quyền phần mềm
- Được phép chỉnh sửa phần mềm phù hợp nhu cầu
- An toàn cao
- Tính cộng đồng
- Được miễn phí các phiên bản nâng cấp trong toàn bộ vòng đời sử dụng sản phẩm
- Tiết kiệm chi phí phát triển; các doanh nghiệp sử dụng lại những mã nguồn sẵn có để phát triển, cải tiến nâng cấp
- Không đòi hỏi cấu hình phần cứng quá cao cho việc triển khai ứng dụng
- Đa dạng trong việc lựa chọn nhà cung cấp sản phẩm
- Nâng cao uy tín, thương hiệu của doanh nghiệp đặc biệt khi đối tác kinh doanh là khách nước ngoài
- Tránh vi phạm bản quyền phần mềm

Bước 1: Cài đặt Apache

Apache là một Webserver rất phổ biến hiện nay, bạn cứ tưởng tượng là các gói Shared Host có sử dụng cPanel X đa phần đều dùng Apache hết. Do nó phổ biến và dễ cấu hình hơn nên mình sẽ hướng dẫn cho bạn thực hành, chứ để tối ưu nhất thì sẽ sử dụng NGINX Webserver nhưng mình không nói tới ở các bài đầu tiên.

Để cài đặt Apache, mở terminal lên và gõ các lệnh sau:

sudo apt-get update
sudo apt-get install apache2

Bước 2: Cài đặt MySQL

MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng. Vì MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh. Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên internet. MySQL miễn phí hoàn toàn cho nên bạn có thể tải về MySQL từ trang chủ. Nó có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, Mac OS X, Unix, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS,...

Để cài đặt MySQL, mở terminal lên và gõ các lệnh sau:

sudo apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql

Bước 3: Cài đặt PHP

PHP (viết tắt của cụm từ Personal Home Page) là ngôn ngữ lập trình kịch bản (scripting language) mã nguồn mở được dùng phổ biến để ra tạo các ứng dụng web chạy trên máy chủ.

Để cài đặt PHP, mở terminal lên và gõ các lệnh sau:

sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt

PHP Modules

Nếu bạn muốn cài thêm các module khác cho PHP thì có thể tìm tên các module trong gói cài đặt bằng lệnh sau:

apt-cache search php5-

Terminal sẽ hiển thị danh sách các module sau:

php5-cgi - server-side, HTML-embedded scripting language (CGI binary)
php5-cli - command-line interpreter for the php5 scripting language
php5-common - Common files for packages built from the php5 source
php5-curl - CURL module for php5
php5-dbg - Debug symbols for PHP5
php5-dev - Files for PHP5 module development
php5-gd - GD module for php5
php5-gmp - GMP module for php5
php5-ldap - LDAP module for php5
php5-mysql - MySQL module for php5
php5-odbc - ODBC module for php5
php5-pgsql - PostgreSQL module for php5
php5-pspell - pspell module for php5
php5-recode - recode module for php5
php5-snmp - SNMP module for php5
php5-sqlite - SQLite module for php5
php5-tidy - tidy module for php5
php5-xmlrpc - XML-RPC module for php5
php5-xsl - XSL module for php5
php5-adodb - Extension optimising the ADOdb database abstraction library
php5-auth-pam - A PHP5 extension for PAM authentication
[...]

Để cài đặt module bạn gõ lệnh sau:

sudo apt-get install tên module

ví dụ bạn cài php5-cgi thì gõ lệnh

sudo apt-get install php5-cgi

Bạn cũng có thể cài nhiều module cùng 1 lúc bằng lệnh sau:

sudo apt-get install module1 module2 module3

mỗi tên module thì cách 1 khoảng trắng (space)

Bước 4: Kiểm tra xem đã cài đặt thành công chưa

Bằng cách tạo 1 file mới:

sudo nano /var/www/info.php

Thêm đoạn code dưới đây vào

<?php
 phpinfo();
?>

Save lại và khởi động lại apache:

sudo service apache2 restart

Mở trình duyệt lên và gõ http://localhost/info.php để xem kết quả nhé

Cài đặt Apache, MySQL, PHP (LAMP) trên hệ điều hành Ubuntu

Chúc bạn thành công!