Перенаправление ssh-порта IPTables

Для тех, кто наткнется на эту тему, используя один из новых MacBook Pro (2016 года и более поздние версии ), которым требуется драйвер applespi для работы клавиатуры и сенсорной панели, вот как это сделать., так как я не смог найти другой темы, объясняющей это для более новых компьютеров Mac.

Насколько я понимаю, драйвер эффективно заменяет роль модуля hid _apple, поэтому файлы для редактирования немного отличаются.

Во-первых, чтобы убедиться, что вы используете драйвер applespi, а не драйвер hid _, проверьте, какая из этих команд (с помощью терминала )что-то возвращает. Что бы ни случилось, вы узнаете, какой драйвер вы используете в настоящее время :

.

# If this returns "applespi", you are using applespi
ls /sys/module | grep applespi

# If this returns "hid_apple", you are using hid_apple
ls /sys/module | grep hid_apple

Для проверки настроек временно(настройки будут сброшены после перезагрузки):

echo 2 | sudo tee -a /sys/module/applespi/parameters/fnmode

Чтобы применить изменения навсегда(сохранить при перезагрузке):

# Add the option for the fn key
echo options applespi fnmode=2 | sudo tee -a /etc/modprobe.d/applespi.conf
# Update initramfs bootfile
sudo update-initramfs -u -k all
# Reboot to test (optional)
sudo reboot

Для старых MacBook Pro, использующих модуль hid _apple, используйте в командах «hid _apple», а не «applespi».

0
21.10.2019, 14:39
2 ответа

Если вы хотите, чтобы только 1 IP-адрес имел доступ к порту 22, но вы также хотите перенаправить какой-либо другой порт на локальный порт 22, вам все равно нужно открыть порт 22 для всех, поскольку INPUTправило обрабатывается после правила nat REDIRECT.

Одним из способов может быть:

iptables -t nat -A PREROUTING -s 1.1.1.1 --proto tcp --dport 22 -j ACCEPT
iptables -t nat -A PREROUTING --proto tcp --dport 22 -j REDIRECT --to-port 65535
iptables -t nat -A PREROUTING --proto tcp --dport 2222 -j REDIRECT --to-port 22

iptables -A INPUT --proto tcp --dport 22 -j ACCEPT
iptables -A INPUT --proto tcp --dport 65535 -j DROP

Поскольку таблица nat PREROUTINGобрабатывается первой, исходный адрес 1.1.1.1 для порта 22 принимается (, что означает, что NAT не выполняется ). Другие исходные адреса, пытающиеся достичь порта 22, попадут в следующее правило, перенаправляя входящие пакеты порта 22 на порт 65535 (, к сожалению, вы не можете использовать DROPв таблице PREROUTINGnat ).

Затем подключения к порту 2222 перенаправляются на порт 22, все входящие пакеты на порт 22 принимаются, и, наконец, входящие подключения к порту 65535, которые являются «другими» подключениями к порту 22, сбрасываются.

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

iptables -A INPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT

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

Не стесняйтесь добавлять -i venet0, если эти правила должны применяться только к пакетам, входящим на этот интерфейс.

0
28.04.2021, 23:28

У вас должен быть открыт порт 22, чтобы передавать на него трафик с порта 2222, если ssh и ваши настройки iptables находятся на одной машине, можно привязать ваш сокет ssh к вашему петлевому интерфейсу (127.0.0.1 ), что позволит вам оставить ssh на порту 22, и вы по-прежнему сможете передавать трафик с общедоступного интерфейса на петлю вашей локальной машины.

0
28.04.2021, 23:28

Теги

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