簡體   English   中英

允許特定的Linux用戶綁定到端口443

[英]Allow specific linux user to bind to port 443

我負責設置一個通過SSL運行的JBoss Web應用程序,因此應該可以通過端口443對其進行訪問。

當然,它可以由具有root特權的用戶啟動,但這是我要避免的事情。 我想由非特權用戶運行它,以便我可以嚴格控制此應用程序執行的所有操作,並且不提供超出所需的訪問權限。

但是,問題是非特權用戶無法綁定到<1024端口。 我知道設計這種情況的原因,但是,這種安全性原則不允許我在JBoss應用程序中實踐良好的安全性。

解決此問題的最佳方法是什么? 我當然想避免使用丑陋的解決方案,例如綁定到端口8443。

1。

編寫使用特權端口的網絡服務的常用方法是:

  • 以root身份啟動服務;
  • 創建套接字並將其綁定到特權端口;
  • 通過切換到非特權用戶來放棄root特權:
    • 使用setuid(2)不可撤銷地放棄特權;
    • 使用seteuid(2)放棄特權,但仍然能夠切換回root用戶。

2。

允許非特權用戶啟動特權服務的常用方法是設置setuid bit

綁定到特權端口后,服務可以切換回real user id (啟動服務的用戶)或某些特殊用戶(例如cron守護程序的cron用戶)。

3。

另一個(特定於Linux的)選項是為您的服務提供CAP_NET_BIND_SERVICE功能,而不提供完整的root特權。

可以使用libpcap在代碼中直接完成此操作(但您仍然需要setuid bit ),或者如果文件系統支持,可以通過將功能位附加到可執行文件上(因此不需要setuid bit )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM