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

вопрос iptables

В настоящее время я подвергаюсь атаке SSH.
Атака очень странная по своей природе, злоумышленник использует ботнет компьютеров и использует их как отдельные попытки входа в систему (см. Фрагмент журнала):
11 декабря 08:30:51 rhea sshd [16267]: недействительный пользователь maureen из 78.43.82.153
11 декабря 08:35:24 rhea sshd [20012]: недействительный пользователь maurizio из 201.244.188.202
11 декабря 08:44:46 rhea sshd [27711]: недопустимый максимум пользователя от 211.140.12.46
11 декабря 08:49:10 rhea sshd [31383]: недопустимый макс пользователя из 190.144.47.82
11 декабря 08:58:19 rhea sshd [6659]: недопустимый макс пользователя из 69.250.227.138
11 декабря 09:07:28 rhea sshd [14249]: недействительный пользовательский максимум от 93.63.231.55
11 декабря, 09:12:03 rhea sshd [18127]: недействительный пользователь maximus от 79.188.240.210

Я готов отфильтровать весь доступ к порту 22 (т.е. разрешить подключаться только по указанным мной IP-адресам), а также то, что я сделал пару дней назад (заблокировал все подключения к порту 22, но от себя). Что я хочу сделать, так это зарегистрировать ВСЕ соединения, для которых нет правила принятия, для регистрации и удаления - таким образом я могу отслеживать все компьютеры в боте, не давая им возможность попытаться войти в систему.

У меня что-то вроде этого:
-A ВВОД -s my.addr (s) -j ПРИНЯТЬ
-A ВХОД -p tcp -m tcp --dport 22 -j DROP

Обновить
Я добавил это в свои iptables:
[0: 0] -A INPUT -m limit --limit 5 / min -p tcp -m tcp --dport 22 -j LOG --log-level 4 --log-prefix "** DoS **"
и использовал
http://www.cyberciti.biz/tips/force-iptables-to-log-messages-to-a-different-log-file.html
Однако, чтобы настроить отдельный файл, я могу видеть только зарегистрированные данные в dmesg.

Редактировать:
Ты только нужно правило журнала между правилами принятия и удалениясм. следующий пример отправки их в системный журнал. http://www.cyberciti.biz/tips/force-iptables-to-log-messages-to-a-different-log-file.html.

Это работает, потому что журнал отличается тем, что он является «неизменяемой целью», т.е. обход правила продолжается со следующего правила. --Из man iptables'. Итак, в отличие от других ваших правил, проверка на соответствие правилам не приведет к короткому замыканию при достижении совпадения.

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

Из прошлого (неверно прочитанный вопрос):
Вы можете захотеть fail2ban, делает это за вас автоматически ... целая куча других вариантов для этого поста: Сотни неудачных попыток входа по SSH.

Однако, чтобы настроить отдельный файл, я могу видеть только зарегистрированные данные в dmesg.

Сообщения от netfilter подсистема регистрируется через механизм ведения журнала Kenerl. Это отображается в выводе dmesg, а также обычно попадает в системный журнал через службы klogd.

Если ты бежишь rsyslog или syslog-ng, они обычно читают данные журнала ядра изначально.

Сообщения отображаются в системном журнале с помощью средства kern, поэтому в традиционном файле syslog.conf вы можете сделать что-то вроде:

kern.* /var/log/kernel-messages

(Но обратите внимание, что вы получите все сообщения ядра, а не только netfilter).

И rsyslog, и syslog-ng предоставляют средства сопоставления с образцом, чтобы дать вам более детальный контроль над тем, куда отправляются сообщения журнала.

Вы хотите Ulogd который позволяет вам регистрировать совпадающие пакеты iptables в указанном пользователем файле.

После установки ulogd отредактируйте /etc/ulogd.conf файл и раскомментируйте строку: plugin="/usr/lib/ulogd/ulogd_LOGEMU.so"

В разделе [LOGEMU] вы увидите file="/var/log/ulogd.pktlog"

Здесь будут находиться ваши журналы iptables. Предлагаю вам также добавить этот файл в logrotate если у вас это установлено, то журналы могут быстро стать большими, даже с ограничениями.

Как только ulogd будет полностью настроен, замените это правило:

-A INPUT -m limit --limit 5/min -p tcp -m tcp --dport 22 -j LOG --log-level 4 --log-prefix "** DoS **"

С этим правилом:

-A INPUT -m limit --limit 5/min -p tcp -m tcp --dport 22 -j ULOG --ulog-prefix "** DoS **"

Также стоит отметить, что ulogd позволяет записывать пакеты в такие базы данных, как MySQL, PostgreSQL и SQLite.