有一个服务监听了 127.0.0.1:8000,怎么限制,只允许某个程序能通过 HTTP 协议访问。

2023-10-27 17:20:03 +08:00
 dzdh

是限制程序,而不是来源 IP 。

比如只允许 /usr/bin/curl 发起 HTTP 访问 127.0.0.1:8000

python 用 requests 就不行

4402 次点击
所在节点    Linux
41 条回复
guxingke
2023-10-27 17:23:35 +08:00
http 协议决定了 限制不了
zsj1029
2023-10-27 17:30:25 +08:00
userAgent 咯 curl 有自己的 agent
不过这玩意可以伪造,py request 改掉 header 可以绕过
ShineyWang
2023-10-27 17:39:33 +08:00
怎么发起请求是客户端行为,你服务器限制不了的
除非你自己给他一个客户端,然后用你自己的客户端发起请求
psyche08
2023-10-27 17:40:10 +08:00
如果都是本机的程序的话,在建立连接后,根据来源的端口号查询对应的进程,这样就可以校验了。
shermie
2023-10-27 17:40:49 +08:00
header 里面带个签名 如果是限制诸如 python 这样的爬虫 就上 ja3 ja4 指纹限制
sentinelK
2023-10-27 17:54:02 +08:00
如果是“某个定制程序”的话,可以通过接口加密实现。

如果是一个不能干预的,或者是“某种程序”的话,就要服务器端根据其特征识别了。但是这个识别方式很不安全,非常容易被模仿。
baihekong
2023-10-27 17:56:52 +08:00
定一个特殊的 UA ,执行某个程序的时候才带上
ttvast
2023-10-27 18:03:15 +08:00
用 selinux 配合 iptables
billlee
2023-10-27 18:05:09 +08:00
这个只能 selinux/apparmor 配合 netfilter 了吧
ho121
2023-10-27 18:11:10 +08:00
感觉是 xy 问题。
如果是要防止未授权的访问,加个鉴权就行,比如 http 的用户名和密码、token 之类的。
DefoliationM
2023-10-27 18:17:57 +08:00
根据来源地址和目标地址迭代/proc 目录拿到程序路径,然后根据程序路径限制就行了。
DefoliationM
2023-10-27 18:19:08 +08:00
Elliota
2023-10-27 18:21:04 +08:00
只能端口数据流校验
lance6716
2023-10-27 18:23:33 +08:00
本“xy 问题“警察已经抵达现场!请问 op 为什么会有这么奇怪的需求呢
liberize
2023-10-27 18:27:23 +08:00
1. 收到 tcp 连接时获取源端口
2. 然后查源端口对应的程序的 pid
3. 进一步根据 pid 获取程序文件名
4. 判断文件名是否在白名单
其中 2 和 3 在 windows 下有接口可以获取,linux 下可以读/proc 。
julyclyde
2023-10-27 18:46:50 +08:00
systemd“判断某条日志属于哪个 service”是用 unix domain socket 啊还是 pipe 的“对方”反查进程号的

不过 tcp/ip 似乎比较困难吧
Nazz
2023-10-27 19:16:53 +08:00
token 鉴权
piaoxueblog
2023-10-27 19:22:21 +08:00
可以的。一种实现方式是使用指定用户运行这个程序,然后在 iptables 里加对应规则
yichya
2023-10-27 22:47:25 +08:00
curl 可以访问
python requests 不能访问
那如果用 python 的 os.system() 执行 curl 并且取得返回值这种形式可不可以访问?
victorc
2023-10-27 23:28:27 +08:00
限制不了,得引入第三方角色进行仲裁

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/986086

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX