[ nemysis @ 13.04.2008. 16:26 ] @
Na obadva PC sam instalisao Gentoo, veoma su udaljeni.

PC A, ADSL Router, DynDNS Account.

PC B, direktna veza, statična adresa.

Na obadva PC-a su sledeća podešavanja:


/etc/ssh/ssh_config sve default sem
Port xxxx
Compression yes
# http://gentoo-wiki.com/TIP_SSH_Socket
Host *
ControlMaster auto
ControlPath ~/.ssh/socket-%r@%h:%p

/etc/sshd_config sve default sem
Port xxxx
PermitRootLogin no
# http://gentoo-wiki.com/TIP_SSH_Reverse_Tunnel
TCPKeepAlive no
ClientAliveInterval 30
ClientAliveCountMax 9999

ssh-keygen -t dsa --> za sve korisnike na obe strane

Sve je išlo najbolje dok B nije imao jedan neželjeni reboot, u tom momentu je baš radilo emerge -auvnD world

Od B može se bez problema povezati sa A. Normalni internet radi dobro.

ssh -p xxxx [email protected]

A se ne može povezati sa B. Normalni internet radi dobro.

ssh -p xxxx [email protected]

Dolazi samo ova poruka:

ssh -p xxxx -l -v -v [email protected]
OpenSSH_5.0p1, OpenSSL 0.9.8g 19 Oct 2007
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: auto-mux: Trying existing master
debug1: Control socket "/root/.ssh/[email protected]:xxxx" does not exist
debug1: Connecting to 123.456.789.12 [123.456.789.12] port xxxx.
debug1: connect to address 123.456.789.12 port xxxx: Connection timed out
ssh: connect to host 123.456.789.12 port xxxx: Connection timed out

Na obe strane mogu se korisnici prijaviti na localhost.

ssh -p xxxx -v -v -l user localhost

Na obe strane mogu se administratori prijaviti na localhost, to je bilo privremeno dozvoljeno u /etc/ssh/sshd_config.

ssh -p xxxx -v -v -l root localhost

tcpdump -vv na B prikazuje pokušaje povezivanja od A ka B, ali ne prolazi.

U zaštitnom zidu i ADSL Router-u kod A i zaštitnom zidu kod B su Port-ovi xxxx TCP za SSH propušteni.

emerge -a sys-auth/pambase sys-libs/pam libtool openssh keychain

revdep-rebuild

Preimenovanje od

/etc/ssh
/root/.ssh
/home/user/.ssh

i pravljenje nove konfiguracije nije pomoglo.

Ne znam više šta da uradim.

Svaka pomoć je dobrodošla.

[Ovu poruku je menjao nemysis dana 13.04.2008. u 18:02 GMT+1]
[ marko85 @ 13.04.2008. 21:15 ] @
Pozdrav,
Da li jedan od tih server-a koristi IP tables?
Uglavnom ugasi IP tables ako ih koristis i probaj da li radi..
Takodje pokusaj da uradis telnet na port 22 i vidi sta bude.
Uglavnom ako slusa onda je stvar u premissions.

[ nemysis @ 14.04.2008. 00:48 ] @
@marko85

Hvala ti za tip, bila su pogrešna podešavanja Iptables.

Guarddog je verovatno bio otvoren kad je bio reebot i zapamtio je nešto pogrešno iako je dobro pokazivao, mislim GUI.

Kad sam ga deaktivirao zaštitni zid, sve je moglo.

Onda sam od A na B kopirao /etc/rc.firewall.

Sin je malo promenio portove koji nisu isti, jer tamo je Server koji ima svoj zaštitni zid, koji je povezan sa Switchom 1X8 i opslužuje 3 kompjutera i satelitski prijemnik.

Sa telnetom nije moglo zbog tog zaštitnog zida kod B (Server), tu je to zatvoreno. Ne vredi u Iptables zaštitnom zidu od Kernel-a propustiti kad gore ne prolazi.

Usput sam podesio

/etc/ssh/ssh_config
Port xxxx
Protocol 2
#Compression delayed --> Očigledno treba se samo na jednoj strani koristiti i to u Server konfiguraciji
TCPKeepAlive no
ServerAliveInterval 30
ServerAliveCountMax 99999

# http://gentoo-wiki.com/TIP_SSH_Socket
Host *
ControlMaster auto
ControlPath ~/.ssh/socket-%r@%h:%p


/etc/ssh/sshd_config
Port xxxx
Protocol 2
Compression delayed
PermitRootLogin no

# http://gentoo-wiki.com/TIP_SSH_Reverse_Tunnel
TCPKeepAlive no
ClientAliveInterval 30
ClientAliveCountMax 99999

Da li su ta podešavanja dobra?

Hvala puno nemysis
[ marko85 @ 14.04.2008. 19:14 ] @
Naprimer ja bi ogranicio samo da ti moze jedan user da koristi ssh.
U fazonu user meksikanac jedino moze da se ubaci.
To mozes da uradis sa forom AllowUsers

Tako da ti je malo sigurnije.

Uglavnom drago mi je da ti sve radi ok.

Pozdrav.
[ nemysis @ 15.04.2008. 02:20 ] @
Ja koristim normalno samo jednog "prividnog" dummy korisnika na svim mašinama, isti broj UID.

On nema nikakva prava sem što je u grupi wheel da bi se mogao na drugoj strani i kod mene ulogovati kao root. I što može pisati samo u jednom direktorijumu

/podaci/Razmena

Znam za tu foru da se samo jedan korsnik dozvoli, ali ja ponekad moram da pošaljem neku fajlu, na koju prividni korisnik nema prava, a korisnik na drugoj strani ima isti UID pa mu automtski pripada kad je dobije.

Ovako je skoro svuda opisano da se naprave ključevi na drugoj strani

ssh-installkeys -p xxxx [email protected]

a ja koristim malo komplikovaniju komandu koja bolje radi

chmod 700 ~/.ssh | chmod 600 ~/.ssh/authorized_keys \
| cat ~/.ssh/id_dsa.pub | ssh -p xxxx [email protected] "cat >> .ssh/authorized_keys" \
| chmod 700 ~/.ssh | chmod 600 ~/.ssh/authorized_keys

Kontroliše permisije na obe strane i prebacuje ključ ali ne prebrisuje neki postojeći javni ključ već dodaje u authorized_keys. Jedina mana je da ne kontroliše postoji li već taj ključ koji se prebacuje, ali ne može sve biti idealno.

Danas sam opet dobio probleme. Očigledno iptables i Guarddog zezaju. Dosada sam uvek bio prezadovoljan sa Guarddoog-om, ali ovo više nema smisla.

Elem danas je sinu opet crkao PC i sad se on nije mogao ulogovati kod mene a ja sam mogao kod njega. Kad smo oba restatovali kompjutere, ja sam i dalje mogao a on nije. Srećom Pidgin još uvek radi pa smo se tako dogovarali.

Onda sam i kod njega i mene maskirao

net-firewall/iptables-1.4.0-r1
net-firewall/iptables-1.4.0

i instalisao verziju

net-firewall/iptables-1.3.8-r3

i usput

net-firewall/guarddog-2.6.0

ponovao instalisao.

Onda nisam bio lenj već sam rc.firewall preimenovao i napravio sasvim novu konfiguraciju sa beleški.
Onda sam za svaki slučaj ponovo startao PC i više puta rekao

killall sshd
/etc/init.d/sshd restart

Ali ni to nije pomoglo, sad ne mogu da se ulogujem više uopšte.

Očigledno je problem od iptables. Guarddog i iptables imaju nekih problema.

Pozdrav nemysis.

[ buda01 @ 15.04.2008. 10:33 ] @
Deinstaliraj taj guardog i sve ostale nadgradnje firewalla, jer iptables je nesto najbolje sto postoji u Linuxu.
[ nemysis @ 18.04.2008. 22:58 ] @
@buda01

Prihvatam potpuno tvoje mišljene.

GUI za zaštitni zid su samo šminka i unose ponekad greške, na primer:

Portovi su propušteni ali ne rade, mada u skripti postoje, provereno. Daju lažnu sigurnost da je sve moguće urađeno, a postoji toliko mnogo mogućnosti koje oni ne poznaju. Uključuju opcije koje se ne vide u GUI a uopšte ne trebaju.

Pogledao sam malo /usr/src kod mene i na drugoj strani i shvatio sam da je sve počelo od Kernel verzije 2.6.24.4.

Normanlo imam ja uvek nekoliko verzija Kernela pa i od 2.6.24.3. Alii tek sa verzijom 2.6.24.4 sam prešao potpuno na SATA i SCSI protokol i promenio /etc/fstab pa sad pravim novi Kernel.

Startao sam 2.6.24.3-5 kod mene i na drugoj strani i SSH veza ne radi opet.

Sad sam počeo da od nule pravim skriptu za iptables pravila (rc.firewall).

#/etc/rc.firewall
#!/bin/sh

# Varijable

IP_RANGE="192.168.1.1/24" # IP Opseg u mrezi

Tu su i varijable za portove, koji se mogu menjati, na primer

SSH_PORT="xxxx" # SSH xxxx TCP (originalno 22)

# Osnovna pravila
# Zabrana za sve, posle dodavati šta je stvarno potrebno, tako da su i nove nepoznate greške pokrivene!


iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP


# Ne brisati Kernel-ov sistemski firewall

iptables -F
# Brise table
# iptables -X

Milslim da će se ostali automatski podignuti. Treba li još koji?
# Podizanje modula

modprobe nf_conntrack
modprobe ip_conntrack_ftp


# Ova pravila odbacuju sve kao NEW prepoznate TCP pakete, koji ne pokusavaju da uspostave novu vezu.
# Bez tih pravila mora se kod TCP pri opciji
# -m state --state NEW uvek dodati i opcija --syn
# Novi paketi koji ne uspostavljaju vezu, logirati i odbaciti

iptables -A INPUT -p tcp ! --syn -m state --state NEW -j LOG
iptables -A OUTPUT -p tcp ! --syn -m state --state NEW -j LOG
iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j LOG
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP


# Lukavo je koristiti upotrebu jednog posebnog modula za nadzor stanja veze.
# Ako to uradimo Linux firewall pamti sve postojece veze. Cim naidje jedan paket, on proverava, da li pripada nekoj
# poznatoj vezi i propusta ga bez ikakvih daljih pitanja. ! --syn pravilo ne mozemo koristiti.
# Svi paketi se prihvataju, koji su ili deo jedne postojece veze ili se propoznaju kao "slicni" paketi.
# "Slicni" paketu su ICMP javljanja o greskama ili posebni kanali od FTP sesije.
# State module aktivirati za sve uspostavljene veze.

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT


# Lokalna mreza

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT


# Sigurnost

iptables -N bad_packets
iptables -A bad_packets -p ALL -m state --state INVALID -j DROP # lose pakete baciti
iptables -A bad_packets -p tcp -s $IP_RANGE -j REJECT --reject-with tcp-reset # Antispoofing
iptables -A bad_packets -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT # Ping Of Death, odgovor samo jednom u sekundi (s
iptables -A bad_packets -p tcp --dport $SSH_PORT -m limit --limit 1/sec -m state --state NEW -j ACCEPT # Samo jedan pokusaj SSH veze u se
iptables -A bad_packets -p ALL -j RETURN # vraca kontrolu nazad

iptables -N service_sec
iptables -A service_sec -p tcp --syn -m limit --limit 1/s -j ACCEPT # SYN-Flood napadi
iptables -A service_sec -p tcp ! --syn -m state --state NEW -j DROP # TCP-SYN pakete bez statusa NEW baciti
iptables -A service_sec -p tcp --tcp-flags ALL NONE -m limit --limit 1/h -j ACCEPT # Portscaner iskljuciti
iptables -A service_sec -p tcp --tcp-flags ALL ALL -m limit --limit 1/h -j ACCEPT # Portscaner iskljiciti
iptables -A service_sec -p ALL -j RETURN # vraca kontrolu nazad

Koja od ovih pravila su bolja i sigurnija za otvaranje portova? Da li je ispravna sintaksa:

1. primer:
# Da se mogu slati TCP paketi Server-ima
iptables -A OUTPUT -p tcp --sport 1024: --dport 80 -j ACCEPT

# Da se primaju TCP paketi, ali da se ne mogu novi paketi uspostaviti, ako vec ne pripadaju nekoj postojecoj vezi.
# Znaci mi mozemo uspostaviti vezu a strani kompjuteri ne mogu.
iptables -A INPUT -p tcp --sport 80 --dport 1024: ! --syn -j ACCEPT

2. primer:
# Umesto dve komande moze samo jedna. Svi paketi spolja su dozvoljeni dok god ne zatraze novu vezu, bilo koji Port da su.
# Ali tako dolazi vise paketa nego sto nam treba.
iptables -A INPUT -p tcp --dport 1024: ! --syn -j ACCEPT

3. primer:
iptables -A OUTPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT

4. primer:
Da li je svrsishodno navesti ovaj opseg? Mislim da to nije sigurrno.
iptables -A OUTPUT -p tcp --sport 1024:5999 --dport 80:80 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --sport 1024:5999 --dport 80:80 -m state --state NEW -j ACCEPT

5. primer:
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Da li je ispravna sintaksa i najveća moguća sigurnost za 53 AUTH port?

# Jedini izuzetak su paketi za Auth port:
# Oni trebaju naprimer FTP, Mail serverima za legitimnu identifikaciju.
# To ne dozvoljavamo, ali necemo dugo da cekamo dok strani racunar ne odustane
# http://serversupportforum.de/f...r4you-iptables-venet0-0-a.html
# Ako se FTP, Mail klijenti nalazi iza Router-a, bez logovanja

iptables -A INPUT -p tcp --dport auth -j REJECT --reject-with tcp-reset
iptables -A OUTPUT -p tcp --dport auth -j REJECT --reject-with tcp-reset
iptables -A FORWARD -p tcp --dport auth -j REJECT --reject-with tcp-reset
# iptables -A INPUT -j DROP


#Sve ostalo se ne propusta
echo -e " - iskljuciti ostatak mreze"
# block out all other Internet access on $EXTIF
iptables -A INPUT -m state --state NEW,INVALID -j DROP
iptables -A OUTPUT -m state --state NEW,INVALID -j DROP
iptables -A FORWARD -m state --state NEW,INVALID -j DROP

# Logovanje svega što nije dozvoljeno

iptables -A INPUT -j LOG
iptables -A OUTPUT -j LOG
iptables -A FORWARD -j LOG

# Podesavanje Kernel-a, nije normalno podesavanje Iptables, ali dobro pase ovde

# Ukljucuje Kernel-ovu IP zastitu, ne odgovarati na Broadcast Ping
echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Otezava Syn napade, koji salju pogresne prijave
echo 1 >/proc/sys/net/ipv4/tcp_syncookies

# Da se spolja ne vidi koliko dugo vec Linux radi
echo 0 > /proc/sys/net/ipv4/tcp_timestamps

Opseg može da se navede i u komandi, ovako je elegantnije.
# Koji su portovi dopusteni bez pravila
echo "1024 5999" > /proc/sys/net/ipv4/ip_local_port_range

#http://www.ip-phone-forum.de/showthread.php?t=159575
echo 1 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_be_liberal

# Prekida lazne ICMP poruke
echo 0 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

# Odbija ceo IP Spoofing shit
# (Ukljuciti proveru izvora (Source))
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter

# Odrediti standardnu TTL na 61 (Standardno je u Linux-u 64)
echo 61 > /proc/sys/net/ipv4/ip_default_ttl

# Posalji RST pakete kad je Buffer pun
echo 1 > /proc/sys/net/ipv4/tcp_abort_on_overflow

# Cekaj najvise 30 sekundi na FIN/ACK
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

# Prekini uspostavljanje veze posle 3 SYN paketa (Standardo je 6)
echo 3 > /proc/sys/net/ipv4/tcp_syn_retries

# Prekini uspostavljanje veze posle 3 SYN/ACK paketa (Standardo je 6)
echo 3 > /proc/sys/net/ipv4/tcp_synack_retries

# Da se mogu slati paketi na druge racunare, mora biti zadnja komanda
echo 1 >/proc/sys/net/ipv4/ip_forward

Da li je sve ovo potrebno i svrsishodno? Treba li još nešto? Da li je dobra sintaksa i raspored komandi?

Ja želim što veću sigurnost, po mogućnosti maksimalnu , koju može jedan firewall da da, ali koja ne usporava osetno saobraćaj.

Da li je bolje ovo ili Arno's Projects (arno-iptables-firewall)?

Hvala na svakom komentaru.

Pozdrav nemysis

[Ovu poruku je menjao nemysis dana 19.04.2008. u 04:16 GMT+1]
[ buda01 @ 19.04.2008. 10:48 ] @
A jel ti radis za CIA?

Sta ce ti ovolika sigurnost, verujem da ovo nema ni NASA.

Jednostavno stavis default policy REJECT, pustis par portova koje treba, npr ssh, eventualno ogranicis na neke source adrese, odradis neko NAT-ovanje ako ti treba, mozes i VPN da pustis, i kraj price.

I sta ce ti toliko logovanje, ko ce posle da se snadje u tom "djubretu".

Treba da nadjes meru u svemu, pa i u security inace postaje kontraproduktivno.
[ nemysis @ 19.04.2008. 11:59 ] @
Ma ne radim ja ni za CIA ni Za NASA.

Ali želim najveću moguću sigurnost jer znam koje sve opasnosti mogu doći sa interneta. Imao sam pre velikih problema.

default policy REJECT
Ne smatram da je dobro dati na znanje napadaču da su nepoželjni paketi odbačeni.

default policy DROP
Ne propušta isto nepoželjne pakete, a napadač nema pojma o tome. Što mu pomagati?

Nego nisi mi odgovorio ono što me najviše zanima. Dao sam 5 primera. Koja je ispravna skripta za propuštanje portova?

Jasno mi je da je previše logovanja nepoželjno. Promene u gornjoj skripti

...
# Novi paketi koji ne uspostavljaju vezu odbaciti

iptables -A INPUT -p tcp ! --syn -m state --state NEW
iptables -A OUTPUT -p tcp ! --syn -m state --state NEW
iptables -A FORWARD -p tcp ! --syn -m state --state NEW
iptables -A INPUT -p tcp ! --syn -m state --state NEW
iptables -A OUTPUT -p tcp ! --syn -m state --state NEW
iptables -A FORWARD -p tcp ! --syn -m state --state NEW

Ovo isključujem
# Logovanje svega što nije dozvoljeno

iptables -A INPUT -j LOG
iptables -A OUTPUT -j LOG
iptables -A FORWARD -j LOG

Pozdrav nemysis