Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2012-10-19 15:32:41

  szewczyk - Stary wyjadacz :P

szewczyk
Stary wyjadacz :P
Zarejestrowany: 2006-12-03

łączenie char w C

hej pobieram dane z Mysql w C i  chce je dodać do reguł jakie tworze dla firewall'a

Kod:

       
                char command[200] ;         
                // badhosts
                if (mysql_query(conn, "SELECT badhost_ip FROM badhosts"))
                {
                    fprintf(stderr, "%s\n", mysql_error(conn));
                    exit(-1);
                }

                //
                res = mysql_use_result(conn);
                // output fields 1 and 2 of each row
                while ((row = mysql_fetch_row(res)) != NULL)
                {
                    sprintf(command,"iptables - A INPUT -s %s  -j DROP",row[0]);
                    system(command);
                }

ale iptables wywala błąd ,po mimo prawidłoego adresu IP w bazie (10.10.10.10)
:/

Ostatnio edytowany przez szewczyk (2012-10-19 15:33:37)

Offline

 

#2  2012-10-19 15:53:02

  Lorenzo - Moderator

Lorenzo
Moderator
Zarejestrowany: 2005-12-23

Re: łączenie char w C

iptables - A INPUT

Może to wina spacji przed A?

Offline

 

#3  2012-10-20 06:01:46

  szewczyk - Stary wyjadacz :P

szewczyk
Stary wyjadacz :P
Zarejestrowany: 2006-12-03

Re: łączenie char w C

sorry ,zmęczenie materiału :)
Ps. a czy to dobre rozwiązanie ,tworzyć firewall z wykorzystaniem iptables ,pobierając dane z SQL ?

Offline

 

#4  2012-10-20 08:11:50

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: łączenie char w C

[OT]
W jakim celu chcesz pakować dane do SQLa?
Iptables sam zapisuje do pliku, może też zapisać do xmla (nie wyczaiłem, jak nazad, nie było mi to do niczego potrzebne ;) ),  natomiast listy IP lub IP/MAC lepiej pakować do ipseta.
Z ipseta też można zrzucić tablicę do konfigu - i wczytać ją z powrotem, choć jest trochę zabawy z grepem lub regexem.

Reasumując, wszystko ląduje w plikach tekstowych, co jest niezłym rozwiązaniem, bardziej odpornym na awarię takiego czy innego demona sieciowego, jak Mysql.

Jeśli natomiast koniecznie SQL, to są ciekawe moduły perla do iptables, też będzie trochę łatwiej, niż rzeźbić w C.
W dodatku jajo nie połknie więcej, niż maks 500 reguł w łańcuchu, żeby nie odbiło się to na szybkości sieci.
[/OT]

Ostatnio edytowany przez Jacekalex (2012-10-20 08:15:09)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#5  2012-10-20 09:48:16

  Piotr3ks - Też człowiek :-)

Piotr3ks
Też człowiek :-)
Skąd: Białystok
Zarejestrowany: 2007-06-24

Re: łączenie char w C

szewczyk napisał(-a):

Ps. a czy to dobre rozwiązanie ,tworzyć firewall z wykorzystaniem iptables ,pobierając dane z SQL ?

No jakbyś chciał sobie jeszcze jakiś webpanel dorobić to masz łatwy dostęp do danych.

Offline

 

#6  2012-10-23 08:36:30

  szewczyk - Stary wyjadacz :P

szewczyk
Stary wyjadacz :P
Zarejestrowany: 2006-12-03

Re: łączenie char w C

Piotr3ks napisał(-a):

szewczyk napisał(-a):

Ps. a czy to dobre rozwiązanie ,tworzyć firewall z wykorzystaniem iptables ,pobierając dane z SQL ?

No jakbyś chciał sobie jeszcze jakiś webpanel dorobić to masz łatwy dostęp do danych.

dokładnie o to mi chodzi :)

Offline

 

#7  2012-10-25 11:42:03

  szewczyk - Stary wyjadacz :P

szewczyk
Stary wyjadacz :P
Zarejestrowany: 2006-12-03

Re: łączenie char w C

Jacekalex napisał(-a):

[OT]
W dodatku jajo nie połknie więcej, niż maks 500 reguł w łańcuchu, żeby nie odbiło się to na szybkości sieci.
[/OT]

mi iptables przyjeło ok 8000 reguł na 32bit z procem 3.4ghz maszynie ? skąd ograniczenie 500 ?

Offline

 

#8  2012-10-25 11:54:52

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: łączenie char w C

Przyjąć, przyjmie, ale każde 100 reguł wydłuża czas analizowania pakietu przez FW.
W ten sposób po prostu obniżasz wydajność sieci.

Mnie się udało wrzucić do FW całą listę sblamu (wtedy ~18000 adresów) w osobnych regułach, i czas transportu pakietu TCP z dowolnego serwera wydłużył się o prawie 10 sekund.

Dobry firewall ma chronić sieć, ale nie zamulać tej sieci.
Dlatego duże zestawy reguł dotyczących adresów IP należy ładować do tablic IPseta, a w FW będzie każdą tablicę reprezentowała 1 reguła.
Jeśli natomiast masz większą liczbę reguł, to lepiej porobić osobne łańcuchy dla rożnych usług.
Jeśli natomiast pojedynczy pakiet przelatuje w firewallu przez więcej, niż 10 - 20 reguł, to administratorowi serwera potrzebny jest psychiatra. ;)

To by było na tyle
;-)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#9  2012-10-25 15:24:05

  Piotr3ks - Też człowiek :-)

Piotr3ks
Też człowiek :-)
Skąd: Białystok
Zarejestrowany: 2007-06-24

Re: łączenie char w C

szewczyk napisał(-a):

Piotr3ks napisał(-a):

szewczyk napisał(-a):

Ps. a czy to dobre rozwiązanie ,tworzyć firewall z wykorzystaniem iptables ,pobierając dane z SQL ?

No jakbyś chciał sobie jeszcze jakiś webpanel dorobić to masz łatwy dostęp do danych.

dokładnie o to mi chodzi :)

No to jedziesz z danymi w SQL. Dodatkowo na podstawie danych SQL możesz wygenerować sobie plik tekstowy z regułkami ( a tak na wszelki wypadek w razie awarii bazy ) :-)

Ostatnio edytowany przez Piotr3ks (2012-10-25 15:25:15)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)