2018. augusztus 24., péntek

Algoritmikus gondolkodás elősegítése lego robot segítségével

Az  informatikai kompetenciák közül az algoritmikus gondolkodással szeretnék foglalkozni. A LEGO MINDSTORMS egy programozható robotikai építőkészlet, amely lehetővé teszi, hogy megépítsd, programozd és irányítsd saját LEGO robotjaidat. Az új LEGO MINDSTORMS EV3 készletben mindent megtalálsz, ami ahhoz kell, hogy létrehozd a 17 robot bármelyikét, és ahhoz, hogy azok képesek legyenek járni, beszélni, mozogni és minden más parancsodat végrehajtani, amit csak el tudsz képzelni. Az EV3 Home Edition Lab View ingyenes szoftvert és ingyenes appokat kapott, amelyekkel robotokat építhetsz, programozhatsz és irányíthatsz PC-ről, Mac-ről, tabletről vagy okostelefonról. Az EV3 a harmadik verziórs utal. FIGYELEM! Ez az eszköz nem játék, avatatlan kezekben veszélyes lehet.
A tervezést az algoritmus kidolgozása előzi meg, ami alapján elkészíthető a robot. A tervezésben és a kísérletezésben a Lego Mindstorm EV3 szoftver van segítségünkre, amiben szabadom variálhatjuk a forgó mozgó alkatrészeket és az érszékelőket szenzorokat.
Nézzük az eszközkészlet;


 A vezérlőegységhez kell csatlakoztatnunk minden eszközt.


A vezérlőegység a kijelzővel ellátott küzpontiegység




















Lássuk a fizikai rögzitő eszközöket;
























Összekötő kábeleket
1 USB kábelt
LEGO Technic elemeket: 594 darab
1 EV3 Építőelem
2 Nagy interaktív szervomotor
1 Közepes méretű interaktív szervomotor
1 Érintésérzékelő
1 Színérzékelő
1 Infravörös érzékelő
1 Infravörös irányjeladó





Az eszközöket nem elég behúzni a szerkesztő felületre, csatlakoztatni kell a központi egységhez is.

A változtatás után a bal oldali zöld nyíllal ellenőrizhetjük robotunk működését.

Az EV3 Építőelem egy programozató intelligens Építőelem, amely robotod agya, irányítja a motorokat és érzékelőket, hogy mozogjanak, lépjenek és beszéljenek, valamint vezeték nélküli kommunikációt szolgáltat Wi-Fi-n és Bluetooth-on keresztül.




Ha több kereket használunk és összetettebb  vezérlést, akkor célszerű a loop vagy switch alkalmazása.

















Ha egy harcoló robotot akarunk készíteni, érdemes végteleníteni a mozgását, elég sok ciklust kell használnunk.
























Készíthetünk intelligens robotot is a mi képes akár a bűvöskocka kirakására is.
Elég sok feltételes utasítás kell a cél eléréséhez.


Egészen összetett gépet is konstruálhatunk csak a fantáziánk és a tudásunk szab határt.

Szenzorok; szín, idözités, infra fény, érintés, ultrahang giroscop,

Használtan 80000 forintért lehet venni. 
Javaslom a következő könyv letöltését.
http://www.hdidakt.hu/adat/dw_anyagok/dw_74.pdf 




2018. augusztus 20., hétfő

CISCO ASA tűzfal beállításai



Az alábbi konfigurációs parancsok alapul szolgálnak a biztonsági berendezés felállításához:

    1. lépés: Kiválasztott szintű jelszó beállítása (jelszó engedélyezése)
Alapértelmezés szerint nincs jelszó az ASA tűzfal eléréséhez, tehát az első lépés, mielőtt bármi mást tehet, egy privilegizált szintű jelszót kell beállítania, amely a készülék későbbi eléréséhez szükséges. Konfigurálási módban állítsa be ezt:

ciscoasa (config) # enable password mysecretpassword

    2. lépés: Parancssor-kezelés engedélyezése
A távfelügyeleti eszköz távolról is elérhető a Command Line Interface Management (CLI) használatával Telnet vagy SSH vagy webes grafikus felügyelet segítségével HTTPS (ASDM menedzsment) használatával. Ajánlott SSH-t használni a CLI menedzsmenthez, mivel a tűzfalon keresztüli kommunikáció titkosítva lesz, szemben a titkosítatlan Telnet használatával. Az SSH engedélyezéséhez a tűzfalon először létre kell hozni egy felhasználónevet / jelszót a hitelesítéshez, majd titkosítási kulcsokat (RSA kulcsokat) kell generálni, és meg kell adni az irányító állomás / hálózat IP-címét is.
! Hozzon létre egy "ciscoadmin" felhasználónevet a "adminpassword" jelszóval, és használja ezt a LOCAL felhasználónevet
SSH kapcsolatok hitelesítéséhez
ciscoasa (config) #username ciscoadmin jelszó adminpassword
ciscoasa (config) #aaa hitelesítés ssh console LOCAL

! Hozzon létre egy 1024 bites RSA kulcspárt a tűzfalhoz, amelyre az SSH szükséges
ciscoasa (config) # crypto kulcs generál rsa modulus 1024 A kulcspár generációs folyamat megkezdődik. Kérem várjon ... ciscoasa (config) #

! Adja meg a biztonsági eszközhöz csatlakozó gazdagépeket.
ciscoasa (config) #ssh 10.1.1.1 255.255.255.255 belül
ciscoasa (config) #ssh 200.200.200.1 255.255.255.255 kívül


    STEP3: Tűzfal gazdagépének konfigurálása
A Cisco ASA készülékek alapértelmezett gazdaneve a ciscoasa, és a Cisco PIX készülék pixfirewall. Ajánlatos egy új tűzfal egyedi hosztnevét beállítani, hogy megkülönböztethesse azt a többi hálózati tűzfalak közül.

ciscoasa (config) # hostname NewYork-FW NewYork-FW (config) #

Vegye észre, hogy a CLI-kérelem megváltozott az újonnan beállított új gépnévre vonatkozóan.



    4. lépés: Interfészparancsok konfigurálása
A Cisco ASA interfészek száma GigabitEthernet0 / 0, GigabitEthernet0 / 1, GigabitEthernet0 / 2 stb. (Cisco ASA 5510 modell esetén a csatolások számozása Etherne0 / 0, Ethernet0 / 1 stb.). Az "Interface" parancs speciális konfigurációs módot tesz lehetővé a megadott interfészhez (interfész konfigurációs mód), majd lehetővé teszi, hogy más interfész-alparancsokat állítson be az interfészmódban. A Cisco ASA 5505 esetében az interfészparancsok a "VLAN x interfész" módban vannak konfigurálva.

ciscoasa (config) # interfész GigabitEthernet0 / 1
ciscoasa (config-if) # ß Konfigurálja az interfész specifikus al-parancsokat

A Cisco ASA 5505 esetében:

ciscoasa (config) # interfész Vlan [vlan szám]
ciscoasa (config-if) # ß Konfigurálja az interfész specifikus al-parancsokat

A szükséges interfész alparancsok, amelyeket be kell állítani ahhoz, hogy az interfész áthaladjon, a következők:
nameif "interface name": Név hozzárendel egy interfészhez
ip cím "ip_address" "subnet_mask": IP cím hozzárendelése az interfészhez
biztonsági szint "0-100": Biztonsági szint hozzárendelése az interfészhez
nincs kikapcsolás: Alapértelmezés szerint minden interfész le van állítva, ezért engedélyezze őket.

Az alábbi konfigurációs pillanatkép mutatja az összes szükséges interfész-al-parancsot:
ciscoasa (config) # interfész GigabitEthernet0 / 1 ciscoasa (config-if) # nameif belül
ciscoasa (config-if) # ip cím 10.0.0.1 255.255.255.0
ciscoasa (config-if) # biztonsági szint 100 ß Alapértelmezés szerint a "belső" felület a sec-level 100 ciscoasa (config-if) # nincs leállítás

ciscoasa (config) # interfész GigabitEthernet0 / 0 ciscoasa (config-if) # nameif kívül
ciscoasa (config-if) # ip cím 10.1.1.1 255.255.255.0
ciscoasa (config-if) # biztonsági szint 0 ß Alapértelmezés szerint a "külső" felület a sec-level 0 ciscoasa (config-if) # nincs leállítás


    5. lépés: Szükség szerint állítsa be a NAT vezérlést
Egy másik fontos konfigurációs lépés a nat-control. A NAT (Network Address Translation) egy kötelező konfiguráció volt a régebbi Cisco PIX tűzfalakban (PIX 6.x verzióban), de az ASA tűzfalakkal ez nem így van. A Nat-Control (amely alapértelmezés szerint le van tiltva) meghatározza, hogy a biztonsági berendezés érvényesíteni fogja-e a címek elrejtését (vagyis a címfordítást) minden olyan forgalomból, amely egy magas biztonsági szintről alacsonyabbra halad. Ha az alapértelmezett konfigurációval (vagyis a nat-vezérlés letiltva) marad, ez lehetővé teszi, hogy a NAT-ot (cím búvóhelyét) csak a kiválasztott forgalomra használja, ahogy csak szüksége van. Ha engedélyezi a nat-vezérlést (az asa (config) # nat-control paranccsal), akkor NAT szabályt kell megadni az ALL forgalomnak, amely egy nagy biztonsági felületről egy alacsonyabb biztonsági felületen halad át. A NAT szabálynak meg kell felelnie a
megfelelő "globális" parancsot (többet később a NAT-ről).
Az útválasztás alapvető lépés a konfiguráláshoz, ellenkező esetben a tűzfal eszköz nem tudja, hogyan küldjön forgalmat a rendeltetési helyre. A fenti példában csak az alapértelmezett és a statikus útvonalat mutatjuk be, bár dinamikus útválasztási protokollok (RIP, OSPF, EIGRP) is konfigurálhatók. Javaslom az alapértelmezett vagy statikus útvonalválasztást, és elkerüljék a dinamikus protokollokat a kis hálózatokban. Ugyanakkor a dinamikus útválasztási protokollok az ASA-ban szintén hasznosak a nagyobb és összetett hálózatokban. További információ a dinamikus útválasztási protokollokról egy későbbi fejezetben.

Használja az útvonal parancsot arra, hogy egy interfészhez statikus vagy alapértelmezett útvonalat adjon meg. A parancs formátuma:
ciscoasa (config) # útvonal "interface-name" "cél-ip-cím" "netmask" "átjáró" "

Lássunk egy példa konfigurációt alább:

ciscoasa (config) # útvonalon kívül 0.0.0.0 0.0.0.0 100.1.1.1 ß Alapértelmezett útvonal
ciscoasa (config) # útvonalon belül 192.168.2.0 255.255.255.0 192.168.1.1 ß Statikus útvonal

Az alapértelmezett útvonalra (általában az internet felé) a cél-ip-címet és a netmaskot is beállítja 0.0.0.0-ra. Készítsen statikus útvonalakat is, hogy bizonyos helyi hálózatokon kívül ismert hálózatokhoz jusson, amint azt a fenti ábra mutatja.

Az útválasztási konfiguráció befejezi a "Minimális kötelező" lépéseket, amelyek a biztonsági eszköz működéséhez szükségesek. Ezután további részleteket kapunk további konfigurációs funkciókhoz, amelyek javítják a tűzfal által védett hálózatok biztonságát.
Ebben a fejezetben egy nagyon fontos biztonsági mechanizmusról beszélünk, amely az IP-címfordítással (cím elrejtésével), annak különböző típusaiban és a tűzfal eszközzel foglalkozik a fordítási mechanizmusokkal.
NETWORK ADDRESS TRANSLATION (NAT)

A nyilvános IPv4 címtartomány kimerültsége arra késztette az internetes közösséget, hogy gondolkodjon a hálózati állomások kezelésének alternatív módjairól. A NAT-ot azért hozták létre, hogy leküzdjék ezeket az internetes terjeszkedéssel kapcsolatos problémákat.

A NAT IP-hálózatok használatának egyik előnye a következő: a NAT segít globális IP-cím kimerülésének enyhítésében.
    A hálózatok belső használatra használhatják az RFC 1918 privát címtartományt.
    A NAT növeli a biztonságot a belső hálózati topológia és a címzés elrejtésével.

Az alábbi ábra egy "belső" hálózattal rendelkező alap-topológiát mutat be, amelyhez az ASA tűzfal NAT műveletet hajt végre, hogy a "belső" címet egy "külső" címre lefordítsa, így elrejtve a belső IP tartományt. Vegye figyelembe, hogy a fordítás a csomagok "forrás" IP címére vonatkozik.

A NAT-t mindig a OUTBOUND forgalomhoz használják, vagyis a belső hálózatról (nagyobb biztonsági szint) érkező forgalom külső hálózat felé (alacsonyabb biztonsági szint). A fenti ábrán a 192.168.1.1-es privát IP-című gazdagép forgalomát 100.1.1.2-es nyilvános, irányítható címre fordítjuk, hogy az internet felé irányuljon. Most a válasz csomagokat küld az internetről a belső oldalunkra

a fogadónak címzett címe lesz az IP 100.1.1.2, amelyre a tűzfal már rendelkezik egy fordítási szabálysal. A tűzfal ezután lefordítja a 100.1.1.2 nyilvános címet 192.168.1.1-re és elküldi azt a belső gazdagépnek.

A nat és globális parancsok együtt dolgoznak, hogy létrehozzák azokat a fordítási szabályokat, amelyek lehetővé teszik a belső hálózat számára, hogy bármilyen IP-címzési rendszert használjanak, és ugyanakkor el vannak rejtve a külvilágtól.

A Cisco ASA tűzfalak támogatják a címfordítások két fő típusát:

    Dinamikus NAT-fordítás: A forrásbiztonsági interfészek forráscímét egy kevésbé biztonságos felületen lévő IP-címek tartományába (vagy poolba) fordítja a kimenő kapcsolatokhoz. A nat parancs határozza meg, hogy melyik belső gazdagépet lefordítják, és a globális parancs határozza meg a címtartományt a kimenő felületen.
    Statikus NAT-fordítás: Tartalmaz egy állandó, egy-egy cím leképezést egy IP-cím között egy biztonságosabb felületen és egy IP-n egy kevésbé biztonságos felületen. A megfelelő hozzáférés-vezérlési lista (ACL) segítségével a statikus NAT lehetővé teszi a kevésbé biztonságos interfészek (pl. Internet) számára a gazdagépeket nagyobb biztonsági felületen (pl. Webszerver DMZ-n), anélkül, hogy a gazdagép biztonsági felület.

Ebben a részben a dinamikus NAT fordítást több forgatókönyvvel is leírjuk. A dinamikus NAT-ban használt nat és globális parancsok formátuma az alábbi:

ciscoasa (config) # nat (belső_felület_neve) "nat-id" "belső hálózati IP alhálózat" ciscoasa (config) # globális (külső_felület_neve) "nat-id".

ciscoasa (config) # nat (belső) 1 192.168.1.0 255.255.255.0 ßBeszámolandó belső oldal ciscoasa (config) # globális (külső) 1 100.1.1.2-100.1.1.50 netmask 255.255.255.0 ßElső
medence

A forgatókönyv felett a tűzfal dinamikus NAT-ot fog végrehajtani minden belső gépen (192.168.1.0/24). A kimenő forgalom belső és külső IP-címei le lesznek leolvasva a Külső Globális 100.1.1.2 100.1.1.50. Vegye figyelembe a nat-id értéket (1). Ez a szám a nat parancsot a globális paranccsal köti össze. Jelentősége lesz a következő forgatókönyvekben.

Vegye figyelembe a "belső" és a "külső" neveket is, amelyeket a nat és a globális parancsok használnak. Ezek a nevek a "nameif" parancs interfészkonfigurációjában vannak megadva.
ciscoasa (config) # nat (belső) 1 192.168.1.0 255.255.255.0 ß Első Belső Hálózat
ciscoasa (config) # nat (belső) 2 192.168.2.0 255.255.255.0 ßSpeciális belső hálózat
ciscoasa (config) # globális (külső) 1 100.1.1.2-100.1.1.50 netmask 255.255.255.0
ciscoasa (config) # globális (külső) 2 100.1.1.51-100.1.1.100 netmask 255.255.255.0

A forgatókönyv itt bemutatja a nat-id paraméter fontosságát és azt, hogyan használják fel ezt a nat / globális parancspárt. Az első nat parancs utasításában lévő nat-id (1) azt mondja a tűzfalnak, hogy a belső hálózati 192.168.1.0/24 címeket átmásolja a leképezett globális IP poolba, amely ugyanazt a nat-idet tartalmazza (azaz 100.1.1.2-ig 100.1-ig. 1,50). Hasonlóképpen, a nat-id (2) a második nat utasításban azt mondja a tűzfalnak, hogy a 192.168.2.0/24-ben a gazdagépek címét lefordítsák a nat-id (2) natív azonosítóval (2) (azaz a 100.1.1.51 felfelé 100.1.1.100-ig).

ciscoasa (config) # nat (belső) 1 192.168.1.0 255.255.255.0 ßBelső alhálózat
ciscoasa (config) # nat (DMZ) 1 172.16.1.0 255.255.255.0 ßDMZ Alhálózat
ciscoasa (config) # globális (külső) 1 100.1.1.1-100.1.1.254 netmask 255.255.255.0
ciscoasa (config) # globális (DMZ) 1 172.16.1.100-172.16.1.254 netmask 255.255.255.0

A fenti forgatókönyv szerint feltételezzük, hogy a "belső" interfésznek 100-as biztonsági szintje van, a "DMZ" interfész biztonsági szintje 50, a "külső" interfész 0. szintű biztonsági szintet jelent. Ez azt jelenti, hogy a "belső" (azaz mind a "DMZ", mind a "külső"). Ezen túlmenően ezek a biztonsági szintek lehetővé teszik a DMZ interfész házigazdái számára a külső interfész felé történő kapcsolódást.

Mivel mind a leképezett poolok (globális parancsok), mind a nat (belső) parancs ugyanazt a nat-idet használják, a belső hálózaton lévő gazdagépek címét (192.168.1.0/24) le lehet fordítani mind a leképezett poolba, a forgalom irányától függően. Ezért, amikor a belső interfészen lévő gazdagépek a DMZ-hez hozzáférnek, a globális (DMZ) parancs a forráscímeket lefordítja a 172.16.1.100 - 172.16.1.254 tartományba tartozó címekre. Hasonlóképpen, amikor a házigazdák beléptetik a házigazdákat külsőleg, a globális (külső) parancs a forráscímeket a 100.1.1.1-100.1.1.254 tartományba fordítja.

Ezenkívül a fenti konfiguráció lehetővé teszi, hogy a DMZ a NAT-t is használhatja, amikor külső gazdagépeket használ. A nat (DMZ) a globális (külső) parancsokkal együtt a DMZ állomások (172.16.1.0/24) forráscímét a 100.1.1.1 - 100.1.1.254 külső tartományba fordítja le.

Monitoring NAT Translations
A ciscoasa # show xlate parancs megjeleníti a NAT fordítási táblázat tartalmát. pl. Globális 100.1.1.10 Helyi 192.168.1.10
A fenti kimenet azt mutatja, hogy a 192.168.1.10 privát helyi címet a 100.1.1.10.
PORT ADDRESS TRANSLATION (PAT)

A Dynamic NAT esetében azt feltételezzük, hogy a nyilvános címek tartománya (medence) van, amelyet a belső hálózati privát címek lefordításához használunk. Valódi helyzetekben a vállalati hálózat csak korlátozott számú nyilvános címet kap az internetszolgáltatójától, míg a belső privát címek száma sokkal nagyobb. Ez azt jelenti, hogy ha dinamikus NAT-t használunk ilyen helyzetben, akkor a külső nyilvános címtartomány nagyon gyorsan lesz kimerülve, amikor sok belső gép egyidejűleg hozzáfér az internethez.

Ennek a problémának a leküzdéséhez egy "sok-egyben" címfordítást használhatunk, amelyet a Port Address Translation (PAT) is nevezünk. A PAT használatával a különböző belső gazdagépektől származó több kapcsolat multiplexelhető egyetlen globális (nyilvános) IP címre, különböző forrásportszámok használatával. Lássunk egy példát itt:

ciscoasa (config) # nat (belső) 1 192.168.1.0 255.255.255.0 ßA PNA protokoll használatához szükséges alhálózat ciscoasa (config) # globális (külső) 1 100.1.1.2 netmask 255.255.255.255 ß Egyetlen
globális IP-cím a PAT számára

A fenti példában minden belső privát cím (192.168.1.0/24) egy nyilvános IP-címet (100.1.1.2) használ különböző forrásportszámokkal. Ez azt jelenti, hogy amikor a 192.168.1.1 hoszt csatlakozik az interneten a kiszolgálón kívül, a tűzfal a forrás címét és portját 100.1.1.2-re fordítja le az 1024 forrásporttal. Hasonlóképpen a 192.168.1.2-es gazdagépet újra át kell fordítani a 100.1.1.2-re, különböző forrásport (1025). A forrásportok dinamikusan 1023-nál nagyobb egyedi számra változnak. Egyetlen PAT-cím támogathatja a 64000 belső gazdagépet.

Monitoring PAT Translations
A ciscoasa # show xlate parancs megjeleníti a PAT fordítási táblázat tartalmát. pl. PAT Global 100.1.1.2 (1024) Helyi 192.168.1.1 (4513)
A fenti kimenet azt mutatja, hogy egy kapcsolat a 192.168.1.1 privát helyi címmel a 4513 forrásporttal a 100.1.1.2 címre fordítja le az 1024 forrásporttal.
A tűzfal nyomon követi az összes NAT-munkamenetet a xlate táblája segítségével, így amikor a válaszcsomag kívülről jön vissza, a tűzfal ellenőrzi a fordítási táblázatot, hogy megtudja, melyik portszám tartozik az adott válaszcsomaghoz annak érdekében, hogy a helyes belső gazdagép.

Számos különböző forgatókönyv létezik, amelyekben a PAT használható a hálózatban. Ezeket majd leírjuk.

1. forgatókönyv: PAT külső interfész IP-cím használatával

Ahelyett, hogy egy meghatározott IP-címet beállítana a PAT-ban használt globális parancsban (a fenti példában), megadhatjuk a külső interfészt PAT-címként. Ez a forgatókönyv akkor fontos, ha tűzfalunk dinamikus nyilvános IP-címet kap az internetszolgáltatótól (ISP), ebben az esetben nem ismerjük a pontos címet a globális parancsra való konfiguráláshoz.

Az alábbi ábrán látható egy konfigurációs példa a DHCP külső címét használva a PAT számára:

ciscoasa (config) # interfész G0 / 0
ciscoasa (config-if) # ip cím dhcp setroute ßAz külső cím és átjáró az internetszolgáltatótól ciscoasa (config) # nat (belső) 1 192.168.1.0 255.255.255.0 ßInnet alhálózat a PAT használatához ciscoasa (config) # globális (külső) 1 interfész ß A PAT külső IP-címét használja

Az "IP cím dhcp setroute" interfész parancs konfigurálja a tűzfalat, hogy DHCP kliensként működjön az internetszolgáltató számára, és automatikusan kapjon nyilvános címet. A "setroute" paraméter azt mondja a Cisco Firewall számára, hogy az alapértelmezett útvonalat állítsa be a DHCP szerver alapértelmezett átjáró értékével. Ne állítson be alapértelmezett útvonalat a setroute opció használatakor.

2. forgatókönyv: Különböző belső alhálózatok leképezése különböző PAT címekre

A nat-id paraméter segítségével két vagy több nat / globális paramétert tudunk megkötni annak érdekében, hogy a különböző belső hálózati alhálózatokat a különböző PAT-címekre térképezzük fel, ahogy az az alábbi ábrán látható:

ciscoasa (config) # nat (belső) 1 192.168.1.0 255.255.255.0
ciscoasa (config) # globális (külső) 1 100.1.1.1 netmask 255.255.255.255

ciscoasa (config) # nat (belső) 2 192.168.2.0 255.255.255.0
ciscoasa (config) # globális (kívül) 2 100.1.1.2 netmask 255.255.255.255

A 192.168.1.0/24 belső alhálózaton lévő kimenő kapcsolatok valószínűleg címről származnak
és a kimeneti kapcsolatok a 192.168.2.0/24 alhálózatból a 100.1.1.2 címről származnak.

3. forgatókönyv: Dinamikus NAT és PAT Translation kombinálása

A Dinamikus NAT fordításhoz külső nyilvános IP-címekből álló csoportot használhatunk, és ezt a pool-ot egyetlen PAT-címmel kiegészíthetjük, ha a globális poolban lévő címek kimerülnek.

ciscoasa (config) # nat (belső) 1 192.168.1.0 255.255.255.0
ciscoasa (config) # globális (külső) 1 100.1.1.100-100.1.1.253 netmask 255.255.255.0
ciscoasa (config) # globális (külső) 1 100.1.1.254 netmask 255.255.255.255

A 192.168.1.0/24 belsõ hálózatból érkezõ kimenõ címeket a 100.1.1.100 és a 100.1.1.253 közötti tartományok hozzárendelik. Ha a tűzfal hozzárendel minden címet a dinamikus gyűjteményből, akkor túlcsordul a 100.1.1.254. PAT címére.


STATIKUS CÍMKÉSZÍTÉS (STATIKUS NAT)

Az előző szakaszokban (dinamikus NAT és PAT) tárgyalt két fordítási típust csak a kimenő kommunikációhoz használjuk (vagyis magasabb biztonsági szintről alacsonyabb biztonsági szintre).
Ha azonban egy külső gazdagép (úgynevezett gazda az interneten) kommunikációt indít a belső tűzfal mögé, akkor ez nem lehetséges, ha csak dinamikus NAT vagy PAT konfiguráltunk. Ez nagyon jó a biztonság szempontjából, de számos esetben engedélyeznünk kell a bejövő hozzáférést is (vagyis az alacsonyabb biztonsági szinttől a magasabb biztonsági szintig - kívülről befelé). Ennek elérése érdekében statikus NAT fordítást kell használnunk, és konfigurálnunk kell a megfelelő beléptetési listát is. A statikus NAT térképek egy állandó (globális) (külső) címhez tartósan egy gazdagép címet adnak.

A statikus NAT használatának legfontosabb okai a következők:


    Van egy belső szerverünk (például cégünk e-mailje vagy webszervere), amely mindig megjelenik egy rögzített nyilvános IP címmel a tűzfal Külső felületén.
    Engedélyeznünk kell a külső (például az interneten) házigazdák számára, hogy kezdeményezzenek kapcsolatokat egy helyi belső szerverhez (például web vagy e-mail szerverünkhöz).
    Port átirányítást szeretnénk használni (erről később).

A statikus NAT parancsformátuma a következő:

ciscoasa (config) # statikus (real_interface_name, mapped_interface_name) "mapped_IP" "real_IP" netmask "subnet_mask"

A statikus NAT konfigurálásához ismerni kell a következő paramétereket:

Között két kapcsolódási pont van a fordítást végrehajtva. A két interfész definíciója a valós_interface és a mapped_interface. Az igazi interfésznek (pl. DMZ interfésznek vagy belső interfésznek) nagyobb biztonsági szintje van, mint a leképezett interfész (pl. Külső interfész).
A gazdagép valós_IP címe (a gazdagép hálózati kártyáján ténylegesen beállított IP).
A gazdagép mapped_IP (vagy lefordított) IP címe (vagyis a cím, amelyet a fogadó ismert a Külső hálózatokon).

Egy kis "fogás", amellyel a statikus parancsnak óvatosnak kell lennie, a következő: amikor az interfész nevét a zárójelbe írja be, először a valós_interfő nevét adja meg, majd a mapped_interface nevet (lásd a fenti parancsformátumot). Ha azonban az interfész nevek után konfigurálja az IP-címeket, először a mapped_IP címet adja meg, majd a real_IP címet. Lássunk néhány példa forgatókönyvet a dolgok egyértelművé tételéhez:

A fent említett hálózati topológia sok vállalatnál klasszikus. Általában van egy Inside hálózat a tűzfalon, amely az összes belső alkalmazott számítógépét tárolja, az internethez csatlakozó külső hálózatot, valamint egy demilitarizált zónát is (DMZ), amely kiszolgálót tartalmaz, amely elérhető az internetről (példánkban , webszerver és e-mail kiszolgáló). Ebben a forgatókönyvben a DMZ kiszolgálókhoz statikus NAT-ot kell használni, hogy valódi személyes IP-címük mindig állandó nyilvános IP címre lehessen fordulni (10.0.0.1 fordítva a 100.1.1.1-re és a 10.0.0.2-be fordítva a 100.1.1.2-re).

A mi forgatókönyveinkben a következők vannak: Valódi interfész neve: DMZ
    Átkapcsolt interfész neve: Kívül
    Valódi IP-címek: 10.0.0.1 és 10.0.0.2
    Megkapcsolt IP címek: 100.1.1.1 és 100.1.1.2

Lássuk az alábbi konfigurációs pillanatképet:

ciscoasa (config) # statikus (DMZ, kívül) 100.1.1.1 10.0.0.1 netmask 255.255.255.255
ciscoasa (config) # statikus (DMZ, kívül) 100.1.1.2 10.0.0.2 netmask 255.255.255.255

A fenti megállapítások lehetővé teszik a kétirányú kommunikációt a webes és e-mail szerverek számára. Most az internetes állomások elérhetik webes és e-mail szervereinket a 100.1.1.1 és a 100.1.1.2 nyilvános címükön keresztül. Természetesen az ACL szükséges a külső felületen, hogy lehetővé tegye a kommunikációt.


2. forgatókönyv: Statikus NAT egy teljes hálózatra (Net Static)


Ahelyett, hogy állandóan lefordítanánk az egyes befogadó címeket, állandó alkönyvtárakat hozhatunk létre egy teljes alhálózathoz egyetlen paranccsal. Hivatkozva az előző diagramra, feltételezzük, hogy teljes C osztályú nyilvános címtartománya van 100.1.1.0/24. A teljes DMZ-tartományt lefordíthatjuk a 10.0.0.0/24 és a 100.1.1.0/24 között.

ciscoasa (config) # statikus (DMZ, kívül) 100.1.1.0 10.0.0.0 netmask 255.255.255.0

A DMX-ben lévő 10.0.0.0/24 alhálózaton lévő kiszolgáló címről származó csomagok a külső interfészen lévő 100.1.1.0/24 alhálózathoz tartozó gazdaszámítógépre lesznek lefordítva (pl. A 10.0.0.20 állomás lefordítódik 100.1.1.20-ra) .

Egy nagyon gyakori forgatókönyv a fenti diagramon látható. Tegyük fel, hogy csak egy nyilvános IP-címe van (100.1.1.1), de két (vagy több) szerverünk van, amelyekhez nyilvános hozzáférést kell biztosítani. Tudjuk, hogy webszerverünk a 80-as portra figyel és az e-mail szerverünk figyeli a 25. portot. A 100.1.1.1 80-as portot érintő összes bejövő forgalom átirányítható a tűzfalra a 10.0.0.1 80-as portra, és minden forgalom a 100.1.1.1 címmel a 25-ös port átkerül a 10.0.0.2 port 25-re.

A port átirányítás parancsformátuma a következő:

ciscoasa (config) # statikus (real_interface_name, mapped_interface_name) [tcp | udp] "mapped_IP" "mapped_port" "real_IP" "real_port" netmask "subnet_mask"

A fent említett példaprogramban a hálózati topológia esetében a port átirányítási parancsok a következők:

ciscoasa (config) # statikus (DMZ, külső) tcp 100.1.1.1 80 10.0.0.1 80 netmaszk
255.255.255.255

ciscoasa (config) # statikus (DMZ, külső) tcp 100.1.1.1 25 10.0.0.2 25 netmask
255.255.255.255

Most mi van, ha két webszerverünk van, amelyek mindketten hallgatják a 80-as portot? Beállíthatjuk a tűzfalat, hogy átirányíthasson egy másik, nyilvánosan leképezett portot (például 8080-at) a második webszerverünkre.

Használhatjuk a Port átirányítás funkciót egy jól ismert port lefordításához egy kevésbé ismert porthoz, vagy fordítva. Ez segít a biztonság növelésében. Például megmondhatja a webfelhasználóknak, hogy csatlakoznak egy kevésbé ismert 5265-es porthoz, majd fordítsák őket a helyes 80-as portra a helyi hálózaton.

AZONOSÍTÓ NAT (NAT 0 COMMAND)

Érdemes megemlíteni egy másik típusú NAT mechanizmust, az úgynevezett Identity NAT (vagy nat 0). Ha engedélyezte a nat-vezérlést a tűzfalon, akkor kötelező, hogy a biztonsági eszközön átnyúló összes csomagnak meg kell felelnie egy fordítási szabálynak (akár nat / globális vagy statikus nat szabályoknak). Ha néhány házigazdát (vagy egész hálózatot) akarunk átadni a tűzfalon fordítás nélkül, akkor a nat 0 parancsot kell használni. Ez átlátható leképezést hoz létre. Ha az azonosító NAT-t egy interfészen használják, akkor az ezen a felületen lévő IP-címek le vannak fordítva minden alsó biztonsági interfészre.

Ábrák;




2018. augusztus 18., szombat

Érdekességek phytonban

Alapok
Először használjuk interaktívan a Python értelmezőt és ismerkedjünk meg az adattípusokkal, egyszerű
kifejezésekkel. A >>> a Python prompt, ezután írjuk be az utasításainkat.
>>> 5 * 4
20
>>> 3**4 # hatványozás
81
>>> (2 + 8) / 3 # egész osztás
3
>>> (2 + 8) / 3.0 # lebegőpontos osztás
3.3333333333333335
>>> 56.12 // 12.34 # egész osztás
4.0
A Python a # karakter utáni szöveget a sor végéig megjegyzésnek értelmezi.
A kiszámított értékeket változókban megőrizhetjük, ilyenkor nem jelenik meg a művelet eredménye.
>>> a = 5 * 4
>>> print a # Python 3-ban print(a)
20
>>> l = True # Logikai érték True vagy False
>>> c = None # A None a definiálatlan értéket jelenti
>>> s = 'Hello world' # karakterlánc, dupla aposztróf is jó
Python-ban nincs automatikus típus konverzió a változókra, konstansokra. A type függvénnyel le tudjuk
kérdezni egy változó típusát.
>>> b = '16'
>>> a + b
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>> type(a) # változó típus
<type 'int'>
>>> type(b)
<type 'str'>
>>> type(b) is str # is operátor
True
>>> a + int(b)
36
>>> a * b # Karakterlánc többszörözése!
'1616161616161616161616161616161616161616'
>>> s[0] # Karakterlánc első eleme
'H'
>>> s[-1] # Karakterlánc utolsó eleme
'd'
>>> s[0] = 'h' # Karakterlánc nem módosítható
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>> s[:5] # Első 5 karakter
'Hello'
>>> s[6:] # Karakterlánc vége
'world'
>>> s[-5:]
'world'
>>> s[6:8]
'wo'
>>> len(s) # Karakterlánc hossza
11
>>> s[:5] + ' Dolly'
- 2 -
'Hello Dolly'
>>> c = 1
>>> a, c = c, a # két változó tartalom cseréje
A matematikai függvények (sin, cos, stb.) egy modulban találhatók (math).
>>> sin(1)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
NameError: name 'sin' is not defined
>>> import math
>>> math.sin(1) # radián!
0.8414709848078965
>>> print '%6.4f' % math.sin(1) # formatizálás
0.8415
Modulokat kétféleképpen importálhatunk. Az import modul_név parancs használata esetén a modul
elemeire úgy hivatkozhatunk, hogy elé írjuk a modul nevét. A másik módszer esetén
from modul_név import elem, nem kell a modul nevét használnunk a modul elemére hivatkozásnál,
viszont ilyenkor könnyen név ütközés fordulhat elő.
>>> from math import sin
>>> sin(1)
0.8414709848078965
Ez utóbbi változat esetén vesszővel elválasztva a modul több felhasználandó elemét is megadhatjuk vagy *
karakterrel az összes elemet importálhatjuk (pl. from math import *).
Adatszerkezetek
Az egyszerű változók mellett listákat is használhatunk. A lista egy rendezett adathalmaz, elemeire 0-tól
kezdődő index-szel hivatkozhatunk.
>>> l1 = [] # Üres lista
>>> l2 = ['alma', 5, 4] # Különböző adattípusok
>>> l2[0]
'alma'
>>> l2[1:] # Rész lista
[5, 4]
>>> len(l2) # Lista elemeinek száma
3
>>> l2[0] = 3 # Lista elemek módosíthatók
>>> l2[3] # Nem létező elem
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> l2[3] = 5
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
>>> l2.append(5) # Lista bővítése
>>> print l2
[3, 5, 4, 5]
>>> l2[0:3] = 1 # Lista részének cseréje
>>> print l2
[1, 5]
>>> del l2[0] # Lista elem törlése
>>> print l2
[5]
>>> l3 = [[1, 2], [6, 4]] # Listák listája
>>> l3[0][1]
2
- 3 -
>>> help(list)
Help on class list in module builtins:
...
Listák összefűzését a + művelettel végezhetjük el, a * operátor a karakterláncokhoz hasonlóan ismétlést
jelent. Az in művelettel megvizsgálhatjuk, hogy a lista tartalmaz-e egy elemet.
A listákkal kapcsolatban több függvényt használhatunk (például sorted, reversed, min, max) illetve
további metódusok tartoznak hozzá (pl. pop, sort, reverse).
A tuple2
 egy nem módosítható lista, a listával azonos módon használható, kivéve a módosító utasításokat (a
karakterlánchoz hasonlóan).
>>> t = (65, 6.34)
>>> t.append(1)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'
>>> t[0]
65
A listákkal, tuple-el kapcsolatban gyakran nagyon tömör kódot írhatunk az elemekkel végzendő műveletre.
Ezt angolul list comprehension-nak, magyarul lista értelmezésnek vagy feldolgozásnak mondhatjuk.
>>> l = [2, 6, -3, 4]
>>> [x**2 for x in l] # minden listaelem négyzete
[4, 36, 9, 16]
>>> [x**0.5 for x in l if x > 0] # pozitív listaelemek gyöke
>>> import math
>>> map(math.sin, l) # [math.sin(x) for x in l]
[0.9092974268256817, -0.27941549819892586, -0.1411200080598672,
-0.7568024953079282]
>>> [a for a in l if a%2] # páratlan számok a listából
[-3]
A karakterláncokból, listákból tuple-okból halmazokat képezhetünk, a halmazokban ugyanaz az elem nem
ismétlődhet.
>>> a = "abcabdseacbfds"
>>> s = set(a)
>>> s
set(['a', 'c', 'b', 'e', 'd', 'f', 's'])
>>> b = (1, 3, 2, 4, 3, 2, 5, 1)
>>> t = set(b)
>>> t
set([1, 2, 3, 4, 5])
>>> c = ['alma', 'szilva', 'barack', 'alma']
>>> u = set(c)
>>> u
set(['barack', 'szilva', 'alma'])
A halmazokkal műveleteket is végezhetünk.
>>> a = set('abcdefgh')
>>> b = set('fghijklm')
>>> a – b # halmazok különbsége
set(['a', 'c', 'b', 'e', 'd'])
>>> a | b # halmazok uniója
set(['a', 'c', 'b', 'e', 'd', 'g', 'f', 'i', 'h', 'k', 'j', 'm', 'l'])
>>> a & b # halmazok metszete
set(['h', 'g', 'f'])
2 A tuple kifejezésre nincs elfogadott magyar fordítás, néhányan vektornak mondják, de az a listára is igaz lenne,
adatbáziskezelésben rekord értelemben használják, a matematikában használják rá a szám n-es kifejezést, de a Pythonban nem
csak számokat tárolhat, ... Én maradtam a tuple-nél (kiejtése: tapló :)
- 4 -
>>> a ^ b # halmazok szimmetrikus különbsége
set(['a', 'c', 'b', 'e', 'd', 'i', 'k', 'j', 'm', 'l'])
A szótár egy rendezetlen adathalmaz (asszociatív tömb, hash tábla). A szótár elemei lehetnek listák és
további szótárak is.
>>> szotar = {} # Üres szótár
>>> szotar['elso'] = 4 # Egyszerűen bővíthető
>>> szotar[5] = 123 # szám is lehet index
>>> szotar['elso'] = 'alma' # Módosítható
>>> print szotar
{'elso': 'alma', 5: 123}
>>> 'elso' in szotar # Létezik ez az index?
True
>>> tomb = {(1,1): 2, (1,2): 4, (2,1): -1, (2,2): 6} # tuple az index
>>> tomb[1,1]
2
Az in műveletet halmazokra, listákra és tuple-okra is használhatjuk.
A Python értelmezőbő

Változó kiíratása

>>> n
7
>>> msg
"Mi újság ?"
>>> pi
3.14159

Értékadás és feltétel
>>> a = 150
>>> if (a > 100):
Ciklus
>>> a = 0
>>> while (a < 7): # (ne felejtsük el a kett spontot !) ő
... a = a + 1 # (ne felejtsük el a behúzást !)
... print a
Végtelen ciklus
Végtelen ciklus példája (kerülendő) : >>> n = 3 >>> while n < 5: ... print "hello !"

számok négyzete
 a = 0 >>> while a < 12: ... a = a +1 ... print a , a**2

Fibonacci sorozat
>>> a, b, c = 1, 1, 1 >>> while c < 11 : ... print b, ... a, b, c = b, a+b, c+1

# Els Python script ő
# Fibonacci-sort írat ki, azaz egy olyan számsort, aminek minden tagja
# az el z két tag összege. ő ő
a, b, c = 1, 1, 1 # a & b az egymást követ tagok számolására valók ő
 # c egy számláló
print 1 # az els tag kiíratása ő
while c<15: # összesen 15 tagot íratunk ki
 a, b, c = b, a+b, c+1
 print b

Lista előállítása (tömb)
>>> nap = ['hétf ', 'kedd', 'szerda', 1800, 20.357, 'csütörtök', 'péntek'] ő
>>> print nap
['hétf ', 'kedd', 'szerda', 1800, 20.357, 'csütörtök', 'péntek']


vagy

>>> nap = ['hétf ', 'kedd', 'szerda', 1800, 20.357, 'csütörtök', 'péntek'] ő >>> print nap[2] szerda >>> print nap[4] 20.357

input adatbekérés

print 'Írjon be valamilyen egész számot : ',
nn = input()
print nn, 'négyzete', nn**2
vagy még :
keresztnev = input('Írja be a keresztnevét (idéz jelben)') ő
print 'Jó napot, ', keresztnev

Függvény importálása
from math import *

hetes szorzótábla
>>> def tabla7():
... n = 1
... while n <11 :
... print n * 7,
... n = n+1
>>> tabla7()
>>> def tabla(alap):
... n = 1
... while n <11 :
... print n * alap,
... n = n + 1
>>> tabla(10)

if a !=2:
print 'vesztett'
elif a ==3:
print 'egy kis türelmet kérek'
else :
print 'nyert'

a = 5
b = 2
if (a==5) & (b<2):
print '"&" jelentése "és"; az "and" szót is használhatjuk '
b)
a, b = 2, 4
if (a==4) or (b!=4):
print 'nyert'
elif (a==4) or (b==4):
print 'majdnem nyert'
c)
a = 1
if not a:
print ' nyert'
elif a:
print 'vesztett

>>> a = 1
>>> while a <20:
... tabla(a)
... a = a +1
gömb térfogata
def cube(n):
 return n**3
def gombTerfogat(r):
 return 4 * 3.1416 * cube(r) / 3
r = input('Írja be a sugár értékét : ')
print 'A gömb térfogata :', gombTerfogat(r)
Rajzoló modul hívása
from turtle import *
def negyzet(meret, szin):
 "meghatározott méret és szín négyzetet rajzoló függvény" ű ű
 color(szin)
 c =0
 while c <4:
 forward(meret)
 right(90)
 c = c +1
elmentés után
from teknos_rajz import *
up() # fölemeli a ceruzát
goto(-150, 50) # balra felmegy
# tíz piros, sorbarendezett négyzetet rajzol:
i = 0
while i < 10:
 down() # leteszi a ceruzát
 negyzet(25, 'red') # egy négyzetet rajzol
 up() # fölemeli a ceruzát
 forward(30) # távolabb megy
 i = i +1
a = input() # vár
Tkinter meghívása ablak és gomb előállítása
from Tkinter import *
>>> from Tkinter import *
>>> abl1 = Tk()
>>> tex1 = Label(abl1, text='Jó napot kívánok!', fg='red')
>>> tex1.pack()
>>> gomb1 = Button(abl1, text='Kilép', command = abl1.destroy)
>>> gomb1.pack()
>>> abl1.mainloop()

# Tkinter grafikus könyvtárat alkalmazó gyakorlat
from Tkinter import *
from random import randrange
# --- az eseménykezel függvények definíciója : --- ő
def drawline():
 "Vonal rajzolása a can1 canvasra (vászonra)"
 global x1, y1, x2, y2, color
 can1.create_line(x1,y1,x2,y2,width=2,fill=color)
 # a koordináták módosítása a következ egyenes számára : ő
 y2, y1 = y2+10, y1-10
def changecolor():
 "a rajz színének véletlenszer megváltoztatása" ű
 global color
 pal=['purple','cyan','maroon','green','red','blue','orange','yellow']
 c = randrange(8) # => véletlenszám generálása 0 és 7 között
 color = pal[c]
#------ F program ------- ő
# a következ változókat globális változókként használjuk : ő
x1, y1, x2, y2 = 10, 190, 190, 10 # az egyenes koordinátái
color = 'dark green' # az egyenes színe
# A f -widget létrehozása ("master") : ő
abl1 = Tk()
# a "slave" widget-ek létrehozása :
can1 = Canvas(abl1,bg='dark grey',height=200,width=200)
can1.pack(side=LEFT)
gomb1 = Button(abl1,text='Kilép',command=abl1.quit)
gomb1.pack(side=BOTTOM)
gomb2 = Button(abl1,text='Vonalat rajzol',command=drawline)
gomb2.pack()
gomb3 = Button(abl1,text='Más szín',command=changecolor)
gomb3.pack()
abl1.mainloop() # eseményfogadó indítása
abl1.destroy() # az ablak (destruction) zárása

Váltás rajzok között
from Tkinter import *
def circle(x, y, r, color ='black'):
 "r sugarú (x,y) középpontú lör rajzolása"
 can.create_oval(x-r, y-r, x+r, y+r, outline=color)

def figure_1():
 "celtablat rajzol"
 # el ször a meglév rajz törlése : ő ő
 can.delete(ALL)
 # a két egyenes rajzolása (függ. és vizsz.) :
 can.create_line(100, 0, 100, 200, fill ='blue')
 can.create_line(0, 100, 200, 100, fill ='blue')
 # több koncentrikus kör rajzolása :
 radius = 15
 while radius < 100:
 circle(100, 100, radius)
 radius += 15

def figure_2():
 "egyszer sített arc rajzolása" ű
 # el ször minden meglév rajz törlése : ő ő
 can.delete(ALL)
 # minden kör jellemz jét listák listájába ő
 # tesszük :
 cc =[[100, 100, 80, 'red'], # fej
 [70, 70, 15, 'blue'], # szem
 [130, 70, 15, 'blue'],
 [70, 70, 5, 'black'],
 [130, 70, 5, 'black'],
 [44, 115, 20, 'red'], # arc
 [156, 115, 20, 'red'],
 [100, 95, 15, 'purple'], # orr
 [100, 145, 30, 'purple']] # száj
 # az osszes kort egy ciklus segitsegevel rajzoljuk meg :
 i =0
 while i < len(cc): # a lista bejárása
 el = cc[i] # minden elem maga is lista
 circle(el[0], el[1], el[2], el[3])
 i += 1
##### F programm : ############ ő

window = Tk()
can = Canvas(window, width =200, height =200, bg ='ivory')
can.pack(side =TOP, padx =5, pady =5)
b1 = Button(window, text ='1. ábra', command =figure_1)
b1.pack(side =LEFT, padx =3, pady =3)
b2 = Button(window, text ='2. ábra', command =figure_2)
b2.pack(side =RIGHT, padx =3, pady =3)
window.mainloop()

from Tkinter import *
abl1 = Tk()
# a 'Label' és 'Entry' widgetek létrehozása:
txt1 = Label(abl1, text ='Els mez :') ő ő
txt2 = Label(abl1, text ='Második :')
txt3 = Label(abl1, text ='Harmadik :')
mezo1 = Entry(abl1)
mezo2 = Entry(abl1)
mezo3 = Entry(abl1)
# egy bitmap képet tartalmazó 'Canvas' widget létrehozása :
can1 = Canvas(abl1, width =160, height =160, bg ='white')
photo = PhotoImage(file ='Martin_p.gif')
item = can1.create_image(80, 80, image =photo)
# laptördelés a'grid' metódus segítségével :
txt1.grid(row =1, sticky =E)
txt2.grid(row =2, sticky =E)
txt3.grid(row =3, sticky =E)
mezo1.grid(row =1, column =2)
mezo2.grid(row =2, column =2)
mezo3.grid(row =3, column =2)
can1.grid(row =1, column =3, rowspan =3, padx =10, pady =5)
# indítás :
abl1.mainloop()



lottó

import random

hány_számból = 90
hány_számot = 5

random.seed() #Inicializálás
halmaz=set()
while len(halmaz)<hány_számot:
    halmaz.add (random.randint(1,hány_számból))
számlista = sorted(list(halmaz)) #Tárolás további felhasználásra
print("A heti lottószámok: ", ", ".join(str(szám) for szám in számlista))
#Ennél egyszerűbben kiírathatnánk a print (számlista) utasítással,
#csak ottmaradna a szögletes zárójel.

Másodfokú egyenlet megoldása
import math, cmath

a= input('Kérem a másodfokú egyenlet főegyütthatóját: ')
a= float(a)
while a==0:
    print('Ez nem lesz másodfokú egyenlet; nem oldom meg.')
    a= input('Kérem a másodfokú egyenlet főegyütthatóját: ')
    a= float(a)

b= input('Kérem az elsőfokú tag együtthatóját: ')
c= input('Kérem a konstans tagot: ')
b= float(b)
c= float(c)

d= b*b-4*a*c
print('A diszkrimináns értéke', d)

if d>=0:
    print('Van valós megoldás.')
    x1= (-b-math.sqrt(d))/(2*a)
    x2= (-b+math.sqrt(d))/(2*a)
    print('Az egyik megoldás', x1)
    print('A másik megoldás', x2)
else:
    print('Nincs valós megoldás.')
    x1= (-b-cmath.sqrt(d))/(2*a)
    x2= (-b+cmath.sqrt(d))/(2*a)
    print('Az egyik megoldás', x1)
    print('A másik megoldás', x2)


http://harp.pythonanywhere.com/python_doc/tutorial/index.html

http://pythontutorial.pergamen.hu/

http://pythontutorial.pergamen.hu/downloads/tut.pdf

http://mek.oszk.hu/08400/08435/08435.pdf

https://tutorial.djangogirls.org/hu/python_introduction/

http://www.agt.bme.hu/gis/python/python_oktato.pdf

Titkosítás és algoritmusok összefüggései

Szimmetrikus kulcsalgoritmusok (Private key cryptography)
Mindkét fél egy magánkulcsot oszt meg (titokban tartják egymás között).

A titkosításhoz szimmetrikus kulcsalgoritmusok használhatók, erre jó példa: a szerver és az ügyfél közötti forgalom titkosítása, valamint a lemezen lévő adatok titkosítása.

DES - Adat titkosítási szabvány - az IBM-nél tervezett
A DES szabvány. Az alkalmazott algoritmust DES vagy néha DEA (Digital Encryption Algorithm) is nevezik.
A DES-t immár bizonytalannak tartják (főként az 56 bites kis kulcsméret miatt).
A Triple DES (3DES) a DES algoritmust háromszor alkalmazza, és így jobb gyakorlati biztonságot nyújt. Három, 56 bites kulcsa van (a DES / DEA minden egyes átvitelére).
A DES-X egy másik változat.
A DES blokk-titkosítás .
IDEA - Nemzetközi adat titkosítási algoritmus
Jó és biztonságos algoritmusnak tekinthető.
Szabadalmaztatott, de szabadon nem kereskedelmi célra.
Az IDEA blokk-titkosítás .
AES - Advanced Encryption Standard - a DES utódja
Az AES a Rijndael titkáron alapul. Volt egy verseny, amely választotta a titkosítást, ami az AES lesz. A Rijndael cipher megnyerte a versenyt. Azonban vannak különbségek a Rijndael és annak megvalósítása között AES-ben.
A legtöbb CPU most tartalmaz hardveres AES támogatást, ami nagyon gyors.
A TrueCrypt, az SSH támogatja.
Az AES és az Rjindael blokkolók .
Az AES számos üzemmódban működhet.
AES-GCM (GALIS / Számláló üzemmódban működő AES) előnyben részesíti (ellenőrizze ezt a blogbejegyzést is). Gyorsan és biztonságosan működik, és hasonlóan működik az adatforgalomhoz. Magas sebességet érhet el alacsony hardvereken is. Csak a TLS 1.2 vagy újabb verziói támogatottak.
Az AES- CBC az, amit az idősebb ügyfelek általában használnak. Az AES-CBC mód érzékeny olyan támadásokra, mint a Lucky13 és a BEAST .
Lásd ezt a választ a különböző módok áttekinthető áttekintéséhez.
Blowfish - amelyet Bruce Schneier tervezett a DES alternatívájaként; eddig nincsenek problémák, de megtámadhatóak, ha a kulcs gyenge, jobb a Twofish vagy a Threefish használatát.
Szabadalom mentes. Közterületen.
Az SSH támogatja.
Sokkal gyorsabb, mint a DES és az IDEA, de nem olyan gyors, mint az RC4.
32-448 bites változó méretű kulcsokat használ. Biztosnak tekinthető. Gyors CPU-khoz tervezve, most lassabb / régi processzorok.
Blowfish egy blokk titkos .
Twofish - Bruce Schneier és mások által tervezett Blowfish utódja
Az AES verseny egyik döntőse
A legtöbb processzor most tartalmaz hardveres AES támogatást, így nagyon gyors, mint a Twofish.
Szabadalom mentes. Közterületen.
A 128, 192 vagy 256 bit méretű kulcsokat használja. Úgy tervezték, hogy sokkal rugalmasabb, mint a Blowfish (a hardverkövetelmények szempontjából).
A TrueCrypt, az SSH támogatja.
A Twofish blokk-titkosítás .
Háromszoros - Bruce Schneier és mások által tervezett
Háromszoros egy blokk titkos .
Kígyó - Ross Anderson, Eli Biham és Lars Knudsen által tervezett kígyó
Az AES verseny egyik döntőse
Szabadalom mentes. Közterületen.
A konzervatívabb megközelítés a biztonság szempontjából, mint a többi AES verseny döntősje.
A TrueCrypt támogatja.
A kígyó egy blokk titkos .
MARS - amelyet Don Coppersmith tervezett (aki részt vett a DES-ben) és mások az IBM-ben
Az AES verseny egyik döntőse
RC6 - Rivest Cipher 6 vagy Ron kódja 6 - Ron Rivest és mások által tervezett
Az AES verseny egyik döntőse
Saját algoritmus. Szabadalmaztatott RSA Security.
Az RC5 az RC6 elődje. Más testvérek közé tartozik az RC2 és az RC4.
További információ az RC5 és RC6 ezen RSA linken .
Az RC5 és az RC6 blokk-titkosítók .
RC4 - Rivest Cipher 4 vagy Ron kódja 4 - más néven ARC4 vagy ARCFOUR (állítólagos RC4).
Az RSA Data Security Inc (RSADSI) nem szabadalmaztatott kereskedelmi titka. Ezután valaki feliratkozott a forráskódra, névtelenül, és nyilvánosságra került.
Nagyon gyors, de kevésbé tanulmányozható, mint más algoritmusok.
Az RC4 jó, ha a kulcsot soha nem használják fel újra.
A gyakorlatban az RC4 nem ajánlott. A TLS 1.1 és újabb verziója megtiltja az RC4-et ( ez az RFC is ). A CloudFlare ellenzi azt (ellenőrizze ezt a blogbejegyzést is). A Microsoft ellenzi . Az aktuális ajánlások összességében a TLS 1.2-et (ami tiltja az RC4-et) és az AES-GCM használatát jelenti .

Ezek a leggyakoribbak:

MD5 - Használja az SHA512-et
SHA1 - Használja az SHA512-t (Ne feledje, ez nem igazán bizonytalan, de a korát mutatja, és az elkövetkező néhány év során foltos lesz ...)
DES / 3DES - Használja az AES-t

Az amerikai és az Izraeli hírszerzés elutasítja ezeket az algoritmusokat a NIST nagyon tapasztalt embereinek ajánlásai alapján:

SHA-1
1024 bites RSA vagy DSA
160 bites ECDSA (elliptikus görbék)
80/112-bites 2TDEA (két fő tripla DES)
Az MD5 soha nem volt elfogadható algoritmus a kormányzati használathoz, sok más régebbi algoritmussal együtt.

A 2030-as évek biztonsága érdekében legalább az SHA-224, 2048 bit az RSA vagy a DSA, a 224 bites EDCSA és az AES-128 vagy a 3-key triple-DES használatára ajánlott.

12
alulról
szavaz
A nem biztonságos, de széles körben használt kriptográfiai algoritmusok a következők:

hash függvények: MD4, MD5, (SHA-1) (az MD2 szintén bizonytalan, de nem széles körben használatos, az SHA-1 csak "gyengült", az MD4 és MD5 is széles körben használatos olyan helyzetekben, ahol nincs szükség kriptográfiai ellenállásra probléma)

szimmetrikus titkosítás: a DES (56 bites kulcs), az RC4 (nem véletlenszerűség - de az RC4 legtöbb biztonsági problémája nem az algoritmusnak köszönhető), a Zip-archiválási formátum (streamer Zip segédprogramok használják az AES-t)

aszimmetrikus titkosítás: RSA túl rövid kulcs (azaz 768 bites vagy kisebb), RSA helytelen párnázással (pl. ISO 9796-1), Diffie-Hellman modulo a túl kicsi prímszám (768 bites vagy kevesebb) (Diffie-Hellman nem valójában egy aszimmetrikus titkosítási algoritmus, de egy kulcsfontosságú megállapodás algoritmusa - de az aszimmetrikus titkosítás leggyakoribb módjai valójában álcázott kulcsfontosságú megállapodások)

digitális aláírások: RSA túl rövid kulcs (azaz 768 bit vagy kevesebb)

sok (túl sok) kézzel készített algoritmust azoktól az emberektől, akik túlszárnyalták magukat; egy elsődleges példa a CSS, a DVD titkosítása

Biztonságos alternatívák: SHA-256 a hasításhoz (SHA-512, ha ugyanolyan fetish méretű, mint az amerikai hadsereg, és / vagy ha meg akarja ölni a teljesítményt 32 bites rendszereken), AES a szimmetrikus titkosításhoz. A kulcsfontosságú megállapodás esetében vegye figyelembe az ECDH-t (Diffie-Hellman egy elliptikus görbe felett) az egyik standard NIST görbével (pl. P-224, K-233 vagy B-233 - de a P-256 szélesebb körben támogatott). Az aszimmetrikus titkosításhoz használjon RSA-t elég nagy kulccsal (1024 bites rövid távú biztonság, lehetőleg 1536 vagy 2048 bites) és PKCS # 1 párnázással (v1.5 "régi stílusú" finom, de az OAEP finomabb). Az aláírások esetében fontolja meg az ECDSA-t (ugyanazokat az görbéket, mint az ECDH-t) vagy az RSA-t, amely elég nagy ahhoz, hogy a kulcsot és a PKCS # 1 párnázatot (v1.5 vagy PSS). Soha ne alakítsd ki saját algoritmust (vagy ha igen, soha ne higgye el, hogy biztonságos).

A legtöbb biztonsági probléma azonban nem az algoritmus kiválasztásában, hanem annak használatában. A WEP az RC4-et használja, de az RC4 nem egyike a WEP számos hiányosságának. A Sony védte a PlayStation 3-ot az ECDSA-val, amely biztonságos, de elrontotta véletlen generációját, ami katasztrofális hibát eredményezett (privát kulcs expozíció .

Az RC4 valószínűleg a legjobb megoldás. A nem megfelelő használat a WEP problémáinak oka, ami azt sugallja, hogy bonyolult a szakértők számára is. A megfelelő használatához azt jelenti, hogy elég nagy (legalább 128 bites) kulcsot választunk, a kulcsot és a IV-et biztonságos módon (például a haszást a kötéshez képest) választjuk ki, és elvesznek a kulcsfolyadék kezdeti részét a gyenge szintű támadások (256 oktettek). Az EB SECURITY egyszerűen úgy definiálható, mint: ez egy sor
eljárások, gyakorlatok és technológiák a megbízható, kiszámítható működésű webszerverek, webböngészők, más programokat, amelyek kommunikálnak a webszerverekkel, és a
a környező internetes infrastruktúrát [1]. A biztonság nem szól meglepetés, valójában a biztonság ügyel arra, hogy a rendszer viselkedjen arra számítunk, hogy viselkedik. A webes biztonsági szempontból, két olyan szervezet létezik, akiknek van ilyen várakozásuk, (a) Felhasználók
és (b) szerverek. A felhasználók arra számítanak, hogy a kiszolgáló folytatja szolgáltatását
hogy a kiszolgálónak átadott információkat változatlanok maradnak, és azokat nem osztják ki azoknak akinek a felhasználók (adat-tulajdonosok) nem akarják azt elosztani. A felhasználók azt is elvárják, hogy a kiszolgáló, amelyhez csatlakoznak, nem gazember szerver. A kiszolgálók elvárják, hogy a végfelhasználó rendszere biztonságos és mentes a vírusoktól, hogy ez ne károsítsa a kiszolgálót. Azt is elvárják, hogy a felhasználó engedélyezett felhasználó legyen, és nem
valaki, aki álarcos, hogy engedélyezett legyen. felhasználók és a Server mindketten elvárják, hogy a kapcsolat közöttük nem lehet könnyen megzavarni és a kommunikációt ők mentesek a lehallgatástól.
Miért van szükség a webes biztonságra, a legjobban érthető a gondolkodás a célokról. A következőkben vannak a webes biztonsági célok arra késztetett bennünket, hogy gondoljunk a titkosításra Hitelesítés: Ez a biztonsági intézkedés, amely ellenőrzi a üzenetforrást, és igazolja, hogy az egyén az akinek állítása szerint Engedélyezés: a felhasználó által engedélyezett jogosultságokra koncentrál tennie. A felhasználó hitelesítése után a biztonságos rendszernek meg kell felelnie azt is eldönti, hogy milyen kiváltságokkal rendelkezik Nem visszautasítás: Biztos, hogy a az információ a kézbesítés igazolásával és a  címzett igazolja a feladó személyazonosságát, így később sem tagadhatja, hogy feldolgozta az információkat Titoktartás: Biztosítja, hogy az illetéktelen személyek,
folyamatok vagy eszközök nem férnek hozzá egy darabhoz információk  Integritás: A biztonsági rendszerekben az integritás biztosítja, hogy a az adatok pontossága és hogy nem tartalmaz jogosulatlan adatokat módosításokat. Elérhetőség: Az elérhetőség azt jelenti, hogy a rendszereknek meg kell felelniük a megfelelő időben hozzáférhetővé téve ezeknek a rendszereknek a rendelkezésre bocsátását érték. Nyomon követhetőség és auditálás: az egyik kulcs a helyreállításhoz
a támadásról tudni kell, hogy ki tette, mit, és mikor tették. Elrettentő irányításként is működik, mert tudta, hogy létezik az elszámoltathatósági rendszer bizonyos esetekben visszatarthat potenciális támadók Néhány passzív és aktív hálózati támadások , amelyeket meg kell oldani a felhasználással
titkosítás: Lehallgatás: A támadó hozzáférést biztosít a hálózatot, hogy "bejusson" vagy értelmezze (olvassa) a forgalmat. Ez általában a legnagyobb biztonsági probléma, amellyel egy vállalkozás. Erős titkosítási szolgáltatások nélkül a titkosítást illetően az adatok mások által olvashatók, ahogy halad
a hálózatot. Adatmódosítás: A támadó az adatokat átmásolja a hálózat a feladó vagy a vevő tudta nélkül. Identity Spoofing: A támadó speciális programokat használ olyan IP-csomagok létrehozása, amelyek úgy tűnik, hogy érvényesek címek, amikor a valóságban hamis. Denial-of-Service: a szolgáltatásmegtagadási támadás megakadályozza a a rendszer érvényes felhasználók által.
Man-in-the-Middle: Középső támadás történik amikor valaki és az a személy, akivel vagy a kommunikáció aktívan figyeli, rögzíti, és kommunikációjának átlátható ellenőrzése. Man-in-A semmi közepén a támadások olyanok, mint valaki, aki beazonosítja a személyazonosságát hogy olvassa el az üzenetet. A másik végén lévő személy lehet hisz te vagy, mert a támadó lehet aktívan válaszolva, hogy tartsa meg a csereprogramot és nyerjen többet információ.

https://pdfs.semanticscholar.org/187d/26258dc57d794ce4badb094e64cf8d3f7d88.pdf

http://www.ief.uni-rostock.de/basoti/material/basoti2013/cc/Ahrens_part3.pdf