Nowe posty

xx Jak poprawić polecenie wyszukujące największe pliki? (3)
2021-06-13, 20:00:52
xx CUPS - Wyłączenie hostname w nazwie udostępnionej drukarki (6)
2021-06-12, 02:45:06
xx Tłumaczenie prostych programów napisanych w csh na sh (0)
2021-06-11, 16:07:52
xx Do regulaminu (0)
2021-06-07, 02:16:34
xx kompletny restore systemu (5)
2021-06-03, 11:47:08
xx Połączenie wifi, nie skanuje w poszukiwaniu sieci. (1)
2021-06-02, 22:04:54
xx problemy z instalacją (1)
2021-06-02, 14:23:26
xx Pomoc w napisaniu skryptu (11)
2021-05-31, 13:34:19
xx Instalacja php5.4 na Debian10 (2)
2021-05-31, 09:13:54
xx Wielkie firmy wymuszają dane (7)
2021-05-30, 20:25:21

Autor Wątek: iptables filtrowanie połączeń  (Przeczytany 170 razy)

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2465
  • 1709
    • Zobacz profil
iptables filtrowanie połączeń
« dnia: 2021-05-16, 22:45:48 »
Chciałbym " limitować " / ograniczyć ilość logowanych połączeń danego IP co 10 minut.
Zrobiłem sobię taką zaporę.

# iptables -S
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-A INPUT -i lo -m comment --comment Default_policy_desktop_v4 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -m comment --comment Default_policy_desktop_v4 -j ACCEPT
-A OUTPUT -m limit --limit 10/min --limit-burst 1 -j LOG --log-prefix "IPTables: "

Czyli według poradnika / dokumentacji https://www.netfilter.org/documentation/HOWTO/packet-filtering-HOWTO-7.html
Rozumiem to tak że w moim przypadku
gdy wystąpi powyżej 2 połączeń jakiegoś IP wyjściowego, wtedy na 10 min. dane połączenie nie jest logowane.

Ale u mnie to coś chyba nie działa, a prawdopodobnie źle zrozumiałem.
Bo mam tak, czyli " DST=IP_google_analitics "  powtarza się częściej niż co 10 minut.

May 16 22:34:28 user kernel: [25124.691524] IPTables: IN= OUT=eth SRC=Local_IP DST=IP_google_analitics LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=39061 DF PROTO=TCP SPT=41200 DPT=443 WINDOW=24576 RES=0x00 ACK URGP=0 
May 16 22:34:42 user kernel: [25138.835635] IPTables: IN= OUT=eth SRC=Local_IP DST=IP_google_analitics LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=39075 DF PROTO=TCP SPT=41200 DPT=443 WINDOW=24576 RES=0x00 ACK URGP=0
May 16 22:34:54 user kernel: [25151.123774] IPTables: IN= OUT=eth SRC=Local_IP DST=IP_google_analitics LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=39134 DF PROTO=TCP SPT=41200 DPT=443 WINDOW=24576 RES=0x00 ACK URGP=0
May 16 22:35:01 user kernel: [25157.874129] IPTables: IN= OUT=eth SRC=Local_IP DST=IP_google_analitics LEN=1352 TOS=0x00 PREC=0x00 TTL=64 ID=39135 DF PROTO=TCP SPT=41200 DPT=443 WINDOW=24576 RES=0x00 ACK PSH URGP=0
May 16 22:35:11 user kernel: [25168.212019] IPTables: IN= OUT=eth SRC=Local_IP DST=IP_google_analitics LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=39213 DF PROTO=TCP SPT=41200 DPT=443 WINDOW=24576 RES=0x00 ACK URGP=0
May 16 22:35:22 user kernel: [25178.452091] IPTables: IN= OUT=eth SRC=Local_IP DST=IP_google_analitics LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=39214 DF PROTO=TCP SPT=41200 DPT=443 WINDOW=24576 RES=0x00 ACK URGP=0

Testuję na Linux Mint.
« Ostatnia zmiana: 2021-05-16, 22:56:41 wysłana przez 1709 »
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2465
  • 1709
    • Zobacz profil
Odp: iptables filtrowanie połączeń
« Odpowiedź #1 dnia: 2021-05-25, 10:54:31 »
Chyba rozwiązałem problem

iptables -N CHAINFILTR
iptables -A OUTPUT -m conntrack --ctstate NEW -j CHAINFILTR
iptables -A CHAINFILTR -m recent --set --name FILTRNOWY --mask 255.255.255.255 --rdest
iptables -A CHAINFILTR -m recent ! --rcheck --seconds 60 --hitcount 2 --name FILTRNOWY --mask 255.255.255.255 --rdest -j LOG --log-prefix "iptables "

Dla mnie trochę dziwnie działa, ale lepsze to niż nic.

W praktyce to działa tak.
Jeżeli jedną pewną stronę odwiedzam częściej niż co minutę,
    Wtedy tylko jedno nowe połączenie będzie zanotowane w logu / w dzienniku systemowym.
    Natomiast pozostałe nowe połączenia do tej samej strony nie  będą zanotowane w logu / w dzienniku systemowym,
    nawet gdyby trwały ponad godzinę.
Jeżeli robię sobie większe przerwy powyżej 1 minuty przy odwiedzaniu strony internetowej,
    to każde nowe połączenie do tej strony  będzie odnotowane w logu.


PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.