Trong bài viết này, tôi sẽ giải thích cách xây dựng ngăn xếp LEMP được bảo vệ bởi ModSecurity. ModSecurity là một tường lửa ứng dụng web nguồn mở rất hữu ích để bảo vệ chống lại các mũi tiêm, các cuộc tấn công PHP và hơn thế nữa. Nếu bạn muốn thiết lập NGINX với ModSecurity, hãy tiếp tục đọc.
Tất cả các bước trong bài viết này yêu cầu quyền truy cập root.
Bước 1: Cài đặt các điều kiện tiên quyết
Nếu bạn chưa chạy như người dùng root, hãy tự leo thang:
/bin/su
Chúng tôi cần một trình biên dịch, vì vậy hãy thực hiện như sau để đảm bảo:
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, trước tiên chúng ta cần có được gói. Tải xuống gói:
cd /usr/src && wget http://nginx.org/download/nginx-1.9.9.tar.gz
Chúng tôi cũng sẽ yêu cầu gói PHP cho ngăn xếp của chúng tôi.
wget http://us2.php.net/distributions/php-5.6.16.tar.bz2
Vì chúng tôi đang cài đặt ModSecurity, chúng tôi sẽ lấy nguồn và tải xuống:
wget https://www.modsecurity.org/tarball/2.9.0/modsecurity-2.9.0.tar.gz
Bây giờ, giải nén / giải nén các tập tin.
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 đó, chúng tôi sẽ cài đặt ModSecurity.
cd /usr/src/modsecurity-2.9.0 && ./configure --enable-standalone-module --disable-mlogc
make && make install
Bây giờ chúng tôi đã có được tất cả các điều kiện tiên quyết, hãy cài đặt NGINX. Nhóm lệnh sau đây để cài đặt NGINX và ModSecurity.
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ờ, hãy cài đặt máy chủ MySQL.
yum install -y mysql-server
service mysqld start
mysql_secure_installation
Đối với mysql_secure_installation
lệnh:
- Nhấn enter ở bước đầu tiên của trình hướng dẫn cài đặt.
- Nhập Y khi được nhắc nếu mật khẩu root MySQL mới được đặt.
- Nhập mật khẩu mới, xác nhận bằng cách nhập lại.
- Nhấn Y để xóa người dùng ẩn danh, không cho phép truy cập root từ xa vào MySQL bằng cách nhấn lại Y.
- Nhấn Y lần cuối để xóa cơ sở dữ liệu / người dùng thử nghiệm.
- Cuối cùng, nhấn Y để lưu các 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, chúng tôi sẽ cài đặt PHP từ nguồn.
Nhập thư mục nguồn cho PHP.
cd /usr/src/php-5.6.16
Bây giờ, cấu hình PHP. Các đối số sau đây trong ./configure
lệnh là có để bạn có thể chạy các ứng dụng như WordPress.
./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:
yum install -y php-fpm
Chúng ta cần cài đặt PHP-FPM trên chính PHP vì bản thân NGINX không tích hợp trực tiếp với PHP. Thay vào đó, NGINX chuyển quá trình xử lý PHP sang PHP-FPM để thực thi các tập lệnh 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: Định cấu hình ModSecurity / NGINX
Hãy bắt đầu bằng cách xây dựng bộ quy tắc ModSecurity. ModSecurity không làm gì cho đến khi bạn định cấu hình nó.
Lấy quy tắc OWASP được đặt từ trang web của họ:
cd /usr/src && wget https://github.com/SpiderLabs/owasp-modsecurity-crs/tarball/master
tar xvf master
Sau khi bạn đã tải xuống bộ quy tắc, chúng tôi sẽ kết hợp cấu hình mặc định với các quy tắc cơ bản.
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 các khai thác web. Tuy nhiên, các plugin / mã bạn cài đặt cũng cần được kiểm tra, bởi vì mặc dù ModSecurity là một biện pháp bảo mật tuyệt vời, nhưng nó không phải là chống đạn.
Tạo một thư mục tại /var/www
:
mkdir /var/www
Và một thư mục cho máy chủ ảo của bạn:
mkdir /var/www/yourwebsite.com
Cuối cùng, nối các phần sau vào cấu hình NGINX của bạn tại /usr/local/nginx/conf/nginx.conf
. Hãy chắc chắn rằng bạn nối thêm cấu hình này trước khi xuất hiện }
biểu tượng cuối cùng .
server {
listen 80;
root /var/www/yourwebsite.com;
index index.php index.html index.htm;
server_name yourwebsite.com www.yourwebsite.com;
location / {
ModSecurityEnabled on;
ModSecurityConfig /usr/local/nginx/modsecurity.conf;
}
}
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: Bắt đầu PHP-FPM và NGINX
Bước này khá đơn giản - tất cả những gì bạn phải làm là thực hiện các lệnh sau.
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 mình 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ọ .