标签: authentication

使用 Apache 和 LDAP 进行单点登录

我有一台运行两个 Web 应用程序的服务器:Gerrit 和 Mantis BT。现在,这些应用程序连接到 LDAP 服务器以对用户进行身份验证,并且工作正常。但是用户必须为每个应用程序进行身份验证;我想允许用户仅进行一次身份验证(可能使用 Apache+LDAP)并重用凭据以在两个应用程序中自动登录用户。

我现在的网络架构:

我现在拥有的网络架构图

我想要的网络架构:

我要的网络架构图

我什至不知道要在 Google 上寻找什么,因为我通常不熟悉 HTTP 身份验证和服务器管理。任何解决方案或指向我想要的东西都将不胜感激。

配置:
Ubuntu 服务器 14.04 LTS
Apache2 2.4
Gerrit 2.10
Mantis BT 1.2.19

重要说明:
我想保留 Gerrit。
如果它可以轻松完成我想要的操作,我可以使用另一个错误跟踪器。

ubuntu authentication single-sign-on http-authentication apache-2.4

5
推荐指数
1
解决办法
4229
查看次数

Windows Server 2012 R2 - 证书开始工作前的延迟

在我放入服务器的证书开始实际工作之前,我有这种奇怪的无法解释的延迟

它是这样的:

我将证书管理单元添加到 mmc 以管理计算机帐户证书

然后我将一些证书添加到受信任的根证书中,并将一些证书添加到中间证书颁发机构

我添加到受信任根证书的证书是整个组织的,我添加到中间证书颁发机构的证书是我所属的分支。

我使用 cmd 命令“cerutil -f -dspublish RootCA”和“certutil -f -dspublish NTAuthCA”将证书发布到活动目录

我尝试使用智能卡登录,但收到此错误:“处理智能卡时检测到不受信任的证书颁发机构”

我等了一天,然后突然一切正常,我可以登录,我没有收到任何错误,什么都没有。

我到处寻找这种奇怪的延迟,但我没有找到任何具体的东西,有人有任何想法吗?

windows certificate authentication smartcard

5
推荐指数
1
解决办法
3291
查看次数

Samba 身份验证和 LDAP

我有一个 OpenLDAP 服务器,用于对各种服务进行身份验证和授权。所有用户都是对象类型inetOrgPerson,我的组是groupOfNames.

现在我想将 Samba 配置为也通过 LDAP 进行身份验证(使用基于组的授权)。我不能/不想将 samba 用作域控制器,而仅用作文件服务器。我也不想在 samba 中单独管理用户帐户,因为我在 LDAP 中有我需要的所有信息(用户名、密码、组成员资格)。我也想避免改变我的 DIT。就我目前的研究而言,我不能直接这样做,因为

a) Samba 使用它自己的凭证存储进行身份验证,这意味着我必须smbpasswd为每个现有的 LDAP 用户
b) 我的 LDAP 用户必须具有 samba 属性

环顾四周后,我怀疑我的问题的解决方案可能是在 samba 和 LDAP 之间使用 Kerberos。
我没有管理 Kerberos 的经验,所以在努力之前,我想澄清以下主题:

  • 我的假设正确吗?
  • 我可以在一台机器上运行 Kerberos 的身份验证服务器和密钥分发中心并将其配置为仅在本地主机上提供授权票证吗?(OpenLDAP 和 samba 在同一台机器上运行)
  • 使用 Kerberos 是否允许我保持 DIT 不变并仅使用 LDAP 中的信息执行身份验证/授权?
  • 有更好/更简单的解决方案吗?

我在 Ubuntu Server 14.04 上。

非常感谢您提前提供任何提示

openldap kerberos authentication authorization samba4

5
推荐指数
0
解决办法
908
查看次数

对另一个域用户执行 sudo 时的特权

假设我有一个mydomain使用 MS Active Directory的公司域。在域中,我有用户myuser和youruser. 现在,在一台特定的 Ubuntu 机器上mymachine, myuser 具有 sudo 权限,并且执行sudo su youruser(或sudo -u youruser sh)。由于 myuser 具有必要的 sudoers 配置,因此他不需要输入您用户的密码,并且将有效地成为该机器上的您的用户。

  1. 此时会有什么样的youruser特权myuser?显然,如果机器上youruser也有一个主目录,myuser现在可以访问它并读取他的私有本地文件。但是如果尝试使用 kerberos、samba 等访问网络域资源会发生什么?我猜因为他从来没有输入过youruser密码,所以他没有作为域用户进行身份验证,没有 kerberos 票等。所以如果有一个网络服务来检查他的用户 ID 的组成员身份,那也会失败吗?这是如何运作的?他是否被视为不同的用户,例如,mymachine\\youruser与mydomain\\youruser?

  2. 假设有一个 web 服务作为机器上的守护程序运行,使用专用域用户myserviceuser。如果此 Web 服务需要访问网络资源,即使用 Kerberos 进行身份验证,那么应该如何设置守护程序,例如从新贵脚本中设置?通常您使用类似的东西启动它sudo -u myserviceuser <cmd>,但鉴于上述假设,这是否会授予 Web 服务访问网络资源的任何权限?该用户的密码不应该在某处输入吗?

linux kerberos authentication sudo upstart

5
推荐指数
1
解决办法
1774
查看次数

Ubuntu 上的 Samba NT_STATUS_ACCESS_DENIED 错误

我在 Ubuntu 上设置了一个 Samba 服务器。当我允许访客访问时一切正常,但是当我尝试为特定用户设置配置时,我收到以下错误:

$ smbclient  //x.x.x.x/john -U john
Enter john's password:
Domain=[MYDOMAIN] OS=[Unix] Server=[Samba 4.1.6-Ubuntu]
tree connect failed: NT_STATUS_ACCESS_DENIED
Run Code Online (Sandbox Code Playgroud)

这是服务器端的配置(/etc/samba/smb.conf):

[john]
    comment = Ubuntu File Server Share
    path = /home/john
    browsable = yes
    guest ok = yes
    read only = no
    create mask = 0755
    valid users = john
    writable = yes
Run Code Online (Sandbox Code Playgroud)

请注意:

  • john 帐户存在于 /etc/passwd 中
  • /home/john 存在并且由 john 拥有:john
  • 如前所述,当我允许访客访问时,连接工作正常

这是我第一次这样做。我错过了什么吗?

remote-access authentication samba

5
推荐指数
1
解决办法
3万
查看次数

为什么在启动世界中使用 ssh 密钥而不是 kerberos 进行身份验证很常见?

我作为 Linux 管理员的前几份工作是在一些非常资深的管理员手下工作的。在所有这些情况下,kerberos 都是为用户设置的,以请求安全令牌并在一定时间内访问公司服务器。

现在我开始在一家初创公司工作,并开始参加围绕 devops 和 sre 类型公司的聚会。我注意到这些公司中的大多数选择使用 ssh 密钥、ldap 和某种形式的配置管理来确定谁可以访问哪些服务器。大多数用户在他们的 macbook 上只有无密码的 ssh 密钥。这是非常不安全的。

是什么让 ssh 密钥设置优于 kerberos 设置?

ssh ldap user-management kerberos authentication

5
推荐指数
0
解决办法
106
查看次数

NGINX 不提示输入客户端 ssl 证书

在我们的设置中,我们希望提示用户获取客户端 ssl 证书。所有证书均由 StartSSL 颁发。

问题是,即使ssl_verify_client on;设置为“开启”,网站/浏览器也不会提示输入证书。

如何让 NGINX 提示输入客户端证书?

这与这个悬而未决的问题有关。

nginx 版本:nginx/1.9.11

我们的服务器配置:

server {
  listen 80;
  server_name example.com;
  # enforce https
  return 301 https://$server_name$request_uri;
  }

server {
  listen 443 ssl http2;
  server_name example.com;

  # strenghen ssl security
  ssl_certificate SOMECERT;
  ssl_certificate_key SOMEKEY;
  ssl_client_certificate SOMECERT;
  ssl_verify_client on;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;
  ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
  ssl_dhparam SOMEPARAM;

  # allow longer uri
  client_header_buffer_size 256k;
  large_client_header_buffers 8 1024k;

  # Add headers to serve security related headers …
Run Code Online (Sandbox Code Playgroud)

ssl nginx authentication ssl-certificate

5
推荐指数
1
解决办法
4813
查看次数

/etc/tor/torsocks.conf 不工作

我尝试激活的用户名和密码验证使用的字段我的Tor安装SOCKS5Username和SOCKS5Password在/etc/tor/torsocks.conf文件。我在配置更改后重新启动了服务并检查它是否真的重新启动。但是在我的机器上没有用户名和密码的情况下仍然可以使用 tor。

我已经从 EPEL 仓库安装了 Tor。有关安装的更多信息:

Installed Packages
Name        : tor
Arch        : x86_64
Version     : 0.2.7.6
Release     : 5.el7


Current OS
CentOS Linux release 7.2.1511 (Core)


Tor Configuration
[root@torproxy ~]# cat /etc/tor/torsocks.conf | grep -v "^#"
TorAddress curl 10.0.0.43
TorPort 18009
OnionAddrRange 127.42.42.0/24
SOCKS5Username test
SOCKS5Password 1234

[root@torproxy ~]# cat /etc/tor/torrc | grep -v "^#"
ControlSocket /run/tor/control
ControlSocketsGroupWritable 1
CookieAuthentication 1
CookieAuthFile /run/tor/control.authcookie
CookieAuthFileGroupReadable 1
SOCKSPort 10.0.0.43:18009
SOCKSPolicy accept *
Run Code Online (Sandbox Code Playgroud)

authentication socks

5
推荐指数
1
解决办法
2442
查看次数

在 tomcat7 上的 VPC 私有子网中自动部署战争

我有一个VPC公共和私有子网。

  • 公共子网包含 myNating和Bastion实例
  • 私有子网包含我的应用程序服务器(ec2使用我的项目 war 文件运行 tomcat7 的3 个实例)。这 3 个实例背后是ELB

每当我想更新战争文件时,我都可以通过两种方式进行。

手动的

  1. 我将新的战争文件上传到 S3 存储桶
  2. SSH 到Bastion服务器(只能通过 SSH 连接)
  3. 从这里 SSH 到私有实例
  4. 从S3下载war文件,停止tomcat7替换旧war(并删除目录)
  5. 启动tomcat

我对每个实例重复上述步骤(目前有 3 个实例)

半手动 这是步骤

  1. 将新战争上传到 S3 存储桶
  2. 杀死一个实例(从 AWS 网站的控制面板)
  3. 缩放和启动配置会自动启动以保持最少的实例数。这将启动一个新实例并执行一个脚本,该脚本实际上从 S3 和其他一些环境设置和文件夹等下载战争。
  4. 当我看到新实例被创建、启动并运行并添加到 ELB 时,我杀死了另一个旧实例。
  5. 这样我一个一个地杀死所有旧实例,然后用最新升级的新实例替换它们。

第一种方法很快,但需要很多手动步骤。SSH 进出实例(实例上的 SSH 仅允许来自 BASTION 服务器)。下载、停止、替换、启动。

第二种方法很慢,实际上不是自动的。旧实例终止时间 + 新实例启动时间 + 部署新战争

我想实现以下目标

  1. 自动化升级过程(单击按钮)
  2. 非开发人员(如 QA 和支持人员)无需访问 AWS 网站或 SSH 密钥即可升级
  3. 快速升级
  4. 失败时回滚

有人可能会想为什么我不使用 Beanstalk,它很简单,只需上传新的战争文件,如果出现任何问题,自动升级所有具有回滚功能的实例?

这是我的原因(有些事情可能只是我的假设或缺乏知识)。

  1. 应用整体架构 …

authentication automated-install amazon-web-services amazon-vpc elastic-beanstalk

5
推荐指数
1
解决办法
564
查看次数

如何在 Linux 上保护访问令牌到 Hashicorp Vault 等远程自动化机密存储?

Hashicorp Vault for Linux 等密码管理器的密码似乎存在一些“鸡与蛋”问题。

在针对某些 Linux 服务器进行研究时,有人聪明地问道: “如果我们将所有机密存储在机密存储服务中,那么我们将对该机密存储服务的访问机密存储在哪里?在我们的机密存储服务中?” ‡

我大吃一惊,因为如果我无论如何要存储机密的所有 Linux 服务器都有其访问令牌,那么使用单独的机密存储服务就没有意义了。

例如,如果我将我的机密移动到 Vault,我是否仍然需要将机密存储在 Linux 服务器上的某个位置以访问 Hashicorp Vault?

有人谈论以一些创造性的方式解决这个问题,至少让事情比现在更好。我们可以做一些聪明的事情,比如基于 CIDR 或密码混搭的身份验证。但是仍然存在安全性的权衡。例如,如果黑客获得了对我的机器的访问权限,如果访问是基于 CIDR 的,他们就可以进入保险库。

这个问题可能没有答案,在这种情况下,答案是“不,这没有普遍接受的灵丹妙药解决方案,发挥创意,找到你的权衡 bla bla bla”

我想回答以下具体问题:

是否有一种普遍接受的方式来保护现代 Linux 服务器上像 Hashicorp Vault 这样的远程自动化机密存储的密码?

显然,明文是不可能的。

对此有规范的答案吗?我什至在正确的地方问这个吗?我也考虑过 security.stackexchange.com,但这似乎特定于一种为 Linux 服务器存储机密的方式。我知道这可能看起来过于笼统或基于意见,因此我欢迎您提出任何可能必须避免这种情况的编辑建议。

‡我们笑了,但我在这里得到的答案很可能是“在保险库中”。:/ 例如,一个 Jenkins 服务器或其他东西有一个 6 个月的可撤销密码,它用来生成一次性使用的令牌,然后他们可以使用这些令牌来获取从 Vault 生成的自己的小临时(会话受限)密码,这为他们提供了一段信息。

像这样的事情似乎是一样的,尽管它只是解决方案的一部分:使用 Puppet 管理服务密码

automation linux authentication password-management keystore

5
推荐指数
1
解决办法
1154
查看次数