Difference between revisions of "Secure Shell (Српски)"

From ArchWiki
Jump to: navigation, search
m (Савет -> Tip)
(archive page)
 
(12 intermediate revisions by 5 users not shown)
Line 1: Line 1:
[[Category:Српски]]
+
#redirect [[ArchWiki:Archive]]
{{i18n|Secure Shell}}
+
[[Category:Archive]]
Secure Shell или SSH је мрежни протокол који дозвољава размену података путем сигурног канала између два рачунара. Шифровање пружа поузданост и интегритет података. SSH користи криптографију јавног кључа за аутентификацију на удаљени рачунар и дозвољава удаљеном рачунару да аутентификује корисника, уколико је то неопходно.
 
 
 
SSH се обично користи за пријављивање на удаљени рачунар и извшавање команди, али се такође користи и за тунеловање, прослеђивање TCP портова и X11 веза; трансфер података се може извршити коришћењем додељених SFTP или SCP протокола.
 
 
 
SSH сервер слуша на стандардном TCP порту 22. SSH клијент се користи за остваривање везе са ''sshd'' сервисом који прихвата удањене везе. Саставни су део модерних оперативних система као што су, Mac OS X, GNU/Linux, Solaris и OpenVMS. Постоје власничке, бесплатне и опен сорс верзије различитих нивоа комплексности.
 
 
 
(Source: [[Wikipedia:Secure Shell]])
 
 
 
= OpenSSH =
 
 
 
OpenSSH (OpenBSD Secure Shell) је комплет рачунарских програма који пружају шифровану комуникацију преко рачунарске мреже коришћењем ssh протокола. Направљен је као опен сорс алтернатива власничком Secure Shell софтверском пакету који нуди SSH Communications Security. OpenSSH је разијен као део OpenBSD пројекта, који води Theo de Raadt.
 
 
 
OpenSSH се често меша са OpenSSL; ипак, пројекти имају различите сврхе и развијају их различити тимови.
 
== OpenSSH инсталација ==
 
# pacman -S openssh
 
 
 
== Конфигураисање SSH ==
 
===Клијент===
 
SSH клијентска конфигурација се може наћи и изменити у {{ic|/etc/ssh/ssh_config}}.
 
 
 
Пример конфигурације:
 
 
 
{{hc|/etc/ssh/ssh_config|
 
#      $OpenBSD: ssh_config,v 1.25 2009/02/17 01:28:32 djm Exp $
 
 
 
# This is the ssh client system-wide configuration file.  See
 
# ssh_config(5) for more information.  This file provides defaults for
 
# users, and the values can be changed in per-user configuration files
 
# or on the command line.
 
 
 
# Configuration data is parsed as follows:
 
#  1. command line options
 
#  2. user-specific file
 
#  3. system-wide file
 
# Any configuration value is only changed the first time it is set.
 
# Thus, host-specific definitions should be at the beginning of the
 
# configuration file, and defaults at the end.
 
 
 
# Site-wide defaults for some commonly used options.  For a comprehensive
 
# list of available options, their meanings and defaults, please see the
 
# ssh_config(5) man page.
 
 
 
Host *
 
#  ForwardAgent no
 
#  ForwardX11 no
 
#  RhostsRSAAuthentication no
 
#  RSAAuthentication yes
 
#  PasswordAuthentication yes
 
#  HostbasedAuthentication no
 
#  GSSAPIAuthentication no
 
#  GSSAPIDelegateCredentials no
 
#  BatchMode no
 
#  CheckHostIP yes
 
#  AddressFamily any
 
#  ConnectTimeout 0
 
#  StrictHostKeyChecking ask
 
#  IdentityFile ~/.ssh/identity
 
#  IdentityFile ~/.ssh/id_rsa
 
#  IdentityFile ~/.ssh/id_dsa
 
#  Port 22
 
#  Protocol 2,1
 
#  Cipher 3des
 
#  Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
 
#  MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160
 
#  EscapeChar ~
 
#  Tunnel no
 
#  TunnelDevice any:any
 
#  PermitLocalCommand no
 
#  VisualHostKey no
 
HashKnownHosts yes
 
StrictHostKeyChecking ask}}
 
 
 
Препоручљиво је да се линија Protocol промени да изгледа овако:
 
Protocol 2
 
 
 
То значи да ће само Protocol 2 бити коришћен, пошто се Protocol 1 сматра несигурним.
 
 
 
===Сервис===
 
SSH сервисни конфигурациони фајл се може наћи и изменити у {{ic|/etc/ssh/ssh'''d'''_config}}.
 
 
 
Пример конфигурације:
 
 
 
{{hc|/etc/ssh/sshd_config|2=
 
 
 
# $OpenBSD: sshd_config,v 1.75 2007/03/19 01:01:29 djm Exp $
 
 
 
# This is the sshd server system-wide configuration file.  See
 
# sshd_config(5) for more information.
 
 
 
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
 
 
 
# 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
 
#Protocol 2,1
 
ListenAddress 0.0.0.0
 
#ListenAddress ::
 
 
 
# HostKey for protocol version 1
 
#HostKey /etc/ssh/ssh''host''key
 
# HostKeys for protocol version 2
 
#HostKey /etc/ssh/ssh''host''rsa_key
 
#HostKey /etc/ssh/ssh''host''dsa_key
 
 
 
# Lifetime and size of ephemeral version 1 server key
 
#KeyRegenerationInterval 1h
 
#ServerKeyBits 768
 
 
 
# Logging
 
#obsoletes ~QuietMode and ~FascistLogging
 
#SyslogFacility AUTH
 
#LogLevel INFO
 
 
 
# Authentication:
 
 
 
#LoginGraceTime 2m
 
#PermitRootLogin yes
 
#StrictModes yes
 
#MaxAuthTries 6
 
 
 
#RSAAuthentication yes
 
#PubkeyAuthentication yes
 
#AuthorizedKeysFile    .ssh/authorized_keys
 
 
 
# For this to work you will also need host keys in /etc/ssh/ssh''known''hosts
 
#RhostsRSAAuthentication no
 
# similar for protocol version 2
 
#HostbasedAuthentication no
 
# Change to yes if you don't trust ~/.ssh/known_hosts for
 
# RhostsRSAAuthentication and HostbasedAuthentication
 
#IgnoreUserKnownHosts no
 
# Don't read the user's ~/.rhosts and ~/.shosts files
 
#IgnoreRhosts yes
 
 
 
# To disable tunneled clear text passwords, change to no here!
 
#PasswordAuthentication yes
 
#PermitEmptyPasswords no
 
 
 
# Change to no to disable s/key passwords
 
#ChallengeResponseAuthentication yes
 
 
 
# Kerberos options
 
#KerberosAuthentication no
 
#KerberosOrLocalPasswd yes
 
#KerberosTicketCleanup yes
 
#KerberosGetAFSToken no
 
 
 
# GSSAPI options
 
#GSSAPIAuthentication no
 
#GSSAPICleanupCredentials yes
 
 
 
# Set this to 'yes' to enable PAM authentication, account processing,
 
# and session processing. If this is enabled, PAM authentication will
 
# be allowed through the ~ChallengeResponseAuthentication mechanism.
 
# Depending on your PAM configuration, this may bypass the setting of
 
# PasswordAuthentication, ~PermitEmptyPasswords, and
 
# "PermitRootLogin without-password". If you just want the PAM account and
 
# session checks to run without PAM authentication, then enable this but set
 
# ChallengeResponseAuthentication=no
 
#UsePAM no
 
 
 
#AllowTcpForwarding yes
 
#GatewayPorts no
 
#X11Forwarding no
 
#X11DisplayOffset 10
 
#X11UseLocalhost yes
 
#PrintMotd yes
 
#PrintLastLog yes
 
#TCPKeepAlive yes
 
#UseLogin no
 
#UsePrivilegeSeparation yes
 
#PermitUserEnvironment no
 
#Compression yes
 
#ClientAliveInterval 0
 
#ClientAliveCountMax 3
 
#UseDNS yes
 
#PidFile /var/run/sshd.pid
 
#MaxStartups 10
 
 
 
# no default banner path
 
#Banner /some/path
 
 
 
# override default of no subsystems
 
Subsystem      sftp    /usr/lib/ssh/sftp-server}}
 
 
 
За дозвољавање приступа само одређеним корисницима треба додати следећу линију:
 
AllowUsers    user1 user2
 
 
 
Можете променити и линије које изгледају као следеће:
 
{{bc|
 
Protocol 2
 
.
 
.
 
.
 
LoginGraceTime 120
 
.
 
.
 
.
 
PermitRootLogin no # (put yes here if you want root login)
 
}}
 
 
 
Може се и склонити коментар са опције BANNER и изменити {{ic|/etc/issue}} како би добили поруку добродошлице.
 
 
 
{{Tip| Може се променити подразумевани порт са 22 на неки други виши порт (види [http://en.wikipedia.org/wiki/Security_through_obscurity security through obscurity]).}}
 
 
 
Иако се порт који је додељен ssh може детектовати коришћењем порт скенера као што је nmap, мењање порта ће смањити број уноса у дневник.
 
 
 
{{Tip| Онемогућавање шифре при пријављивању може повећати сигурност, пошто сваки корисник који приступа серверу мора да креира ssh кључ. (види [http://wiki.archlinux.org/index.php/Using_SSH_Keys Using SSH Keys]).}}
 
 
 
{{hc|/etc/ssh/sshd_config|
 
PasswordAuthentication no
 
ChallengeResponseAuthentication no}}
 
 
 
===Дозвољавање приступа другим корисницима===
 
{{out of date}}
 
{{Box||Морате подесити овај фајл да би се удаљено повезали на Ваш рачунар пошто је после инсталације овај фајл празан.}}
 
 
 
Да дозволите другим корисницима да се повежу на Ваш рачунар мора се подесити {{ic|/etc/hosts.allow}}, и додати следеће:
 
 
 
{{bc|
 
# let everyone connect to you
 
sshd: ALL
 
 
 
# OR you can restrict it to a certain ip
 
sshd: 192.168.0.1
 
 
 
# OR restrict for an IP range
 
sshd: 10.0.0.0/255.255.255.0
 
 
 
# OR restrict for an IP match
 
sshd: 192.168.1.
 
}}
 
 
 
Сад треба проверити {{ic|/etc/hosts.deny}} и постарати се да изгледа овако:
 
ALL: ALL
 
 
 
Да би користили нову конфигурацију, треба ресетовати сервис (као root):
 
# /etc/rc.d/sshd restart
 
 
 
== Управљање SSHD процесом ==
 
Треба додати sshd з "DAEMONS" одељак {{ic|/etc/[[rc.conf]]}}:
 
DAEMONS=(... ... '''sshd''' ... ...)
 
 
 
За start/restart/stop процеса, треба користити следеће:
 
# /etc/rc.d/sshd {start|stop|restart}
 
 
 
==Повезивање на сервер==
 
За повезивање на сервер, покренути:
 
$ ssh -p port user@server-address
 
 
 
= Савети и трикови =
 
 
 
== Шифровани тунел ==
 
Ово је корисно за лаптоп кориснике који су повезани на несигурне бежичне везе. Једина ствар која је потребна је SSH сервер покренут са неке сигурне локације, као што је кућа или са посла. Корисно је користити динамички DNS као што је [http://www.dyndns.org/ DynDNS] да не би морали да памтимо нашу IP адресу.
 
 
 
=== Корак 1: Успостављање везе ===
 
Потребмо је извршити једну команту у Вашем омиљеном терминалу како би се веза успоставила:
 
$ ssh -ND 4711 user@host
 
где је {{ic|"user"}} корисничко име на SSH серверу покренутом на {{ic|"host"}}. Тражиће Вашу шифру, и онда сте повезани. {{ic|"N"}} застава онемогућава интерактивну командну линију, а {{ic|"D"}} застава спецификује локални порт на којем процес слуша (порт је могуће изабрати).
 
 
 
Један од начина са олакшавање успотаве везе је додавање псеудонима у {{ic|~/.bashrc}} фајл:
 
alias sshtunnel="ssh -ND 4711 -v user@host"
 
Корисно је додати verbose заставу {{ic|"-v"}}, јер тада можете да проверите да ли је то заиста повезано са тог излаза. Сад само морате да извршите {{ic|"sshtunnel"}} команду.
 
 
 
=== Корак 2: Конфигурисање браузера (или других програма) ===
 
 
 
Пређашњи корак је беспотребан ако се не конфигурише браузер (или други програми) за коришћење новокреираног тунела.
 
 
 
* За Firefox: ''Edit → Preferences → Advanced → Network → Connection → Setting'':
 
: Проверити ''"Manual proxy configuration"'' дугме, и унети "localhost" з ''"SOCKS host"'' текстуално поље, и онда унети број порта у следеће поље.
 
 
 
: Постарајте се да изаберете SOCKS4 као протокол који ће се користити. Ова процедура неће радити са SOCKS5.
 
 
 
== X11 прослеђивање ==
 
 
 
Да би користили графичке програме кроз SSH везу може се омогућити X11 прослеђивање. Једна опција се мора подесити у конфигурационим фајловима на серверу и клијенту (клијент представља десктоп рачунар са покренутим X11 сервером).
 
 
 
Инсталација xorg-xauth на сервер:
 
# pacman -S xorg-xauth
 
 
 
* Омогућити '''AllowTcpForwarding''' опцију у {{ic|sshd_config}} на '''серверу'''.
 
* Омогућити '''X11Forwarding''' опцију у {{ic|sshd_config}} на '''серверу'''.
 
* Подесити '''X11DisplayOffset''' опцију у {{ic|sshd_config}} на '''серверу''' до 10.
 
* Омогућити '''X11UseLocalhost''' опцију у {{ic|sshd_config}} на '''северу'''.
 
 
 
* Омогућити '''ForwardX11''' опцију у {{ic|ssh_config}} на '''клијенту'''.
 
 
 
Да би користили прослеђивање, потребно је повезати се на север помоћу ssh:
 
# ssh -X -p port user@server-address
 
Ако добијете грешке при покушају покретања графичких апликација пробајте поуздано прослеђивање:
 
# ssh -Y -p port user@server-address
 
Сад се може покренути било који X програм на удаљеном серверу, излаз ће бити прослеђен на локалну сесију:
 
# xclock
 
 
 
Ако се добије "Cannot open display" грешка, треба пробати следећу команду као не root корисник:
 
$ xhost +
 
 
 
ова команда ће дозволити свима прослеђивање X11 апликација. За ограничење прослеђивања на одређени хост треба уписати следеће:
 
$ xhost +hostname
 
 
 
где је hostname име одређеног хоста на који треба прослеђивати. Откуцајте "man xhost" за више детаља.
 
 
 
== Убрзавање SSH ==
 
Могуће је креирати све сесије ка истом хосту да користе једну везу, што ће повећати следећа пријављивања, додавањем тих линија под одговарајући хост у {{ic|/etc/ssh/ssh_config}}:
 
ControlMaster auto
 
ControlPath ~/.ssh/socket-%r@%h:%p
 
 
 
Мењање шифре коју користи SSH на оне које мање захтевају побољшавају брзину. Код овог аспекта, најбољи избор су arcfour и blowfish-cbc. '''Не радите ово ако не знате шта радите; arcfour има велики број познатих слабости'''. Да би их користили, покрените  SSH са {{ic|"c"}} заставом, на овај начин:
 
# ssh -c arcfour,blowfish-cbc user@server-address
 
Да би их користили за стално, треба додати линију испод одговарајућег хоста у {{ic|/etc/ssh/ssh_config}}:
 
Ciphers arcfour,blowfish-cbc
 
Друга опција за побољшавањне брзине је омогућавањне компресије са {{ic|"C"}} заставом. Стално решење је додавање ове линије испод одговарајућег хоста у {{ic|/etc/ssh/ssh_config}}:
 
Compression yes
 
Време пријављивањна се може смањити коришћењем {{ic|"4"}} заставе, која заобилази IPv6 проналажење. Ово се може начинити сталним додавањем линије испод одговарајућег хоста у {{ic|/etc/ssh/ssh_config}}:
 
AddressFamily inet
 
Други начин да ове промене остану сталне је креирање псеудонима у {{ic|~/.bashrc}}:
 
alias ssh='ssh -C4c arcfour,blowfish-cbc'
 
 
 
=== Решавање проблема ===
 
 
 
Постарајте се да је разрешавање DISPLAY низа омогућено на крају :
 
 
 
ssh -X user@server-address
 
server$ echo $DISPLAY
 
localhost:10.0
 
server$ telnet localhost 6010
 
localhost/6010: lookup failure: Temporary failure in name resolution 
 
 
 
Може се средити додавањем localhost з {{ic|/etc/hosts}}.
 
 
 
== Монтирање удаљених фајл система коришћењем SSHFS ==
 
 
 
Инсталација sshfs
 
# pacman -S sshfs
 
 
 
Потребно је учитати Fuse модул
 
# modprobe fuse
 
Додавање fuse у ''modules'' одељак фајла {{ic|/etc/rc.conf}} ће омогућити његово учитавање после сваког бутовања.
 
 
 
Монтирање удаљених фолдера помоћу sshfs
 
# mkdir ~/remote_folder
 
# sshfs USER@remote_server:/tmp ~/remote_folder
 
 
 
Ова команда ће монтирати фолдер /tmp са удаљеног сервера да се монтира као ~/remote_folder на локалном рачунару. Копирање фајлова у овај фолдер ће резултовати траспарентно копирање преко мреже помоћу SFTP. Исто се односи и на директно мењање фајлова, прављење нових или уклањање.
 
 
 
Кад се рад са удаљеним фајл системима заврши, демонтирање фолдера се врши на следећи начин:
 
# fusermount -u ~/remote_folder
 
 
 
Ако се на неком фолдеру ради свакодневно. паметно је додати га у {{ic|/etc/fstab}} табелу. На овај начин фолдер ће се аутоматски монтирати кад се систем бутује или ручно монтира (ако је {{ic|noauto}} опција изабрана) без потребе да се удаљена локација спецификује сваки пут. Ово је пример уноса у табелу:
 
sshfs#USER@remote_server:/tmp /full/path/to/directory fuse    defaults,auto,allow_other    0 0
 
 
 
== Одржавање везе ==
 
 
 
SSH сесија ће се аутоматски одјавити кад је у разном ходу (idle). Да се ова беза одржава нон стоп треба додати следећу линију у {{ic|~/.ssh/config}} или у {{ic|/etc/ssh/ssh_config}} на клијенту.
 
 
 
ServerAliveInterval 120
 
 
 
Ово ће послати "keep alive" сигнал серверу сваких 120 секунди.
 
 
 
Обрнуто, за одржавање долазећих веза, може се подесити
 
 
ClientAliveInterval 120
 
 
 
(или неки број већи од 0) у {{ic|/etc/ssh/sshd_config}} на серверу.
 
 
 
== Чување података у .ssh/config ==
 
 
 
Кад год се повежемо на сервер, обично уносимо његову адресу и наше корисничко име. Да би сачували податке које уносимо за сервере које често користимо, може се користити {{ic|$HOME/.ssh/config}} фајл на начин који је приказан у следећем примеру:
 
 
 
{{hc|$HOME/.ssh/config|
 
Host myserver
 
    HostName 123.123.123.123
 
    Port 12345
 
    User bob
 
Host other_server
 
    HostName test.something.org
 
    User alice
 
    CheckHostIP no
 
    Cipher blowfish
 
}}
 
 
 
Сад се можемо једноставно повезати на сервер коришћењем имена које је наглашено:
 
 
 
$ ssh myserver
 
 
 
За комплетну листу могућих опција, треба прегледати ssh_config manpage или [http://www.openbsd.org/cgi-bin/man.cgi?query=ssh_config ssh_config documentation] на официјалном сајту.
 
 
 
= Решавање проблема =
 
 
 
== Connection Refused проблем ==
 
 
 
=== Да ли је SSH покренут и да ли слуша? ===
 
 
 
  netstat -tnlp | grep ssh
 
 
 
Ако ова команда не да никакве резултате, онда SSH НИЈЕ покренут. Треба проверити {{ic|/var/log/messages}} због грешака.
 
 
 
=== Да ли firewall блокира безу? ===
 
 
 
Потребно је освежити iptables правила да би се уверили да се не мешају у везу:
 
 
 
  /etc/rc.d/iptables stop
 
 
 
или:
 
 
 
  iptables -P INPUT ACCEPT
 
  iptables -P OUTPUT ACCEPT
 
  iptables -F INPUT
 
  iptables -F OUTPUT
 
 
 
=== Да ли је SSH додат у hosts.allow? ===
 
 
 
Два пута треба проверити да ли је [[#Дозвољавање приступа другим корисницима|this section]] исправно.
 
 
 
=== Да ли саобраћај стиже до рачуанра? ===
 
 
 
Треба започети праћење саобраћаја на рачунару који има проблеме командом:
 
 
 
  tcpdump -lnn -i any port ssh and tcp-syn
 
 
 
Ово ће приказати неке основне информације, онда треба чекати за одговарајући саобраћај да се деси пре приказивања. Пробајте сад везу. Ако нема излаза приликом покушаја повезивања, онда нешто ван рачунара блокира саобраћај (нпр, хардверски firewall, NAT рутер итд.)
 
 
 
= Такође погледајте =
 
*[[Using SSH Keys_(Српски)]]
 
 
 
= Линкови и препоруке =
 
*[http://www.soloport.com/iptables.html A Cure for the Common SSH Login Attack]
 
*[http://webssh.cz.cc Using your browser as SSH client]
 
*[http://www.la-samhna.de/library/brutessh.html Defending against brute force ssh attacks]
 

Latest revision as of 09:04, 26 November 2017

Redirect to: