要在 Ubuntu 上测试 memcached,我会运行以下命令:
echo "stats settings" | nc -U /run/mydir/memcached.sock
不过现在我换成了 Debian,Debiannc
不支持这个-U
选项。
我试过了ss
,没有喜悦。listen
telnet -b /run/mydir/memcached.sock
Debian 中的等效命令是什么?
要在 Ubuntu 上测试 memcached,我会运行以下命令:
echo "stats settings" | nc -U /run/mydir/memcached.sock
不过现在我换成了 Debian,Debiannc
不支持这个-U
选项。
我试过了ss
,没有喜悦。listen
telnet -b /run/mydir/memcached.sock
Debian 中的等效命令是什么?
我有一个 Debian 服务器,我想阻止所有传入和传出端口(尤其是所有传出电子邮件端口),除了我专门添加到 iptables 中的那些。我目前的设置正在工作并且似乎足够严格,但是当我启动一个telnet
会话来测试例如端口 25 的 smtp 时,它似乎连接没有问题,即使我没有专门打开端口 25 作为 OUTPUT 端口。我注意到当我用 刷新 iptables 时iptables -F
,连接被阻止,但是 DNS 解析和 http 流量也不起作用。值得一提的是,我也在这台服务器上运行 Docker,这意味着 Docker 维护自己的 iptables 链,我不会在这个问题中具体列出。所有 Docker 规则中都没有端口 25,
我还没有找到一种简单的方法来实际尝试将电子邮件发送到 smtp 端口 25,但我猜想成功建立 telnet 会话也将允许使用相同的连接来发送邮件。
有人能指出我正确的方向吗?
远程登录输出:
$ telnet smtp-relay.gmail.com 25
Trying 2a00:1450:4013:c03::1c...
Connected to smtp-relay.gmail.com.
Escape character is '^]'.
220 smtp-relay.gmail.com ESMTP k6sm844273wms.37 - gsmtp
我当前 iptables 的 INPUT 和 OUTPUT 链:
Chain INPUT (policy DROP)
target prot opt source destination
DROP all -- anywhere anywhere match-set blacklist src
ACCEPT icmp -- 192.168.4.0/24 anywhere icmp echo-request
ACCEPT tcp -- 192.168.4.0/24 anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere multiport dports http,https state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere icmp echo-reply state ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp spt:domain state RELATED,ESTABLISHED
ACCEPT udp -- anywhere anywhere udp spt:domain state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere multiport sports http,https state RELATED,ESTABLISHED
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT icmp -- anywhere anywhere icmp echo-request
ACCEPT icmp -- anywhere 192.168.4.0/24 icmp echo-reply state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere 192.168.4.0/24 tcp spt:ssh state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere multiport dports http,https
我有一个安装了 postfix 的 Debian 10 服务器,每次我尝试发送出站邮件流量时,服务器都使用 IPV6 而不是 IPV4。这会导致 postfix 记录Connection timed out。
我尝试使用 telnet 将数据包发送到 google SMTP 服务器,每当我运行命令时telnet gmail-smtp-in.l.google.com 25
,终端都会延迟几秒钟,然后输出
Trying 2a00:1450:400c:c06::1a...
Trying 173.194.76.27...
telnet: Unable to connect to remote host: Connection timed out
请我不知道发生了什么。
我正在使用这个 script.c:
#include <fcgi_stdio.h>
#include <stdlib.h>
int main (void) {
while (FCGI_Accept() >= 0) {
printf("Status: 200 OK\r\n");
printf("Content-type: text/html\r\n\r\n");
printf("<!doctype><html><body>Welcome!</body></html>\n");
}
return EXIT_SUCCESS;
}
我编译它使用
gcc script.c -o script.fcgi -lfcgi -O3 -Wall -Wextra -pedantic -std=c11
然后,我输入终端:
cgi-fcgi -start -connect localhost:9000 script.fcgi
cgi-fcgi -connect localhost:9000 script.fcgi
并获得输出
Status: 200 OK
Content-type: text/html
<!doctype><html><body>Welcome!</body></html>
之后,我使用了 curl
curl localhost:9000
curl: (52) Empty reply from server
和远程登录
telnet localhost 9000
Connected to localhost.
GET / HTTP/1.1
Connection closed by foreign host.
为什么我只使用 cgi-fcgi 获得成功结果?如何使用 curl 和 telnet 从脚本中获取相同的数据?
我们的客户端有一个服务器,我们的 Web 应用程序在端口 443 和 2000 上运行。我们的客户端有两组 IP 地址。一组用于公司大楼中使用的计算机。这些计算机可以浏览这两个 Web 应用程序。另一组 IP 地址用于通过 VPN 连接进行远程连接的用户。这些用户可以浏览在端口 443 上提供的 Web 应用程序,但无法浏览在端口 2000 上提供的 Web 应用程序。他们的浏览器出现超时错误。
我们知道这不是软件问题,因为公司大楼中的用户可以毫无问题地使用这两个应用程序。他们还允许来自两个 IP 地址组的两个端口的流量。当有人使用建筑物内的计算机连接到 Web 应用程序时,防火墙软件会显示所有请求都已成功处理。但是,当他们尝试通过 VPN 连接连接到端口 2000 时,请求被发送到服务器但用户无法得到响应。防火墙软件显示“不完整”文本。请注意,仅当通过 VPN 连接请求端口 2000 时才会出现此问题。如果通过 VPN 请求端口 443,则没有问题。
我们在服务器的 2000 端口上设置了一个 TCP 回显服务器,并尝试通过 VPN 连接通过 telnet 命令连接到 2000 端口。我们看到它可以连接。但是,不会回显通过 telnet 发送的文本。如果我们在公司大楼内的计算机上尝试相同的操作,我们可以通过 telnet 连接到服务器,并且还会回显通过 telnet 发送的文本。
我们还在服务器上运行 tcpdump 命令来监听端口 2000 上的 TCP 包。当我们通过 telnet 连接到服务器时,我们可以看到来自两个 IP 组的 TCP 活动。但是,当我们通过 telnet 发送文本时,只有从公司大楼内的计算机发送的文本在 tcpdump 输出中可见。从 VPN 用户的计算机发送的消息不会在 tcpdump 上创建 TCP 活动。
我们花了很多时间,无法弄清楚问题所在。任何帮助表示赞赏。
我在堆栈溢出时问过这个问题,但我认为在 serverfault 上可能更合适,因为它与系统管理和安全性有关。
我正在寻找一个 web 服务的原型,而不必处理 HTTP 和其他 web 问题,这样用户就可以登录并使用一个只通过 stdin 和 stdout 交互的简单程序。
经过一番研究,我意识到,这就是“shell”的作用(即它通过标准输入和标准输出提供用户与系统的交互),所以我决定创建一个特定的用户并将他们的 shell 设置为我的程序,我可以轻松地原型这种“网络服务”,甚至可能允许许多用户不同的用户在程序本身内部进行身份验证,并且都使用相同的 ssh 用户。
我的问题是,将用户的 shell 设置为我的自定义程序,而不是从该程序中调用任何其他脚本或程序,是否足以限制对系统的访问,以便用户无法直接读取或写入文件,例如例子?
为了解决这个问题,我编写了一个自定义的“shell”,它从标准输入读取整数 n,并输出第 n 个斐波那契数。将其设置为用户的 shell 后,似乎 sftp 和通过 ssh 运行自定义命令不起作用,但我对 ssh 或 telnet 的了解不够,无法确信用户没有其他方法可以提升对系统的访问权限.
例如,这是我自定义的“fibonacci shell”程序:
#include <stdio.h>
long fibonacci(int n){
long a = 0;
long b = 1;
for(int i=0; i<n; ++i){
if(i%2) a += b;
else b += a;
if(a<0 || b<0) return -1;
}
return (long[]){a, b}[n%2];
}
int main(int argc, char * argv[]){
char line[1024];
int x;
printf("Welcome to the fibonacci shell.\n");
printf("Type an integer n, and I will tell you the nth fibonacci number.\n");
while(1){
printf("> ");
if(fgets(line, sizeof line, stdin) <= 0) break;
int result = sscanf(line, "%d", &x);
if(result <= 0){
printf("fibshell: Please type a number.\n"); }
else{
printf("fib(%d) = %ld\n", x, fibonacci(x)); }
}
return 0;
}
由于其他安全问题,我不会用 c 编写我的原型,但我希望对此有所了解。
我已经对 ssh“ForceCommand”设置进行了一些研究,但这在这里似乎不合适,因为它似乎使用用户配置的 shell 调用命令。
是否将用户的 shell 设置为不调用其他命令的简单程序,足以限制对 sftp 等其他设施的访问?是否有可能大规模安全地执行此操作,比如说成百上千的用户,可能多达 5-10 个同时用户使用相同的 ssh 登录访问该程序?
我知道 telnet 服务不是很常见,但我在几个不同的环境中见过它们。我找到了一个用于下棋的在线 telnet 服务,而我工作的一家制造公司在内部曾短暂使用 telnet 服务来报告订单状态。“telnet 服务”或“ssh 服务”通常是如何编写的?是否为用户编写自定义外壳,并以其他方式限制用户的权限和系统访问,通常是如何完成的?
编辑:我应该提到我使用的是linux系统,在这种情况下是manjaro(即arch),但我想知道openssh和unix系统的一般情况,是否有办法绕过用户的shell设置并运行其他命令或直接编程。
根据本指南,我正在尝试使用 telnet 从 linux 发送测试电子邮件
https://linuxconfig.org/send-an-email-using-telnet
但连接立即断开:
$ telnet smtp.gmail.com 465
Trying 108.177.126.108...
Connected to smtp.gmail.com.
Escape character is '^]'.
MAIL FROM: [email protected] closed by foreign host
如何保持连接打开足够长的时间以发送我的测试邮件?
我还能如何禁用 telnet 以符合安全审计?此服务器上未启用 Telnet 服务角色。但它在 0.0.0.0:23 收听。也没有本地 Windows 防火墙可以使用。
我最近要求在我的 Windows 安装上打开 telnet 客户端。devops 的人告诉我它受到限制,因为它通过明文传递人们的用户名和密码。我假设他指的是使用它来连接到不安全的 telnet 服务器,但我不会为此使用它,而只是将它用于一些快速的 TCP 检查。
我还注意到 OWASP 在他们的文档中引用了正是这样做的。
https://www.owasp.org/index.php/Test_HTTP_Methods_(OTG-CONFIG-006)
那么我错过了什么,客户端是否存在安全问题?