Centos

在 CentOS 7 上使用 authd 超時

  • April 8, 2016

我目前正在嘗試通過允許在最後十秒內收到我的郵件的伺服器執行身份查找來增強我的郵件系統。雖然所需的 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 錯誤。

引用自:https://unix.stackexchange.com/questions/268657