Экранирование специальных символов &, $, ^, *, ! в команде unix (bash perl)

В конце концов выяснилось, что это произошло из-за ошибок в основном маршрутизаторе Cisco 6059 FWSM и используемом брандмауэре ASA.

Ядро Linux версии 3 и 4 плохо работает с рандомизацией последовательности TCP и вызывает «случайные» проблемы при передаче больших файлов или другие неясные проблемы во многих соединениях, из которых SSH был более заметен. К сожалению, Windows, Mac и FreeBSD работают хорошо, так что это можно назвать ошибкой Linux.

Это была довольно неприятная ситуация, так как у нас были жалобы на то, что люди не могут скачивать случайные файлы с наших сайтов.

Each TCP connection has two ISNs: one generated by the client and one generated by the server. The ASA randomizes the ISN of the TCP SYN passing in both the inbound and outbound directions.

Randomizing the ISN of the protected host prevents an attacker from predicting the next ISN for a new connection and potentially hijacking the new session.

You can disable TCP initial sequence number randomization if necessary, for example, because data is getting scrambled. For example:

If another in-line firewall is also randomizing the initial sequence numbers, there is no need for both firewalls to be performing this action, even though this action does not affect the traffic.

Сначала я отключил Cisco Randomization во внутреннем основном маршрутизаторе, этого было недостаточно. После того, как рандомизация Cisco была отключена как в пограничных брандмауэрах, так и в основном маршрутизаторе/коммутаторе Cisco, проблема перестала возникать.

Для его отключения это что-то похожее на:

policy-map global_policy
    class preserve-sq-no
        set connection random-sequence-number disable

См. примечание Cisco Отключить рандомизацию последовательности TCP

Я также обнаружил несвязанную ошибку XLATE в FWSM для оптимизации NAT, которая включена по умолчанию, что вызывало ложные проблемы со связью, и поскольку основной маршрутизатор не отвечал за NAT, я отключил ее с помощью:

xlate-bypass

Enable xlate-bypass In both of the examples above, the xlates are created with the Ii flags. These flags indicate that the xlate is an identity translation (I) that originated on a high security (i) interface. By default, the FWSM will build these xlates for any traffic that does not match an explicit NAT/PAT rule. In order to disable this behavior, the xlate-bypass command can be enabled in FWSM 3.2(1) and later:

FWSM(config)# xlate-bypass

Остерегайтесь, это конфигурации по умолчанию, мы потратили месяцы на отслеживание этого в ходе внутреннего расследования, и несколько вовлеченных поставщиков, которых я не буду здесь называть, не смогли точно определить виновника этих конфигураций.

1
27.06.2019, 19:25
1 ответ

Вместо того, чтобы гадать, какая оболочка будет экранирована (или нет ), обойдите оболочку ручкой к трубе, соединенной сuux:

open my $uux, '|-', 'uux', '-r', 
                           '-aroot@my.centosbox.com', 
                           '-', 
                           'my_remailserv!rmoc.pl', 
                           'root@my.centosbox.com', 
                           'CP&O-AP@qatargas.com.qa', 
                           'my_email@gsmail.com' 
  or die $!;
open my $data, '<', '/root/my_msg' 
  or die $!;
print $uux (<$data>);
close $data 
  or die $!;
close $uux 
  or die $!;

Вы должны заменить статические строки (, которые я скопировал из вашего примера ), соответствующими переменными perl. Основная идея здесь состоит в том, чтобы открыть дескриптор конвейера -для программы uux(, передав ей все необходимые аргументы ), а затем открыть второй дескриптор для содержимого сообщения; затем напечатайте содержимое этого второго дескриптора файла в канал, а затем закройте все.

Чтобы проверить это самостоятельно, я создал локальную программу "uux":

#!/bin/sh
echo I am "$0" with arguments:
printf '<%s>\n' "$@"
echo Here is stdin:
cat

и образец файла данных, состоящий из двух строк date. Примерный результат такого прогона:

$./go.pl
I am./uux with arguments:
<-r>
<-aroot@my.centosbox.com>
<->
<my_remailserv!rmoc.pl>
<root@my.centosbox.com>
<CP&O-AP@qatargas.com.qa>
<my_email@gsmail.com>
Here is stdin:
Thu Jun 27 14:20:46
Thu Jun 27 14:30:36
1
27.01.2020, 23:41

Теги

Похожие вопросы