使用 iptables、-m 最近(可能)和 -m 字符串(肯定)仅允许通过 HTTPS 连接到特定 URL
举例来说,我想允许仅连接到 subdomain.mydomain.com;我已经部分工作了,但是一旦允许客户端问候,它有时会与客户端密钥交换陷入怪异的循环。啊,更烦人的是,它是一个自签名证书,页面需要身份验证,而 HTTPS 正在监听非标准端口......因此 TCP/SSL 握手体验对于许多用户来说会有很大差异。
-m 最近是正确的路线吗?是否有更优雅的方法可以在看到字符串后允许完整的 TCP 流?
这是我到目前为止所得到的:
#iptables -N SSL #iptables -A INPUT -i eth0 -p tcp -j SSL #iptables -A SSL -m recent --set -p tcp --syn --dport 400 #iptables -A SSL -m recent --update -p tcp --tcp-flags PSH,SYN,ACK SYN,ACK --sport 400 #iptables -A SSL -m recent --update -p tcp --tcp-flags PSH,SYN,ACK ACK --dport 400 #iptables -A SSL -m recent --remove -p tcp --tcp-flags PSH,ACK PSH,ACK --dport 400 -m string --algo kmp --string "subdomain.mydomain.com" -j ACCEPT
是的,我尝试通过 nginx 调整来解决这个问题,但是我无法让 nginx 在客户端问候之前返回 444,如果你能想出一种方法来实现这一点,我'我洗耳恭听,呃,眼睛。
Let's say that, for example, I want to allow connections only to subdomain.mydomain.com; I have it partially working, but it sometimes gets in a freaky loop with the client key exchange once the Client Hello is allowed. Ah, to make it even more annoying, it's a self-signed certificate, and the page requires authentication, and HTTPS is listening on a non-standard port... So the TCP/SSL Handshake experience will differ greatly for many users.
Is -m recent the right route? Is there a more graceful method to allow the complete TCP stream once the string is seen?
Here's what I have so far:
#iptables -N SSL #iptables -A INPUT -i eth0 -p tcp -j SSL #iptables -A SSL -m recent --set -p tcp --syn --dport 400 #iptables -A SSL -m recent --update -p tcp --tcp-flags PSH,SYN,ACK SYN,ACK --sport 400 #iptables -A SSL -m recent --update -p tcp --tcp-flags PSH,SYN,ACK ACK --dport 400 #iptables -A SSL -m recent --remove -p tcp --tcp-flags PSH,ACK PSH,ACK --dport 400 -m string --algo kmp --string "subdomain.mydomain.com" -j ACCEPT
Yes, I have tried to get around this with nginx tweaks, but I can't get nginx to return a 444 before the client hello, if you can think of a way to achieve this instead, I'm all ears, err, eyes.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
正如我在 中提到的serverfault,我找到了解决方案:
As I mentioned on serverfault, I have found a solution: