Назад | Перейти на главную страницу

IPTables позволяет затем блокировать при активном подключении

У меня есть резервный сервер, и мне было интересно, устанавливаю ли я задание cron, чтобы разрешить подключение с сервера в IPTables, а затем, когда он подключается к rsync, могу ли я использовать IPTables, чтобы затем отключить порт для предотвращения подключений?

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

РЕДАКТИРОВАТЬ: после попытки и из-за того, как все работает. Я решил, что лучше всего будет установить второй сервер, который будет работать только с первого сервера.

Предполагая, что он подключается через ssh, а не через rsyncd, вы можете справиться с этим с помощью такого правила, как это

iptables -A INPUT -s <server> -p tcp --dport ssh -m connlimit --connlimit-saddr --connlimit-upto 1 -j ACCEPT

Если нет других правил, разрешающих это, и политика для INPUT - REJECT или DROP, это будет работать.

Если вы также хотите ограничить это определенным временем, дополнительно используйте -m time --timestart 01:00:00 --timestop 01:02:00 - что обеспечит двухминутное окно каждый день, начиная с 01:00.

Во-первых, прямо отвечу на ваш вопрос: да, конечно, возможно и довольно просто.

У вас будет только одно задание cron, разрешающее трафик с этого сервера:

-A Firewall-1-INPUT -p tcp -m state --state NEW -s 1.2.3.4 -j ACCEPT

Затем еще одно задание cron по удалению этого правила:

-D Firewall-1-INPUT -p tcp -m state --state NEW -s 1.2.3.4 -j ACCEPT

Но...

Вы подключаетесь с использованием собственного протокола rsync? Если так, вам действительно не следует этого делать, поскольку он слабо аутентифицирован и не зашифрован. Вместо этого используйте rsync через SSH, отключив аутентификацию по ключу и аутентификацию по паролю (в любом случае вы уже должны делать это на своих серверах). Используя rsync + ssh, весь трафик будет зашифрован, а с аутентификацией по ключу также не обязательно исполнять песни и пляски iptables, так как шансы на то, что кто-то взломает ваше имя пользователя и пару ключей, бесконечно малы.

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

Чтобы достичь вашей цели, я бы рассмотрел альтернативную идею изолированного сервера резервного копирования в частной IP-подсети за брандмауэром и создания резервных копий подключенных к Интернету серверов через частный IP-адрес и подключение на основе ключа ssh (а не пароля). Таким образом, ключи, которые могут делать мощные вещи, более изолированы от Интернета.