Здесь перешёл с модемного ната на бридж... Это какой-то
ад рай... Франция, Китай... Все хотят хакнуть ssh. Решил защитить сервер с NoDeny, заодно описывая шаги. Получился мини-хауту.
Мы будем собирать sshguard-ipfw, т.к. это основное, на чём работает наш с Вами биллинг. Переходим в порт с sshguard-ipfw:
cd /usr/ports/security/sshguard-ipfw
Далее поясню следующий параметр. По-умолчанию sshguard-ipfw собирается с окном для блокирующих правил в диапазоне 55000-55050. Мы "немного" понизим его до начальных правил, в стандартном файрволе у нас есть правила, разрешающие логиниться по ssh. Вот они:
${f} add 50 allow tcp from any to me 22
${f} add 51 allow tcp from me 22 to any
Как мы видим они мешают нам, т.к. подпадают под выбранный ниже диапазон (40-90). Позже мы передвинем эти правила чуть ниже. Итак устанавливаем sshguard-ipfw с окном файрвола от 40 до 90 правила:
make CONFIGURE_ARGS="--prefix=/usr/local --with-firewall=ipfw --with-ipfw-rules-range=40-90" install clean
Теперь в файле
/etc/syslog.conf раскомментируем следующую строку (её нам прописал пакет sshguard-ipfw при инсталляции где-то в начале файла):
auth.info;authpriv.info |exec /usr/local/sbin/sshguard
Перезагружаем сислог:
Теперь подробнее о механизме блокировки. Механизм прост:
запрещающие правила должны быть
перед разрешающими. Именно поэтому мы изменяем в
rc.firewall следующие строки (это бывшие 50 и 51 правила):
${f} add 92 allow tcp from any to me 22
${f} add 93 allow tcp from me 22 to any
Далее применяем изменения в файрволе, перезагружая всё с ним связанное от биллинга:
/etc/rc.d/ipfw restart
/usr/local/etc/rc.d/noserver.sh restart
/usr/local/etc/rc.d/nol2auth.sh restart
/etc/rc.d/pf restart
Берём левый компьютер и пытаемся от болды несколько раз зайти по ssh на наш биллинговый сервер. Когда перестало спрашивать пароль или авторизировать вообще, смотрим наше окно с блокировками:
Левый компьютер уже там, верно?
Дополнительная тонкая настройка под себя:
http://www.sshguard.net/docs/man/sshguard/