Trong bài viết này, tôi sẽ hướng dẫn làm thể nào để cài đặt LEMP được bảo vệ bằng modSecurity. ModSecurity là một mã nguồn mở ứng dụng web tường lửa rất hữu ích để bảo vệ chống lại injects, các cuộc tấn công PHP, và nhiều hơn nữa. Nếu bạn muốn thiết lập Nginx với ModSecurity, tiếp tục đọc. Tất cả các bước trong bài viết này đòi hỏi quyền root. Bước 1: Cài đặt các điều kiện tiên quyết Nếu bạn không phải đang chạy như là người dùng root, sử dung câu lệnh sau để chuyển sang root: Mã: /bin/su Tôi cần một trình biên dịch, vì vậy thực hiện những điều sau đây để đảm bảo: Mã: yum install -y gcc gcc-c++ pcre-devel zlib-devel openssl openssl-devel httpd-devel libxml2-devel xz-devel python-devel libcurl-devel yum groupinstall -y 'Development Tools' Để cài đặt Nginx, tôi tiến hành tải về: Mã: cd /usr/src && wget http://nginx.org/download/nginx-1.9.9.tar.gz Tôi tiến hành tải về mã nguồn của gói php: Mã: wget http://us2.php.net/distributions/php-5.6.16.tar.bz2 Tiến theo, tôi tiến hành tải về modsecurity: Mã: wget https://www.modsecurity.org/tarball/2.9.0/modsecurity-2.9.0.tar.gz Bây giờ, untar/unzip các tập tin. Mã: tar xvf nginx-1.9.9.tar.gz tar xvf php-5.6.16.tar.bz2 tar xvf modsecurity-2.9.0.tar.gz Sau đó, tôi sẽ cài đặt ModSecurity. Mã: cd /usr/src/modsecurity-2.9.0 && ./configure --enable-standalone-module --disable-mlogc make && make install Bây giờ tôi đã có được tất cả các điều kiện tiên quyết, sau đây tôi sẽ tiến hành cài đặt Nginx. Các thiết lập các lệnh sau đây là dành cho cài đặt Nginx và ModSecurity. Mã: cd /usr/src/nginx-1.9.9 && ./configure --add-module=../modsecurity-2.9.0/nginx/modsecurity/ make && make install ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx Bây giờ, tôi sẽ cài đặt máy chủ MySQL bằng cách câu lệnh sau: Mã: yum install -y mysql-server service mysqld start mysql_secure_installation Đối với lệnh mysql_secure_installation: Ấn phím enter ở bước đầu tiên của cài đặt wizard. Nhập phím Y khi được nhắc nhở nếu một mật khẩu MySQL root nên được thiết lập. Nhập mật khẩu mới, xác nhận bằng cách nhập nó một lần nữa. Nhập phím Y để loại bỏ người dùng ẩn danh, không cho phép truy cập root từ xa với MySQL bằng cách nhập phím Y một lần nữa. Nhập phím Y một lần cuối cùng để loại bỏ các kiểm tra cơ sở dữ liệu/người dùng. Cuối cùng, nhập Y để lưu thay đổi của bạn. Một điều cuối cùng để cài đặt, và đó là PHP. Trong bài viết này, tôi sẽ cài đặt PHP từ nguồn. Đi tới thư mục nguồn của PHP bằng lệnh: Mã: cd /usr/src/php-5.6.16 Bây giờ, cấu hình PHP. Các đối số sau trong lệnh ./configure là như vậy bạn có thể chạy các ứng dụng như WordPress. Mã: ./configure --with-pear=/usr/lib/pear --enable-libxml --with-pdo-mysql --with-mysqli --with-mysql --enable-mbstring --with-curl make make install Cài đặt PHP-FPM cho nginx: Mã: yum install -y php-fpm Tôi cần phải cài đặt PHP-FPM trên PHP vì nginx tự nó không tích hợp trực tiếp với PHP. Thay vào đó, nginx truyền qua xử lý PHP đến PHP-FPM để thực hiện kịch bản của chúng tôi. Làm tốt lắm! Bạn đã cài đặt các điều kiện tiên quyết. Bước 2: Cấu hình ModSecurity/NGINX Hãy bắt đầu bằng việc xây dựng một bộ quy tắc ModSecurity. ModSecurity không có gì cho đến khi bạn cấu hình nó. Lấy các quy tắc thiết lập OWASP từ trang web của họ: Mã: cd /usr/src && wget wget https://github.com/SpiderLabs/owasp-modsecurity-crs/tarball/master tar xvf master Sau khi bạn đã tải về các bộ quy tắc, tôi sẽ kết hợp các cấu hình mặc định với các quy tắc cơ bản. Mã: cd SpiderLabs-owasp-modsecurity-crs-60c8bc9 cp /usr/src/modsecurity-2.9.0/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf cp /usr/src/modsecurity-2.9.0/unicode.mapping /usr/local/nginx/conf/ cat base_rules/*.conf >> /usr/local/nginx/conf/modsecurity.conf cp base_rules/*.data /usr/local/nginx/conf Về lý thuyết, điều này sẽ bảo vệ chống lại hầu hết khai thác web. Tuy nhiên, các plugins/code bạn cài đặt cũng cần được kiểm tra, bởi vì trong khi ModSecurity là một biện pháp an ninh tuyệt vời, nó không phải là hoàn hảo. Tạo một thư mục tại thư mục /var/www: Mã: mkdir /var/www Và một thư mục cho máy chủ ảo của bạn: Mã: mkdir /var/www/yourwebsite.com Cuối cùng, thêm những cú pháp sau đây để cấu hình nginx của bạn nằm ở /usr/local/nginx/conf/nginx.conf. Hãy chắc chắn rằng bạn thêm cấu hình này trước khi sự xuất hiện của biểu tượng cuối cùng }. Mã: server { listen 80; root /var/www/yourwebsite.com; index index.php index.html index.htm; server_name yourwebsite.com www.yourwebsite.com; location / { [B]ModSecurityEnabled on; ModSecurityConfig /usr/local/nginx/modsecurity.conf;[/B] } } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } Bước 3: Khởi động PHP-FPM và NGINX Bước này là khá đơn giản - điều bạn phải làm là thực hiện các lệnh sau đây. Mã: service php-fpm start /usr/sbin/nginx Xin chúc mừng! Bạn đã thiết lập trang web đầu tiên của bạn với Nginx được bảo vệ bởi ModSecurity. Để đọc thêm về ModSecurity, hãy truy cập trang web chính thức của họ.