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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
hej pobieram dane z Mysql w C i chce je dodać do reguł jakie tworze dla firewall'a
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
iptables - A INPUT[/quote]
Może to wina spacji przed A?
Offline
sorry ,zmęczenie materiału :)
Ps. a czy to dobre rozwiązanie ,tworzyć firewall z wykorzystaniem iptables ,pobierając dane z SQL ?
Offline
[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)
Offline
[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
[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
[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
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
;-)
Offline
[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
Time (s) | Query |
---|---|
0.00016 | SET CHARSET latin2 |
0.00005 | SET NAMES latin2 |
0.00118 | 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.145.9.80' WHERE u.id=1 |
0.00069 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.145.9.80', 1733365105) |
0.00058 | SELECT * FROM punbb_online WHERE logged<1733364805 |
0.00073 | SELECT topic_id FROM punbb_posts WHERE id=213009 |
0.00007 | SELECT id FROM punbb_posts WHERE topic_id=22157 ORDER BY posted |
0.00061 | 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.00010 | SELECT search_for, replace_with FROM punbb_censoring |
0.00122 | 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.00089 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=22157 |
Total query time: 0.00628 s |