我有一台运行两个 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
在我放入服务器的证书开始实际工作之前,我有这种奇怪的无法解释的延迟
它是这样的:
我将证书管理单元添加到 mmc 以管理计算机帐户证书
然后我将一些证书添加到受信任的根证书中,并将一些证书添加到中间证书颁发机构
我添加到受信任根证书的证书是整个组织的,我添加到中间证书颁发机构的证书是我所属的分支。
我使用 cmd 命令“cerutil -f -dspublish RootCA”和“certutil -f -dspublish NTAuthCA”将证书发布到活动目录
我尝试使用智能卡登录,但收到此错误:“处理智能卡时检测到不受信任的证书颁发机构”
我等了一天,然后突然一切正常,我可以登录,我没有收到任何错误,什么都没有。
我到处寻找这种奇怪的延迟,但我没有找到任何具体的东西,有人有任何想法吗?
我有一个 OpenLDAP 服务器,用于对各种服务进行身份验证和授权。所有用户都是对象类型inetOrgPerson,我的组是groupOfNames.
现在我想将 Samba 配置为也通过 LDAP 进行身份验证(使用基于组的授权)。我不能/不想将 samba 用作域控制器,而仅用作文件服务器。我也不想在 samba 中单独管理用户帐户,因为我在 LDAP 中有我需要的所有信息(用户名、密码、组成员资格)。我也想避免改变我的 DIT。就我目前的研究而言,我不能直接这样做,因为
a) Samba 使用它自己的凭证存储进行身份验证,这意味着我必须smbpasswd为每个现有的 LDAP 用户
b) 我的 LDAP 用户必须具有 samba 属性
环顾四周后,我怀疑我的问题的解决方案可能是在 samba 和 LDAP 之间使用 Kerberos。
我没有管理 Kerberos 的经验,所以在努力之前,我想澄清以下主题:
我在 Ubuntu Server 14.04 上。
非常感谢您提前提供任何提示
假设我有一个mydomain使用 MS Active Directory的公司域。在域中,我有用户myuser和youruser. 现在,在一台特定的 Ubuntu 机器上mymachine, myuser 具有 sudo 权限,并且执行sudo su youruser(或sudo -u youruser sh)。由于 myuser 具有必要的 sudoers 配置,因此他不需要输入您用户的密码,并且将有效地成为该机器上的您的用户。
此时会有什么样的youruser特权myuser?显然,如果机器上youruser也有一个主目录,myuser现在可以访问它并读取他的私有本地文件。但是如果尝试使用 kerberos、samba 等访问网络域资源会发生什么?我猜因为他从来没有输入过youruser密码,所以他没有作为域用户进行身份验证,没有 kerberos 票等。所以如果有一个网络服务来检查他的用户 ID 的组成员身份,那也会失败吗?这是如何运作的?他是否被视为不同的用户,例如,mymachine\\youruser与mydomain\\youruser?
假设有一个 web 服务作为机器上的守护程序运行,使用专用域用户myserviceuser。如果此 Web 服务需要访问网络资源,即使用 Kerberos 进行身份验证,那么应该如何设置守护程序,例如从新贵脚本中设置?通常您使用类似的东西启动它sudo -u myserviceuser <cmd>,但鉴于上述假设,这是否会授予 Web 服务访问网络资源的任何权限?该用户的密码不应该在某处输入吗?
我在 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)
请注意:
这是我第一次这样做。我错过了什么吗?
我作为 Linux 管理员的前几份工作是在一些非常资深的管理员手下工作的。在所有这些情况下,kerberos 都是为用户设置的,以请求安全令牌并在一定时间内访问公司服务器。
现在我开始在一家初创公司工作,并开始参加围绕 devops 和 sre 类型公司的聚会。我注意到这些公司中的大多数选择使用 ssh 密钥、ldap 和某种形式的配置管理来确定谁可以访问哪些服务器。大多数用户在他们的 macbook 上只有无密码的 ssh 密钥。这是非常不安全的。
是什么让 ssh 密钥设置优于 kerberos 设置?
在我们的设置中,我们希望提示用户获取客户端 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) 我尝试激活的用户名和密码验证使用的字段我的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) 我有一个VPC公共和私有子网。
Nating和Bastion实例ec2使用我的项目 war 文件运行 tomcat7 的3 个实例)。这 3 个实例背后是ELB每当我想更新战争文件时,我都可以通过两种方式进行。
手动的
Bastion服务器(只能通过 SSH 连接)我对每个实例重复上述步骤(目前有 3 个实例)
半手动 这是步骤
第一种方法很快,但需要很多手动步骤。SSH 进出实例(实例上的 SSH 仅允许来自 BASTION 服务器)。下载、停止、替换、启动。
第二种方法很慢,实际上不是自动的。旧实例终止时间 + 新实例启动时间 + 部署新战争
我想实现以下目标
有人可能会想为什么我不使用 Beanstalk,它很简单,只需上传新的战争文件,如果出现任何问题,自动升级所有具有回滚功能的实例?
这是我的原因(有些事情可能只是我的假设或缺乏知识)。
authentication automated-install amazon-web-services amazon-vpc elastic-beanstalk
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
authentication ×10
kerberos ×3
linux ×2
amazon-vpc ×1
apache-2.4 ×1
automation ×1
certificate ×1
keystore ×1
ldap ×1
nginx ×1
openldap ×1
samba ×1
samba4 ×1
smartcard ×1
socks ×1
ssh ×1
ssl ×1
sudo ×1
ubuntu ×1
upstart ×1
windows ×1