Upload
chatchai-jantaraprim
View
128
Download
1
Embed Size (px)
Citation preview
Linux Server Admin
Web ApplicationsChatchai J
2013-01-142013-01-16
Application on Web
● Using Web as User Interface● Example
– Database : phpmyadmin● php, mysql
– Mail : web mail● roundcube● squirrelmail
– Weblog – blog● wordpress
phpmyadmin
● ตดิตั้ง$ sudo apt-get install phpmyadmin
● config
– เลือก apache2 เป็น Web Server
– admin password สำำหรับ mysql server (root)
– password สำำหรับ phpmyadmin
● LEAVE IT BLANK (phpmyadmin จะ gen random password ให)้
phpmyadmin (ต่อ)
● ทดสอบที่ URL
http://www.domain.com/phpmyadminhttp://172.30.160.xx/phpmyadmin
● login โดยใช ้admin account ของ mysql
– login:
– password:
● ใช้งำนได้แลว้!
ในกรณีท่ีมีปัญหำ➔ apache web server ทำำงำนอย่่หรือเปล่ำ?
$ ps uaxw | grep apache
ถ้ำไม่ แก้ปัญหำ config ของ apache ก่อน$ sudo apachectl configtest
ด่วำ่มี error ที่ใหนแล้วแก้ไขให้ถ่กต้อง $ sudo apachectl restart
ในกรณีท่ีมีปัญหำ (ต่อ)
➔ เปิด webbrowser (firefox, lynx, epiphany, chromium-browser)
$ firefox localhost
➔ ควรที่จะใช้งำนได้, ถำ้ไม่ได ้ ยกมือถำม→
➔ เปล่ียนจำก localhost เป็น ip address
* ตรวจสอบให้แนใ่จว่ำ IP address ของเครื่อง VM คืออะไร ก่อนเปิด$ firefox http://172.30.160.XX
➔ ควรที่จะใช้งำนได้, ถำ้ไม่ได ้ ยกมือถำม→
ในกรณีท่ีมีปัญหำ (ต่อ)
➔ เปิดโดยใช ้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 lsasvr.coe.psu.ac.th$ host t a www.domain.com
➔ ทุกคำำส่ังควรจะใหค้ำำตอบเดียวกัน คือ IP Address ของ เครื่อง VM ของคณุในตอนนี้
ถ้ำ 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
ปัญหำของ DNS
$ host t a www.domain.com localhost
● ถ้ำไม่สำมำรถ resolve ได้แสดงว่ำ named server บน VM มีปัญหำ
● ตรวจสอบว่ำ named run อย่่หรือเปล่ำ?
$ ps auxw | grep named
● ถ้ำไม่มีให้ start bind9
$ sudo service bind9 start
ปัญหำของ DNS (ต่อ)
● ถ้ำ start named ไม่ได้ ให้ตรวจสอบ config ของ named
$ namedcheckconf
$ namedcheckconf 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)”
ปัญหำของ DNS (ต่อ)
$ host t a www.domain.com 172.30.0.85$ host t a www.domain.com lsasvr.coe.psu.ac.th
● ถ้ำไม่สำมำรถ resolve ได้แสดงว่ำ ข้อม่ลของ zone มีปัญหำ● ใน zone ไฟล์ /var/cache/bind/master/domain.com จะต้องมี
– record ของ NS 2 record
$ORIGIN domain.com.
IN NS lsasvr.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
ปัญหำของ DNS (ต่อ)
● ทุกคร้ังที่แกไ้ข zone ไฟล์ ให้ update serial
ของ SOA เสมอ● หลังจำกแกไ้ขเสร็จ reload config แล้วตรวจสอบอีกคร้ัง
● ถ้ำยังใช้งำนไมไ่ด้ ยกมอืถำม→
กลับมำท่ี www
● ถึงตอนน้ีควรทีจ่ะใช้งำน$ firefox http://www.domain.com
● จำก VM (และจำก host ถ้ำ nameserver เป็น 172.30.0.85) ได้แล้ว
● ตอ่ไปเป็นกำรเขำ้ถึง phpmyadmin
$ firefox http://www.domain.com/phpmyadmin
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 ใหม่
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
phpmyadmin
● ติดตั้ง phpmyadmin ใหม่$ sudo aptget purge phpmyadmin
$ sudo rm rvf /etc/phpmyadmin
$ sudo aptget install phpmyadmin
ปัญหำ!!!
● ผำ่นทำง web interface
● ส่งข้อม่ลแบบ plain text
● login/password สำำหรับ database ซึ่งสำมำรถ แก้ไขข้อม่ลใดๆกไ็ด้ในฐำนข้อมล่ทั้งหมด
● YOU SHOULD NOT DOING SOMETHING LIKE THAT!
● วิธีกำรแก้ไข เข้ำรหัสกำรติดต่อ โดยใช้ https
เข้ำรหัส HTTP
● ใช้ https
● ssl เป็น module ของ apache2
● สำมำรถ enable โดยใช้ “a2enmod ssl”
$ sudo a2enmod ssl
$ sudo service apache2 restart
เข้ำรหัส HTTP (ต่อ)
● config ของ apache สำำหรับ ssl แยกออกมำจำก default ซ่ึงไม่ได้เขำ้รหัส
● ด่ไฟล์ใน /etc/apache2/sites-available และ /etc/sites-
enabled
● สำมำรถ enable โดยใช้คำำสั่ง a2ensite
$ sudo a2ensite defaultssl
$ sudo service apache2 restart
https connection
● สำมำรถ connect โดยใช้https://www.domain.com
– จะต้อง trust key ที่สรำ้งขึ้นมำกอ่น เพรำะเป็นแบบ self-signed
● ใช้งำนได้แล้ว?
https://www.domain.com/phpmyadmin
แลว้http://www.domain.com/phpmyadmin ละ่?
อันตรำยจำก phpmyadmin
● ม ีzombie bot จำำนวนมำกใช้วิธีกำร bruteforce attack อย่่จำำนวนมำก
● ตัวอยำ่งบน publish-paper
● กำรป้องกัน– mysql administrator password MUST secure
– update/upgrade phpmyadmin อย่่เสมอ– ซ่อนมันไว้หลัง virtualhost อ่ืน
เพิ่ม 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 (และอื่นๆ) ได้
virtualhost config
● เรำจะใช้ https://pma.domain.com
สำำหรับกำรเข้ำถึง phpmyadmin เท่ำนั้นไม่สำมำรถเข้ำจำกทำงอ่ืนได้
● ด่ตัวอย่ำงกำร config virtualhost ของ https://www.domain.com จำก /etc/apache2/sites-available/default-ssl
virtual host
● เริ่มจำก http://pma.mydomain.com ให้เข้ำถึง phpmyadmin
● ใช้ NameVirtualHost และ VirtualHost
● ในไฟล์ /etc/phpmyadmin/apache.conf
/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
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/sslcertsnakeoil.pemSSLCertificateKeyFile /etc/ssl/private/sslcertsnakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">SSLOptions +StdEnvVars
</FilesMatch>
</VirtualHost>