Я использую прерывание tar в iptables. Слишком много неудавшихся входов в систему пытаются, и необходимо перейти к реальной машине.
10 раз за 15 минут и Вы помещены в черный список.
9 раз за 10 минут и Вы помещены в черный список.
6 раз за 5 минут и Вы помещены в черный список.
Корректируйтесь соответственно!
#
# - Black List
#
-A BLACKLIST -m recent --name blacklist --set
-A BLACKLIST -j LOG --log-level 4 --log-prefix "TAR-TRAP: "
-A BLACKLIST -j DROP
#
# - SSH Tar Trap
#
-A FIREWALL -p tcp --dport ssh -m state --state NEW -j TAR-TRAP
#
-A TAR-TRAP -m recent --update --name blacklist --seconds 900 --hitcount 1 -j LOG --log-level 4 --log-prefix "BANNED: "
-A TAR-TRAP -m recent --update --name blacklist --seconds 900 --hitcount 1 -j DROP
-A TAR-TRAP -m recent --set --name strike1
-A TAR-TRAP -m recent --set --name strike2
-A TAR-TRAP -m recent --set --name strike3
-A TAR-TRAP -m recent --update --name strike1 --seconds 300 --hitcount 6 -j LOG --log-level 4 --log-prefix "IPT TAR1: "
-A TAR-TRAP -m recent --update --name strike1 --seconds 300 --hitcount 6 -j BLACKLIST
-A TAR-TRAP -m recent --update --name strike2 --seconds 600 --hitcount 9 -j LOG --log-level 4 --log-prefix "IPT TAR2: "
-A TAR-TRAP -m recent --update --name strike2 --seconds 600 --hitcount 9 -j BLACKLIST
-A TAR-TRAP -m recent --update --name strike3 --seconds 900 --hitcount 10 -j LOG --log-level 4 --log-prefix "IPT TAR3: "
-A TAR-TRAP -m recent --update --name strike3 --seconds 900 --hitcount 10 -j BLACKLIST
-A TAR-TRAP -j ACCEPT
#
Кажется, что ваша переменная SHELL установлена в файл, который не существует. Попробовать следующее:
export SHELL=/bin/sh
gdb test
обеспечение, что /bin/sh
существует и является исполняемым файлом. Это работает через su
не из-за корневых полномочий, но потому что su
сбрасывает переменная среды SHELL
. За страница руководства su:
Примечание, что поведение по умолчанию для среды следующее:
$HOME, $SHELL, $USER, $LOGNAME, $PATH и переменные среды $IFS сбрасываются.
, Если вы спрашиваете себя, "Как я, как предполагалось, знал это из следующего сообщения об ошибке?":
//error: Cannot exec /home/xxx/test/test -c exec /home/xxx/test/test .
//Error: No such file or directory
Вы не являетесь одними. Это, кажется, плохое сообщение об ошибке от gdb
. Когда gdb
решает, что должен выполнить вашу команду с помощью оболочки, он создает команду в следующем формате:
/path/to/shell -c exec /path/to/executable
Однако, когда это печатает сообщение об ошибке, это делает это:
save_errno = errno;
fprintf_unfiltered (gdb_stderr, "Cannot exec %s", exec_file);
for (i = 1; argv[i] != NULL; i++)
fprintf_unfiltered (gdb_stderr, " %s", argv[i]);
fprintf_unfiltered (gdb_stderr, ".\n");
fprintf_unfiltered (gdb_stderr, "Error: %s\n",
safe_strerror (save_errno));
gdb_flush (gdb_stderr);
Здесь exec_file
является разобранным контуром файла, вы передали командную строку. Это печатает exec_file
сначала, сопровождаемый элементами argv
, запускающийся в 1-м индексе. argv
содержит аргументы, которые он передал execvp
.
, К сожалению, оболочка, которую это пытается использовать, находится в 0th элементе argv
, который никогда не печатается. Таким образом вы никогда не видите файл, который не мог найти execvp
.
Далее, это затем печатает запаздывание .
, который не является на самом деле одним из аргументов, что он передал execvp
и должен, по-видимому, там сделать сообщение a полностью предложением.
Наконец, это печатает ошибку, которую мы возвратили от нашего вызова до execvp
, который является, что исполняемый файл не мог быть найден.
Эта ошибка, вероятно, вызывается тем, что этот код обработки ошибок является тем же в чехле, где gdb
делает попытку должностному лицу команды непосредственно и в чехле, когда это использует оболочку. В бывшем случае созданное сообщение об ошибке выглядело бы корректным с тех пор exec_file
и , argv [0]
будет тем же.