SuPHP je modul Apache, který umožňuje PHP pracovat pod jiným uživatelem Linuxu, než je uživatel Apache. To zlepšuje bezpečnost hostovaných webových stránek, protože můžete spouštět PHP skripty každé webové stránky pod jiným uživatelem. Tento tutoriál popisuje instalaci SuPHP na centOS 7.2 ze zdroje, protože pro CentOS 7.2 nejsou k dispozici žádné balíčky SuPHP.
Předpoklady
Budete mít server s nainstalovaným CentOS 7.2 nebo novějším, tento návod použiji jako základ pro své nastavení. V první kapitole nainstaluji webový server Apache. Pokud již máte apache nainstalovaný, začněte hned s kapitolou 2.
Můj server bude používat název hostitele server1.example.com a adresu IP 192.168.1.100. Nahraďte tyto hodnoty názvem hostitele a IP vašeho serveru, kdekoli se v následujícím tutoriálu vyskytují.
Z bezpečnostních důvodů doporučuji mít nainstalovaný firewall, pokud ještě firewall nainstalovaný nemáte, můžete jej nainstalovat pomocí těchto příkazů:
yum -y install firewalld
spusťte bránu firewall a povolte její spuštění při spouštění.
systemctl spustit firewalld.service
systemctl povolit firewalld.service
Dále otevřete svůj port SSH, abyste se ujistili, že se budete moci připojit k serveru pomocí SSH.
firewall-cmd --permanent --zone=public --add-service=ssh
firewall-cmd --reload
1 Instalace Apache 2.4 a PHP 5
Apache a PHP jsou dostupné v základním úložišti CentOS, takže oba softwarové balíčky můžeme nainstalovat pomocí yum.
Nainstalujte Apache a vývojový balíček Aapache, který obsahuje soubory, které jsou později vyžadovány pro kompilaci SuPHP.
yum -y install httpd httpd-devel
Instalace PHP (přidal jsem několik často používaných modulů PHP):
yum -y install php php-mysql php-gd php-pear php-xml php-xmlrpc php-mbstring curl
Musíme povolit Apache, aby se spustil při bootování a spustil službu.
systemctl spustit httpd.service
systemctl povolit httpd.service
Aby byl webový server přístupný z jiných počítačů, musíme otevřít porty HTTP (80) a HTTPS (443). Spusťte následující příkazy pro konfiguraci brány firewall.
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
2 Instalace SuPHP
V tomto kroku zkompilujeme SuPHP ze zdroje. Nainstalujte vývojové nástroje pro nastavení požadovaného řetězce sestavování.
yum -y groupinstall 'Development Tools'
A wget si stáhne zdrojové soubory a nano editor.
yum -y install wget nano
Stáhněte si zdrojový archiv SuPHP tar.gz a rozbalte jej.
cd /usr/local/src
wget http://suphp.org/download/suphp-0.7.2.tar.gz
tar zxvf suphp-0.7.2.tar.gzCentOS 7 používá Apache 2.4, takže musíme opravit suphp, než jej budeme moci zkompilovat proti Apache. Oprava se aplikuje takto:
wget -O suphp.patch https://lists.marsching.com/pipermail/suphp/attachments/20130520/74f3ac02/attachment.patch[[email protected] suphp-0.7.2]# autoreconf -if
patch -Np1 -d suphp-0.7.2cd suphp-0.7.2
autoreconf -if
libtoolize:vkládání pomocných souborů do AC_CONFIG_AUX_DIR, `config'.
libtoolize:kopírování souboru `config/ltmain.sh'
libtoolize:Zvažte přidání `AC_CONFIG_MACRO_DIR([m4])' do configure.ac a
libtoolize:opětovné spuštění libtoolize, abyste zachovali správná makra libtool ve stromu.
libtoolize:Zvažte přidání `-I m4' do ACLOCAL_AMFLAGS v Makefile.am.
configure.ac:9:varování:AM_INIT_AUTOMAKE:formuláře se dvěma a třemi argumenty jsou zastaralé. Další informace najdete na:
configure.ac:9:http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation
configure.ac:24 :instalace 'config/config.guess'
configure.ac:24:instalace 'config/config.sub'
configure.ac:9:instalace 'config/install-sh'
configure .ac:9:instalace 'config/missing'
src/Makefile.am:instalace 'config/depcomp'
[[email protected] suphp-0.7.2]#Příkaz autoreconf aplikuje opravu, nyní můžeme nakonfigurovat nový zdroj následovně. POZNÁMKA: Příkaz configure je jeden řádek!
./configure --prefix=/usr/ --sysconfdir=/etc/ --with-apr=/usr/bin/apr-1-config --with-apache-user=apache --with-setid -mode=owner --with-logfile=/var/log/httpd/suphp_logPoté zkompilujte a nainstalujte SuPHP.
provést
provést instalaciPoté přidejte modul suPHP do konfigurace Apache přidáním nového souboru suphp.conf.
nano /etc/httpd/conf.d/suphp.confS následujícím obsahem.
LoadModule suphp_module modules/mod_suphp.so... a vytvořte soubor /etc/suphp.conf následovně:
nano /etc/suphp.conf[global];Cesta k logfilelogfile=/var/log/httpd/suphp.log;Loglevelloglevel=info;Uživatel Apache běží aswebserver_user=apache;Cesta všech skriptů musí být indocroot=/;Cesta k chroot() do před spuštěním skriptu;chroot=/mychroot; Security optionsallow_file_group_writeable=trueallow_file_others_writeable=falseallow_directory_group_writeable=trueallow_directory_others_writeable=false;Zkontrolujte, zda je skript uvnitř proměnné DOCUMENT_ROOTcheck_vhost_docroot=true;Odesílejte menší chybové zprávy do browseru/errors_to_browsk_proměnná do_prohlížeče/binuma. 0077; Minimální UIDmin_uid=100; Minimální GIDmin_gid=100[handlers];Handler pro php-scriptsx-httpd-suphp="php:/usr/bin/php-cgi";Handler pro CGI-scriptsx-suphp-cgi="execute:!self"Nakonec restartujeme Apache:
systemctl restart httpd.service
3 Konfigurace Apache Vhost pomocí SuPHP
V této kapitole ukážu, jak můžete přidat virtuálního hostitele v Apache, na kterém běží PHP pod samostatným uživatelem. Použiji název domény www.example.com pro web a PHP poběží jako uživatel a skupina "web1 ", kořen dokumentu pro web je /var/www/example.com
Nejprve přidejte nového uživatele a skupinu „web1“.
useradd web1Přidejte kořenový adresář webu.
mkdir /var/www/example.com
chown web1:web1 /var/www/example.comNyní přidejte konfigurační soubor virtuálního hostitele do adresáře apache conf.d.
nano /etc/httpd/conf.d/example.com.confs tímto obsahem:
DocumentRoot /var/www/example.com
ServerName example.com
ServerAdmin [e-mail chráněný]
SetHandler Žádný
suPHP_Engine na
SetHandler x-httpd-suphp
suPHP_AddHandler x-httpd-suphp
Nahraďte název domény svou vlastní doménou v řádcích ServerName a ServerAdmin.
Poté restartujte apache, abyste použili změny konfigurace.
systemctl restart httpd.service
4 Otestujte nastavení SuPHP
V této kapitole vám ukážu několik metod testování PHP na tomto webu. Nejprve vytvořím soubor, který pomocí funkce phpinfo() ukáže, zda PHP funguje a zda nyní běží v režimu CGI.
Vytvořte soubor info.php pomocí nano:
nano /var/www/example.com/info.phpa do nového souboru přidejte následující řádky:
phpinfo();Poté změňte vlastníka souboru na uživatele a skupinu web1.
chown web1:web1 /var/www/example.com/info.phpOtevřete URL souboru http://example.com/info.php ve webovém prohlížeči, zobrazí se následující stránka.
Důležité je ServerAPI řádek, který zobrazuje CGI/FastCGI . což ukazuje, že PHP se spouští přes SuPHP a ne pomocí mod_php.
Nyní otestuji, zda PHP běží pod správným uživatelem (web1). Jak SuPHP ví, kterého uživatele má používat? SuPHP přepne PHP na uživatele, který vlastní skript PHP, takže je důležité, aby všechny soubory PHP v naší webové kořenové složce /var/www/example.com vlastnil uživatel a skupina web1.
Jak tedy otestovat, zda PHP používá správného uživatele? Jedním ze způsobů je provést příkaz „whoami“, který vrátí uživatelské jméno.
Vytvořím nový skript testuser.php v kořenovém adresáři webu:
nano /var/www/example.com/testuser.phps tímto obsahem:
system('whoami');Poté změňte vlastníka souboru na uživatele a skupinu web1.
chown web1:web1 /var/www/example.com/testuser.phpOtevřete http://example.com/testuser.php ve webovém prohlížeči, výsledek bude : web1
SuPHP je nakonfigurován a spouští soubory PHP jako uživatel tohoto webu. Odstraňte testovací soubory z adresáře webu a začněte přidávat skripty webu.
5 Stáhnout tento server CentOS 7.2 jako virtuální počítač
Toto nastavení je dostupné jako stažení virtuálního stroje ve formátu ova/ovf (kompatibilní s VMWare a Virtualbox) pro předplatitele howtoforge.
Přihlašovací údaje pro virtuální počítač
- Heslo uživatele root je:howtoforge
- Heslo uživatele „administrátor“ je:howtoforge
Při prvním přihlášení změňte obě hesla.
- IP adresa virtuálního počítače je 192.168.1.100
6 odkazů
- CentOS
- Webový server Apache
- SuPHP