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

Как определить, какой трафик сбрасывается / блокируется на основе журнала iptables

Я следовал примеру регистрации iptable из https://help.ubuntu.com/community/IptablesHowTo#More_detailed_Logging

sudo iptables -I INPUT 5 -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

Я получаю записи журнала, как показано ниже

Oct 20 03:45:50 hostname kernel: iptables denied: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=x.x.x.x DST=x.x.x.x LEN=1059 TOS=0x00 PREC=0x00 TTL=115 ID=31368 DF PROTO=TCP SPT=17992 DPT=80 WINDOW=16477 RES=0x00 ACK PSH URGP=0 
Oct 20 03:46:02 hostname kernel: iptables denied: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=x.x.x.x DST=x.x.x.x LEN=52 TOS=0x00 PREC=0x00 TTL=52 ID=763 DF PROTO=TCP SPT=20229 DPT=22 WINDOW=15588 RES=0x00 ACK URGP=0 
Oct 20 03:46:14 hostname kernel: iptables denied: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=x.x.x.x DST=x.x.x.x LEN=324 TOS=0x00 PREC=0x00 TTL=49 ID=64245 PROTO=TCP SPT=47237 DPT=80 WINDOW=470 RES=0x00 ACK PSH URGP=0 
Oct 20 03:46:26 hostname kernel: iptables denied: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=x.x.x.x DST=x.x.x.x LEN=52 TOS=0x00 PREC=0x00 TTL=45 ID=2010 PROTO=TCP SPT=48322 DPT=80 WINDOW=380 RES=0x00 ACK URGP=0 

Подобный журнал, приведенный выше, появляется каждые 2–3 секунды, кажется, что блокируется большой объем трафика. Но мой вопрос в том, как определить, какой трафик блокируется или отбрасывается на основе приведенных выше записей журнала?

DPT означает порт назначения? значит DPT = 22 означает, что доступ по SSH заблокирован? а DPT = 80 значит HTTP-трафик заблокирован?

Мои iptables в основном значения по умолчанию, за исключением того, что я добавил несколько дополнительных правил

-A INPUT -s z.z.z.z/32 -j DROP
-A INPUT -s y.y.y.y/32 -j DROP
-A INPUT -s a.a.a.a/32 -j DROP
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

Ни один из IP-адресов SRC в файлах журнала не относится к iptables, который специально настроен для отбрасывания всего трафика, и все же файлы журнала, показывающие другой IP-адрес с DPT = 80, DPT = 22, отбрасываются.

Что-то не так с моей конфигурацией?

Вот еще раз ваши правила:

-A INPUT -s z.z.z.z/32 -j DROP
-A INPUT -s y.y.y.y/32 -j DROP
-A INPUT -s a.a.a.a/32 -j DROP
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

Первый будет молча отбрасывать любой соответствующий ему пакет. Как и второй, и третий. К тому времени, когда вы достигнете правила «ограничения», вы уже отбросите все пакеты, соответствующие этим исходным IP-адресам. Теперь у вас есть остальной трафик. Для этого остального трафика вы будете регистрировать пять пакетов в минуту. Вы будете ошибочно регистрировать их как отклоненные, если они фактически не отклонены.

Если вместо этого вы хотите регистрировать и отбрасывать пакеты, соответствующие любому из нескольких исходных IP-адресов, самый простой способ сделать это - создать новую цепочку, которая будет регистрироваться и отбрасываться. например.:

iptables -N LOG_AND_DROP
iptables -A LOG_AND_DROP -j LOG --log-prefix "Source host denied "
iptables -A LOG_AND_DROP -j DROP

Теперь, когда у вас есть эта цепочка, вы хотите направить трафик в журнал и перейти к нему:

iptables -A INPUT -s z.z.z.z/32 -j LOG_AND_DROP
iptables -A INPUT -s y.y.y.y/32 -j LOG_AND_DROP
iptables -A INPUT -s a.a.a.a/32 -j LOG_AND_DROP

При этом любой пакет, соответствующий этим адресам источника, будет отправлен в цепочку LOG_AND_DROP. Эта цепочка, как она называется, сначала регистрирует каждый отдельный пакет, а затем отбрасывает его. Если вы предпочитаете, вы можете ограничить регистрацию, а затем отказаться от нее. Решать вам, и зависит от того, о каком трафике мы говорим.

Примечание: Убедитесь, что вы очистили существующие правила перед добавлением вышеуказанных правил. В противном случае у вас по-прежнему будет действовать вводящее в заблуждение правило: ведение журнала, но не отказ.