❶ android 網路電話開發,VOIP/SIP 那麼多開源選哪個好
Freeswitch
FreeSWITCH 遵循RFC並支持很多高級的SIP特性,如 presence、BLF、SLA以及TCP、TLS和sRTP等。它也可以用作一個SBC進行透明的SIP代理(proxy)以支持其它媒體如T.38等。FreeSWITCH 支持寬頻及窄帶語音編碼,電話會議橋可同時支持8、12、16、24、32及48kHZ的語音. 而在傳統的電話網路中,要做到三方通話或多方通話需要通過專門的晶元來處理,其它像預付費,彩鈴等業務在PSTN網路中都需要依靠智能網(IN)才能實現,而且配置起來相當不靈活。
FreeSWITCH 是一個開源的電話交換平台,從一個簡單的軟電話客戶端到運營商級的軟交換設備幾乎無所不能。能原生地運行於Windows、Max OS X、linux、BSD 及 solaris 等諸多32/64位平台。可以用作一個簡單的交換引擎、一個PBX,一個媒體網關或媒體支持IVR的伺服器等。它支持SIP、H323、Skype、Google Talk等協議,並能很容易地與各種開源的PBX系統如sipXecs、Call Weaver、Bayonne、YATE及Asterisk等通信。
視頻編解碼器(直通):
Theora的
H.261
H.263
H.264
MP4
另見:編解碼器
支持多種編解碼器
CELT(32千赫 AHD 48千赫)
G.722.1(寬頻)
G.722.1C(寬頻32千赫)
G.722協議(寬頻)
G.711
G.726(16K,24K,32K,48K)AAL2和RFC 3551
G.723.1(直通)
G.729AB(需要許可證,除非使用直通)
AMR(直通)
iLBC的
Speex語音(窄帶和寬頻)
LPC - 10
DVI4(ADPCM),8 kHz和16 kHz
主要是用於商業不會產生糾紛
❷ SSL和SSH和OpenSSH,OpenSSL有什麼區別
1、SSL(Secure Sockets Layer 安全套接層),它提供使用 TCP/IP 的通信應用程序間的隱私與完整性。比如你訪問https://servername 就是用了ssl協議,地址欄會出現小鎖,雙擊就能查看ssl伺服器證書的詳細信息。TCP埠:443
2、SSH(Secure Shell 遠程登陸用),安全可以和telnet比較一下,比如telnet傳輸用戶密碼是明文的,而SSH是加密的。明文的可以監聽到。TCP埠22
3、OpenSSH是個SSH的軟體,OpenSSH is the premier connectivity tool for remote login with the SSH protocol. linux/unix都用openssh軟體提供SSH服務。簡單來說,比如以前的Solaris系統默認不提供ssh服務,需要安裝OpenSSH才行。
❸ 什麼是K8S
k8s是什麼?
Kubernetes 是一個可移植的,可擴展的開源容器編排平台,用於管理容器化的工作負載和服務,方便了聲明式配置和自動化。它擁有一個龐大且快速增長的生態系統。Kubernetes 的服務,支持和工具廣泛可用。
為什麼現在流行使用容器?
早期: 在物理伺服器上面部署應用程序存在資源分配問題,因為其不能在物理伺服器中的應用程序定義資源邊界,導致應用程序資源利用不足而無法擴展.
後來: 為了解決該問題,引入了虛擬化技術, 虛擬化技術是指允許你在單個物理伺服器的 CPU 上運行多個虛擬機,可以讓多個應用程序在虛擬機之間進行隔離,具有一定的安全性, 每一個虛擬機就是一台完整的計算機, 在虛擬化硬體之上運行所有組件.
現在: 多數在物理伺服器上面部署應用程序都是采kubectl用容器的方式,容器類似於虛擬機,它們都具有自己的文件系統、CPU、內存、進程空間等, 且由於它們與基礎架構分離,因此可以跨雲和 OS 發行版本進行移植。基於此特點被企業大范圍使用.
為什麼需要使用k8s容器?
若出現這樣一個環境: 在生產環境中如果一個容器發生故障,則我們需要手動去啟動另外一個容器,這樣的操作是對我們的管理員來說是不太方便的, 若一個容器出現故障,另一個容器可以自動啟動容器接管故障的容器,這樣是最好的.
k8s就可以實現該效果,Kubernetes 提供了一個可彈性運行分布式系統的框架。 Kubernetes 會滿足你的擴展要求、故障轉移、部署模式等。
k8s功能: 服務發現和負載均衡, 存儲編排, 自動部署和回滾, 自動完成裝箱計算, 自我修復, 密鑰與配置管理
名詞解釋
secret
Secret有三種類型:
k8s的組成
k8s是由組件,API,對象等組成.
包含所有相互關聯組件的 Kubernetes 集群圖如下:
組件
API
Kubernetes 控制面 的核心是 API 伺服器。 API 伺服器負責提供 HTTP API,以供用戶、集群中的不同部分和集群外部組件相互通信。
對象
Kubernetes對象是Kubernetes系統中的持久實體。Kubernetes使用這些實體來表示集群的狀態.
具體來說,他們可以描述:
Kubernetes 架構
Kubernetes 架構由節點,控制面到節點通信, 控制器, 雲控制器管理器組成.
master 流程圖
節點
節點可以是一個虛擬機或者物理機器,取決於所在的集群配置。 每個節點包含運行 Pods 所需的服務, 這些 Pods 由 控制面 負責管理.
節點上的組件包括 kubelet、 容器運行時以及 kube-proxy。
節點狀態
可以使用 kubectl 來查看節點狀態和其他細節信息:
kubectl describe node <�節點名稱>
一個節點包含以下信息:
控制面到節點通信
控制器
在 Kubernetes 中,控制器通過監控集群 的公共狀態,並致力於將當前狀態轉變為期望的狀態。
舉個例子: 當前室內溫度為20度, 我們通過調節遙控器,使其溫度上升至24度, 這20度到24度的變化即為讓其從當前狀態接近期望狀態。
控制器模式分為直接控制和通過API伺服器來控制.
雲控制器管理器
雲控制器管理器是指嵌入特定雲的控制邏輯的 控制平面組件。 雲控制器管理器允許您鏈接聚合到雲提供商的應用編程介面中, 並分離出相互作用的組件與您的集群交互的組件。
雲控制器管理器中的控制器包括:
Kubernetes 安全性
雲原生安全
雲原生安全4個C: 雲(Cloud)、集群(Cluster)、容器(Container)和代碼(Code)
雲原生安全模型的每一層都是基於下一個最外層,代碼層受益於強大的基礎安全層(雲、集群、容器)。我們無法通過在代碼層解決安全問題來為基礎層中糟糕的安全標准提供保護。
基礎設施安全
Kubetnetes 基礎架構關注領域
建議
通過網路訪問 API 服務(控制平面)
所有對 Kubernetes 控制平面的訪問不允許在 Internet 上公開,同時應由網路訪問控制列表控制,該列表包含管理集群所需的 IP 地址集。
通過網路訪問 Node(節點)
節點應配置為 僅能 從控制平面上通過指定埠來接受(通過網路訪問控制列表)連接,以及接受 NodePort 和 LoadBalancer 類型的 Kubernetes 服務連接。如果可能的話,這些節點不應完全暴露在公共互聯網上。
Kubernetes 雲訪問提供商的 API
每個雲提供商都需要向 Kubernetes 控制平面和節點授予不同的許可權集。為集群提供雲提供商訪問許可權時,最好遵循對需要管理的資源的最小特權原則。Kops 文檔提供有關 IAM 策略和角色的信息。
訪問 etcd
對 etcd(Kubernetes 的數據存儲)的訪問應僅限於控制平面。根據配置情況,你應該嘗試通過 TLS 來使用 etcd。更多信息可以在 etcd 文檔中找到。
etcd 加密
在所有可能的情況下,最好對所有驅動器進行靜態數據加密,但是由於 etcd 擁有整個集群的狀態(包括機密信息),因此其磁碟更應該進行靜態數據加密。
集群組件安全
容器安全
代碼安全
Kubernetes架構常見問題
Kubernetes ATTACK 矩陣
信息泄露
雲賬號AK泄露
API憑證(即阿里雲AccessKey)是用戶訪問內部資源最重要的身份憑證。用戶調用API時的通信加密和身份認證會使用API憑證.
API憑證是雲上用戶調用雲服務API、訪問雲上資源的唯一身份憑證。
API憑證相當於登錄密碼,用於程序方式調用雲服務API.
k8s configfile泄露
kubeconfig文件所在的位置:
$HOME/.kube/config
Kubeconfig文件包含有關Kubernetes集群的詳細信息,包括它們的位置和憑據。
雲廠商會給用戶提供該文件,以便於用戶可以通過kubectl對集群進行管理. 如果攻擊者能夠訪問到此文件(如辦公網員工機器入侵、泄露到Github的代碼等),就可以直接通過API Server接管K8s集群,帶來風險隱患。
Master節點SSH登錄泄露
常見的容器集群管理方式是通過登錄Master節點或運維跳板機,然後再通過kubectl命令工具來控制k8s。
雲伺服器提供了通過ssh登陸的形式進行登陸master節點.
若Master節點SSH連接地址泄露,攻擊者可對ssh登陸進行爆破,從而登陸上ssh,控制集群.
容器組件未鑒權服務
Kubernetes架構下常見的開放服務指紋如下:
注:前六個重點關注: 一旦被控制可以直接獲取相應容器、相應節點、集群許可權的服務
了解各個組件被攻擊時所造成的影響
組件分工圖:
假如用戶想在集群裡面新建一個容器集合單元, 流程如下:
攻擊apiserver
apiserver介紹:
在Kubernetes中,對於未鑒權對apiserver, 能訪問到 apiserver 一般情況下就能獲取了集群的許可權.
在攻擊者眼中Kubernetes APIServer
默認情況下apiserver都有鑒權:
未鑒權配置如下:
對於這類的未鑒權的設置來說,訪問到 apiserver 一般情況下就獲取了集群的許可權:
如何通過apiserver來進行滲透,可參考:https://Kubernetes.io/docs/reference/generated/kubectl/kubectl-commands
攻擊kubelet
每一個Node節點都有一個kubelet(每個節點上運行的代理)服務,kubelet監聽了10250,10248,10255等埠。
10250埠,是kubelet與apiserver進行通信對主要埠, 通過該埠,kubelet可以知道當前應該處理的任務.該埠在最新版Kubernetes是有鑒權的, 但在開啟了接受匿名請求的情況下,不帶鑒權信息的請求也可以使用10250提供的能力, 在Kubernetes早期,很多挖礦木馬基於該埠進行傳播.
在配置文件中,若進行如下配置,則可能存在未授權訪問漏洞.
/var/bin/kubulet/config/yaml
若10250埠存在未授權訪問漏洞,我們可以直接訪問/pods進行查看
根據在pods中獲取的信息,我們可以在容器中執行命令
curl -Gks https://host:10250/exec/{namespace}/{podname}/{containername} -d 'input=1' -d 'output=1' -d 'tty=1' -d 'command=whoami'
上述命令得到websocket地址,連接websocket得到命令結果:
使用wscat工具連接websocket
wscat -c 「https://X.X.X.X:10250/{websocket}」 --no-check
即可得到我們執行命令的結果.
獲取token
/var/run/secrets/kubernetes.io/serviceaccount
然後即可訪問kube-api server,獲取集群許可權
curl -ks -H "Authorization: Bearer ttps://master:6443/api/v1/namespaces/{namespace}/secrets
"
攻擊kubelet總體步驟如下:
攻擊dashboard
dashboard登陸鏈接如下:
http://xxx.xxx.xxx.xxx:xxxx/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login
dashboard界面如下:
dashboard是Kubernetes官方推出的控制Kubernetes的圖形化界面.在Kubernetes配置不當導致dashboard未授權訪問漏洞的情況下,通過dashboard我們可以控制整個集群。
默認情況下, dashboard是需要進行鑒權操作的,當用戶開啟了enable-skip-login時可以在登錄界面點擊Skip跳過登錄進入dashboard.
通過skip登陸的dashboard默認是沒有操作集群的許可權,因為Kubernetes使用RBAC(Role-based access control)機制進行身份認證和許可權管理,不同的serviceaccount擁有不同的集群許可權。
但有些開發者為了方便或者在測試環境中會為Kubernetes-dashboard綁定cluster-admin這個ClusterRole(cluster-admin擁有管理集群的最高許可權).
為Kubernetes-dashboard綁定cluster-admin 設置如下:
後通過skip登陸dashboard便有了管理集群的許可權.
創建Pod控制node節點,該pod主要是將宿主機根目錄掛載到容器tmp目錄下。
新建一個Pod如下:
通過該容器的tmp目錄管理node節點的文件
攻擊etcd
Kubernetes默認使用了etcd v3來存儲數據, 若能na
etcd對內暴露2379埠,本地127.0.0.1可免認證訪問. 其他地址要帶—endpoint參數和cert進行認證。
未授權訪問流程:
攻擊docker remote api(Docker daemon公網暴露)
2375是docker遠程操控的默認埠,通過這個埠可以直接對遠程的docker 守護進程進行操作。Docker 守護進程默認監聽2375埠且未鑒權.
當機器以方式啟動daemon時,可以在外部機器對該機器的docker daemon進行直接操作:
docker daemon -H=0.0.0.0:2375
之後依次執行systemctl daemon-reload、systemctl restart docker
外部主機使用 即可操作暴露2375埠的主機.
-H
因此當你有訪問到目標Docker API 的網路能力或主機能力的時候,你就擁有了控制當前伺服器的能力。我們可以利用Docker API在遠程主機上創建一個特權容器,並且掛載主機根目錄到容器.
檢測目標是否存在docker api未授權訪問漏洞的方式也很簡單,訪問http://[host]:[port]/info路徑是否含有ContainersRunning、DockerRootDir等關鍵字。
攻擊kubectl proxy
二次開發所產生的問題
管理Kubernetes無論是使用 kubectl 或 Kubernetes dashboard 的UI功能,其實都是間接在和 APIServer 做交互.
如果有需求對k8s進行二次開發的話,大部分的開發功能請求了 APIServer 的 Rest API 從而使功能實現的。
例如:
類似於這樣去調用apiserver, 攻擊者若修改namespace、pod和容器名, 那麼即可造成越權.
推薦工具
Kube-Hunter掃描漏洞
kube-hunter是一款用於尋找Kubernetes集群中的安全漏洞掃描器
下載地址: https://github.com/aquasecurity/kube-hunter
CDK(強推)
CDK是一款為容器環境定製的滲透測試工具,在已攻陷的容器內部提供零依賴的常用命令及PoC/EXP。集成Docker/K8s場景特有的 逃逸、橫向移動、持久化利用方式,插件化管理。
下載地址: https://github.com/cdk-team/CDK/wiki/CDK-Home-CN
參考鏈接
https://developer.aliyun.com/article/765449?groupCode=aliyunsecurity
https://xz.aliyun.com/t/4276#toc-2
https://www.secrss.com/articles/29544
https://kubernetes.io/zh/docs/concepts/workloads/pods/#what-is-a-pod
https://www.huweihuang.com/kubernetes-notes/concepts/architecture/kubernetes-architecture.html
https://www.kubernetes.org.cn/service-account
https://www.aquasec.com/cloud-native-academy/cloud-native-applications/cloud-native-infrastructure/
https://www.cdxy.me/?p=827
❹ im即時通訊源碼哪裡有呢想搭建一個即時通訊
即時通訊im源碼可以用即構科技的,即構科技提供即時通訊示例源碼,開發者通過IM SDK和API可快速開發IM功能,比自主開發節省90%時間和成本,支持發送文本、圖片、文件、自定義消息、呼叫邀請CallKit等消息類型,同時支持通過自定義消息定製業務特殊消息類型,讓您快速實現實時聊天場景消息收發。
❺ php網路驗證系統開源
用途是給易語言和按鍵精靈所寫的游戲腳本的進行注冊碼遠程授權
dll動態鏈接庫
基於ThinkPHP3.2的非前後端分離Web
服務端(php)介紹:
客戶端(dll)介紹:
https://github.com/HJaycee/Signxx