AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-112380

Asad Moeen's questions

Martin Hope
Asad Moeen
Asked: 2013-10-13 02:14:03 +0800 CST

会话自动解析到辅助 IP

  • 0

我正在使用 Debian 6 - 64 位,这就是我的 /etc/network/interfaces 文件的样子

auto eth0
iface eth0 inet static
    address PrimaryIP
    gateway X.X.X.X
    netmask 255.255.255.0
auto eth0:1
iface eth0:1 inet static
    address SecondaryIP
    gateway X.X.X.X
    netmask 255.255.255.0
auto lo
iface lo inet loopback

对于我的大多数进程/脚本,我需要在主 IP 和辅助 IP 之间切换,所以很多时候我在上述文件中将 PrimaryIP 与 SecondaryIP 交换(反之亦然)并重新启动接口以更改主 IP 系统正在运行.

我面临的一个问题是,尽管系统的主 IP 已在上述文件中设置并且在网络重新启动后可以正常工作,但会话/ssh IP 仍然是辅助 IP。因此,在系统使用 PrimaryIP 的情况下,我在 SSH 会话中执行的任何操作仍然作为 SecondaryIP 执行。

注意:我也尝试使用这两个 IP 登录,但会话仍被锁定到辅助 IP,尽管 cronjobs 等任何系统命令都作为主要执行。

networking
  • 2 个回答
  • 51 Views
Martin Hope
Asad Moeen
Asked: 2013-08-27 08:10:38 +0800 CST

tcpdump:无法在数据包套接字上创建 rx 环:无法分配内存

  • 0

在出现此错误之前,我一直在使用 tcpdump 没有任何问题。一旦我的服务器受到攻击,我就会使用以下两个带有变体的命令,因此如果数据包速率很高,数据包会自动转储。

tcpdump -i eth0 -p -nn -s0 -c 2000 -w $dumpdir/dump.`date +"%Y%m%d-%H%M%S"`.cap
tcpdump -nn -s0 -c 2000 -w $dumpdir/dump.`date +"%Y%m%d-%H%M%S"`.cap

一旦我受到攻击,控制台就会显示以下错误:

tcpdump: can't create rx ring on packet socket: Cannot allocate memory

手动使用该命令可以工作,所以我的猜测是在发生攻击时某些东西会超载。这是我的RAM使用情况:

root@x:~# free -m
             total       used       free     shared    buffers     cached
Mem:          2004       1255        749          0          1         29
-/+ buffers/cache:       1225        779
Swap:         2047       1095        952

目前,它比以前命令起作用时要低得多。

那么有人对此有答案吗?

networking
  • 1 个回答
  • 3935 Views
Martin Hope
Asad Moeen
Asked: 2013-08-20 05:27:25 +0800 CST

Ddos 攻击通过 iptables [重复]

  • 1
这个问题在这里已经有了答案:
我在 DDoS 下。我能做些什么? (5 个回答)
9 年前关闭。

我一直在使用自己制作的“iptables 规则”来阻止对游戏服务器的所有主要类型的 DDOS 攻击,因为这些攻击是特定于应用程序/游戏服务器的,而不是一般的 DDOS 攻击。我花了将近 3 年的时间来研究这些攻击并用这些规则做出回应。到目前为止,我在 iptables 上使用了速率限制,如果它达到 250 次/秒,它将自动 DROP IP,因为客户端速率远低于此(最大值为 500kb/s)。这是因为攻击者通常会使用长度为 15:30 的数据包发送大量命中计数,因为这是游戏服务器响应良好的一般数据包长度。这非常有效,直到今天有人用不同的东西攻击以通过这条规则。

-A INPUT -p udp -m udp --dport 16000:29000 -m recent --set 
-A INPUT -p udp -m udp --dport 16000:29000 -m recent --update --seconds 1 --hitcount 250 -j DROP 

最近,我观察到攻击很容易产生 1-3mb/sec 的输入,正如通过“iftop”到我的服务器所看到的那样,上述规则并没有阻止它们,因为我的游戏服务器正在响应“..disconnect”数据包到所有传入连接。当游戏服务器无法识别数据包的输入字符串或长度时,就会发生这种情况。这是数据包的内容:

http://paste.ubuntu.com/6000381/

现在您可能会看到数据包的长度很大。根据我抓取数据包的 Wireshark,数据包的长度为 700,数据大小/长度约为 5000 字节。我之前已经看到过,如果数据包的数据长度/大小更高,即使 hitcounts 更少,你仍然可以获得更高的速率。因此,这也许可以解释为什么它的输入约为 3mb/s 并且没有通过命中数被阻止,因为它的命中数从未超过 250..

现在我需要比每秒数据包数更多的带宽特定的东西。我需要一个 iptables 规则,它会自动阻止输入>1mb/s,如果需要,它可以使用数据包的长度。公平游戏服务器客户端的一般数据大小/长度通常具有小于 500 字节的数据包长度和数据大小,但在某些情况下可能会更高,但不会占用超过 500kb/s 的带宽。

这个问题与之前回答的其他问题不同,因为它首先是特定于应用程序的。其次,我问的是一个 iptables 解决方案,它会拒绝任何输入 >1mb/s?

更新:

我做了一些理论上的工作来解释为什么 3 Mb/s 的输入带宽不超过 250 次/秒,这里是工作:

3 Mb = 3x1024x1024 = 3,145,728 位/秒 = 393,216 字节/秒

因此,

如果一个数据包的大小为 5000 字节,那么每秒的最大数据包数应该是:

393216/5000 = 78.6 包/秒

这意味着如果 iptables 规则必须起作用,数据包应该小于 393216/250 = 1516 bytes。

iptables
  • 1 个回答
  • 1257 Views
Martin Hope
Asad Moeen
Asked: 2013-08-19 09:33:00 +0800 CST

将 tcpdump 与 iptables 一起使用?

  • 1

我使用 iptables 来阻止对我的服务器的不同类型的攻击。我们有一套不同的规则以及不同的速率限制规则。现在我还使用一个脚本来观察阈值(如果阈值大于 10mb/s)并将所有数据包转储到文件中。该脚本在屏幕会话中一直运行,并使用以下命令进行转储:

tcpdump -nn -s0 -c 2000 -w Attack.cap
sleep 300

一旦受到攻击,它会等待 5 分钟以检查另一次攻击(睡眠 300)。现在我怀疑在数据包捕获过程中,iptables 是否仍然有效,因为在 /var/messages 我看到像“eth0 进入混杂模式”和“eth0 离开混杂模式”这样的行,所以它可能会忽略 iptables?

iptables
  • 2 个回答
  • 6095 Views
Martin Hope
Asad Moeen
Asked: 2013-08-14 02:07:14 +0800 CST

自动重启“屏幕”脚本不起作用

  • 0

我正在查看一个脚本,该脚本实际上会在游戏服务器崩溃时重新启动。游戏服务器实际上是通过控制面板在屏幕会话中启动的。必须通过终止各自的屏幕会话并在具有相同名称的新屏幕会话中再次启动它们来重新启动它们。我自己完成了这个脚本,但它并没有真正起作用并且遇到错误。

#!/bin/bash

START='cd /home/test; ./GameServer +set parameters'
SCREEN_NAME="test"


while /bin/true; do


sleep 5
SERVER=`ps --User test | grep GameServer | grep -v grep | wc -l`

 if [[ $SERVER -eq "0" ]]; then
    screen -S $SCREEN_NAME-X quit ; screen -S $SCREEN_NAME -md $START
    sleep 10
 fi
done

进程名称是“gameserver”,问题在于终止屏幕会话,因为它不会退出,如果我终止所有屏幕会话,运行脚本的屏幕也会退出。

test@de:~$ screen -list
There is a screen on:
        31861.2-test    (08/11/13 12:51:06)     (Detached)
1 Socket in /var/run/screen/S-test.

test@de:~$ screen -r 2-test -X quit
No screen session found.
test@de:~$ screen -x 2-test -X quit
No screen session found.
test@de:~$ screen -S 2-test -X quit
No screen session found.

我可以通过“screen -x”附加到上面的屏幕,如果我将其启动为:“screen -S test”,我也可以使用上面的命令杀死一个同名的屏幕。我相信控制面板中有一些东西以不同的方式启动它,以至于它无法使用名称附加。

scripting
  • 1 个回答
  • 1672 Views
Martin Hope
Asad Moeen
Asked: 2013-07-19 09:41:39 +0800 CST

限制 FTP 客户端端口?

  • 1

好的,所以我使用简单的 linux ftp 客户端从 ftp 服务器下载/上传文件。我有一个 iptables 防火墙,它阻止了大部分端口,我必须关闭防火墙才能使其工作。虽然端口 21 是开放的,但我想这解释了为什么下载有效,而不是上传。以下命令与防火墙完美配合:

wget ftp://user:[email protected]

当我实际连接到服务器并尝试将文件“放置”/上传到服务器时,我只是遇到了问题。这是当时使用的端口的示例 netstat 输出,但它总是不同的。

netstat -a | grep ServerIP
tcp        0 197520 myIP.:59622 ServerIP:ftp-data ESTABLISHED
tcp        0      0 myIP.:40341 ServerIP:ftp      ESTABLISHED

myIP 范围内的两个端口都被阻止,我无法猜测我必须打开哪些端口。谷歌搜索也失败了。其次,如果我在 iptables 上尝试这样的事情,它会给我一个错误:

-A INPUT -p tcp --match multiport --dport 40000:40500 -j ACCEPT
iptables-restore v1.4.8: too many ports specified

其次,当我在配置文件中阻止端口之前有以下行时,为什么我需要打开端口:

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables
  • 2 个回答
  • 2689 Views
Martin Hope
Asad Moeen
Asked: 2013-07-12 15:14:03 +0800 CST

禁用 ICMP 无法访问的回复

  • 3

我正在使用 Debian 6 - 64 位操作系统,我的服务器不时通过 udp 协议进行 ddos​​ed/flooded。我基本上托管游戏服务器,我的防火墙设置为对允许端口上的数据包进行速率限制,但有时每个 IP 的速率很低,但 IP 的数量更多,所以我的服务器向攻击 IP 发送传出的 icmp 无法访问的回复,这没有受益,但更阻塞/饱和端口。

我正在研究如何禁用此功能。实际上,受到攻击的端口是允许通过防火墙的,我不能禁用它们,尽管它可以解决问题。我在某些端口范围上运行了许多服务器,因此我不能继续一个接一个地接受这些端口,并决定允许我可能需要的总端口范围。

我正在寻找一些内核能力来阻止这种情况?

networking
  • 2 个回答
  • 22500 Views
Martin Hope
Asad Moeen
Asked: 2013-07-06 01:56:23 +0800 CST

tcpdump - 如何检查数据包的速率?

  • 6

我正在使用这个脚本来实际检查传入数据包的速率,如果速率达到 5mbps 或更高,它就会被触发。然后将数据包记录到 tcpdump 文件中。

interface=eth0
dumpdir=/tmp/

while /bin/true; do
  pkt_old=`grep $interface: /proc/net/dev | cut -d :  -f2 | awk '{ print $2 }'`
  sleep 1
  pkt_new=`grep $interface: /proc/net/dev | cut -d :  -f2 | awk '{ print $2 }'`

  pkt=$(( $pkt_new - $pkt_old ))
  echo -ne "\r$pkt packets/s\033[0K"

  if [ $pkt -gt 5000 ]; then
    echo -e "\n`date` Under attack, dumping packets."
    tcpdump -n -s0 -c 2000 -w $dumpdir/dump.`date +"%Y%m%d-%H%M%S"`.cap
    echo "`date` Packets dumped, sleeping now."
    sleep 300
  fi
done

输出类似于捕获的 2000 个数据包。过滤器接收到 XXX 个数据包,内核丢弃了 XXX-(减号)2000。

现在我想知道的是,输出文件实际上不会告诉我攻击的速率,比如它是 300mbps 还是什么?那么过滤器接收的XXX数据包是每秒吗?如果没有,我该如何检查,因为我的端口有时会饱和。

更新:

我使用一个程序通过上述脚本从捕获的文件中捕获统计信息。这是我得到的:

root@$:/tmp/dumps# capinfos dump.20130621-174506.cap
File name:           dump.20130621-174506.cap
File type:           Wireshark/tcpdump/... - libpcap
File encapsulation:  Linux cooked-mode capture
Number of packets:   2000
File size:           2065933 bytes
Data size:           2033909 bytes
Capture duration:    43 seconds
Start time:          Fri Jun 21 17:45:06 2013
End time:            Fri Jun 21 17:45:49 2013
Data byte rate:      46968.49 bytes/sec
Data bit rate:       375747.94 bits/sec
Average packet size: 1016.95 bytes
Average packet rate: 46.19 packets/sec

我相信攻击可能只持续了 15-20 秒,而捕获的信息是 43 秒,所以这里的数据比特率可能是这个总时间的平均值。这里可能有帮助的是,如果有人可以编辑上面的原始脚本,而不是捕获 2000 个数据包并丢弃其余数据包,而是在达到阈值时捕获所有数据包持续时间为 5 秒。

更新:

如上所述更改脚本后,当我在 Wireshark 中阅读时,文件看起来已损坏,上面写着“捕获文件似乎在数据包中间被剪短了”。这是 capinfos 的输出:

capinfos: An error occurred after reading 3085 packets from `"dump.20130710-215413.cap": Less data was read than was expected.

在第二次尝试中,只有在脚本控制台中按 Ctrl+C 时,我才能读取该文件:

capinfos dump.20130710-215413.cap
File name:           dump.20130710-215413.cap
File type:           Wireshark/tcpdump/... - libpcap
File encapsulation:  Linux cooked-mode capture
Number of packets:   18136
File size:           2600821 bytes
Data size:           2310621 bytes
Capture duration:    591 seconds
Start time:          Wed Jul 10 21:54:13 2013
End time:            Wed Jul 10 22:04:04 2013
Data byte rate:      3909.73 bytes/sec
Data bit rate:       31277.83 bits/sec
Average packet size: 127.41 bytes
Average packet rate: 30.69 packets/sec

注意捕获持续时间 591 秒。我相信'sleep 300'在这里有一些事情要做,因为我看到了控制台输出。此输出带有“-c 2000”选项:

./Log.sh
10275 packets/s
Wed Jul 10 12:41:31 MSD 2013 Under attack, dumping packets.
tcpdump: listening on venet0, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
2000 packets captured
100012 packets received by filter
98003 packets dropped by kernel
Wed Jul 10 12:42:34 MSD 2013 Packets dumped, sleeping now.

现在这是使用“sleep 5”修改脚本后的输出:

./Log.sh
24103 packets/s
Wed Jul 10 21:54:13 MSD 2013 Under attack, dumping packets.
tcpdump: listening on venet0, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
Wed Jul 10 21:54:18 MSD 2013 Packets dumped, sleeping now.
1620 packets/sroot@nl:~# 18136 packets captured
1850288 packets received by filter
1832106 packets dropped by kernel
^C

请注意,我按下了 Ctrl+C 来打破我猜想这使得读取文件成为可能的睡眠功能。

tcpdump
  • 2 个回答
  • 27962 Views
Martin Hope
Asad Moeen
Asked: 2013-07-05 22:19:16 +0800 CST

iptables - 先检查源还是目标?

  • -1

所以我正在运行一个带有 iptables 配置的服务器,我只检查目的地。这是配置结构。配置的顶部有一个要删除的 ip 地址列表,然后是特定目标端口的速率限制,然后接受一个限制的速率。最后我封锁了所有的端口。因此,未接受的将被阻止。

现在我需要在配置中的某处修复源端口匹配。我想阻止 udp 源端口 X 那么这会从哪里来?

我将它放在配置的末尾,但我不确定它是否有效。它会先检查该源端口的目的地并允许它吗?还是会阻塞源端口。

更新:

这是它的样子。

# Block Source Port 53 - The commands below slow the SSH down
#-A INPUT -p udp --sport 53 -j DROP
#-A INPUT -p tcp --sport 53 -j DROP 

#
# Destinations
#

# Accept PPTPD VPN Ports 
// Commands go here

# Accept IP Rules and Port Range
// Commands go here

# Rate-Limit ICMP Ping Requests
// Commands go here - Used with the iptables recent module

# Rate-Limit Game Servers Ports
// Commands go here - Used with the iptables recent module

# Accept the Ports Rate-Limited above
// Commands go here

# Drop All Other TCP & UDP Ports
-A INPUT -p tcp -j DROP
-A INPUT -p udp -j DROP
-A INPUT -j DROP

我在配置末尾尝试了源端口 53 块,它似乎不起作用,可能是因为该源的目标匹配首先出现。现在我把它放在配置的顶部,甚至放在中间的某个地方,它似乎可以工作,但我的 SSH/SFTP 登录似乎非常延迟,以至于有时在我输入用户名后它甚至超时,尽管我自己的 IP 被接受接受的 IP 地址。我也刚刚尝试在 UDP 上阻止源端口 53,因为这是我真正需要的,但它仍然会导致延迟。不确定 UDP 与 ssh/sftp 有什么关系。也许延迟实际上是由源端口检查引起的?

iptables
  • 1 个回答
  • 1338 Views
Martin Hope
Asad Moeen
Asked: 2012-08-18 06:40:17 +0800 CST

复制文件导致磁盘滞后

  • 2

我的 Debian 6.0 64 位自定义内核机器上运行了一些游戏服务器服务。

每当我安装新服务时,我都会滞后于当前正在运行的服务。

安装一项新服务只涉及将文件解压缩到用户目录,尽管我以最低优先级(不错的 19 和 1000kbps SCP 限制)执行此操作。

这次我在安装新服务和出现滞后时输出了“vmstat 3”。虽然我不擅长阅读它,但我想这些是一些磁盘问题。

http://paste.ubuntu.com/1152249/

请参阅第 11-16 行以了解发生时间。

更新 :

这是

df-h

输出: http: //paste.ubuntu.com/1152734/

250G 的磁盘是用于这些操作和服务的磁盘。

debian
  • 3 个回答
  • 161 Views
Martin Hope
Asad Moeen
Asked: 2012-07-11 02:13:53 +0800 CST

PHP / SSH2 多线程

  • 1

我基本上已经完成了将 SSH2 与 PHP 结合使用的工作。有些人可能已经知道,在使用它时,PHP 代码实际上会等待所有列出的命令在 SSH 中执行,当一切都完成后,它会返回结果。这对我正在做的工作来说很好,但我需要一些命令是多线程的。

$cmd=我的命令;echo $ssh->exec($cmd);

所以我只想让它并行运行 2 次。我用谷歌搜索了一些东西,但没有得到它。对于基本的事情,我遇到了某人发布的这种方式,但对我来说没有用。

for ($i = 0; $i < 2; $i += 1)
    {
        exec("php test_1.php $i > test.txt &");  
    //this will execute test_1.php and will leave this process executing in the background and will go to next iteration of the loop immediately without waiting the completion of the script in the test_1.php , $i  is passed as argument .
}

我试着这样说exec("echo $ssh->exec($cmd) $i > test.txt &"); 在循环中,但要么它从未进入循环,要么 echo $ssh->exec 失败。我真的不需要非常简洁的多线程。哪怕是一秒钟的延迟都会有好处,谢谢。

multi-threading
  • 2 个回答
  • 1160 Views
Martin Hope
Asad Moeen
Asked: 2012-07-03 01:37:53 +0800 CST

速率限制影响所有客户端或单个 IP?

  • 0

到目前为止,我已经考虑过使用“最近”模块为每个 IP 地址工作的 iptables 速率限制命令。例如,仅当单个 IP 超过 20k/s 速率时才会触发 20k/s 的速率限制规则,如果 4 个不同的 IP 超过 5k/s 速率则不会触发。如果我认为这是错误的,请纠正我,因为我只将这些规则用于 TCP/UDP。

但今天我为 ICMP 尝试了类似的规则并应用了 4/s 输入/输出。但是在尝试从 just-ping.com 进行 ping 测试时,我可以看到几乎所有 IP 地址上的数据包丢失。这怎么可能发生,因为如果它适用于每个 IP 地址,那么它就不会触发规则,因为我相信来自 just-ping 的每个 IP 的速率可能为 1/s。

我仍然认为第一个是正确的,因为如果不是这样,那么如果组合速率(在更多连接的玩家的情况下)增加阈值,我的 GameServer 将阻止所有人。到目前为止,这还没有发生,所以 ICMP 的事情真的让我很困惑。

谢谢你。

更新

这是我的配置:

-A INPUT -p icmp -m recent --set --name PING --rsource 
-A INPUT -p icmp -m recent --update --seconds 1 --hitcount 4 --name PING --rsource -j DROP 

-A OUTPUT -p icmp -m recent --set --name PING2 --rsource 
-A OUTPUT -p icmp -m recent --update --seconds 1 --hitcount 4 --name PING2 --rsource -j DROP 
iptables
  • 1 个回答
  • 436 Views
Martin Hope
Asad Moeen
Asked: 2012-05-11 10:35:37 +0800 CST

记录 tcpdump 输出

  • 5

我基本上想要的是每 3 天将所有 tcpdump 捕获的数据包写入一个文件。所以基本上 tcpdump 应该在第 1 天运行 24 小时,并将输出写入 Day1.log 以及 Day2 和 Day3 的类似内容。在第 4 天,它应该重复并将日志再次写入 Day1。这基本上是为了检查我的服务器上的 DDoS 尝试并找出攻击类型,包括攻击者的 IP,因为在过去 7 天我的机器被 DDoS 攻击,我希望它再次发生。我知道它是由一些 cronjobs 完成的,但我需要将实际命令放在那里?

我还想知道哪个 IP 以 mb/sec 为单位进行了最大输入,因为我的流量很高,所以我将近 6 个小时来继续搜索这些文件以查找攻击者的 IP。那么在分析这些文件的过程中,WireShark 中是否有任何内容可以告诉我 IP 向我的服务器输入了多少 mb/s?如果没有,我应该怎么找到它?

编辑: --------------------------------------------

你们也可以自由发表您的反击想法。我所需要的只是找到攻击者的 IP、他发送的数据包数据以及以 mb/s 为单位向我的服务器输入的数据。我的客户不会进行超过 300kb/s 的输入,所以如果我们设置一个过滤器来捕获超过 1mb/s 的输入,我们就可以捕获它。

logging networking tcpdump
  • 6 个回答
  • 15763 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve