作爲網絡服務的中心,網絡服務器,經常會受到來自外部的***,今天簡單概括一下,作爲服務端重要組成部分--數據庫服務,存在哪些不安全的地方,以及如何去防範;
常見服務的安全問題:
1、redis服務;
2、mysql服務;
redis服務所存在的潛在安全問題:
redis crackit 漏洞利用實例;
由於很多reids服務都是免密碼登錄的,
連接無密碼認證的reids服務;
測試是否支持config命令,並查看當前db文件位置;
修改db文件路徑到crontab文件(覆蓋/var/spool/cron/crontabs/下的文件)
修改db文件路徑到ssh登陸祕鑰文件(覆蓋~/.ssh/authorized_keys文件)
這樣,基本就可以通過***機器,ssh到redis所屬機器上了。並且拿到啓動redis的用戶權限;
redis服務需要注意的安全常識:
redis服務安全配置(/etc/redis.conf)
只監聽localhost或對訪問源進行限制;
使用低權限的獨立服務賬號(redis)
增加密碼認證
禁用config、flushdb、flushall、keys等特殊指令;
mysql服務安全配置:
只監聽localhost或對訪問源進行限制;
使用低特權的獨立服務賬號(由於mysql內置了一套較爲高級的賬號管理系統,不同的賬號不僅對不同的數據庫、表有不同的管理權限,而且不同的賬號對其他的賬號具有一定的權限管理,相當的高級)
合理劃分mysql賬號權限
爲所有sql賬號設置複雜密碼,禁用特權賬號遠程登陸
合理設置linux文件系統權限
禁止mysql賬號對非數據庫文件的寫入
對於包括數據庫服務在內的,所有服務而言,一些通用的防禦手段:
採用規範的軟件安裝方法,對安裝軟件以及相關的配置運行目錄權限進行較爲注意的設置,
只保留必要的服務/端口
採取訪問來源限制
合理的權限分配(文件權限和運行權限)
及時修復已知漏洞,補丁更新;
安全歸類表格:
服務分類 | 通用 | redis | mysql | web服務 |
外部 | 訪問源控制 | 限制源ip | 限制源ip | waf等 |
外部 | 訪問鑑權 | 設置強密碼 | 設置強密碼 | 增加token等方式 |
內部 | 程序內防禦 | 禁用特權命令 | 只允許訪問部分數據 | 判斷數據是否合法 |
內部 | 服務權限劃分 | 運行權限限制 | 運行權限限制 | 運行權限限制 |
內部 | 服務權限劃分 | 文件權限劃分 | 文件權限劃分 | 文件權限劃分 |
內部 | 操作系統防禦 | 修補已知漏洞 | 修補已知漏洞 | 修補已知漏洞 |
設置密碼策略:
密碼長度、字符集、獨立密碼、獨立模式
推薦工具:mkpasswd (linux系統工具)
運行權限限制:
服務應運行在獨立的低特權賬號下
需監聽1000以下端口則採用master-worker結構(如:nginx/apache/php-fpm)
工作賬號運行服務的風險:
服務唄攻破後獲取工作賬號特權(可控制較多重要數據)
如,通過修改 ~/.bashrc,加入反彈shell腳本
當工作賬號以sudo -s/-i 等方式切換到root時,會以root加載工作賬號的環境,即執行惡意腳本
***者利用工作賬號的正常操作實現提權;
文件權限限制:
禁止使用777等全員讀寫執行權限
合理設置文件屬主及權限,重要文件及目錄禁止讀寫執行
可寫目錄不解析,解析目錄不可寫(web)
可寫文件不執行,執行文件不可寫(mysql)
本文來自:http://blog.csdn.net/dengjiexian123/article/details/52973247
參考文章:https://blog.51cto.com/simeon/2115184