我刚刚开始使用 iptables,偶然发现了一些我不太了解的东西。
仅供参考,我按照Ubuntu wiki 的 IptablesHowTo 的说明进行操作。
nat 和 mangle 表是空的,我现在只使用过滤器表。
如果我添加以下 iptables 规则:
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -j DROP
Run Code Online (Sandbox Code Playgroud)
...然后我仍然可以通过 ssh 访问我的机器,但是所有 iptables 命令大约需要一两分钟才能运行。这不是DNS问题,-n不会改变它。
如果我刷新表并添加这三个规则,则一切正常:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -j DROP
Run Code Online (Sandbox Code Playgroud)
谁能给我解释一下,为什么第一条规则对iptables影响这么大?我知道它允许已建立的会话接收流量,但是如果 ssh 处于打开状态,为什么我需要它?
我在 MS ActiveDirectory 到 Debian LDAP 身份验证/授权设置中的 sudo 权限有问题。
到目前为止,
我已经通过 ldaps 使用 libpam-ldap 配置了 nslcd,并且 ssh 登录运行良好。
getent passwd myuser
myuser:*:10001:10015:myuser:/home/myuser:/bin/bash
Run Code Online (Sandbox Code Playgroud)
在我的 ActiveDirectory 服务器上,安装了 Unix 包,它添加了必要的属性,如 posixGroup、posixAccount、gid、gidNumber、uid、uidNumber 等。
我的示例用户看起来像这样:(
为了安全起见,我选择 10000+)
cn: myuser
uid: myuser
uidNumber: 10015
gidNumber: 10000
Run Code Online (Sandbox Code Playgroud)
我可以通过将以下内容添加到 /etc/nslcd.conf 来限制 SSH 登录
filter passwd (&(objectClass=posixAccount)(|(memberOf=CN=group1,OU=groups,DC=domain,DC=com)(memberOf=CN=group2,OU=groups,DC=domain,DC=com)))
Run Code Online (Sandbox Code Playgroud)
这指定只有具有 objecClass=posixAccount 和组 group1 或 group2 的用户才能登录。
到现在为止还挺好。但是,我不能告诉 sudo 使用这些组。
这是我
在 /etc/sudoers 中尝试过的
// This one works, but only because the user has gidNumber=10000 set.
// It doesn't matter if …Run Code Online (Sandbox Code Playgroud)