1 / 17

LibFw : Bibliotec ă generic ă pentru firewall- uri

LibFw : Bibliotec ă generic ă pentru firewall- uri. Autori : Alexandra Andronescu Email : a lex.andronescu@gmail.com Coordonator : As. Ing . R ă zvan Deaconescu. Descrierea contextului. securit atea datelor şi calculatoarelor î n Internet

shawn
Download Presentation

LibFw : Bibliotec ă generic ă pentru firewall- uri

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. LibFw: Bibliotecă genericăpentru firewall-uri Autori: Alexandra Andronescu Email: alex.andronescu@gmail.com Coordonator: As. Ing. RăzvanDeaconescu

  2. LibFw: Bibliotecă generică pentru firewall-uri Descrierea contextului • securitatea datelor şi calculatoarelor în Internet • firewall-urile şi rolul lor în prevenirea atacurilor • implementarea firewall-urilor şi bibliotecile disponibile pe platformediferite

  3. LibFw: Bibliotecă generică pentru firewall-uri API pentru Firewall peLinux: libiptc • utilizat deiptables,bazat pe netfilter • tabele: nat, mangle, filter • lanţuri: input, output, forwarding • target-uri: accept, drop • funcţii: iptc_first_chain, iptc_next_chain, iptc_create_chain, iptc_insert_entry, iptc_first_rule, iptc_next_rule • structuri: iptc_handle_t, in_addr, ipt_ip, ipt_entry, iptables_match, ipt_entry_target

  4. LibFw: Bibliotecă generică pentru firewall-uri API pentru Firewall pe Windows: WFP • WFP Windows Filtering Platform • filtrare: componenta Filtering Engine • NAT: callout-uri ce utilizează funcţiile unui modul kernel • concepte: SubLayers, Filters, Callouts • funcţii: FwpmEngineOpen0, FwpmSubLayerAdd0, FwpmFilterAdd0, FwpmEngineClose0, FwpmFilterDeleteById0 • structuri: FWPM_FILTER0, FWPM_SUBLAYER0, FWPM_FILTER_CONDITION0, FWP_RANGE0

  5. LibFw: Bibliotecă generică pentru firewall-uri API pentru Firewall peOpenBSD: pf • Packet Filter,oferă şi NAT • interfaţa ioctl: functionalităţi oferite de un modul kernel • tichete pentru sesiuni (apeluri ioctl conectate între ele) • tabele: număr mare de adrese • tipuri: filtrare, NAT • acţiuni:block, pass • comenzi: DIOCSTART, DIOCADDADDR, DIOCADDRULE, DIOCGETRULES, DIOCCHANGERULE • structuri: struct pfioc_rule, struct pfioc_table, struct pfioc_rule, struct pfioc_ruleset

  6. LibFw: Bibliotecă generică pentru firewall-uri API-uri native: probleme • nu sunt portabile: nu pot fi folosite decât pe SO-ul nativ • API-uri greoaie şi dificil de utilizat • diferenţe între API-urile SO-urilor diferite: între concepte, funcţii, structuri • documentaţie sumară şi incompletă

  7. LibFw: Bibliotecă generică pentru firewall-uri Scopulproiectului • bibliotecă pentru filtrare şi NAT pentru dezvoltarea firewall-urilor • portabilitate: utilizare pe Linux, Windows, OpenBDS • API intuitiv şi simplu de utilizat • ascunde funcţiile şi structurile API-urilor native • funcţii şi structuri bine documentate • adresat exclusiv dezvoltatorilor de firewall-uri

  8. LibFw: Bibliotecă generică pentru firewall-uri Interfaţa comună: soluţie (1) Firewall Application Linux Firewall Application (iptables) Windows Firewall Application OpenBSD Firewall Application (pfctl) Generic LibFw API Firewall Applications Firewall APIs libiptc API WFP API PF iocl API User Space Kernel Space Linux Kernel Windows Kernel OpenBSD Kernel

  9. LibFw: Bibliotecă generică pentru firewall-uri Interfaţa comună: soluţie (2) • tip regulă • filtrare de pachete • translatare de adrese:SNAT sau DNAT • acţiuni • acceptare pachet: PASS • filtrare pachet: DROP • direcţii pachet • destinate maşinii: INPUT • generate de maşină: OUTPUT • în trecere: FORWARD • filtre: adresa IP, interfaţă, portsursă sau destinaţie, protocol • politica implicită: filtrare, pass, input

  10. LibFw: Bibliotecă generică pentru firewall-uri Interfaţa comună: diferenţe între API-uri LINUX WINDOWS OPEN BSD GENERIC entry chain (FORWARD/INPUT/ OUTPUT) tables (FILTER/NAT/ MANGLE/RAW) filter layer key (INBOUND/ OUTBOUND/ IPFWORWARD) filter/callouts rule direction (PF_INOUT/PF_IN/ PF_OUT) rulesets rule direction (DIR_INPUT/DIR_OUTPUT/DIR_FORWARD) type (RULE_TYPE_FILTER/RULE_TYPE_NAT) action (ACTION_PASS/ACTION_DROP) target (DNAT/SNAT/NULL) SubLayers Callouts address tables anchors LibFw libiptc WFP Packet Filter

  11. LibFw: Bibliotecă generică pentru firewall-uri Interfaţa comună : structuri structfw_handle; /* handle abstraction */ structfw_machine { /* machine abstraction */ structin_addrip; structin_addr mask; int port[1]; char itf[64]; }; structfw_nat { /* nat translation IPs and ports */ intnat_type; /* NAT_TYPE_SNAT/NAT_TYPE_DNAT */ structin_addrip[1]; /* IP range for NAT */ int port[1]; /* port range for NAT */ }; structfw_rule { /* rule abstraction */ structfw_machine* src; /* source machine */ structfw_machine* dst; /* destination machine */ int protocol; /* IPPROTO_TCP/IPPROTO_UDP */ intip_flags; /* IP flags: TTL,TOS */ inttcp_flags; /* SYN/ACK/FIN/URG/PSH/RST */ int action; /* ACTION_PASS/ACTION_DROP */ int direction; /* DIR_INPUT/DIR_OUTPUT/DIR_FORWARD */ int type; /* RULE_TYPE_FILTER/RULE_TYPE_NAT */ structfw_nat* nat_info; };

  12. LibFw: Bibliotecă generică pentru firewall-uri Interfaţa comună : funcţii de bază /* obtain the handler and initialise resources */ structfw_handle* fw_init(int type); /* free the resources */ intfw_exit(structfw_handle*); /* add preset rule */ intfw_add_rule (structfw_handle*, structfw_rule); /* delete rule from specified index */ intfw_del_rule (structfw_handle*, int index, int direction); /* edit rule from specified index */ intfw_edit_rule (structfw_handle*, int index, structfw_rule); /* list rules from specified direction or all the rules */ intfw_list_rules (structfw_handle*, int direction, structfw_rule***, int* fw_nr_rules); intfw_list_all_rules (structfw_handle*, structfw_rule***, int* fw_nr_rules); /* flush rules from specified direction or all the rules */ intfw_clear_rules (structfw_handle*, int direction); intfw_clear_all_rules (structfw_handle*);

  13. LibFw: Bibliotecă generică pentru firewall-uri Interfaţa comună: funcţii şi structuri utilizate fw_clear_all_rules fw_clear_all_rules fw_clear_all_rules hjkh LIBFW LIBRARY fw_clear_all_rules fw_clear_all_rules fw_clear_all_rules fw_clear_all_rules fw_clear_all_rules fw_clear_all_rules fw_machine fw_rule fw_nat fw_handle Iptc_init Iptc_append_entry Iptc_delete_num_entry Iptc_strerror Iptc_commit Iptc_replace_entry Iptc_first_chain Iptc_first_rule Iptc_flush_entries Ipt_entry Ipt_entry_match Ipt_tcp Ipt_standard_match Ipt_standard_target Ipt_entry_target Ipt_nat_multi_range IOCTL interface DIOCXBEGIN DIOCBEGINADDRS DIOCADDRULE DIOCXCOMMIT DIOCGETRULES DIOCADDADDR DIOCCHANGERULE DIOCGETADDRS DIOCGETADDR DIOCGETRULES pf_pooladdr pfioc_pooladdr pfioc_rule pf_status pfioc_trans_e FwpmEngineOpen0 FwpmSubLayerAdd0 FwpmSubLayerDeleteByKey0 FwpmFilterDeleteById0 FwpmEngineClose0 FwpmFilterAdd0 FwpmFilterCreateEnumHandle0 FwpmFilterEnum0 FwpmFilterDestroyEnumHandle0 FWPM_SUBLAYER0 FWPM_FILTER0 FWPM_FILTER_CONDITION0 FWP_V4_ADDR_AND_MASK FWP_RANGE0 FWPM_FILTER_ENUM_TEMPLATE0 WI NDOWS LINUX OPEN BSD

  14. LibFw: Bibliotecă generică pentru firewall-uri Exemplu : adăugare regulăfiltrare struct fw_handle* handle = NULL; struct fw_rule rule; handle = fw_init(RULE_TYPE_FILTER); rule.protocol = IPPROTO_TCP; rule.action = ACTION_DROP; rule.direction = DIR_INPUT; rule.type = RULE_TYPE_FILTER; rule.src = malloc(sizeof(struct fw_machine)); rule.src->ip.s_addr = inet_addr("132.42.34.2"); rule.src->mask.s_addr = inet_addr("255.255.255.0"); rule.src->port[0] = rule.src->port[1] = -1; rule.dst = malloc(sizeof(struct fw_machine)); rule.dst->ip.s_addr = inet_addr("192.170.16.10"); rule.dst->mask.s_addr = inet_addr("255.255.255.0"); rule.dst->port[0] = 0; rule.dst->port[1] = 100; fw_add_rule (handle, rule); Filtrare pachete TCPdestinate maşinii 192.170.16.10/24 ce vin de la sursa 132.42.43.2/24 pe porturile 0-100

  15. LibFw: Bibliotecă generică pentru firewall-uri Concluzii şi dezvoltări ulterioare • LibFw oferă filtrare şi NAT • API uşor de utilizat şi intuitiv • API documentat • extinderi posibile: • modificare headere pachete (mangling) • însemnare locală pachete (tagging) • jurnalizare informaţii pachete • memorare stare conexiune (pentru firewall stateful)

  16. LibFw: Bibliotecă generică pentru firewall-uri Detalii despre proiect • codul sursă – repository svn • http://koala.cs.pub.ro/projects/libfw/browser • documentaţia • http://koala.cs.pub.ro/projects/libfw/browser/trunk/documente • referinţe şi detalii pe wiki • http://koala.cs.pub.ro/projects/libfw/wiki

  17. LibFw: Bibliotecă generică pentru firewall-uri Întrebări

More Related