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

看板Linux作者 (RX-0)時間4年前 (2020/09/06 17:51), 4年前編輯推噓4(5150)
留言56則, 9人參與, 4年前最新討論串1/1
本人程度:不懂後端伺服器怎麼存密碼的 爬文後要做個簡易的LINUX登入程序 目前想法是寫一個script如下: echo ${1} | openssl passwd -1 -salt key -stdin > /etc/password ##感謝kenduest大大修正 這樣會不會在管線被擷取或剛跑script就被截取${1}的值呀 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.164.220.187 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1599385872.A.871.htmlucrxzero:轉錄至看板 LinuxDev 09/06 18:36

09/06 19:18, 4年前 , 1F
1. 後端程式寫入/etc 很危險吧
09/06 19:18, 1F

09/06 19:19, 4年前 , 2F
echo ${1} 啊 聽起來很好做 command injection
09/06 19:19, 2F

09/06 19:19, 4年前 , 3F
2. 你用什麼語言? google crypt()函式庫
09/06 19:19, 3F

09/06 21:29, 4年前 , 4F
你用 $1 代表是用參數傳吧?用 ps 會看到程序的參數
09/06 21:29, 4F

09/06 21:29, 4年前 , 5F
當然,要先看你想做到的安全是對哪些角度而言
09/06 21:29, 5F

09/06 23:06, 4年前 , 6F
你${1}直接就在cmdline裡面了
09/06 23:06, 6F

09/06 23:48, 4年前 , 7F
其實我是用重導向 將dialog輸入管道只是想簡化問題用$1
09/06 23:48, 7F

09/06 23:48, 4年前 , 8F
造成誤會抱歉
09/06 23:48, 8F

09/06 23:50, 4年前 , 9F
我用Shell script寫的
09/06 23:50, 9F

09/06 23:50, 4年前 , 10F
請問為何寫進etc很危險呢
09/06 23:50, 10F

09/07 01:00, 4年前 , 11F
1. 你的命令那個 echo 多餘的,因為你已經把要使用的
09/07 01:00, 11F

09/07 01:01, 4年前 , 12F
密碼指定叫做 password 了,那個 echo 沒有功能
09/07 01:01, 12F

09/07 01:02, 4年前 , 13F
所以真的要取得 command line 第一個傳入變數內容
09/07 01:02, 13F

09/07 01:02, 4年前 , 14F
應該是把 $1 搬到後面去才對
09/07 01:02, 14F

09/07 01:02, 4年前 , 15F
2. openssl passwd -1 這種是古早 des 加密不安全的
09/07 01:02, 15F

09/07 01:03, 4年前 , 16F
抱歉說錯了,-1 是 md5-hash 加密,目前也是不安全
09/07 01:03, 16F

09/07 01:08, 4年前 , 17F
考慮使用 sha256/sha512 hash 加密比較安全,目前
09/07 01:08, 17F

09/07 01:08, 4年前 , 18F
linux 系統一般通用有 chpasswd 可以支援這類使用
09/07 01:08, 18F

09/07 01:08, 4年前 , 19F
3. 放 command line 參數有密碼等項目確實不安全
09/07 01:08, 19F

09/07 01:09, 4年前 , 20F
考慮 io 重導方式或是讀入檔案方式,前提程式支援
09/07 01:09, 20F

09/07 01:10, 4年前 , 21F
chpasswd 可以支援 standard input 讀入這類比較 ok
09/07 01:10, 21F

09/07 01:15, 4年前 , 22F
4. 後面直接 > /etc/passwd 真是嚇死人了...
09/07 01:15, 22F

09/07 01:16, 4年前 , 23F
希望原貼的朋友你能夠先釐清這個命令結果帶來的"改變"
09/07 01:16, 23F

09/07 02:28, 4年前 , 24F
還好啦, 他是 > /etc/password, 不是 passwd QQ
09/07 02:28, 24F

09/07 02:30, 4年前 , 25F
不過我不懂, 這指令跟"簡易的LINUX登入程序"有啥關係?
09/07 02:30, 25F

09/07 06:56, 4年前 , 26F
pipeline 是安全的,不安全的是你腳本直接從命令列吃密
09/07 06:56, 26F

09/07 06:56, 4年前 , 27F
碼引數
09/07 06:56, 27F

09/07 11:04, 4年前 , 28F
我不是直接抓引數只是簡化問題抱歉造成誤會
09/07 11:04, 28F

09/07 11:05, 4年前 , 29F
我其實是在systemd 寫一個開機程序用dialog請用戶輸入
09/07 11:05, 29F

09/07 11:05, 4年前 , 30F
密碼
09/07 11:05, 30F

09/07 11:05, 4年前 , 31F
輸入完我想管線導給OpenSSL
09/07 11:05, 31F

09/07 11:25, 4年前 , 32F
若是 openssl passwd 是你要的,預設 openssl passwd
09/07 11:25, 32F

09/07 11:25, 4年前 , 33F
你使用 -stdin 參數就可以直接標準輸入讀入處理
09/07 11:25, 33F

09/07 11:26, 4年前 , 34F
ex: openssl passwd -1 -stdin < mypasswd.dat
09/07 11:26, 34F

09/07 11:26, 4年前 , 35F
mypasswd.dat 就是原始密碼,提供 openssl 工具讀入
09/07 11:26, 35F

09/07 11:30, 4年前 , 36F
一般server儲存的都是單向加密後無法解密的密碼(例如雜湊
09/07 11:30, 36F

09/07 11:30, 4年前 , 37F
),這是為了防止密碼資料庫被駭後降低被破解的機會,最早的
09/07 11:30, 37F

09/07 11:31, 4年前 , 38F
SunOS /etc/passwd 裏的密碼欄位還所有帳號可讀,後來才改
09/07 11:31, 38F

09/07 11:31, 4年前 , 39F
成shadow
09/07 11:31, 39F

09/07 11:32, 4年前 , 40F
忘了說,上述方法也是為了防止不肖內部人盜用客戶密碼
09/07 11:32, 40F
※ 編輯: ucrxzero (1.164.220.187 臺灣), 09/07/2020 11:33:03

09/07 11:33, 4年前 , 41F
驗證使用者密碼則是把使用者輸入文字照相同方式加密後再
09/07 11:33, 41F

09/07 11:33, 4年前 , 42F
和系統儲存的密碼比對
09/07 11:33, 42F

09/07 11:37, 4年前 , 43F
如果擔心unnamed pipe可能被ps偷窺到,可改用named pipe,
09/07 11:37, 43F

09/07 11:38, 4年前 , 44F
是的我感謝各位大大上班時間還教學
09/07 11:38, 44F

09/07 11:38, 4年前 , 45F
named pipe用mkfifo建立, man mkfifo
09/07 11:38, 45F

09/07 11:38, 4年前 , 46F
我會去研究named pipe
09/07 11:38, 46F

09/07 11:39, 4年前 , 47F
不過要注意named pipe的owner和mode,以免設定不當反而人
09/07 11:39, 47F

09/07 11:40, 4年前 , 48F
人可讀取,那就更糟了
09/07 11:40, 48F

09/07 11:42, 4年前 , 49F
大大資安方面太專業了 鞠躬
09/07 11:42, 49F

09/07 12:13, 4年前 , 50F
unnamed pipe 主要是兩個 process 需要同步資料溝通
09/07 12:13, 50F

09/07 12:13, 4年前 , 51F
應用才方便,樓上密碼溝通大多一般是一次性不會多次
09/07 12:13, 51F

09/07 12:14, 4年前 , 52F
因為 read/write 一般都會有 blocking 問題,要用
09/07 12:14, 52F

09/07 12:14, 4年前 , 53F
基本上有其它事情要處理,寫入一般檔案方式是最單純的
09/07 12:14, 53F

09/07 12:16, 4年前 , 54F
建議自己 python 寫片段程式處理吧,沒那麼複雜
09/07 12:16, 54F

09/07 12:52, 4年前 , 55F
Ok感謝大大
09/07 12:52, 55F

09/07 12:52, 4年前 , 56F
看來能解決
09/07 12:52, 56F
文章代碼(AID): #1VLB4GXn (Linux)
文章代碼(AID): #1VLB4GXn (Linux)