[問題] 密碼經由pipeline給openssl加密安全嗎??

作者: ucrxzero (RX-0)   2020-09-06 17:51:09
本人程度:不懂後端伺服器怎麼存密碼的
爬文後要做個簡易的LINUX登入程序
目前想法是寫一個script如下:
echo ${1} | openssl passwd -1 -salt key -stdin > /etc/password
##感謝kenduest大大修正
這樣會不會在管線被擷取或剛跑script就被截取${1}的值呀
作者: newversion (海納百川)   2020-09-06 19:18:00
1. 後端程式寫入/etc 很危險吧
作者: CMJ0121 (請多指教!!)   2020-09-06 19:19:00
echo ${1} 啊 聽起來很好做 command injection
作者: newversion (海納百川)   2020-09-06 19:19:00
2. 你用什麼語言? google crypt()函式庫
作者: Gold740716 (項為之強)   2020-09-06 21:29:00
你用 $1 代表是用參數傳吧?用 ps 會看到程序的參數當然,要先看你想做到的安全是對哪些角度而言
作者: HMKRL (HMKRL)   2020-09-06 23:06:00
你${1}直接就在cmdline裡面了
作者: ucrxzero (RX-0)   2020-09-06 23:48:00
其實我是用重導向 將dialog輸入管道只是想簡化問題用$1造成誤會抱歉我用Shell script寫的請問為何寫進etc很危險呢
作者: kenduest (小州)   2020-09-07 01:00:00
1. 你的命令那個 echo 多餘的,因為你已經把要使用的密碼指定叫做 password 了,那個 echo 沒有功能所以真的要取得 command line 第一個傳入變數內容應該是把 $1 搬到後面去才對2. openssl passwd -1 這種是古早 des 加密不安全的抱歉說錯了,-1 是 md5-hash 加密,目前也是不安全考慮使用 sha256/sha512 hash 加密比較安全,目前linux 系統一般通用有 chpasswd 可以支援這類使用3. 放 command line 參數有密碼等項目確實不安全考慮 io 重導方式或是讀入檔案方式,前提程式支援chpasswd 可以支援 standard input 讀入這類比較 ok4. 後面直接 > /etc/passwd 真是嚇死人了...希望原貼的朋友你能夠先釐清這個命令結果帶來的"改變"
作者: rickieyang (Rickie Yang)   2020-09-07 02:28:00
還好啦, 他是 > /etc/password, 不是 passwd QQ不過我不懂, 這指令跟"簡易的LINUX登入程序"有啥關係?
作者: LinBuoRen (林博仁)   2020-09-07 06:56:00
pipeline 是安全的,不安全的是你腳本直接從命令列吃密碼引數
作者: ucrxzero (RX-0)   2020-09-07 11:04:00
我不是直接抓引數只是簡化問題抱歉造成誤會我其實是在systemd 寫一個開機程序用dialog請用戶輸入密碼輸入完我想管線導給OpenSSL
作者: kenduest (小州)   2020-09-07 11:25:00
若是 openssl passwd 是你要的,預設 openssl passwd你使用 -stdin 參數就可以直接標準輸入讀入處理ex: openssl passwd -1 -stdin < mypasswd.datmypasswd.dat 就是原始密碼,提供 openssl 工具讀入
作者: bitlife (BIT一生)   2020-09-07 11:30:00
一般server儲存的都是單向加密後無法解密的密碼(例如雜湊),這是為了防止密碼資料庫被駭後降低被破解的機會,最早的SunOS /etc/passwd 裏的密碼欄位還所有帳號可讀,後來才改成shadow忘了說,上述方法也是為了防止不肖內部人盜用客戶密碼驗證使用者密碼則是把使用者輸入文字照相同方式加密後再和系統儲存的密碼比對如果擔心unnamed pipe可能被ps偷窺到,可改用named pipe,
作者: ucrxzero (RX-0)   2020-09-07 11:38:00
是的我感謝各位大大上班時間還教學
作者: bitlife (BIT一生)   2020-09-07 11:38:00
named pipe用mkfifo建立, man mkfifo
作者: bitlife (BIT一生)   2020-09-07 11:39:00
不過要注意named pipe的owner和mode,以免設定不當反而人人可讀取,那就更糟了
作者: ucrxzero (RX-0)   2020-09-07 11:42:00
大大資安方面太專業了 鞠躬
作者: kenduest (小州)   2020-09-07 12:13:00
unnamed pipe 主要是兩個 process 需要同步資料溝通應用才方便,樓上密碼溝通大多一般是一次性不會多次因為 read/write 一般都會有 blocking 問題,要用基本上有其它事情要處理,寫入一般檔案方式是最單純的建議自己 python 寫片段程式處理吧,沒那麼複雜
作者: ucrxzero (RX-0)   2020-09-07 12:52:00
Ok感謝大大看來能解決

Links booklink

Contact Us: admin [ a t ] ucptt.com