Cyber Security · मराठी आवृत्ती
Amazon Linux 2023 वर LEMP stack
LEMP मध्ये Apache ऐवजी Nginx वापरतो. Static files Nginx देतो; PHP requests FastCGI मधून PHP-FPM कडे जातात आणि PHP गरजेनुसार database वापरतो.
+------------------ EC2 (Linux) -------------------+
Browser ──HTTP:80──► | Nginx ──FastCGI (unix socket)──► PHP-FPM |
| static files served directly │ |
| ▼ |
| MySQL/MariaDB :3306 |
+--------------------------------------------------+
Install आणि test
sudo yum install -y nginx php php-fpm php-mysqlnd php-gd php-mbstring php-xml mariadb105-server
sudo service nginx start
sudo service php-fpm start
sudo service mariadb start
sudo systemctl enable nginx php-fpm mariadb
sudo mysql_secure_installation
echo "<?php phpinfo();" | sudo tee /usr/share/nginx/html/info.php
curl -s http://localhost/info.php | grep -m1 "PHP Version"
Default Nginx PHP include/package config लागू आहे का पाहा. phpinfo test मध्ये विस्तृत configuration दिसते; test झाल्यावर /usr/share/nginx/html/info.php काढा. Current active root वेगळा असल्यास योग्य path/Host तपासा.
स्वतःचा PHP server block
sudo mkdir -p /var/www/phpapp
sudo tee /etc/nginx/conf.d/phpapp.conf > /dev/null <<'EOF'
server {
listen 80;
server_name YOUR_SERVER_NAME;
root /var/www/phpapp;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
EOF
sudo sed -i "s/YOUR_SERVER_NAME/$(curl -s https://checkip.amazonaws.com)/" /etc/nginx/conf.d/phpapp.conf
sudo nginx -t && sudo service nginx reload
Root /var/www/phpapp आणि index.php पहिली index choice आहे. Normal route file/directory नसल्यास index.php ला query args सह जाते. PHP location मध्ये try_files $uri =404 file अस्तित्व तपासतो. fastcgi_pass FPM socket आणि SCRIPT_FILENAME execute करायचा file path देतात.
Source sed command बाहेरून दिसणारा IP server_name मध्ये भरते. NAT/proxy/वेगळा endpoint असल्यास actual domain/public Host manually जुळवा. PHP app फाइल पुढच्या lesson प्रमाणे तयार करा.
Security मध्ये उपयोग
नसलेल्या .php paths FPM कडे पाठवू नयेत म्हणून try_files check उपयोगी. तरी upload directory मध्ये PHP execution बंद करणं, योग्य handler/path configuration आणि safe uploads स्वतंत्रपणे आवश्यक आहेत. एक directive म्हणजे सर्व upload attacks बंद नाहीत.
Lab
Amazon Linux LEMP तयार करा. phpapp block enable करून /var/www/phpapp मधली PHP test page योग्य Host वर execute होते का पाहा; test file नंतर काढा.