Oct 17, 2011

Shell In a Box - Shell on Web Interface

shellinabox เป็นโปรแกรมที่ทำให้เราสามารถใช้ shell หรือ terminal ผ่านเว็บได้ ซึ่งจะคล้ายๆ กับ WebShell (WebShell นั้นพัฒนาต่อยอดมาจาก Ajaxterm) แต่ shellinabox เป็นตัวที่อยู่ใน wiki ของ Ubuntu วันนี้เลยขอสอนการติดตั้งตัวนี้ครับ และเขียนไว้เป็นบันทึกกันลืมไปในตัว

ขั้นแรกให้ดาวน์โหลดตัว shellinabox ของ platform ที่เราใช้อยู่ ในหน้า Download นำไปไว้ใน home folder หรือตำแหน่งที่ต้องการ หลังจากนั้นให้พิมพ์
sudo dpkg -i shellinabox_2.10-1_i386.deb
เนื่องจากผมใช้ Ubuntu หารใครใช้ Redhat base ก็ทำตาม RPM เอานะครับ

หลังจากนั้นให้เรา start server shellinabox ขึ้นมา ด้วยคำสั่ง
sudo /etc/init.d/shellinabox start
หรือ

sudo invoke-rc.d shellinabox start
ซึ่งเมื่อรันแล้ว shell in a box นี่จะรันอยู่บน port 4200 ด้วย protocol HTTPS ครับ
ให้เราเปิด Browser ขึ้นมาแล้วเข้าไปที่ https://<ip เครื่องที่เราติดตั้ง>:4200 ก็จะขึ้นหน้าตาดังรูปครับ
หน้า login ที่เข้าจาก Shell In a Box


หากใครไม่ได้เซ็ท iptable ไว้อาจจะอันตรายได้ ให้เราแก้ไขไฟล์ /etc/init.d/shellinabox เพิ่มบรรทัดตัวหน้าเข้าไป
SHELLINABOX_DATADIR="${SHELLINABOX_DATADIR:-/var/lib/shellinabox}"
SHELLINABOX_PORT="${SHELLINABOX_PORT:-4200}"
SHELLINABOX_USER="${SHELLINABOX_USER:-shellinabox}"
SHELLINABOX_GROUP="${SHELLINABOX_GROUP:-shellinabox}"
SHELLINABOX_ARGS="--localhost-only"

หลังจากนั้นเราจะให้ Apache Proxy มายังเจ้า shellinabox

หากใครยังไม่ติดตั้ง apache2 ให้พิมพ์
sudo apt-get install apache2
และให้ทำการเปิด module ssl โดย default ไฟล์ public และ private kety จะถูกสร้างมาให้อยู่แล้ว แต่หากใครยังไม่มีให้พิมพ์
sudo apt-get install ssl-cert
หลังจากนั้นให้เปิด module ssl ด้วยคำสั่ง
sudo a2enmod ssl
แล้วทำการ config ไฟล์ /etc/apache2/site-available/default-ssl
sudo vim /etc/apache2/site-available/default-ssl
เพิ่มบรรทัดด้านล่างนี้ลงไป
<Location /shell>
    ProxyPass https://localhost:4200/
    Order deny,all
    allow from 127.0.0.1 #หรือใครต้องการให้เข้าได้ทุก ip ให้เปลี่ยน 127.0.0.1 เป็น all แทน
</Location>
หากใครต้องการให้มีการทำ Basic Authentication ด้วยให้เพิ่มบรรทัดที่เป็นตัวอักษรหนาลงไป
<Location /shell>
    ProxyPass https://localhost:4200/
    Order deny,all
    allow from 127.0.0.1 #เปลี่ยน ip ที่อนุญาตได้ตามต้องการ
    AuthUserFile /etc/apache2/.htpasswd
    AuthName "Members Only"
    AuthType Basic
    Require valid-user #หากต้องการให้เข้าได้เฉพาะ user ที่ต้องการให้ใส่ชื่อ user <ชื่อ user> แทนที่ valid-user
</Location>
สร้าง user สำหรับ Basic Authen ด้วยคำสั่ง
sudo htpasswd /etc/apache2/.htpasswd admin
แล้วใส่ password ที่ต้องการลงไป
หลังจากนั้นให้เปิด Proxy module ของ apache2 ด้วยคำสั่ง
sudo a2enmod proxy proxy_http

Restart Apache2
sudo /etc/init.d/apache2 restart
หลังจาก login เข้าไปเราสามารถทำงานทุกอย่างได้ปกติ

เพียงเท่านี้เราก็สามารถ shell เข้าไปได้ทุกที่ๆ ต้องการได้แล้ว โดยไม่จำเป็นต้องมี SSH client เลย

0 ความคิดเห็น:

Post a Comment