Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Iptables + ssh  (Přečteno 4706 krát)

klasyc

  • Aktivní člen
  • *
  • Příspěvků: 470
Iptables + ssh
« kdy: 16 Srpna 2010, 21:18:25 »
Ahoj všichni,

mám následující požadavek: chci, aby mi běželo ssh pro domácí síť na portu 22 a pro Internet na portu 2222. Přemýšlel jsem, jak to udělat a našel jsem jediné poněkud kostrbaté řešení: V iptables jsem nastavil na internetové rozhraní zahazovat port 22 a potom 2222 přesměrovat na 22. Připadá mi to ale jako prasárna. Existuje nějaký elegantnější způsob?

Díky za nápady.

MacHala

  • Stálý člen
  • **
  • Příspěvků: 1104
  • Big Bro iz watching joo!
    • ZlejT
Re: Iptables + ssh
« Odpověď #1 kdy: 17 Srpna 2010, 00:17:37 »
Citace: /etc/ssh/sshd_config
Kód: [Vybrat]
#       $OpenBSD: sshd_config,v 1.81 2009/10/08 14:03:41 markus Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options change a
# default value.

#Port 22
...
a uplne nejelegantnejsi zpusob je zagooglit, nebo hledat v man sshd slovo port
Prislusnik ligy, za kreativni pouzivani interpunkcnich znamenek, carek, predevsim.
=======================================
Tweetuju jako http://twitter.com/zl8

DuckD

  • Stálý člen
  • **
  • Příspěvků: 878
  • Open Srdcař
    • www.duckd.cz
Re: Iptables + ssh
« Odpověď #2 kdy: 17 Srpna 2010, 08:14:54 »
Já ještě nepochopil proč by to měla být prasárna a čeho chce klasyc dosáhnout. Zda mají běžet dvě služby ssh (jeden na portu 22 a druhý na 2222). Zda je před serverem nějaký router a jak je server umístěn ve vnitřní síti.
8) Lidé žijí v souborech. ===>> LINUXTERO <<=== Pravidelná dávka tvého linuxtera!

klasyc

  • Aktivní člen
  • *
  • Příspěvků: 470
Re: Iptables + ssh
« Odpověď #3 kdy: 17 Srpna 2010, 17:02:43 »
Server je připojený přímo do internetu. Když pustím ssh na port 22, tak se mi objevuje v logách obrovské množství různých útoků. Ssh na dvou portech současně běžet neumí (nebo si to aspoň myslím), takže by šlo buď nainstalovat 2 ssh servery (to by se muselo prasit do initových skriptů, to už jsem taky jeden čas tak měl...) a nebo udělat nějaké přeposílání firewallem. Šlo mi spíš o co nejelegantnější formulaci mého požadavku v iptables - tj. pustit ssh na port 22 a udělat něco, aby bylo z venku dostupné jen na 2222...

Tomáš Břinčil

  • Občanské sdružení Ubuntu ČR
  • Závislák
  • ***
  • Příspěvků: 1610
  • moje obrázky ↓
    • TomasBrincil.cz
Re: Iptables + ssh
« Odpověď #4 kdy: 17 Srpna 2010, 17:12:50 »
Tak jen routu v iptables, jinak to asi vymyslet nejde ne?

DuckD

  • Stálý člen
  • **
  • Příspěvků: 878
  • Open Srdcař
    • www.duckd.cz
Re: Iptables + ssh
« Odpověď #5 kdy: 17 Srpna 2010, 17:21:06 »
A na ten port 2222 nejsou pokusy o přihlášení? Zkus se mrknout na fail2ban - po několika pokusech zablokuje přístup z IP adresy (lze nastavit čas kdy se IP smaže z blacklistu).
Z internetu blokuješ port 22 nebo přímo zahazuješ pakety? Mezi tím je rozdíl, když blokuješ - odpovídáš, zahazování je prej lepší...
8) Lidé žijí v souborech. ===>> LINUXTERO <<=== Pravidelná dávka tvého linuxtera!

Armus69

  • Aktivní člen
  • *
  • Příspěvků: 297
    • http://www.netlancers.cz
Re: Iptables + ssh
« Odpověď #6 kdy: 17 Srpna 2010, 19:51:41 »
Ano fail2ban je dobré řešení a sám ho používám i na další služby jako je ftp, mail porty, atd, ale třeba na tohle by se obzvláště hodil portknocking. Samozřejmostí je použití ssh-klíče a password login je zakázán (doufám že to není jinak). Pak je samozřejmě možné tyto události v logu ignorovat.

   
jabber:  Armus69@jabber.cz

klasyc

  • Aktivní člen
  • *
  • Příspěvků: 470
Re: Iptables + ssh
« Odpověď #7 kdy: 19 Srpna 2010, 17:09:47 »
Paktery z portu 22 radši zahazuju. On problém je hlavně v tom, kdy je zahazovat - musím je zahazovat dřív, než provedu přesměrování z 2222 na 22 a to jde jenom v tabulce mangle a ta dokonce ani neumožňuje akci reject... SSh mám zatím jen na heslo, když to není well-known port, tak je tam celkem klid. Použití přihlášení s certifikátem by znamenalo rozjet druhou instanci ssh serveru, pač z vnitřní sítě sem línej psát i to -p2222 natož vybírat někde nějaký certifikát ;D

Martin Kiklhorn

  • Člen občanského sdružení Ubuntu ČR a placené komunitní podpory
  • Administrátor fóra
  • Závislák
  • ******
  • Příspěvků: 4807
  • グーグル!ご存知ですか?
    • HEJ
Re: Iptables + ssh
« Odpověď #8 kdy: 19 Srpna 2010, 18:57:51 »
příp. podobně jako fail2ban se dá použít denyhosts
Jsou ve vašem dotazu OPRAVDU VŠECHNY vám dostupné informace o problému?
Linux user since 2007-10-11, Registered #456007
Virtual
| Distribuce
~/slozka znamená /home/"vase jmeno"/slozka
6521 69DE 0F34 FCBC FB1D  DE76 360E 52B2 F71A B8E8

Armus69

  • Aktivní člen
  • *
  • Příspěvků: 297
    • http://www.netlancers.cz
Re: Iptables + ssh
« Odpověď #9 kdy: 20 Srpna 2010, 08:00:40 »
použití ssh klíčů je ještě jednodušší než psaní hesla, takže pro lenochy ideální a navíc bezpečné, v linuxu funguje nativně , ve windows funguje dobře s putty. Žádný certifikát se nevybírá. Přihlášení proběhne automaticky.
test@ubuntu:~$ssh-keygen
test@ubuntu:~$ssh-copy-id server (pokud  je uživatel jiný než na lokálním stroji tak se uvede jako uživatel@server)

pak se přihlásíme takto:
test@ubuntu:~$ ssh server   (nebo ssh root@server)
 
 pokud funguje, tak zakázat v konfigu přihlašování pomocí hesel.

Další možností usnadnění je vytvoření souboru ~/.ssh/config
   a do něj vložit
Kód: [Vybrat]
Host fw
User root
Hostname 192.168.0.1 (ip server nebo FQDN)
Port 22

Samozřejmě lze vložit více serverů než jeden a také více jednotlivých loginů k jednomu serveru. Pokud jsou jsou na každem serveru vloženy klíče pomocí ssh-copy-id
zase se přihlásíme jednodušeji protože uživatel , IP(FQDN), port se načte ze souboru config.
test@ubuntu:~$ssh fw  

##########

 Možná bude svádět vytvořit si ssh klíč bez hesla, pokud jde o přihlašování na jeden server v domácí síti je to asi jedno, ale pokud se budeš takto přihlašovat na důležitější servery tak je
 klíč s heslem nutností. pokud by totiž došlo ke krádeži souboru s privántním klíčem ~-/.ssh/id_rsa (rozhodně méně pravděpodobné než kompromitace hesla, ale krádež NTB z kanclu nebo z auta neni zase tak nemožná), tak útočník má ihned plný přístup ke všem strojům kde máš klíče. (mimochodem kdo z vás si odstranil z ubuntu apparmor? )
    Proto použijeme passphrase při generování hesla, a použijeme ssh-agenta na práci s rozšifrovaným klíčem. Můžeme mít více párů klíčů než jeden (pokud například pracujeme pro více klientů), s tím nám zase pomůže ssh-agent do kterého pomocí ssh-add ~/.ssh/id_rsa (id_rsa-prace1 , id_rsa-prace2, id_rsa-firmaXY)  načteme všechny privátní klíče co vlastníme.
poté při pokusu o přihlášení se nejprve vyžádá passphraze k rozšifrování privátního klíče, ten si ssh-agent uloží do cache a provede ssh. Rozšifrovaný klíč drží ssh-agent v paměti.
Dobu držení klíče lze poladit dle http://manpages.ubuntu.com/manpages/karmic/man1/ssh-agent.1.html
 Více poví strejda google.
   Pro lenochy http://principialabs.com/beginning-ssh-on-ubuntu/ a mnoho dalších.
« Poslední změna: 20 Srpna 2010, 08:54:32 od Armus69 »
jabber:  Armus69@jabber.cz

hama4tux

  • Návštěvník
  • Příspěvků: 94
Re: Iptables + ssh
« Odpověď #10 kdy: 27 Září 2010, 14:30:29 »
Paktery z portu 22 radši zahazuju. On problém je hlavně v tom, kdy je zahazovat - musím je zahazovat dřív, než provedu přesměrování z 2222 na 22 a to jde jenom v tabulce mangle a ta dokonce ani neumožňuje akci reject... SSh mám zatím jen na heslo, když to není well-known port, tak je tam celkem klid. Použití přihlášení s certifikátem by znamenalo rozjet druhou instanci ssh serveru, pač z vnitřní sítě sem línej psát i to -p2222 natož vybírat někde nějaký certifikát ;D

Nic takového žádné zahazovat dřív.
Prostě a jednouše
/sbin/iptables -A INPUT -i "Interface do netu"  --dport 22 -j DROP
/sbin/iptables -A PREROUTING -p tcp -d "interface do netu" --dport 2222 -j DNAT --to "lokalni IP serveru":22

nic složitýho zběsilího a je to na dva řádky

 

Provoz zaštiťuje spolek OpenAlt.