Somewhere there out there, мимо - эти опции либо позволят соединиться откуда угодно, либо не позволят соединиться
Выбрать, с каких айпи можно соединяться, не получится, если только наружный адрес и внутрисетевой не разные - а я нутром чую, что у юзера PPPOE aka VPN, и внешний адрес так же и внутрисетевой.
Ну да. И по английски я читать не умею.

AllowUsers как раз позволяет прямо конкретный ip указать, или только несколько штук. Там можно применять 'PATTERNS', символы '*' и '?'. Из ранее упомянутого мана ссылка про них на
man 5 ssh_config | grep "PATTERNS$" -A 30
Как в адресах, так и в именах юзера. И это будут те только, которым с которых разрешено входить. Кроме того, есть аналогичная 'deny' опция, но она менее интересна, по смыслу.
ListenAddress - конкретный IP адрес, конкретного сетевого и-фейса. И ифейс этот может быть виртуальным. Если прописать, то другие ифейсы она слушать не будет. Не забывая, что 0.0.0.0 означает любой адрес.
Обе опции эти можно задавать несколько раз с разными значениями. Если ифейсов или/и юзеров много.
Насчёт фаервола - надо бы дополнить указанием не только диапазона адресов, но и из какого ифейса могут появляться пакеты с _этими_ адресами. Что бы вдруг от соседа через наружную сетевушку не начали приходить пакеты с адресами какие должны быть только позади внутренней сетевушки. Но это...

Вспоминается анек про Неуловимого Джо: до сих пор в степи встретить можно, не поймали, т.к. ненужен никому.

Хороший стиль защиту ставить не только фаерволом, но и настройками самой программы. Кроме других способов. Неизвестно что именно из запущенных процессов может "сдохнуть", открыв доступ снаружи, и как долго это будет не замечено хозяином. Но снова вспоминаю по Джо.