mean
July 21, 2016, 4:29am
1
สวัสดีครับ
มีท่านใดใช้ suphp อยู่บ้างไหมครับ
suphp สามารถกำหนด php.ini ด้วยตนเองได้
เช่น suPHP_ConfigPath /home/user/domains/domain.com
ส่งผลให้ user ใช้ function exec , shell_exec ได้
สามารถอ่านไฟล์ /etc/passwd เพื่อ list user ออกมาได้
ส่งผลให้ security cms อ่อนอย่างมากครับ
พอมีวิธีป้องกันจุดนี้กันไหมครับ
ขอบคุณครับ
mean
July 21, 2016, 4:30am
2
ไม่แน่ใจว่า ถ้าผมแก้ httpd-directories.conf
<Directory /home>
AllowOverride none
จะเป็นปัญหาไหมครับ เพื่อไม่ให้ user กำหนด suPHP_ConfigPath ด้วยตนเองได้
mean
July 21, 2016, 6:43am
4
ขอบพระคุณครับพี่วัฒน์
ผมเจอวิธีแก้ด้วยกัน 2 วิธีครับ
วิธีแรกแก้ mod_suphp
Modify the mod_suphp.c file
This is the last file modification. In this modification, I am going to disable the suPHP_ConfigPath from being used in users .htaccess files. If users want to bypass a php.ini directive, I want to know about it. With this disabled, if a particular user needs a PHP directive changed, they will have to have the server administrator customize a php.ini for them and then reference this in the httpd.conf file. This is explained in more detailed near the end of this guide.
Change:
suphp-0.6.1/src/apache/mod_suphp.c (Line 339)
{”suPHP_ConfigPath”, suphp_handle_cmd_config, NULL, OR_OPTIONS, TAKE1,
To:
{”suPHP_ConfigPath”, suphp_handle_cmd_config, NULL, RSRC_CONF|ACCESS_CONF, TAKE1,
วิธีที่สอง
คือแยก php.ini ให้แต่ละ user ครับ ซึ่ง directadmin ไม่ได้แยกให้แต่ต้นเหมือน cpanel
และ DA ยังไม่มี php.ini setting ให้
https://help.directadmin.com/item.php?id=183
icez
July 21, 2016, 7:16am
5
จริงๆ ปัญหาแรกที่จะเจอก่อน security คือ performance ครับ
suphp มันช้ามาก หาทางรันเป็น fastcgi / fpm ได้ก็จบแล้วคัรบ
mean
July 21, 2016, 7:30am
6
ไอซ์ fastcgi / fpm เดี่ยวนี้มันทำ php select version ได้แบบ suphp ยั้งครับ
icez
July 21, 2016, 8:16am
7
อยู่ที่ control panel ครับ
da ทำได้แล้วนะ
mean
July 21, 2016, 12:19pm
8
ปัญหาที่ได้รับคือ เมื่อเจ้าของเซิร์ฟเวอร์ ทำการ disable_functions ใน php.ini อันหลักแล้ว
แต่เมื่อ user สร้างไฟล์ php.ini ใน public_html
php จะทำการ override ค่าต่างๆ ของ php.ini ที่อยู่ใน public_html แทน default php.ini
ส่งผลให้ disable_function ที่ปิดไว้ไม่เป็นผล exe,shell_exec สามารถใช้งานได้ รวมถึง open_basedir เป็น off สามารถอ่าน /etc/passwd ได้เป็นต้น
แฟนๆ Directadmin ที่ใช้ suphp fixed ดังนี้ก่อนได้ครับ
php จะ load .ini และ override ไล่ลำดับค่าดังนี้
1. Configuration File (php.ini) Path /usr/local/php5x/lib
2. Loaded Configuration File /usr/local/php5x/lib/php.ini
ถ้า user กำหนด suPHP_ConfigPath ใน .htaccess จะทำให้ php เรียกใช้ php.ini จากตำแหน่งที่ต้องการได้ เช่น
/home/user/domains/domain.com/public_html/php.ini
ถ้ากำหนดใน httpd.conf ของ user ส่วนนี้จะเปลี่ยนไปโหลดตามที่ custom ค่า
3. Scan this dir for additional .ini files /usr/local/php5x/lib/php.conf.d
4. additional .ini files parsed /usr/local/php5x/lib/php.conf.d/php.ini
โดยปกติ php.ini จะแยกให้แต่ละเวอร์ชั่น
เราแก้โดยการสร้าง php.ini เพื่อไป override php.ini ที่ถูก custom ขึ้นจากข้อ 2 ได้ดังนี้
mkdir -p /usr/local/php52/lib/php.conf.d/ /usr/local/php53/lib/php.conf.d/ /usr/local/php54/lib/php.conf.d/ /usr/local/php55/lib/php.conf.d/ /usr/local/php56/lib/php.conf.d/
cp /usr/local/php52/lib/php.ini /usr/local/php52/lib/php.conf.d/
cp /usr/local/php53/lib/php.ini /usr/local/php53/lib/php.conf.d/
cp /usr/local/php54/lib/php.ini /usr/local/php54/lib/php.conf.d/
cp /usr/local/php55/lib/php.ini /usr/local/php55/lib/php.conf.d/
cp /usr/local/php56/lib/php.ini /usr/local/php56/lib/php.conf.d/
ผลคือไม่ว่า user จะกำหนด php.ini อย่างไร ก็จะถูกแทนที่ด้วย php.ini ที่ load ตอนท้ายครับ
mean
July 21, 2016, 2:20pm
10
เรียนถามครับ
fastcgi ทำ php multiple version ได้ไหมครับ
เช่น 5.3 , 5.4 , 5.5 , 5.6 ครับ
mean
July 21, 2016, 2:26pm
11
da ที่มาให้ มีให้เลือกแค่ 2 version อ่ะไอซ์
ตอนนี้ยังไม่มีแบบหลายๆ เวอร์ชั่น นอกจากใช้ suphp หนะ
ได้แค่สองครับ ลง odin plesk เลยครับ ได้ตั้งแต่ 5.2 ยัน 7.0
mean
July 21, 2016, 4:05pm
13
ผมเห็นของ siteground สามารถเลือก multiple php แบบ application/x-httpd-php5x ได้ครับ เลยเดาว่า น่าจะ compile แยกรันในโหมดอื่นๆ นอกจาก suphp ได้แน่ๆ ผมหามาปีนึงยังไม่เจอวิธีครับ -*-
1 Like
เหมือนคุณแมนเคยทำ How to ไว้ครับ
รอตัว CustomBuild ทำให้เลือกใช้ PHP ได้มากกว่า 2 เวอร์ชั่นอยู่เหมือนกัน ทำไมไม่ทำให้ซัพพอร์ตซัก 5 เวอร์ชั่นไปเลย
ตอนที่ซัพพอร์ต PHP 2 เวอร์ชั่นก็ว่าดีแล้วนะ