Когда я натыкаюсь на злой веб-сайт, который я хочу заблокировать от корпоративного доступа, я редактирую файл named.conf на моем сервере связывания, а затем обновляю свой черный файл прокси-сервера. Я хотел бы автоматизировать это с помощью сценария bash. Скажем, мой сценарий называется «evil-site-block.sh» и содержит следующее:Передача внешней переменной скрипта оболочки через ssh
ssh [email protected] 'echo "#date added $(date +%m/%d/%Y)" >> /var/named/chroot/etc/named.conf; echo "zone \"$1\" { type master; file \"/etc/zone/dummy-block\"; };" >> /var/named/chroot/etc/named.conf'
Затем работает как
$ evil-site-block.sh google.com
Когда я смотрю на содержание named.conf на удаленной машине я вижу:
#date added 09/16/2014
zone "" { type master; file "/etc/zone/dummy-block"; };
То, что я не могу понять, как передать «google.com» в $ 1.
Это небезопасно против намеренно злонамеренных аргументов. Учитывая, что это код, вызываемый в ответ на инциденты безопасности и выполняемый с правами root, такая безопасность, вероятно, является законной проблемой. –
Согласен, но мы говорим о каком-то хелпер-скриптовом скрипте. В любом случае, правильное решение для управления черным списком будет выглядеть по-другому. ;) – lxg
Для более явного примера: Рассмотрим случай, когда '$ 1' является' '" $ (rm -rf /) "'' (где эти внешние кавычки являются буквальным текстом, а не синтаксисом). Я предпочел бы, чтобы злоумышленник помещал мусор в named.conf, а не позволял им запускать произвольные команды на моем сервере имен. –