Linux技巧和窍门:服务器,开放

那些需要提供自己所爱的服务器的人,可以通过SSH / RDP或其他方式(来自小型RTFM / spur)从世界任何地方访问其服务器。


我们需要在手边的任何设备上都没有VPN和其他烦恼。


这样服务器就不会过多地运动。


您所需要的只是敲门 ,伸直双臂和5分钟的工作。


当然,“一切都在Internet上”(甚至在Habré上也是如此 ),但是当涉及到特定的实现时,它开始...


我们将以Fedora / CentOS为例,但这并不重要。


刺激将适合该行业的初学者和野牛,因此会有评论,但简短一些。


1.服务器


  • 把敲服务器:
    yum/dnf install knock-server


  • 配置它(例如在ssh上)-/etc/knockd.conf:


     [options] UseSyslog interface = enp1s0f0 [SSHopen] sequence = 33333,22222,11111 seq_timeout = 5 tcpflags = syn start_command = iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT cmd_timeout = 3600 stop_command = iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT [SSHclose] sequence = 11111,22222,33333 seq_timeout = 5 tcpflags = syn command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT 

    “打开”部分设置为1小时后自动关闭。 你永远不知道...


  • / etc / sysconfig / iptables:


     ... -A INPUT -p tcp -m state --state NEW -m tcp --dport 11111 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22222 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 33333 -j ACCEPT ... 

  • 转发:


     service iptables restart service knockd start 

  • 您可以将RDP添加到内部旋转的虚拟Windows Server中(/etc/knockd.conf;根据您的喜好命名接口):


     [RDPopen] sequence = 44444,33333,22222 seq_timeout = 5 tcpflags = syn start_command = iptables -t nat -A PREROUTING -s %IP% -i enp1s0f0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.2 cmd_timeout = 3600 stop_command = iptables -t nat -D PREROUTING -s %IP% -i enp1s0f0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.2 [RDPclose] sequence = 22222,33333,44444 seq_timeout = 5 tcpflags = syn command = iptables -t nat -D PREROUTING -s %IP% -i enp1s0f0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.2 

    iptables -S命令在服务器上监视所有来自客户端的踢。



2.耙子指南


敲门.conf:


一切也都在勒芒中(但这是不准确的),但是敲打是同志对信息的st,因此您需要非常小心。


  • 版本号
    在Fedora / CentOS信息库中,今天的极限值为0.63。 谁想要UDP-寻找0.70数据包。
  • 介面
    在默认的Fedora / CentOS配置中, 缺少此行。 手动添加,否则将不起作用。
  • 超时时间
    在这里选择口味。 客户端必须有足够的时间进行所有踢操作,并且端口的bot扫描程序将中断(并且146%的端口将对其进行扫描)。
  • 启动/停止/命令。
    如果命令是一个-那么命令,如果两个-然后是start_command + stop_command。
    如果您输入有误,则敲门将保持沉默,但不会起作用。
  • 原型
    从理论上讲,您可以使用UDP。 在实践中,我将tcp和udp混合使用,来自巴厘岛海滩的客户只能第五次打开门。 对于TCP在必要时可以飞行,而UDP则不是事实。 但这又是一个品味问题。
  • 顺序
    隐含的耙是,序列不应重叠...怎么说呢...

例如,这:


 open: 11111,22222,33333 close: 22222,11111,33333 

开盘 11111踢将等待22222的下一个踢。但是,此(22222)踢将开始起作用,一切都会中断。 这也取决于客户端的延迟。 这样的东西©。


iptables


如果在/ etc / sysconfig / iptables中,这是这样的:


 *nat :PREROUTING ACCEPT [0:0] 

它不会打扰我们,那么这里是:


 *filter :INPUT ACCEPT [0:0] ... -A INPUT -j REJECT --reject-with icmp-host-prohibited 

塔基干涉。


由于敲敲将规则添加到INPUT链的末尾,因此我们被拒绝了。


而要关闭这种废品,就是要使汽车不受风吹。


为了不进入iptables,在某些地方(如人们所建议的那样)放置在前面,我们将使其变得更容易:


  • 在CentOS / Fedora中, 默认第一条规则(“什么是禁止的-允许的”)由相反的规则代替,
  • 并删除最后一条规则。

结果应为:


 *filter :INPUT DROP [0:0] ... #-A INPUT -j REJECT --reject-with icmp-host-prohibited 

当然,您可以使REJECT代替DROP,但是有了DROP,机器人将有更多的乐趣。


3.客户


在这个地方(从我的角度来看)最有趣,因为您不仅需要在任何海滩上工作,而且还需要在任何设备上工作。


原则上, 项目的网站上列出了许多客户,但这是同一系列的“一切都在Internet上”。 因此,在我的指尖,我将列出现在和现在可行的方法。


选择客户端时,必须确保其支持数据包之间的延迟选项。 是的,海滩以及与海滩的冲突和100兆位永远无法保证数据包在正确的时间从正确的位置到达正确的位置。


是的-设置客户端时,必须独立选择延迟。 很多超时-机器人会攻击,有些-客户端不会及时。 有很多延迟-客户端将无法及时处理,或者会有白痴的冲突(请参阅“耙”),有一点延迟-数据包将重新在Internet上丢失。


超时= 5s时,完全工作选项延迟= 100..500ms


窗户


不管听起来多么可笑,但是谷歌为此平台寻找一个独特的敲门客是相当重要的。 这样CLI支持延迟,TCP-且无弓形。


作为一种选择,您可以在这里尝试。 显然,我的Google并不是蛋糕。


的Linux


这里的一切都很简单:


 dnf install knock -y knock -d <delay> <dst_ip> 11111 22222 33333 

MacOS的


最简单的方法是将端口设为自制程序:
brew install knock
为自己画画 衬衫 指挥官的形式:


 #!bin/sh knock -d <delay> <dst_ip> 11111 22222 33333 

的iOS


工作选项是KnockOnD(可从商店免费获得)。


安卓系统


“敲港口”。 不是做广告,而是做事。 开发人员反应灵敏。


PS对Habr的降价促销,当然,上帝有一天会祝福他...


UPD1 :多亏一个好人,找到了Windows的正常工作的客户端
UPD2 :另一个好人回忆说,将新规则放在iptables的末尾并不总是有用的。 但是-这取决于。

Source: https://habr.com/ru/post/zh-CN470001/


All Articles