我试图了解 FreeBSD 10.0 上的 PAM 配置出现了什么错误
该计算机配置了两种不同的身份验证领域,一种是默认的 Unix 身份验证,另一种是使用系统安全服务守护程序 (sssd)。
目前我正在使用此配置,/etc/pam.d/sshd因为我只想允许 sssd 从 ssh 登录。
auth sufficient pam_opie.so no_warn no_fake_prompts
auth requisite pam_opieaccess.so no_warn allow_local
auth sufficient /usr/local/lib/pam_sss.so
#auth sufficient pam_krb5.so no_warn try_first_pass
#auth sufficient pam_ssh.so no_warn try_first_pass
auth required pam_unix.so no_warn use_first_pass
# account
account required pam_nologin.so
#account required pam_krb5.so
account required pam_login_access.so
account required /usr/local/lib/pam_sss.so ignore_unknown_user
account required pam_unix.so
# session
#session optional pam_ssh.so want_agent
session optional /usr/local/lib/pam_sss.so
session optional /usr/local/lib/pam_mkhomedir.so mode=0700
session required pam_permit.so
# …Run Code Online (Sandbox Code Playgroud) 我正在尝试为 OpenSSH 实施两因素身份验证。环境是 Centos 7(内核:3.10.0-229.1.2.el7.x86_64)和 OpenSSH_6.6.1p1,OpenSSL 1.0.1e-fips 2013 年 2 月 11 日。我们部署了 Active Directory (LDAP) + Kerberos。规格如下:
为了执行第二个因素的身份验证过程,有第 3 方可用的 PAM 模块,它对 Kerberos 一无所知。所以这就是我所做的:
将这些行放入 /etc/ssh/sshd_config:
# To enable PAM - this will make sshd use PAM with configuration /etc/pam.d/sshd
UsePam yes
ChallengeResponseAuthentication yes
# To enable Kerberos and public key authentication - it will let sshd use existing Kerberos tickets
GSSAPIAuthentication yes …Run Code Online (Sandbox Code Playgroud) 有时我会看到这个mailru-verificationDNS 记录。
我用谷歌搜索过- 和 Yandexed ;) -但我一无所获。
我怀疑这是一种俄罗斯 SPF 实现......
dig example.com TXT
Run Code Online (Sandbox Code Playgroud)
产出
; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> example.com TXT
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56090
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com. IN TXT
;; ANSWER SECTION:
example.com. 14400 IN TXT "v=spf1 include:xxxxxx.xx -all"
example.com. …Run Code Online (Sandbox Code Playgroud) 我想我在这里误解了一些东西。我已经使用 Docker (sitespeedio/graphite) 安装了 Graphite,并为 Web 面板设置了基本身份验证。我打开了端口 2003 的防火墙以从其他服务器获取数据点,并且运行良好。
但是没有身份验证/授权。甚至我用来发送一些测试的 python lib 也不允许设置密码、令牌或其他身份验证机制。
如何保护我的 Graphite 安装?
我正在设置 Amazon Cognito 进行身份验证以使用 Kibana 实例。我只允许管理员创建用户,我只允许 Cognito 用户池身份提供者。创建用户池时,我将多重身份验证设置为“必需”并仅启用“基于时间的一次性密码”选项。我将 Amazon Cognito 域用于登录页面。
当我从 AWS 控制台创建 Cognito 用户时,我通过电子邮件发送邀请。转到 Kibana URL 时,服务器会按预期重定向到 Cognito 登录页面。使用邮件中的临时密码登录后,用户需要更改密码,然后再次尝试登录。
问题是需要MFA,但是用户没有机会设置TOTP应用。我希望 TOTP 设置遵循所需的密码更改。相反,Cognito 会拒绝未启用 MFA 的登录:
您必须设置多重身份验证 (MFA) 才能登录。请设置 MFA,然后重试。
在 AWS 控制台中管理用户显示启用SMS MFA的选项。但是,我没有使用短信。
该TOTP软件令牌MFA文件规定:
当您的用户选择 TOTP 软件令牌 MFA 时,调用AssociateSoftwareToken以返回为用户帐户生成的唯一共享密钥代码。此 API 方法的请求需要访问令牌或会话字符串,但不能同时使用两者。为方便起见,您可以将密钥作为快速响应 (QR) 代码分发。
但这听起来像是在用户“选择”TOTP 之后我需要以某种方式进行 API 调用。我没有编写可以进行 API 调用的自己的应用程序——此身份验证仅用于访问 Amazon Elasticsearch Service 提供的 Kibana 实例。
用户如何初始化TOTP以便他们可以根据需要使用它完成登录?
我真的很难遵循AWS文档“启用IAM用户和角色对集群的访问”。
当我跑步时kubectl edit -n kube-system configmap/aws-auth,我看到这个:
mapRoles: |
- groups:
- system:bootstrappers
- system:nodes
Run Code Online (Sandbox Code Playgroud)
文档告诉我运行kubectl get roles -A并kubectl get clusterroles查看我的角色和集群角色。然后kubectl describe role role-name -n kube-system和kubectl describe clusterrole cluster-role-name。
我想将我的 AWS IAM 用户设置为adminor cluster-admin,但当我使用此配置时它不起作用:
mapUsers: |
- userarn: arn:aws:iam::**********:user/nathan
username: nathan
groups:
- cluster-admin
Run Code Online (Sandbox Code Playgroud)
我发现当我使用时我可以让它工作system:masters。但后来我查看了所有角色、集群角色、角色绑定和集群角色绑定,我看不到任何以下使用的“系统”角色configmap/aws-auth:
system:bootstrapperssystem:nodessystem:masters不过,我可以看到以下一些内容:
system:node(单数)system:node-bootstrapper我真的迷路了!我在这里误解了什么?什么是 中的“组” configmap/aws-auth,它与这些角色/集群角色有何关系?如果我想使用cluster-admin,我是否需要在它前面加上一些前缀,或者在某处添加“绑定”? …
我真的很难让我的 Sharepoint 站点使用表单身份验证。我曾尝试使用 ActiveDirectoryMembershipProvder 和 LDAP 等效项,但它们似乎绝对无法在任何“peoplefinder”类型的区域中从 ActiveDirectory 中找到任何用户。
在管理部分的 Web.config 中,我有这个:
<membership defaultProvider="ADMembershipProvider">
<providers>
<add name="ADMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="ADConnectionString" />
</providers>
</membership>
Run Code Online (Sandbox Code Playgroud)
然后过了一会儿:
<connectionStrings>
<add name="ADConnectionString" connectionString="LDAP://dc.ourcompany.com/dc=ourcompany,dc=com,ou=Ourcompany,ou=UK,ou=Townville,ou=Users" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
连接字符串的内容完全来自 ADExplorer,但是否正确,我真的不知道,AD 不是我的专长。
我试过在 <provider> 标签中指定用户而不是,这两个似乎都没有引起问题。
当我尝试将用户添加到我正在配置此身份验证的站点时,我无法让它从域中找到任何人。我尝试了以下表达方式:
这些似乎都没有产生任何影响。
真正令人沮丧的是,Sharepoint 的日志(设置为 Verbose 和我的上帝,他们的意思是)和系统事件日志似乎都没有给出任何问题的迹象,他们只是不做任何事情。
这里是否有明显的问题,如果没有,是否有一种简单的方法可以将事情分解一下,以找出它在过程中失败的地方?
我在服务器上以测试模式部署了一个应用程序。对它的访问仅限于通过 HTTP 身份验证的选定用户组。这很好用。问题是,如果我通过不同的“位置”指令提供静态文件,nginx 会为这些文件提供“未授权”。我尝试关闭 auth_basic,但没有骰子。
这是 vhost conf:
# Virtual Host
upstream appname {
server 127.0.0.1:4000;
server 127.0.0.1:4001;
server 127.0.0.1:4002;
}
server {
listen 80;
server_name appname.domain.com;
# write app specific log
# make sure you create this file in your log directory before running behind nginx
access_log /home/apps/appname/shared/log/nginx.log main;
# let nginx serve static files directly
# images
location ^~/images {
auth_basic off;
root /home/apps/appname/current/public/images;
}
location ^~/covers {
auth_basic off;
root /home/apps/covers;
}
# # javascript
location ^~/javascripts …Run Code Online (Sandbox Code Playgroud) configuration nginx authentication http-basic-authentication
我们使用 Windows 身份验证连接到我们的内部 SQL Server 实例(2005 和 2008 的混合)。
当我打开 SQL Server Management Studio 并连接到服务器时,它显然使用我当前的域凭据连接了我。
是否可以以某种方式覆盖它并以替代域用户身份登录?
目的是检查用户是否已正确设置并可以访问我希望他们访问的数据库。
我知道我可以以他们的身份登录到 Windows 会话,然后这样做,但这似乎有点乏味。
我有一个启用了基于密码的 SSH 的 FreeBSD 服务器。我想启用sudo,但我不希望潜在的攻击者成为远离 root 访问权限的密码。我目前的解决方案是使用公钥以 root 身份登录(root 的远程密码身份验证被禁用),我的普通用户不在轮子上,sudo也没有安装。
过去,我使用一次性密码进行 sudo 访问(我可以公开密钥进入系统,但是 sudo 需要一个 OTP,并且有 30 分钟的超时时间让我真正完成工作,而无需重新验证所有时间)。然而,这相当麻烦,至少对于 OPIE/S/Key。使用硬件令牌可能没问题,但目前我没有。
我一直在寻找可以让我通过代理转发使用 SSH 公钥对 sudo 进行身份验证的东西。 pam_sshFreeBSD 中包含的似乎没有这样做——它只是通过查看用户是否可以解密服务器上的私钥来进行身份验证。我找到了pam_ssh_agent_auth,但我在其他地方很少找到对它的引用。它现在是 0.9,但我有点犹豫是否信任根到程序的网关,我找不到很多人实际使用的证据。
所以,我的问题基本上是2:
pam_ssh_agent_auth用在野外可靠吗?authentication ×10
freebsd ×2
pam ×2
ssh ×2
email ×1
graphite ×1
kerberos ×1
kubernetes ×1
nginx ×1
private-key ×1
sharepoint ×1
spam-filter ×1
sql-server ×1
sssd ×1
sudo ×1