26
Linux Server Admin Web Applications Chatchai J 2013-01-14 2013-01-16

Ch11 web-app

Embed Size (px)

Citation preview

Page 1: Ch11 web-app

Linux Server Admin

Web ApplicationsChatchai J

2013-01-142013-01-16

Page 2: Ch11 web-app

Application on Web

● Using Web as User Interface● Example

– Database : phpmyadmin● php, mysql

– Mail : web mail● roundcube● squirrelmail

– Weblog – blog● wordpress

Page 3: Ch11 web-app

phpmyadmin

● ตดิตั้ง$ sudo apt-get install phpmyadmin

● config

– เลือก apache2 เป็น Web Server

– admin password สำำหรับ mysql server (root)

– password สำำหรับ phpmyadmin

● LEAVE IT BLANK (phpmyadmin จะ gen random password ให)้

Page 4: Ch11 web-app

phpmyadmin (ต่อ)

● ทดสอบที่ URL

http://www.domain.com/phpmyadminhttp://172.30.160.xx/phpmyadmin

● login โดยใช ้admin account ของ mysql

– login:

– password:

● ใช้งำนได้แลว้!

Page 5: Ch11 web-app

ในกรณีท่ีมีปัญหำ➔ apache web server ทำำงำนอย่่หรือเปล่ำ?

$ ps uaxw | grep apache

ถ้ำไม่ แก้ปัญหำ config ของ apache ก่อน$ sudo apachectl configtest

ด่วำ่มี error ที่ใหนแล้วแก้ไขให้ถ่กต้อง  $ sudo apachectl restart

Page 6: Ch11 web-app

ในกรณีท่ีมีปัญหำ (ต่อ)

➔ เปิด webbrowser (firefox, lynx, epiphany, chromium-browser)

$ firefox localhost

➔ ควรที่จะใช้งำนได้, ถำ้ไม่ได ้ ยกมือถำม→

➔ เปล่ียนจำก localhost เป็น ip address

* ตรวจสอบให้แนใ่จว่ำ IP address ของเครื่อง VM คืออะไร ก่อนเปิด$ firefox http://172.30.160.XX

➔ ควรที่จะใช้งำนได้, ถำ้ไม่ได ้ ยกมือถำม→

Page 7: Ch11 web-app

ในกรณีท่ีมีปัญหำ (ต่อ)

➔ เปิดโดยใช ้domain name (www.domain.com) $ firefox http://www.domain.com

➔ ถ้ำมีปัญหำ ให้ตรวจสอบ DNS$ host ­t a www.domain.com localhost$ host ­t a www.domain.com 172.30.0.85$ host ­t a www.domain.com lsa­svr.coe.psu.ac.th$ host ­t a www.domain.com

➔ ทุกคำำส่ังควรจะใหค้ำำตอบเดียวกัน คือ IP Address ของ เครื่อง VM ของคณุในตอนนี้

Page 8: Ch11 web-app

ถ้ำ lookup address แล้วมีปัญหำ● ไฟล์ /etc/resolv.conf ของ VM (และของ host) จะต้องมีข้อม่ลดังนี้

domain coe.psu.ac.thsearch coe.psu.ac.thnameserver 172.30.0.85

● ยกเว้นว่ำ คุณร่้ว่ำมันมีควำมหมำยว่ำอย่ำงไร (ซ่ึงคุณควรจะร่้) และจะใชว้ิธีกำรอื่นได้อย่ำงไร

● VM จะต้องส่ง notification ไปยัง lsa-svr.coe.psu.ac.th เพื่อ register

domain ของตัวเองให้ lsa-svr ร่้จัก– update serial ใน ZONE file แล้วใช ้rndc reload

Page 9: Ch11 web-app

ปัญหำของ DNS

$ host ­t a www.domain.com localhost

● ถ้ำไม่สำมำรถ resolve ได้แสดงว่ำ named server บน VM มีปัญหำ

● ตรวจสอบว่ำ named run อย่่หรือเปล่ำ?

$ ps auxw | grep named

● ถ้ำไม่มีให้ start bind9

$ sudo service bind9 start

Page 10: Ch11 web-app

ปัญหำของ DNS (ต่อ)

● ถ้ำ start named ไม่ได้ ให้ตรวจสอบ config ของ named

$ named­checkconf

$ named­checkconf ­z

● ท้ังสองคำำสั่ง จะต้องไม่มี error ถ้ำมี ให้แก้ไขให้ถ่กต้อง ถ้ำยังแก้ไม่ได้ ยกมือถำม→

$ sudo service bind9 restart

$ sudo rndc reload

● แล้วตรวจสอบ log ใน /var/log/syslog

$ sudo grep named /var/log/syslog | tail ­25

● จะต้องมีข้อควำม “running” หรือ “reload configuration succeeded”

● มีข้อควำม “zone domain.com/IN: sending notified (serial xxxxxxxxxx)”

Page 11: Ch11 web-app

ปัญหำของ DNS (ต่อ)

$ host ­t a www.domain.com 172.30.0.85$ host ­t a www.domain.com lsa­svr.coe.psu.ac.th

● ถ้ำไม่สำมำรถ resolve ได้แสดงว่ำ ข้อม่ลของ zone มีปัญหำ● ใน zone ไฟล์ /var/cache/bind/master/domain.com จะต้องมี

– record ของ NS 2 record

$ORIGIN domain.com.

                IN NS lsa­svr.coe.psu.ac.th.

                IN NS ns.domain.com.

– Note: บรรทัด $ORIGIN มีควำมสำำคัญ– และมี A record ของ ns.domain.com ซึ่งมี IP Address เป็นของ VM ในขณะนี้ns              IN A 172.30.160.xx

Page 12: Ch11 web-app

ปัญหำของ DNS (ต่อ)

● ทุกคร้ังที่แกไ้ข zone ไฟล์ ให้ update serial

ของ SOA เสมอ● หลังจำกแกไ้ขเสร็จ reload config แล้วตรวจสอบอีกคร้ัง

● ถ้ำยังใช้งำนไมไ่ด้ ยกมอืถำม→

Page 13: Ch11 web-app

กลับมำท่ี www

● ถึงตอนน้ีควรทีจ่ะใช้งำน$ firefox http://www.domain.com

● จำก VM (และจำก host ถ้ำ nameserver เป็น 172.30.0.85) ได้แล้ว

● ตอ่ไปเป็นกำรเขำ้ถึง phpmyadmin

$ firefox http://www.domain.com/phpmyadmin

Page 14: Ch11 web-app

phpmyadmin

● ถ้ำเข้ำถึง http://www.domain.com ได้แต่ http://www.domain.com/phpmyadmin ยงัไม่ได้

● จะเป็นปัญหำท่ี config ของ phpmyadmin● ตรวจสอบดว่่ำมีไฟล ์/etc/apache2/conf.d/phpmyadmin.conf หรือเปลำ่$ ls ­l /etc/apache2/conf.d | grep phpmyadmin

● ควรจะมีไฟล ์config ใน /etc/phpmyadmin/apache.conf อย่แ่ล้ว$ ls ­l /etc/phpmyadmin/apache.conf

– ถ้ำไม่มี ให้ตดิตั้ง phpmyadmin ใหม่

Page 15: Ch11 web-app

phpmyadmin

● สร้ำง link จำก /etc/phpmyadmin/apache.conf ไปไวใ้น /etc/apache2/conf.d$ cd /etc/apache2/conf.d$ sudo ln ­sf /etc/phpmyadmin/apache.conf phpmyadmin.conf

● restart apache2 ใหม ่ทุกคร้ังหลังจำกมกีำรเปลี่ยนแปลง config$ sudo service apache2 restart

Page 16: Ch11 web-app

phpmyadmin

● ติดตั้ง phpmyadmin ใหม่$ sudo apt­get purge phpmyadmin

$ sudo rm ­rvf /etc/phpmyadmin

$ sudo apt­get install phpmyadmin

Page 17: Ch11 web-app

ปัญหำ!!!

● ผำ่นทำง web interface

● ส่งข้อม่ลแบบ plain text

● login/password สำำหรับ database ซึ่งสำมำรถ แก้ไขข้อม่ลใดๆกไ็ด้ในฐำนข้อมล่ทั้งหมด

● YOU SHOULD NOT DOING SOMETHING LIKE THAT!

● วิธีกำรแก้ไข เข้ำรหัสกำรติดต่อ โดยใช้ https

Page 18: Ch11 web-app

เข้ำรหัส HTTP

● ใช้ https

● ssl เป็น module ของ apache2

● สำมำรถ enable โดยใช้ “a2enmod ssl”

$ sudo a2enmod ssl

$ sudo service apache2 restart

Page 19: Ch11 web-app

เข้ำรหัส HTTP (ต่อ)

● config ของ apache สำำหรับ ssl แยกออกมำจำก default ซ่ึงไม่ได้เขำ้รหัส

● ด่ไฟล์ใน /etc/apache2/sites-available และ /etc/sites-

enabled

● สำมำรถ enable โดยใช้คำำสั่ง a2ensite

$ sudo a2ensite default­ssl

$ sudo service apache2 restart

Page 20: Ch11 web-app

https connection

● สำมำรถ connect โดยใช้https://www.domain.com

– จะต้อง trust key ที่สรำ้งขึ้นมำกอ่น เพรำะเป็นแบบ self-signed

● ใช้งำนได้แล้ว?

https://www.domain.com/phpmyadmin

แลว้http://www.domain.com/phpmyadmin ละ่?

Page 21: Ch11 web-app

อันตรำยจำก phpmyadmin

● ม ีzombie bot จำำนวนมำกใช้วิธีกำร bruteforce attack อย่่จำำนวนมำก

● ตัวอยำ่งบน publish-paper

● กำรป้องกัน– mysql administrator password MUST secure

– update/upgrade phpmyadmin อย่่เสมอ– ซ่อนมันไว้หลัง virtualhost อ่ืน

Page 22: Ch11 web-app

เพิ่ม name ต่อไปนี้ใน Zone file

● shell● webmail● pma (phpmyadmin)● webmin● blog

pma IN A 172.30.160.xxx

shell IN A 172.30.160.xxx

...

● เพื่อใหส้ำมำรถใช้ชื่อ pma.domain.com (และอื่นๆ) ได้

Page 23: Ch11 web-app

virtualhost config

● เรำจะใช้ https://pma.domain.com

สำำหรับกำรเข้ำถึง phpmyadmin เท่ำนั้นไม่สำมำรถเข้ำจำกทำงอ่ืนได้

● ด่ตัวอย่ำงกำร config virtualhost ของ https://www.domain.com จำก /etc/apache2/sites-available/default-ssl

Page 24: Ch11 web-app

virtual host

● เริ่มจำก http://pma.mydomain.com ให้เข้ำถึง phpmyadmin

● ใช้ NameVirtualHost และ VirtualHost

● ในไฟล์ /etc/phpmyadmin/apache.conf

Page 25: Ch11 web-app

/etc/phpmyadmin/apache.conf

NameVirtualHost pma.domain.com:80

<VirtualHost pma.domain.com:80>

# Alias /phpmyadmin /usr/share/phpmyadminDocumentRoot /usr/share/phpmyadmin…</Directory></VirtualHost>

เพิ่ม config ในส่วนสีนำ้ำเงิน$ sudo service apache2 restart

Page 26: Ch11 web-app

https://pma.domain.com

NameVirtualHost pma.domain.com:443

<VirtualHost pma.domain.com:443>

# Alias /phpmyadmin /usr/share/phpmyadminDocumentRoot /usr/share/phpmyadmin…</Directory>SSLEngine onSSLCertificateFile    /etc/ssl/certs/ssl­cert­snakeoil.pemSSLCertificateKeyFile /etc/ssl/private/ssl­cert­snakeoil.key

<FilesMatch "\.(cgi|shtml|phtml|php)$">SSLOptions +StdEnvVars

</FilesMatch>

</VirtualHost>