Последствия для безопасности переадресации/туннелирования портов SSH

La utilidad dateen macOS (que supongo que está utilizando a juzgar por la ubicación de los directorios de inicio del usuario )no es GNU datey, por lo tanto, no es compatible con todas sus funciones.

Esto significa que su variable OLD_BACKUPestará vacía (y debería ver un mensaje de error cuando se ejecuta date), lo que a su vez significa que es el directorio ${BACKUP_DEST[$i]}el que se elimina.

En su lugar, puede usar date -v -3d +'%d-%m-%Y'.

#!/bin/bash

set -e

backup_dest=(
    '/Users/christopherdavies/Desktop/rsync/test1.co.uk'
    '/Users/christopherdavies/Desktop/rsync/test2.co.uk'
)

when=$( date -v -3d +'%d-%m-%Y' )

for backup in "${backup_dest[@]}"; do
    [ -d "$backup/$when" ] && rm -Rf "$backup/$when"
done

Alternativamente, instale GNU coreutils y use GNU date.

Otros cambios realizados en su código:

  • Eliminado exit 0del final y agregado set -e. Si el script falla, querrá poder notarlo.

  • No se usó la matriz del sitio web.

  • Recorra los elementos de la matriz en lugar de usar índices, es más fácil de leer.

  • Si desea una declaración simple ifde una sola línea, puede usar la sintaxis de cortocircuito en su lugar (, que es más corta ).

  • Use minúsculas -nombres de variables de mayúsculas y minúsculas.

  • Citar siempre expansiones variables.

  • Es un script bash, por lo que debe hacer referencia a bashen la línea #!-.

1
10.07.2019, 17:35
1 ответ
  1. Да, это возможно. Например, злоумышленник может управлять портом прослушивания 8080 на удаленном хосте и возвращать данные любой программе, которая подключается с внутренних хостов, что приводит к сбою этой программы, что может быть использовано. Это относится к любому сетевому соединению.

    Обратите внимание, что сетевое подключение существует только тогда, когда внутренний хост подключается к порту прослушивания, предоставленному клиентом SSH. На удаленном хосте нет постоянно открытого порта, ведущего к внутреннему хосту. Кроме того, сервер SSH на хосте-бастионе не виден удаленному хосту.

  2. Нет, назад сокета нет. Злоумышленник должен был бы «подцепить» TCP-сессию, открытую от имени внутреннего хоста, и (за исключением эксплойтов ), такая поездка была бы ограничена областью сеанса TCP; он не мог связаться с другими портами на внутреннем хосте или хосте-бастионе.

Вы можете сделать ваше соединение менее зависимым от изменений локальной конфигурации, указав его локальный адрес привязки явным образом:

ssh -f -N -L localhost:8080:<remote_ip>:8080 user@<bastion_host>

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

0
28.01.2020, 00:06

Теги

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