發現一個不錯的開源堡壘機 jumpserver: https://github.com/ibuler/jumpserver
最開始看的是jumpserver2.0.0 版本,具體的實現方式是:
1. django + uwgsi 實現web前端的用戶管理界面
關於django可以參考:http://xianglong.me/article/django-request-work-flow/
django的 MVC, 以jumpserver下為例子:
- urls.py 文件,控制用戶請求由哪個方法處理,其具體內容就是url的正則表達式,並對應views中具體方法名
- views.py文件,處理用戶請求,其具體內容就是urls對應的各個方法。
- models.py文件,定義數據模型,處理數據庫請求, 其具體內容就是對應的數據庫表字段名。
最終,views把處理結果返回給template目錄下對應的前端文件, 完成一次完整請求。
通過pip,這是一個python的egg包管理器,我們可以方便安裝django包。用django提供的工具,我們可以輕松建立一個django框架下的web工程:
django-admin startproject mywebproject
2. ldap + paramiko 實現服務器權限管理
ldap是一個輕量級的目錄訪問協議,一個比較知名的ldap協議實現是 openldap / openldap-server。
它是CS架構,包含客戶端和服務端兩個組件。客戶端可以通過ldapsearch / ldapadd / ldapdel等命令去查詢修改數據,服務器端其實是以Berkeley database 為數據庫進行數據管理,以相同命令進行數據庫操作, 它沒有sql解析步驟,按照百度說法是介於關系型數據庫 比如mysql 跟內存型數據庫 比如redis之間的 文件數據庫。
下面簡單介紹下,在linux中如何開啟ldap驗證:
在linux中,我們大部分軟件都是通過調用pam組件進行身份認證,
- 具體驗證內容,可以查看/etc/pam.d/system-auth, 這個配置文件可以通過調用命令 authconfig 或是 authconfig-tui 自動生成。
- 另外,authconfig也會更新配置文件 /etc/sysconfig/authconfig, 在這個文件可以控制具體使用哪種方式驗證 (開啟ldap認證我們需要,更新到這個文件,設置USELDAPAUTH = yes
最后我們還需要更新nsswitch.conf,該文件控制驗證機制的先后順序,比如 files, ldap 代表先本地passwd文件驗證沒有后,再去尋找ldap服務器。
注: 當決定使用ldap驗證,不要忘記安裝 nss-pam-ldap組件
3. express + socket.io 實現在線用戶監測
express是js的web開源框架,在這之前需安裝 NodeJS 這個js 解析器,NodeJs之於js語言,類似於 php-fpm解析器之於php語言。
說到php,我們知道fastcgi協議,用於定義php跟其他web服務器的通信接口,而php-fpm是該協議的實現。
那前面提到的uwgsi協議,也是類似於fastcgi一樣的接口,但是它是定義python的跟其他web服務器的通信,而uWGSI 是該協議的實現。
最后,socket.io也是一個實現,它是websocket這個協議的實現,好多實現。。
