ved hjælp af selinux og iptables sammen

, en af de ting, jeg har lyst til at gøre med selinux i mange år, er at finde ud af en måde at gøre selinux og iptables arbejde sammen, men hver gang jeg kiggede på det, min brug tilfælde blev alt for kompliceret.james morris og paul moore arbejdet på et instrument kaldet secmark tilbage i rød hat enterprise linux (rhel) 5 tidsramme.min enkle gennemførelse af secmark er at anvende iptables regler at definere etiketter på pakkerne, som de strømme inden for en selinux system.,, secmark har været brugt i år på flere plan sikkerhed (mls) type miljøer, men stort set ignoreret i målrettede politik.på en mls - systemet, sikkerhedsetiket af pakken er vigtigere, end at den type mærkning.du må forhindre en proces i gang, som â &euro œ uklassificeret â &euro i a â &euro œ tophemmelige â &euro pakke.,, note: denne artikel, ikke, om mærket netværk.(etiketter pakker passerer mellem maskiner over nettet). i en målrettet system, vi ikke bruger normalt niveau, så ville jeg bruge type håndhævelse, hvilket betyder, at de processer, der kan sende /recv pakker baseret på den type af processen og den type af pakken.secmark tillader dig at skrive reglerne mærket pakker, der kommer i havn, 80, der tillader, at du skriver en artikel, der gør det muligt for en proces, som httpd_t sende /recv pakker med httpd_packet_t. men hvad med firefox, blæksprutte, osv.?min frygt for at dømme pakker var en eksplosion af pakker vil skabe meget kompliceret politik.den til det yderste, kan du ende med pakke former for hver havn, httpd_packet_t, bind_packet_t, dns_packet_t...eller endnu værre, en form for hver port_types og net tilsammen.httpd_internet_packet_t versus httpd_intranet_packet_t, eller httpd_eth0_packet_t og httpd_eth1_packet_t., som du kan se, det ville hurtigt blive forvirrende.og skrive politik ville blive umuligt for udlodninger.,, unlabeled_t pakke type, som i øjeblikket, uden at vi ikke mærke nogen pakker i politik, så den kerne mærker disse pakker, som unlabeled_t. på grund af det hver selinux område på det system, der er baseret på nettet, er de regler, mydomain unlabed_t, tillade:: pakke (sende recv};,,, det betyder, at hvis du brugte secmark til mærket pakker, og så tager du den fyr mur ned, kernen ville begynde at dømme alle pakker, som unlabeled_t. alle område pludselig ville få adgang.det betyder, at din firewall eller ved at lade deres firewall, så ville du ikke kun tillader havne til angreb udefra, vil du sænke din selinux beskyttelse, potentielt at begrænset områder til at begynde at sende /recv pakker fra upålideligt net.,, at unlabeled_t regler i den seneste hat frigiver jeg tilføjede et modul til unlabelednet indeholder alle de regler, som gør det muligt for mydomain unlabeled_t: pakke (sende recv}.hvis du deaktivere den politiske pakke, begrænset områder vil miste evnen til at sende /recv unlabeled_t pakker.jeg vil være tilbage ind i rhel6.det betyder, at du kan stoppe begrænset områder fra brug af nettet, medmindre du skriver reglerne for en mærket pakke.,,,, som jeg nævnte ovenfor, hver gang jeg kiggede ind i dette problem, jeg endte med en eksplosion af typer.jeg kom på et par af de tilfælde, hvor jeg kunne skrive nogle enkle regler og politikker for at sikre min bærbare.jeg ville skrive politik for at forhindre alle begrænset domæner, der er startet på boot (system områder) fra at tale med de eksterne net, og gøre det muligt for alle områder af min adgangskode proces (bruger områder) til at tale med både de interne og eksterne netværk.tanken er her, jeg ønsker ikke processer, som avahi, eller sssd, eller sshd eller enhver anden proces, der er påbegyndt på boot at lytte eller påvirket af pakker fra et upålideligt netværk.jeg vil have processer begyndte med min adgangskode, som firefox eller min vpn - være i stand til at tale med nettet.hvis min vpn - er lukket system områder er af nettet, mens jeg stadig kan bruge internettet til at søge og e - mail -.,, det gode ved dette eksempel er, at du kunne bruge den til at fælde en apache - server, som kun kunne tale til det interne netværk og ville forkaste pakker fra eksterne netværk.,, jeg besluttet at oprette tre former for mit netværk.jeg vil forklare selinux politik senere i artiklen.,,, - internal_packet_t,: iptables vil mærke alle pakker, der har oprindelse i eller er bestemt til det interne netværk, som internal_packet_t;,,, - dns_external_packet_t,: iptables vil mærke alle pakker bestemt til eksterne net på udp /tcp port 53, som dns_external_packet_t. jeg har tilføjet denne - fordi jeg ville dontaudit visse begrænsede områder, taler til dns servere eksterne til min private net.,,, - external_packet_t, vil være misligholdelse etiket for alle pakker på maskinen ikke er omfattet af de to første definitioner af secmarkgen.,,,, jeg er ikke iptables ekspert.kalder du mig et iptables nybegynder ville være venlig.så jeg bad eric paris til at skrive et eksempel på, hvordan man kan skrive iptables regler til at anvende mærket til en pakke.jeg tog hans regler og skabt en hjælper, shell manuskript kaldet secmarkgen, du kan enten bruge min secmarkgen manuskript at skabe iptables regler eller skabe dem.,,, secmarkgen - h, vil vise dig anvendelse:,,, brug:. /secmarkgen - jeg brug:. /secmarkgen - navn anvendelse:. /secmarkgen - t iptablescmd - p - protokollen - p havn [...] - n - nettet [...] - t selinux_type - m mcs navn anvendelse:. /secmarkgen - f navn,,,,,, du skal skrive regler for at aktivere secmark etiketter.,,,. /secmarkgen - jeg,,, du skal navngive din net.(iptables kæde),,,. /secmarkgen - interne, og nu kan du tilføje en eller flere regler om det opkaldte net.,,,. /secmarkgen - n 255.255.255.255127 /8, 10.0.0.0/8172.16.0.0/16224/24192.168/16 indre,,, og nu vil du gøre det secmark regler ved at tildele en pakke - etiket til nettet.,,. /secmarkgen - f - t internal_packet_t indre,,, og' s manuskriptet gav følgende iptables regler:,,, ################################################################### #. /secmarkgen - jeg ################################################################### iptables - f - t - t - sikkerhed - sikkerhed iptables en input - m - stat, der er etableret i - j connsecmark... genoprette iptables - t - sikkerhed - en -tput - m - stat, der er etableret i - j connsecmark - genoprette ################################################################### #. /secmarkgen - interne ################################################################### iptables - t - x indre 2 > /dev /for iptables - t - n indre ################################################################### #. /secmarkgen - n 255.255.255.255127 /8, 10.0.0.0/8172.16.0.0/16224/24192.168/16 indre ################################################################### iptables - output - t sikkerhed - d 255.255.255.255127 /8, 10.0.0.0/8172.16.0.0/16224/24192.168/16 - j indre iptables - en input - t - e 255.255.255.255127 /8,10.0.0.0 /8,172.16.0.0/16224/24192.168/16 - j indre ################################################################### #. /secmarkgen - f - t internal_packet_t indre ################################################################### iptables - t - sikkerhed - en indre - j secmark... selctx system_u: object_r: internal_packet_t: s0 iptables - t - sikkerhed - en indre - j connsecmark... redde iptables - t - sikkerhed - en indre - j acceptere,,, jeg vil lade det op til læserne til at undersøge og forstå iptables regler.- jeg har altid elsket den betjent, da jeg gik i skole.), secmark_test manuskript, her er min fulde secmark manuskript (, secmark_test. sh,), som jeg bruger til at skabe regler for at begrænse mit netværk:,,,. /secmarkgen - jeg. /secmarkgen - indre. /secmarkgen - n 255.255.255.255127 /8, 10.0.0.0/8172.16.0.0/16224/24192.168/16 indre. /secmarkgen - f - t internal_packet_t indre. /secmarkgen - s dns. /secmarkgen udp - p - p - p - 53 dns. /secmarkgen tcp - p. 53 dns. /secmarkgen - f - t dns_external_packet_t dns. /secmarkgen - s. /secmarkgen eksterne. /secmarkgen - f - t external_packet_t eksterne. /secmarkgen - t ip6tables - jeg. /secmarkgen - t ip6tables - indre. /secmarkgen - t ip6tables - n fec0: ///////10: 1 /128 ff.:::: fe80 /8 /10, fc00: /7 indre. /secmarkgen - t ip6tables - f - t internal_packet_t indre. /secmarkgen - t ip6tables - s. /secmarkgen - t ip6tables eksterne. /secmarkgen - t ip6tables - f - t external_packet_t eksterne,,, jeg skaber iptables regler:,,, #. /secmark_test.sh > /tmp /regler,,, problemet er, jeg kan ikke indsætte reglerne endnu.da jeg ikke har skrevet det selinux politik at definere * _packet_t pakke former, iptables regler vil være i stand til at installere.hvis du prøvede at installere disse regler, vil du se en dmesg output siger kernen ikke ved, hvad en internal_packet_t type er.,, selinux politik, her er den politik, som jeg bruger, kaldet, secmark.te:,,, policy_module (secmark, 1, 0) gen_require (attribut område; attribut sysadm_usertype&#områder; at personalet bruger kan overgangen til attribut staff_usertype; attribut telepathy_domain; type ping_t; type vpnc_t; type ssh_t; type nsplugin_t; type mozilla_plugin_t;&#system domæner, der ønsker at tale for den eksterne net type ntpd_t; type sssd_t; ')&#type definitioner attribut external_packet; type internal_packet_t; corenet_packet (internal_packet_t) type dns_external_packet_t, external_packet; corenet_packet (dns_external_packet_t) type external_packet_t, external_packet; corenet_packet (external_packet_t)&#tillader forretningsordenen tillader område internal_packet_t: pakke (recv sende} lade sysadm_usertype external_packet: pakke (recv sende} lade staff_usertype external_packet: pakke (recv sende} lade vpnc_t external_packet: pakke (recv sende} lade ssh_t external_packet: pakke (recv sende} lade mozilla_plugin_t external_packet: pakke (recv sende} lade nsplugin_t external_packet: pakke (recv sende} lade telepathy_domain external_packet: pakke (recv sende} lade ping_t external_packet: pakke (recv sende} lade ntpd_t external_packet: pakke (recvsend}; dontaudit sssd_t dns_external_packet_t: pakke (recv sende};,,, lad os se på politikken tættere sammen.for det første ',,, policy_module (secmark, 1, 0),,,, det fastlægger politikken modul.det næste vi tilføje krav:,,,, gen_require (attribut område; attribut sysadm_usertype;&#områder, at personalet bruger kan overgangen til attribut staff_usertype; attribut telepathy_domain; type ping_t; type vpnc_t; type ssh_t; type nsplugin_t; type mozilla_plugin_t;&#system domæner, der ønsker at tale for den eksterne net type ntpd_t; type sssd_t; '),,, når du skriver selinux politik har til at henvise til alle typer /attributter, før de bruger dem i en lade.du kan enten fastsætte nye typer eller i dette tilfælde tilføjer en gen_requires blok.den gen_requires blok fortæller selinux ikke at installere denne politik, hvis nogle af disse attributter eller typer, som ikke er defineret i andre dele af politikken, nogle egenskaber, til at se på, i selinux politiske område, er et kendetegn for alle processer - typer.staff_usertype er en egenskab, der gives til alle ansatte bruger specifikke processer.på samme måde sysadm_usertype er en egenskab, der gives til alle specifikke sysadm bruger processer, hvis du tilføjet andre brugertyper som xguest eller brugeren, ville du have til at tilføje tilsvarende regler i politik.den telepathy_domain er området for alle telepati ansøgninger.,, i dette afsnit, jeg definere nye typer, som jeg vil bruge til at identificere net pakker på mit system.jeg har også fastlagt en attribut external_packet, så jeg kan gruppen regler vedrørende eksterne pakker sammen.jeg bruger den corenet_packet grænseflade, for at finde frem til, selinux, at disse typer er forbundet med pakker.,,, tilskriver external_packet; type internal_packet_t; corenet_packet (internal_packet_t) type dns_external_packet_t, external_packet; corenet_packet (dns_external_packet_t) type external_packet_t, external_packet; corenet_packet (external_packet_t), lad os se på give regler:,,, tillade område internal_packet_t: pakke (recv sende};,,, denne regel giver alle processer i systemet til at sende og modtage alle interne pakker.,, den næste regler give alle (de fleste) personale og sysadm domæner, programmer udføres af personale eller sysadm bruger direkte til at sende og recv eksterne pakker.bemærk, at jeg ikke anvende attributten external_packet i stedet for de typer direkte.dette giver de ansatte områder adgang til både external_packet_t og dns_external_packet_t.,,,, at sysadm_usertype external_packet: pakke (recv sende} lade staff_usertype external_packet: pakke (recv sende} lade vpnc_t external_packet: pakke (recv sende} lade ssh_t external_packet: pakke (recv sende} lade mozilla_plugin_t external_packet: pakke (recv send} lade nsplugin_t external_packet: pakke (recv sende} lade telepathy_domain external_packet: pakke (recv sende} lade ping_t external_packet: pakke (recv sende};,,, - - den næste artikel tillader ntpd_t område til at sende og modtage ekstern pakker, da ntpd taler til servere på det offentlige net.jeg kunne have fastlagt en ntp_external_packet_t, og tilføjede iptables regler for at gøre det mere sikkert, men gjorde det ikke, fordi jeg ikke vil have en eksplosion af typer.,,,,,, at ntpd_t external_packet: pakke (recv sende},,,,, dontaudit sssd_t dns_external_packet_t: pakke (recv sende};,,, sssd programmet omhandler alle angivelser i min /etc /resolv.conf og kontrol for at se, om den kan bruge dem.når jeg bruger vpn - at komme ind i mit netværk, ender jeg med dns papirer fra eksterne og interne net i min /etc /resolv.conf fil.,, da jeg ikke vil tale med sssd system andre så på min private net, vil jeg dontaudit denne adgang,.,, samle, installere og drive. nu det ' tid til at trække alt sammen.jeg samler min politik:,,,&#- f /bar /andel /selinux ///makefile,,, så jeg installere min politik:,,,&#semodule - jeg secmark. pp,,, jeg kan montere regler om mit system:,,,,,&#sh /tmp /regler,,, jeg vil fortælle iptables og ip6tables at huske på den næste boot.,,,&#tjeneste iptables redde iptables: at redde firewallreglerne til /etc /sysconfig /iptables: [ikke]&#tjeneste ip6tables redde ip6tables: at redde firewallreglerne til /etc /sysconfig /ip6table [ikke],,, på dette punkt hver pakke på min maskine skulle have et af de tre etiketter.,, nu kan jeg se til avc meddelelser vedrørende nogen af disse med pakker.hvis jeg ser dem, jeg kan selv beslutte, om jeg skal tillade /dontaudit disse avc budskaber eller forsøge at finde ud af, om der er noget helt galt med systemet.



Previous:
Next Page: