Centos
在 CentOS 7 上使用 authd 超時
我目前正在嘗試通過允許在最後十秒內收到我的郵件的伺服器執行身份查找來增強我的郵件系統。雖然所需的 iptables 規則執行良好,但我在安裝authd包時遇到了問題。
in.authd
從命令行呼叫會產生所需的結果:# in.authd -t60 --xerror --os -E 993,53558 993 , 53558 : USERID : OTHER :[U2FsdGVkX19EFvZ6dxXLJJl2oKKW/PVOKmX5ER0WWWs=]
但是,當通過網路套接字嘗試相同的操作時,我會延遲最多 10 秒,然後出現錯誤:
# time echo 993, 53558 | nc localhost 113 993 , 53558 : ERROR :NO-USER real 0m5.036s user 0m0.003s sys 0m0.007s
延遲讓我相信存在導致超時的權限問題。查看 authd 的原始碼,如果讀取
/proc/net/tcp*
失敗或對這些文件的查找反复失敗,則可能會發生這種情況。但:Unix 權限
辨識使用者
# finger ident Login: ident Name: Directory: / Shell: /sbin/nologin Never logged in. No mail. No Plan.
團體會員
# id ident uid=98(ident) gid=98(ident) groups=98(ident)
鑑於此,
in.authd
以 ident 使用者身份呼叫按預期工作:# sudo -u ident in.authd -t60 --xerror --os -E 993,53558 993 , 53558 : USERID : OTHER :[U2FsdGVkX1/CxIcvTsEmTnhLSGjnwZ/X9TCwQ4ovZXk=]
文件權限
# ls -alZ /proc/net/tcp* -r--r--r--. root root system_u:object_r:proc_net_t:s0 /proc/net/tcp -r--r--r--. root root system_u:object_r:proc_net_t:s0 /proc/net/tcp6
SELinux
這裡沒有什麼可疑的:
# grep ident /var/log/audit/audit.log | audit2why Nothing to do # grep auth /var/log/audit/audit.log | audit2why Nothing to do
我有點沒有想法。當我允許
in.authd
以 root 身份啟動時,也會發生這種情況。journalctl
並沒有太大幫助,因為它只是記錄有問題的單元進入失敗狀態:# journalctl -ln5 --unit=auth@* systemd[1]: Started Authd Ident Protocol Requests Server ([::1]:55841). systemd[1]: Starting Authd Ident Protocol Requests Server ([::1]:55841)... systemd[1]: auth@7-::1:113-::1:55841.service: main process exited, code=exited, status=1/FAILURE systemd[1]: Unit auth@7-::1:113-::1:55841.service entered failed state. systemd[1]: auth@7-::1:113-::1:55841.service failed.
進入
in.authd
“調試”模式(如果你可以這樣稱呼它)不會透露任何額外的資訊。我沒有通過執行使用者名,--username
因為我更關心延遲而不是輸出的正確性。誠然,在虛擬使用者大規模託管的時代,返回的值一開始就很難正確,但我真的很喜歡在這裡返回有意義的東西的想法。任何幫助表示讚賞。
願其他人不要落入同樣的陷阱。一切其實都很好。從 authd 文件的測試部分:
執行“
telnet localhost auth
”並鍵入以逗號分隔的兩個埠。*選擇的兩個埠必須具有 localhost 或 127.0.0.1 的外部地址以及匹配的本地地址。*如果他們不這樣做,將返回一個 NO-USER 錯誤。