我正在使用 CentOS 7。我想获取在端口 3000 上运行的进程的 PID(如果存在)。我想获取此 PID,以便将其保存到 shell 脚本中的变量中。到目前为止我有
[rails@server proddir]$ sudo ss -lptn 'sport = :3000'
State Recv-Q Send-Q Local Address:Port Peer Address:Port
Cannot open netlink socket: Protocol not supported
LISTEN 0 0 *:3000 *:* users:(("ruby",pid=4861,fd=7),("ruby",pid=4857,fd=7),("ruby",pid=4855,fd=7),("ruby",pid=4851,fd=7),("ruby",pid=4843,fd=7))
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何在没有所有这些额外信息的情况下单独隔离 PID。
我有一个防火墙 ( csf ),可让您分别允许传入和传出 TCP 端口。我的问题是,为什么有人想要关闭任何传出端口?
我知道默认情况下,您可能希望为传入连接关闭所有端口。从那里开始,如果您正在运行 HTTP 服务器,您可能需要打开端口 80。如果您想运行 FTP 服务器(在主动模式下),您可能需要打开端口 21。但如果它设置为被动 FTP 模式,则从 FTP 客户端接收数据连接需要一堆端口......等等以获得额外的服务。但仅此而已。其余与服务器提供的特定服务无关的端口,特别是如果您主要是客户端计算机,则必须关闭。
但是传出连接呢?为出站连接关闭目标端口是否有任何安全收益?我问这个是因为起初我认为关闭所有端口与传入连接非常相似的策略可能适用。但后来我意识到,当作为被动 FTP 模式的客户端时,例如,随机高端口尝试连接到 FTP 服务器。因此,通过在客户端阻止这些高端口,您可以有效地禁用该客户端中的被动 FTP,这很烦人。我很想只允许一切传出,但我担心这可能是一个安全威胁。
是这种情况吗?这是一个坏主意,还是仅为传出连接打开所有(或许多)端口以促进被动 FTP 等服务的明显缺点?
虽然通常不需要超过 64k 个可用端口,但我对 PoC 感兴趣,即拥有 64 位端口号可以减轻对访问端口(ssh、vpn...)的常规攻击。拥有 64b 端口几乎不可能随机攻击服务,目标是 DoS 或登录。喜欢
ssh -p 141592653589793238 my.site.com
Run Code Online (Sandbox Code Playgroud)
并且实际上
我正在 Linux Ubuntu 终端上工作,我想知道如何直接在终端上检查使用了哪些本地主机端口?
我正在重新发布这个 Ask Ubuntu Question SCP with两个不同端口的稍微编辑过的版本,因为仅适用于命令行选项(无需修改)的答案ssh_config不再适合我。
如何使用scp命令在本地 PC 使用不同端口的两个远程服务器之间复制文件?
设置
问题
scp -rp -P 6774 denny@67.12.21.133:/home/denny/testapp1.txt denny@67.129.242.40:
Run Code Online (Sandbox Code Playgroud)
它给出了一个错误:
ssh: connect to host 67.12.21.133 port 22: Connection refused
Run Code Online (Sandbox Code Playgroud)
scp -rp -P 6774 denny@67.12.21.133:/home/denny/testapp1.txt -P 6775 denny@67.129.242.40:
Run Code Online (Sandbox Code Playgroud)
它给了我这个错误:
ssh: connect to host 67.129.242.133 port 6775: Connection refused
ssh: connect to host 67.129.242.40 port 6774: Connection refused
lost connection
Run Code Online (Sandbox Code Playgroud)
操作系统:Debian 12
我经常从事 OPSEC 工作,因为安全对我来说非常重要。现在我有一个新的路由器,当我插入 LAN 电缆时,它会在我的计算机上打开一个端口。当我断开 LAN 电缆时,该端口被关闭。我的路由器上没有配置端口转发
未插入 LAN:
$ sudo ss -lntup
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 192.168.122.1:53 0.0.0.0:* users:(("dnsmasq",pid=2717,fd=5))
tcp LISTEN 0 32 192.168.122.1:53 0.0.0.0:* users:(("dnsmasq",pid=2717,fd=6))
Run Code Online (Sandbox Code Playgroud)
局域网已插入:
$ sudo ss -lntup
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 192.168.122.1:53 0.0.0.0:* users:(("dnsmasq",pid=2717,fd=5))
udp UNCONN 0 0 0.0.0.0:33955 0.0.0.0:*
tcp LISTEN 0 32 192.168.122.1:53 0.0.0.0:* users:(("dnsmasq",pid=2717,fd=6))
Run Code Online (Sandbox Code Playgroud)
当我重新插入 LAN 时,它会打开另一个端口:
$ sudo ss -lntup
udp …Run Code Online (Sandbox Code Playgroud) 我已在桌面和手机 [Xiaomi Redmi 3S Prime] 上安装了 KDE Connect 应用程序。但是,桌面应用程序无法检测到我的手机,反之亦然。
我已经检查了端口。他们是开放的。没有安装防火墙。我还尝试通过在 Android 应用程序中输入 IP 地址来手动添加我的电脑,但没有成功。我还尝试重新启动 kdeconnectd 守护进程,但这也不起作用。
编辑:这是我尝试过的事情。
请提供您能提供的所有解决方案。
附言。它可能看起来像重复的,但我已经尝试了几乎所有的解决方案,但似乎没有一个对我有用。因此,我在这里。
在 Linux 上,有没有办法限制单个用户可以同时绑定/侦听(可能基于每个网络设备)的最大并发端口数?
即,如果用户可以同时绑定/侦听无限数量的端口,则恶意用户可能会尝试通过侦听所有可用端口来篡改其他用户的端口可用性,直到端口耗尽并且其他用户无法侦听任何端口。
嗨,我觉得这是一个显而易见的问题,但到目前为止我还没有得到很好的答案。给定服务的名称(我知道在本地主机上运行),是否有任何网络命令行工具(例如(netstat/ ss))可以告诉我该服务正在哪个端口运行?理想情况下是这样的:
$ some-program --service-name='mysql' localhost
'mysql' is running at localhost:3306
Run Code Online (Sandbox Code Playgroud)
我觉得有一些解决方案,但没有一个能够充分解决这个问题。例如,我考虑了以下两个ss命令:
ss -tuln与输出:Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:*
udp UNCONN 0 0 0.0.0.0:21119 0.0.0.0:*
udp UNCONN 0 0 0.0.0.0:37766 0.0.0.0:*
udp UNCONN 0 0 0.0.0.0:54399 0.0.0.0:*
udp UNCONN 0 0 0.0.0.0:5353 0.0.0.0:*
udp UNCONN 0 0 [::]:51755 [::]:*
udp UNCONN 0 0 [::]:5353 [::]:*
udp UNCONN 0 0 *:1716 *:*
tcp LISTEN 0 …Run Code Online (Sandbox Code Playgroud) 由于我无法控制的原因,我有一个绑定到 TCP“localhost:$PORT”的二进制文件。(Unix 套接字绑定将使这个问题变得毫无意义)。
如果我理解正确的话,这意味着虽然没有网络机器可以连接,但该机器上的其他用户(包括非特权守护程序用户)可以连接到该端口。
有什么方法可以让我指定只允许以 $me 运行的二进制文件连接到此端口?我可以成为 root 来指定配置,但侦听二进制文件和连接二进制文件都以非 root $me 用户身份运行