AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-102179

2rs2ts's questions

Martin Hope
2rs2ts
Asked: 2023-12-01 03:37:11 +0800 CST

如何使“ctr image pull”始终使用自定义“--hosts-dir”而不在命令行中指定它?

  • 5

我有一个自定义文件,其中/etc/containerd/certs.d/registry.at.my.company/hosts.toml为在我的服务器上运行的本地注册表容器设置了一些配置。当我为 Kubernetes 的 CRI 配置它时,它工作得很好,但我和我的同事发现令人沮丧的是,我们必须在手动运行时添加--hosts-dir /etc/containerd/certs.d所有命令(在 K8s 之外)。当我们使用 docker 执行此操作时,它非常简单:我们只需在 docker 守护进程的 JSON 配置文件 ( ) 上设置正确的选项,并且运行良好。但我很难找到具有类似行为的等效设置。当然,CRI插件正在使用ctr image pullctr"insecure-registry": "127.0.0.1"ctrhosts.toml文件我设置得很好,但我希望能够手动提取图像,而不必向命令添加额外的标志。有没有一种方法可以配置containerd,这样就ctr image pull不需要--hosts-dir每次都通过?

该hosts.toml文件如下所示:

server = "http://registry.at.my.company"

[host."http://registry.at.my.company"]
  skip_verify = true
  plain-http = true

在文件中/etc/containerd/config.toml,我有 CRI 指向它,如下所示:

[plugins."io.containerd.grpc.v1.cri".registry]
config_path = "/etc/containerd/certs.d"

但是,正如我在上面猜测和所说的,这似乎只影响 kubelet 与 containerd 的交互方式,而不是如何ctr交互。


一些背景上下文:

我们运行这个本地注册表,其中包含/etc/hosts如下条目:127.0.1.1 registry.at.my.company。加上一些防火墙规则,这使得使用我们 Kubernetes 集群的每个人都必须将其镜像推送到registry.at.my.company并配置其 pod 以使用来自那里的镜像,因为我们的 kubelet 将无法从该域以外的任何地方拉取;为了使我们的注册表不是 SPoF,我们将这些本地注册表容器作为只读镜像运行(并且注册表容器的服务器本身只接受本地连接,从而避免了缺少 SSL 证书的问题。)我不确定这是否与我的问题相关,但它应该有助于解释为什么我在谈论insecure-registrydocker 中的旧选项以及为什么我hosts.toml使用http而不是https,以免引起任何人的担忧。

另外,这是我正在使用的containerd 版本1.6.19。

configuration
  • 1 个回答
  • 48 Views
Martin Hope
2rs2ts
Asked: 2016-05-21 14:45:25 +0800 CST

如何判断 auditd 是否已暂停日志记录?

  • 2

如果您将以下内容放入您的auditd.conf,auditd将在您的磁盘上有 50MB 或更少空间时暂停日志记录:

admin_space_left = 50
admin_space_left_action = SUSPEND

外部程序(例如监控检查)如何知道是否auditd已达到此挂起状态?

(我意识到您也可以在暂停日志记录EXEC时使用该操作来做某事,auditd但这不符合我的目的。)

logging auditd
  • 2 个回答
  • 3725 Views
Martin Hope
2rs2ts
Asked: 2016-01-01 10:55:09 +0800 CST

是否可以通过 sssd 在 TLS 上使用 Kerberos?

  • 7

背景

我正在尝试以sssd我在 AWS Directory Services Simple AD 中创建的用户身份登录(通过 SSH,登录到正在运行的 Amazon Linux EC2 实例)。我正在使用 Kerberos 进行身份验证并使用 LDAP 识别用户(全部通过sssd.)。我通过多个代理服务器上的 ELB 连接到 Simple AD。

问题

当我将 ELB 配置为对 Kerberos 端口使用 TLS 时,sssd无法连接到 Kerberos 服务器并且登录失败。如果没有 TLS,它就可以正常工作,一旦我在没有 TLS 的情况下登录,凭据就会被缓存,当我重新打开 TLS 时,登录会继续工作。

RFC 6251解释了如何通过 TLS 传输 Kerberos V5,所以假设这应该是可能的,对吧?我不确定我是否没有正确执行此操作,或者是否sssd不支持 Kerberos over TLS。谷歌搜索不会产生任何成果,并且手册页中没有任何看似相关的内容。

请注意,我的 LDAPS 通过 ELB 完美运行,所以我至少知道我并没有完全偏离轨道。

TL;DR 如何回答我的问题

要么告诉我:

  • 通过 TLS 设置 Kerberos 时我做错了什么,或者
  • sssd不支持基于 TLS 的 Kerberos

错误信息

这是来自 的输出sssd。请注意,我编辑了 IP 地址。

(Thu Dec 31 18:36:43 2015) [[sssd[krb5_child[2780]]]] [sss_child_krb5_trace_cb] (0x4000): [2780] 1451587003.307171: Sending request (218 bytes) to MYTEAM.MYCOMPANY.INTERNAL

(Thu Dec 31 18:36:43 2015) [[sssd[krb5_child[2780]]]] [sss_child_krb5_trace_cb] (0x4000): [2780] 1451587003.307390: Initiating TCP connection to stream 1.2.3.4:88

(Thu Dec 31 18:36:43 2015) [[sssd[krb5_child[2780]]]] [sss_child_krb5_trace_cb] (0x4000): [2780] 1451587003.309053: Sending TCP request to stream 1.2.3.4:88

(Thu Dec 31 18:36:43 2015) [[sssd[krb5_child[2780]]]] [sss_child_krb5_trace_cb] (0x4000): [2780] 1451587003.310487: TCP error receiving from stream 1.2.3.4:88: 104/Connection reset by peer

(Thu Dec 31 18:36:43 2015) [[sssd[krb5_child[2780]]]] [sss_child_krb5_trace_cb] (0x4000): [2780] 1451587003.310609: Terminating TCP connection to stream 1.2.3.4:88

(Thu Dec 31 18:36:43 2015) [[sssd[krb5_child[2780]]]] [sss_child_krb5_trace_cb] (0x4000): [2780] 1451587003.310729: Sending initial UDP request to dgram 1.2.3.4:88

# Lots of other output...

(Thu Dec 31 18:36:58 2015) [sssd[be[myteam]]] [krb5_child_timeout] (0x0040): Timeout for child [2780] reached. In case KDC is distant or network is slow you may consider increasing value of krb5_auth_timeout.
(Thu Dec 31 18:36:58 2015) [sssd[be[myteam]]] [krb5_auth_done] (0x0020): child timed out!

建筑学

以下是我围绕 Simple AD 的架构:

架构图

此设置使我能够使用 LDAPS,即使 AWS 的 Simple AD 不支持它。我认为它也可以让我在 TLS 上使用 Kerberos。

ELB 的 route53 记录是directory.myteam.mycompany.com,但我用于 Simple AD 的域是myteam.mycompany.internal。

ELB 配置

我使用 terraform 来创建架构。这里只是 ELB 资源的定义,其余的无关紧要:

resource "aws_elb" "proxy" {
  name = "directory-proxy-pub"
  subnets  = ["${split(",", module.vpc.public_subnet_ids_dsv)}}"]
  cross_zone_load_balancing = true
  security_groups = [ "${aws_security_group.elb-proxy.id}" ]
  listener {
    lb_port = 636
    lb_protocol = "ssl"
    instance_port = 389
    instance_protocol = "tcp"
    ssl_certificate_id = "${var.my_cert}"
  }
  listener {
    lb_port = 88
    lb_protocol = "ssl"
    instance_port = 88
    instance_protocol = "tcp"
    ssl_certificate_id = "${var.my_cert}"
  }
  health_check {
    interval = 15
    timeout = 5
    unhealthy_threshold = 2
    healthy_threshold = 3
    target = "TCP:389"
  }
  tags {
    Name = "directory-proxy"
  }
}

请注意,我使用的证书来自受信任的 CA,它是为*.myteam.mycompany.com.

运行 sssd 的机器上的配置

/etc/sssd/sssd.conf:

[sssd]
config_file_version = 2
reconnection_retries = 3
sbus_timeout = 30
services = nss, pam
domains = myteam

[nss]
default_shell = /bin/bash
fallback_homedir = /home/%u
ldap_user_home_directory = unixHomeDirectory

[pam]
reconnection_retries = 3
offline_credentials_expiration = 2
offline_failed_login_attempts = 3
offline_failed_login_delay = 5

[domain/myteam]
enumerate = true
cache_credentials = TRUE

id_provider = ldap

ldap_uri = ldaps://directory.myteam.mycompany.com
ldap_tls_cacert = /etc/pki/tls/certs/ca-bundle.crt
ldap_default_bind_dn = CN=test-user,CN=users,DC=myteam,DC=mycompany,DC=internal
ldap_default_authtok = REDACTED_PASSWORD
ldap_id_use_start_tls = true
ldap_schema = AD
ldap_force_upper_case_realm = true
ldap_id_mapping = true
ldap_search_base = CN=users,DC=myteam,DC=mycompany,DC=internal

ldap_user_uuid = none
ldap_group_uuid = none

chpass_provider = krb5
auth_provider = krb5
krb5_server = directory.myteam.mycompany.com
krb5_realm = MYTEAM.MYCOMPANY.INTERNAL
krb5_changepw_principal = kadmin/changepw
krb5_ccachedir = /tmp
krb5_ccname_template = FILE:%d/krb5cc_%U_XXXXXX
krb5_auth_timeout = 15
krb5_canonicalize = True

/etc/sysconfig/authconfig:

IPADOMAINJOINED=no
USEMKHOMEDIR=yes
USEPAMACCESS=no
CACHECREDENTIALS=yes
USESSSDAUTH=yes
USESHADOW=yes
USEWINBIND=no
PASSWDALGORITHM=sha512
FORCELEGACY=yes
USEFPRINTD=no
FORCESMARTCARD=no
USEDB=no
USELDAPAUTH=no
USEPASSWDQC=no
IPAV2NONTP=no
WINBINDKRB5=no
USELOCAUTHORIZE=yes
USEECRYPTFS=no
USECRACKLIB=yes
USEIPAV2=no
USEWINBINDAUTH=no
USESMARTCARD=no
USELDAP=yes
USENIS=no
USEKERBEROS=no
USESYSNETAUTH=no
USESSSD=yes
USEPWQUALITY=yes
USEHESIOD=no

除了这两个文件之外,我还确保sshd_config在 pam 模块中启用密码身份验证并启用 sssd sudo authconfig --updateall --enablesssd --enablesssdauth。

/etc/pam.d/system-auth:

auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet_success
auth        sufficient    pam_sss.so use_first_pass
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore] pam_sss.so
account     required      pam_permit.so

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    sufficient    pam_sss.so use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     optional      pam_mkhomedir.so umask=0077
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_sss.so

软件版本

  • uname -a:Linux ip-172-31-31-2 4.1.10-17.31.amzn1.x86_64 #1 SMP Sat Oct 24 01:31:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
  • sssd1.12.2
kerberos
  • 1 个回答
  • 1346 Views
Martin Hope
2rs2ts
Asked: 2016-01-01 08:32:45 +0800 CST

AWS Simple AD:“KDC 不支持加密类型”用于使用 adtool 创建的用户,但不使用 MS 管理控制台

  • 4

背景

我正在尝试以sssd我在 AWS Directory Services Simple AD 中创建的用户身份登录(通过 SSH,登录到正在运行的 Amazon Linux EC2 实例)。我正在使用 kerberos 进行身份验证并使用 LDAP 识别用户(全部通过sssd.)

问题

我无法以我创建的用户身份登录adtool,这意味着我很难自动将新用户添加到我的 Simple AD。当我尝试时,KDC 说它不支持加密类型(我假设这是用户密码?)请参阅下面的“错误消息”部分。

但是,我既可以作为内置管理员用户登录,也可以作为我通过 Microsoft 管理控制台在加入域的 Windows Server 2008 EC2 实例上创建的用户登录。所以我的设置有效,或者至少部分有效。

TL;需要 DR 解决方案

我需要知道我做错了什么,adtool这会阻止我以使用他们创建的用户身份登录。我做错了什么并不明显,我认为这对于尝试做与我类似的事情的人通常很有用。详情如下。


错误信息

这是sssd尝试以创建的用户身份登录时的输出adtool:

(Thu Dec 31 15:35:35 2015) [[sssd[krb5_child[5459]]]] [sss_child_krb5_trace_cb] (0x4000): [5459] 1451576135.446649: Response was from master KDC

(Thu Dec 31 15:35:35 2015) [[sssd[krb5_child[5459]]]] [sss_child_krb5_trace_cb] (0x4000): [5459] 1451576135.446788: Received error from KDC: -1765328370/KDC has no support for encryption type

(Thu Dec 31 15:35:35 2015) [[sssd[krb5_child[5459]]]] [get_and_save_tgt] (0x0020): 996: [-1765328370][KDC has no support for encryption type]
(Thu Dec 31 15:35:35 2015) [[sssd[krb5_child[5459]]]] [map_krb5_error] (0x0020): 1065: [-1765328370][KDC has no support for encryption type]
(Thu Dec 31 15:35:35 2015) [[sssd[krb5_child[5459]]]] [k5c_send_data] (0x0200): Received error code 1432158209

从客户端它说Permission denied, please try again.

建筑学

以下是我围绕 Simple AD 的架构:

架构图

此设置使我能够使用 LDAPS,即使 AWS 的 Simple AD 不支持它。

ELB 的 route53 记录是directory.myteam.mycompany.com,但我用于 Simple AD 的域是myteam.mycompany.internal。

运行 sssd 的机器上的配置

/etc/sssd/sssd.conf:

[sssd]
config_file_version = 2
reconnection_retries = 3
sbus_timeout = 30
services = nss, pam
domains = myteam

[nss]
default_shell = /bin/bash
fallback_homedir = /home/%u
ldap_user_home_directory = unixHomeDirectory

[pam]
reconnection_retries = 3
offline_credentials_expiration = 2
offline_failed_login_attempts = 3
offline_failed_login_delay = 5

[domain/myteam]
enumerate = true
cache_credentials = TRUE

id_provider = ldap

ldap_uri = ldaps://directory.myteam.mycompany.com
ldap_tls_cacert = /etc/pki/tls/certs/ca-bundle.crt
ldap_default_bind_dn = CN=test-user,CN=users,DC=myteam,DC=mycompany,DC=internal
ldap_default_authtok = REDACTED_PASSWORD
ldap_id_use_start_tls = true
ldap_schema = AD
ldap_force_upper_case_realm = true
ldap_id_mapping = true
ldap_search_base = CN=users,DC=myteam,DC=mycompany,DC=internal

ldap_user_uuid = none
ldap_group_uuid = none

chpass_provider = krb5
auth_provider = krb5
krb5_server = directory.myteam.mycompany.com
krb5_realm = MYTEAM.MYCOMPANY.INTERNAL
krb5_changepw_principal = kadmin/changepw
krb5_ccachedir = /tmp
krb5_ccname_template = FILE:%d/krb5cc_%U_XXXXXX
krb5_auth_timeout = 15
krb5_canonicalize = True

/etc/sysconfig/authconfig:

IPADOMAINJOINED=no
USEMKHOMEDIR=yes
USEPAMACCESS=no
CACHECREDENTIALS=yes
USESSSDAUTH=yes
USESHADOW=yes
USEWINBIND=no
PASSWDALGORITHM=sha512
FORCELEGACY=yes
USEFPRINTD=no
FORCESMARTCARD=no
USEDB=no
USELDAPAUTH=no
USEPASSWDQC=no
IPAV2NONTP=no
WINBINDKRB5=no
USELOCAUTHORIZE=yes
USEECRYPTFS=no
USECRACKLIB=yes
USEIPAV2=no
USEWINBINDAUTH=no
USESMARTCARD=no
USELDAP=yes
USENIS=no
USEKERBEROS=no
USESYSNETAUTH=no
USESSSD=yes
USEPWQUALITY=yes
USEHESIOD=no

除了这两个文件之外,我还确保sshd_config在 pam 模块中启用密码身份验证并启用 sssd sudo authconfig --updateall --enablesssd --enablesssdauth。

/etc/pam.d/system-auth:

auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet_success
auth        sufficient    pam_sss.so use_first_pass
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore] pam_sss.so
account     required      pam_permit.so

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    sufficient    pam_sss.so use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     optional      pam_mkhomedir.so umask=0077
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_sss.so

软件版本

  • uname -a:Linux ip-172-31-31-2 4.1.10-17.31.amzn1.x86_64 #1 SMP Sat Oct 24 01:31:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
  • sssd1.12.2
  • adtool1.3.3
  • openldap-clients2.4.23-34.25.amzn1

用户之间的差异

为了显示这些用户在我的目录中的不同之处,这里是ldapsearch从正在运行的实例中查询它们的输出sssd。

使用创建的用户adtool(编辑:您将在下面看到该pwdLastSet值存在,我相信它之前不存在,它的存在是我回答的关键):

$ ldapsearch -LLL  -H ldaps://directory.myteam.mycompany.com -D CN=Administrator,CN=users,DC=myteam,DC=mycompany,DC=internal -x -W '(cn=test-user)'
Enter LDAP Password:
dn: CN=test-user,CN=Users,DC=myteam,DC=mycompany,DC=internal
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: test-user
instanceType: 4
whenCreated: 20151230204358.0Z
displayName: Test user
uSNCreated: 3532
name: test-user
objectGUID:: ZhfGzcqLd06x2UBU3UNiZQ==
codePage: 0
countryCode: 0
primaryGroupID: 513
objectSid:: AQUAAAAAAAUVAAAAHWfr9xoaXwKvEcuoUwQAAA==
accountExpires: 9223372036854775807
sAMAccountName: test-user
sAMAccountType: 805306368
userPrincipalName: [email protected]
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=myteam,DC=mycompany,DC
 =internal
userAccountControl: 512
lockoutTime: 0
whenChanged: 20151231150317.0Z
uSNChanged: 3619
pwdLastSet: 130960477970000000
distinguishedName: CN=test-user,CN=Users,DC=myteam,DC=mycompany,DC=internal

通过 Microsoft 管理控制台创建的用户:

$ ldapsearch -LLL  -H ldaps://directory.myteam.mycompany.com -D CN=Administrator,CN=users,DC=myteam,DC=mycompany,DC=internal -x -W '(sAMAccountName=test-windows-2008)'
Enter LDAP Password:
dn: CN=Test User,CN=Users,DC=myteam,DC=mycompany,DC=internal
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: Test User
sn: User
givenName: Test
instanceType: 4
whenCreated: 20151230223533.0Z
whenChanged: 20151230223534.0Z
displayName: Test User
uSNCreated: 3563
uSNChanged: 3563
name: Test User
objectGUID:: 2cuynP3/9EeRIm1fCUJ9jA==
userAccountControl: 512
codePage: 0
countryCode: 0
pwdLastSet: 130959885340000000
primaryGroupID: 513
objectSid:: AQUAAAAAAAUVAAAAHWfr9xoaXwKvEcuoVwQAAA==
accountExpires: 9223372036854775807
sAMAccountName: test-windows-2008
sAMAccountType: 805306368
userPrincipalName: [email protected]
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=myteam,DC=mycompany,DC
 =internal
distinguishedName: CN=Test User,CN=Users,DC=myteam,DC=mycompany,DC=internal
openldap
  • 2 个回答
  • 2163 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve