LINUX.ORG.RU

Сообщения pesvodev

 

Нелегитимный трафик на пул nat адресов в iptables

Форум — Admin

Приветствую! Недавно начал тестировать nat на iptables + ipt_ratelimit + ipt_netflow

Столкнулся, что на вх. интерфейс WAN=«ens1f0.49», который смотрит в интернет прилетают пакеты длинной 0 либо 40B на адреса из пула nat /25 подсети, которые пока что никто из клиентов за локальными адресами не использует, пока что тестируется один клиент из локальной сети и у него другой нат адрес, но интересно можно ли как-то это дропать такие пакеты. В этих пакетах всегда прилетает с флагом tcp S, это никак не влияет на работу доступа в интернет либо самого сервера, но засоряет netflow данные на коллекторе такими пакетами по 40B.

вот немного данных с tcpdump, первые 3 октета нат адрес скрыл xx, но по последним октетам видно, что постоянно идут запросы на нат адреса из пула, которые пока что не используются.

tcpdump -i ens1f0.49

09:00:28.547428 IP 109.205.213.119.46059 > xx.xx.xx.14.12782: Flags [S], seq 3754013231, win 1024, length 0
09:00:28.548055 IP 109.205.213.119.46059 > xx.xx.xx.21.12782: Flags [S], seq 641338050, win 1024, length 0
09:00:28.549743 IP 109.205.213.119.46059 > xx.xx.xx.62.53939: Flags [S], seq 2865560167, win 1024, length 0
09:00:28.550030 IP 109.205.213.119.46059 > xx.xx.xx.35.18270: Flags [S], seq 1831743602, win 1024, length 0
09:00:28.559638 IP 109.205.213.119.46059 > xx.xx.xx.11.57520: Flags [S], seq 825489323, win 1024, length 0
09:00:28.560243 IP 109.205.213.119.46059 > xx.xx.xx.23.42387: Flags [S], seq 2859244899, win 1024, length 0
09:00:28.565678 IP 109.205.213.119.46059 > xx.xx.xx.76.39524: Flags [S], seq 2156982538, win 1024, length 0
09:00:28.577719 IP 109.205.213.119.46059 > xx.xx.xx.73.41118: Flags [S], seq 738077019, win 1024, length 0
09:17:54.119843 IP 109.205.213.90.51638 > xx.xx.xx.38.58368: Flags [S], seq 4016141653, win 1024, length 0
09:30:39.602596 IP 198.235.24.113.50961 > xx.xx.xx.36.2323: Flags [S], seq 2040150752, win 1024, options [mss 1460], length 0

Вот сами правила iptables

#!/bin/bash

# Задаем переменные
IPT="/sbin/iptables"
WAN="ens1f0.49"
LAN="ens1f0.13"
gray_nets="10.12.0.0/16"
our_ips="10.0.0.0/8,172.16.0.0/12,xx.xx.xx.0/19"
nat_ips="xx.xx.xx.0-xx.xx.xx.128"

echo "1" > /proc/sys/net/ipv4/ip_forward

# Clear all

$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t mangle -P PREROUTING ACCEPT
$IPT -t mangle -P OUTPUT ACCEPT
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

# NETFLOW START

$IPT -I FORWARD -j NETFLOW
$IPT -I INPUT -j NETFLOW
$IPT -I OUTPUT -j NETFLOW

echo "16777216" > /proc/sys/net/netflow/hashsize
echo "5000000" > /proc/sys/net/netflow/maxflows
echo "16777216" > /proc/sys/net/netflow/sndbuf

# DROP ALL

$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT

## START ##

# ----------------------------------------------------------------------

# INPUT CHAIN 

# Filter lo
$IPT -A INPUT -i lo -j ACCEPT

$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -m state --state INVALID -j DROP

# Limits
$IPT -A INPUT -p tcp --syn -m connlimit --connlimit-above 1000 -j DROP
$IPT -A OUTPUT -s $gray_nets -p icmp -m connlimit --connlimit-above 100 -j DROP
$IPT -A OUTPUT -s $gray_nets -p tcp -m connlimit --connlimit-above 1000 -j DROP

# Permit to me from  our nets
$IPT -A INPUT -s $our_ips -j ACCEPT

# Deny wrong traffic 

$IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
$IPT -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP

# ----------------------------------------------------------------------

# FORWARD CHAIN

# Speed policing 

$IPT -A FORWARD -m ratelimit --ratelimit-set speed_out --ratelimit-mode src -j DROP
$IPT -A FORWARD -m ratelimit --ratelimit-set speed_in --ratelimit-mode dst -j DROP

# States 

$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -m state --state INVALID -j DROP

# Forward outgoing traffic for gray_nets

$IPT -A FORWARD -o $WAN -s $gray_nets -j ACCEPT

# ----------------------------------------------------------------------

# OUTPUT CHAIN

# Filter out lo

$IPT -A OUTPUT -o lo -j ACCEPT

$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# ----------------------------------------------------------------------

# POSTROUTING CHAIN

# Rules for SNAT
$IPT -t nat -A POSTROUTING -o $WAN -s $gray_nets -j SNAT --to-source $nat_ips --persistent

## END FOR IPTABLES ##

Может надо что то в цепочке input или forawrd прописать для правила тсп пакетов с флагом syn?

пробовал в цепочке input написать -p tcp –tcp-flags SYN,ACK,FIN,RST SYN -j DROP , но он дропает такие пакеты непосредственно на сам адрес нат сервера, но не на адреса из нат пула.

 ,

pesvodev
()

sfcapd+nfdump и nexus 3000

Форум — Admin

На nexuse 3000 вкл sflow

sflow sampling-rate : 5000

sflow max-sampled-size : 200 sflow counter-poll-interval : 60 sflow max-datagram-size : 1522 sflow collector-ip : , vrf : default sflow collector-port : 9991 sflow agent-ip :

sflow data-source interface Ethernet1/6 sflow data-source interface Ethernet1/30 sflow data-source interface Ethernet1/31

sfcapd получает данные

ключи запуска: sfcapd -z -t 60 -w -D -T all -l /var/flows/ -I any -S 1 -p 9991 -e 10

при просмотре через nfdump все ок, но почему то AS 0 во вх и исх трафике, хотя нексус поддерживает несколько аплиноков с другими провайдерами.

В чем может быть причина, того что по sflow не передается as number?

при запуске sfcapd также включены: Add extension: 2 byte src/dst AS number Add extension: 4 byte src/dst AS number Add extension: dst tos, direction, src/dst mask Add extension: IPv4 next hop Add extension: IPv6 next hop Add extension: IPv4 BGP next IP Add extension: IPv6 BGP next IP

Вот вывод nfdump:

nfdump -r nfcapd.202108241136 -s srcas

Src AS 0

 , ,

pesvodev
()

RSS подписка на новые темы