Я использую сервер Ubuntu версии 20.04. Я настроил свой ssh-сервер для прослушивания альтернативного порта (порт 40001) в моем файле sshd_config. Я хочу разрешить входящий трафик из любой точки моей локальной сети (192.168.1.0/24), используя TCP-порт 40001, и в противном случае блокировать весь входящий трафик, особенно глобальную сеть (остальную часть Интернета). Я не хочу иметь возможность подключаться к моему серверу по ssh извне моей локальной сети.
Вкратце, вот мои желаемые правила:
Разрешить порт 40001 / tcp в локальной сети (192.168.1.0/24) . Отрицать все остальное.
Я хотел бы знать, как сделать это из командной строки двумя разными способами.
Если кто-нибудь может помочь ответить на этот вопрос, я буду очень признателен!
Я могу ответить только на часть 2, способ iptables:
Вы не объяснили нам, как пакеты из WAN-источников будут попадать на ваш сервер в первую очередь, и эта информация может потребовать редактирования этого ответа. В этом ответе предполагается, что ваш сервер имеет только одну сетевую карту и также не действует как ваш маршрутизатор, для чего потребуются 2 сетевые карты.
sudo iptables -A INPUT -i $EXTIF -m state --state NEW -p tcp -s 192.168.1.0/24 --dport 40001 -j ACCEPT
sudo iptables -A INPUT -i $EXTIF -m state --state NEW -p tcp -s 0.0.0.0/0 --dport 40001 -j DROP
Эти правила предполагают, что где-то в общем наборе правил есть предшествующее:
sudo iptables -A INPUT -i $EXTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
Где $ EXTIF
заменяется вашим именем сетевой карты. Возможно, вы действительно можете не указывать спецификацию интерфейса для этого приложения, но я не тестировал ее.