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[/quote]
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/urandom
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

[quote=szewczyk]Ps. a czy to dobre rozwiązanie ,tworzyć firewall z wykorzystaniem iptables ,pobierając dane z SQL ?[/quote]
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

[quote=Piotr3ks][quote=szewczyk]Ps. a czy to dobre rozwiązanie ,tworzyć firewall z wykorzystaniem iptables ,pobierając dane z SQL ?[/quote]
No jakbyś chciał sobie jeszcze jakiś webpanel dorobić to masz łatwy dostęp do danych.[/quote]
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

[quote=Jacekalex][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][/quote]
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/urandom
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

[quote=szewczyk][quote=Piotr3ks][quote=szewczyk]Ps. a czy to dobre rozwiązanie ,tworzyć firewall z wykorzystaniem iptables ,pobierając dane z SQL ?[/quote]
No jakbyś chciał sobie jeszcze jakiś webpanel dorobić to masz łatwy dostęp do danych.[/quote]
dokładnie o to mi chodzi :)[/quote]
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
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)

[ Generated in 0.013 seconds, 13 queries executed ]

Informacje debugowania

Time (s) Query
0.00017 SET CHARSET latin2
0.00007 SET NAMES latin2
0.00200 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.142.197.212' WHERE u.id=1
0.00090 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.142.197.212', 1715728247)
0.00071 SELECT * FROM punbb_online WHERE logged<1715727947
0.00079 DELETE FROM punbb_online WHERE ident='185.191.171.7'
0.00081 DELETE FROM punbb_online WHERE ident='47.128.25.173'
0.00085 SELECT topic_id FROM punbb_posts WHERE id=213409
0.00161 SELECT id FROM punbb_posts WHERE topic_id=22157 ORDER BY posted
0.00059 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=22157 AND t.moved_to IS NULL
0.00019 SELECT search_for, replace_with FROM punbb_censoring
0.00093 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=22157 ORDER BY p.id LIMIT 0,25
0.00094 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=22157
Total query time: 0.01056 s