| Autor | Zpráva | ||
|---|---|---|---|
| Ondřej Ryška Profil |
#1 · Zasláno: 9. 11. 2013, 14:18:44
Zdravím,
docela dlouho jsem se snažil vzdáleně se připojit na moji databázi. Pořád mi to nešlo ale nakonec jsem to rozchodil, protože jsem našel že je třeba upravit iptable. O tom že nějaké iptable existuje a že je to firewall jsem se dozvěděl až teď tak o tom nic moc nevím. VPS mám zadarmo od známého, ten po mě jen požaduje, abych na serveru nenadělal díry. Tak bych se chtěl zeptat jestli otevření portu pomocí následujícího příkazu není nějak nebezpečné: /sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT Tento příkaz jsem našel a chápu ho tak, že otevřu tcp port 3306 pro jakýkolikv (z jakékoliv ip adresy) vzdálený přístup. Je to standardní bezpečné řešení? Ještě mě napadá použít /sbin/iptables -A INPUT -i eth0 -s 192.168.1.0/24 -p tcp --destination-port 3306 -j ACCEPT pro omezení na konrétní adresu, ale budu potřebovat přistupovat z různých adres. Chci se jen ujistit, jestli nedělám něco špatně. |
||
| DJ Miky Profil |
#2 · Zasláno: 9. 11. 2013, 19:08:55
Povolit všem přístup k MySQL démonu nikdy nebude standardní ani bezpečné řešení. Pokud je to možné, povol jen přístup z určitých důvěryhodných IP adres (případně sítí), to se provádí tím druhým příkazem. Takto povolených IP adres může být více (zopakováním příkazu). Přístup z počítačů s dynamickými IP adresami může být vhodné řešit tunelovaným spojením přes důvěryhodný stroj s pevnou IP adresou (klíčová slova pro hledání: „ssh tunnel“, „ssh port forwarding“).
U pravidel v iptables nezapomeň nastavit/zkontrolovat jejich obnovu při restartu serveru. Dále může být vhodné omezit počet příchozích spojení za nějaké časové kvantum, třeba povolit maximálně 1 spojení za 1 sekundu (klíčová slova pro hledání: „iptables limit rate“, „iptables recent module“). Pomoci může i analyzátor logů typu DenyHosts, který hlídá logy a při překročení maximálního počtu pokusů o přihlášení (kvůli špatnému heslu) danou IP adresu na určitou dobu zablokuje. Jinak ještě může být potřeba zapnout naslouchání MySQL na vnějších rozhraních, typicky kromě filtrování na firewallu bývá povoleno pouze naslouchání na lokální smyčce. |
||
| Ondřej Ryška Profil |
#3 · Zasláno: 9. 11. 2013, 19:40:42
DJ Miky:
„Pokud je to možné, povol jen přístup z určitých důvěryhodných IP adres (případně sítí), to se provádí tím druhým příkazem.“ Já už jsem zadal první příkaz, tedy ten pro povolení přístupu z jakékoliv adresy. Překryje se tedy toto ne-bezpečné nastavení zadáním druhého příkazu pro konrétní adresu? Jinak za ty další tipy díky, podívám se na ně. |
||
| DJ Miky Profil |
Ne, pravidla pro iptables se nijak nenahrazují ani neruší, aktuální seznam si můžeš vždy vypsat příkazem
iptables -L. Pro odstranění konkrétního pravidla použiješ stejný zápis jako při přidávání, jen místo přepínače -A zadáš -D. Mimochodem, záleží i na pořadí pravidel, prochází se „odshora dolů“, od nejnižšího čísla po nejvyšší (tedy standardně od nejstaršího po nejnověji přidané, pokud pořadí ručně nezměníš).
Ještě dodatek – měl bys pak požádat někoho zkušeného a důvěryhodného o kontrolu výsledné konfigurace. Pokud se v administraci serveru neorientuješ, můžeš nevědomky vytvořit bezpečnostní díru, což se ti může vymstít. |
||
| Ondřej Ryška Profil |
#5 · Zasláno: 10. 11. 2013, 12:12:36
Komplikace... Přenastavil jsem pravidla v iptables tak aby bylo vše ve výchozím nastavení, tedy abych se zvenku nemohl vůbec (z žádné adresy) připojit. I po zadání
iptables -L nastavení vypadalo tak jak jsem chtěl, tedy žádný povolený přístup zvenku přes port 3306. Takže nastavení tabulky proběhlo asi v pořádku. Ale v NetBeans se mi pořád dařilo se připojit k databázi. Tak jsem si myslel, že bude třeba restartovat. Restartoval jsem mysql server - nepomohlo, apache - nepomohlo. Tak sem si řekl, že bude asi třeba restartovat celý systém který běží na Ubuntu. Na googlu jsem jako první příkaz pro restart našel reboot ,resp. sudo reboot. Tak jsem ho zbrkle zadal. Něco málo se mi vypsalo na konzoli a potom už jen vyskočil error, putty se sekla, winscp taky vypsalo chybu spojení. Prostě jsem svůj vps shodil protože se mu asi nepodařilo znovu nabootovat. Teď to pořeším se známým který má na starosti celý server kde mi můj malý vps běžel, snad to půjde nahodit.. Mimochodem neví někdo čím to je že reboot tohle způsobil, a jestli je pro správce problém takový systém znovu nahodit? Já tipuji že možná nebyl nalezen zavaděč grub. Jinak jak se podaří server zprovoznit tak se v tomhle threadu vrátím s problematikou iptables..
|
||
| DJ Miky Profil |
#6 · Zasláno: 10. 11. 2013, 12:36:04
Pokud se pořád šlo připojit zvenčí odkudkoliv, tak je zřejmě nastaveno automatické propouštění paketů, pokud je nějaké pravidlo nezakáže. Z výpisu
iptables -L to poznáš podle hodnoty policy u vstupní fronty, např.:
Chain INPUT (policy ACCEPT) ACCEPT, pak se standardně propustí vše. Musel bys tedy nastavit pravidla pro propuštění paketů z důvěryhodných adres a za ně přidat pravidlo pro zahození všech ostatních paketů (obdoba prvního pravidla v prvním příspěvku, jen místo -j ACCEPT by bylo -j DROP). Ještě jednou upozorňuji, že na pořadí záleží, takže toto obecné pravidlo musí být na konci seznamu.
Co se týče nenabootování serveru, příčin může být milion. Nechal jsi serveru nějaký čas (desítky sekund, můžou to být i minuty) nabootovat znovu? Tzn. nezkoušel jsi se připojovat ihned po odklepnutí rebootu? Grub zní nepravděpodobně. Musel bys s ním vědomě něco provést, sám od sebe nezmizí. Navíc taky záleží na druhu virtualizace, u těch „lehčích“ (na úrovni operačního systému, např. OpenVZ) se ve virtuálním stroji se zavaděčem vůbec nepracuje. |
||
| Amunak Profil |
#7 · Zasláno: 10. 11. 2013, 13:03:43
Ondřej Ryška:
Taky je možné, že sis resetoval iptables tak, že nepustí vůbec žádný packet, takže, server vypadá jako offline a nepřipojíš se k němu, i když ve skutečnosti jede. To, že ti putty vyerroruje po rebootu je normální - pro ní to vypadá, jako kdyby se nečekaně přerušilo spojení. Mělo by pak po dostatečné době, až se stroj zresetuje, stačit kliknout pravým do okna putty a vybrat "restart session", ono tě to pak samo připojí. |
||
| Ondřej Ryška Profil |
#8 · Zasláno: 10. 11. 2013, 14:08:28
Co se týče iptables - jelikož se nemohu připojit na server tak se teď na nastavení iptables nepodívám. Ale jak bude server v provozu, tak to zkontroluju a pokud bude povolené to automatické propouštění paketů, tak nastavím pravidlo pro propouštění paketů z konkrétní adresy a zahození paketů ostatních, tak jak píšeš.
Problém s nabootováním - po zadání příkazu reboot jsem serveru nějaký čas nechal. Ale je dost možné že jsem po delším čekání stiskl nějakou klávesu a to možná bude příčina nenabootování. Moje zbrklost prokletá.. Tím grubem to asi teda nebude, nepamatuji si totiž že bych s ním cokoliv dělal. Teď budu čekat na odpověď správce a pak skusím dořešit nastavení toho firewallu. Amunak: „Taky je možné, že sis resetoval iptables tak, že nepustí vůbec žádný packet, takže, server vypadá jako offline a nepřipojíš se k němu, i když ve skutečnosti jede.“ Díky, to mě nenapadlo, i to je možné. I když server nefunguje ani pozadání ip nebo bindované domény do url v prohlížeči. Počkám na verdikt správce. |
||
| Amunak Profil |
#9 · Zasláno: 10. 11. 2013, 14:22:41
Ondřej Ryška:
Jestli jde o virtuální server, mělo by být možné do virtualizéru nainstalovat/povolit KVM, aby se dalo na stroj připojit vzdáleně když to nijak jinak nejde. Pak by takovéhle zásahy byly možné bez správce. |
||
| Ondřej Ryška Profil |
#10 · Zasláno: 11. 11. 2013, 19:51:51
Takže problém s bootováním nebyl z mé strany. Správce nechal namoutované instalační cd a po rebootu se tedy chtěl systém instalovat místo nabootovat.
Iptables jsem nastavil tak jak poradil DJ Miky. Teď se jde přihlásit pouze z adresy která je v ACCEPT pravidle. Výpis iptables vypadá takto: Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- 111.111.111.111 anywhere tcp dpt:mysql DROP tcp -- anywhere anywhere tcp dpt:mysql Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Díky za pomoc. |
||
|
Časová prodleva: 12 let
|
|||
0