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

Что мне нужно сделать, чтобы смонтировать USB-накопитель в ArchLinux
VMware Workstation-недостаточно физической памяти с момента последнего обновления
Как настроить точку доступа, которая будет работать с новыми устройствами (iPhone 5s, iPad и т. д)
Параметры загрузки UEFI не отображаются в efibootmgr
Arch Linux показывает мигающий курсор вместо загрузочного установщика
Попытка получить USB Vag-Com / VCDS кабель для работы под wine (ebay кабель)
Конфигурационный файл для PCManFM LXDE
ECryptfs в Arch Linux не работает с ошибкой " ошибка: не удается получить версию ecryptfs, модуль ядра ecryptfs не загружен?"
Ускорение видео на Linux
Как установить autokey в домашнюю директорию в linux?
fdisk жалуется, что " резервная таблица GPT повреждена, но первичная отображается OK, так что будет использоваться."
Удивительный WM автозапуск программ в конкретных вкладках
Почему больше нет i686 версии ArchLinux bootimage?
Отключить горячие клавиши Windows при использовании Virtualbox
Parted не имеет команды " изменить размер

Откройте брандмауэр автоматически для всех, кто успешно подключился через SSH

У меня есть сервер, который работает несколько служб. Однако по соображениям безопасности я настроил сервер так, чтобы ничего, кроме SSH, не было доступно извне.

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

есть ли способ сделать это?

Я использую Arch Linux на сервере и ufw для управления брандмауэром.

5
задан houbysoft
источник

2 ответов

Вы можете поместить команды ~/.bashrc, все, что там выполняется каждый раз, когда пользователь входит в систему.

чтобы ваши команды запускались только при входе через ssh (а не при входе физически), вы можете проверить наличие SSH_CONNECTION переменные среды.

1
отвечен Bart Koopman 2013-01-25 12:44:06
источник

Я написал решение для этого. Это не идеально, и улучшения приветствуются. Тем более, я думаю, что ~/.bash_logout не вызывается, если соединение умирает, но я хочу, чтобы брандмауэр тоже закрывался в этих случаях.

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

затем в ~/.bashrc:

ip=`echo $SSH_CONNECTION | cut -d " " -f 1`
echo "=> Opening the firewall for $ip..."
sudo ufw allow from $ip
echo "=> Done."

In ~/.bash_logout:

ip=`echo $SSH_CONNECTION | cut -d " " -f 1`
echo "=> Closing the firewall for $ip..."
sudo ufw delete allow from $ip
echo "=> Bye."

опять же, это будет только reclose порты, если вы завершаете сеанс должным образом. Если кто-то знает, как закрыть его всякий раз, когда соединение выходит / умирает / что-то еще, отредактируйте этот ответ своим решением.

0
отвечен houbysoft 2013-01-25 19:25:33
источник

Другие вопросы arch-linux firewall iptables linux ufw