SFTP сервер на ЦентОС са по једним chroot-ованим RW и RO корисником
SFTP (скраћено од SSH File Transfer Protocol а неки га викају и Secure File Transfer Protocol) је мрежни протокол који омогућава сигуран приступ и пренос података кроз мрежу путем SSH (Secure Shell) тако да ако се било ко постави између вас и рутера или вам ослушкује саобраћај – може само да кука и проклиње дан кад је Мијатовић погодио стативу.
Зашто chroot? Па да корисник, било да има или нема приступ shell-у (а овде ћемо их направити да немају) не може да се шврћка по туђим и системским фајловима већ да би био ограничен само на оно – што му ми дамо. Фирме иначе ово користе кад желе да неке фајлове поделе са својим партнерима или клијентима а не би баш да буде за свачије очи ако неко скида фајлове са јавне мреже из МекДоналдса.
Све ћемо радити кроз променљиве како би се олакшало праћење „да нешто не зајебем“ и све што треба то је да у првом кораку дефинишете RW и RO корисника, локацију коју сте замислили за SFTP као и иницијални назив фолдера где сте мислили да ће RW корисник смештати фајлове (у овом примеру Budzet). Све можете copy-paste, али наравно као и увек – ако радите на продукционом серверу будите пажљиви и са четворо отворених очију.
Дакле овако би отприлике то требало да изгледа…
############## PRVI KORAK ################# #------ PROMENLjIVE (unesite sami) -------# KORISNICKO_IME_RW=NarodSrbije KORISNICKO_IME_RO=VladaSrbije LOKACIJA_ZA_SFTP="/home/Srbija/NarodnaBanka" IME_SFTP_FOLDERA="Budzet" #-----------------------------------------#
############### DRUGI KORAK ############### CHROOT_FOLDER="${LOKACIJA_ZA_SFTP}/${KORISNICKO_IME_RW}_sftp" mkdir -p ${CHROOT_FOLDER} groupadd ${KORISNICKO_IME_RW}_sftp useradd -g ${KORISNICKO_IME_RW}_sftp ${KORISNICKO_IME_RW} -d ${CHROOT_FOLDER}/${IME_SFTP_FOLDERA} --shell=/sbin/nologin useradd -g ${KORISNICKO_IME_RW}_sftp ${KORISNICKO_IME_RO} -d ${CHROOT_FOLDER}/${IME_SFTP_FOLDERA} --shell=/sbin/nologin #Ignore error ################################################################# PROVERA=`grep "#Subsystem" /etc/ssh/sshd_config | wc -l` if [ ${PROVERA} -eq 0 ] ; then $(sed -i s/"Subsystem"/"#Subsystem"/g /etc/ssh/sshd_config) ; fi if [ ${PROVERA} -eq 0 ] ; then $(echo "#--------------------------#" >> /etc/ssh/sshd_config) ; fi if [ ${PROVERA} -eq 0 ] ; then $(echo "Subsystem sftp internal-sftp" >> /etc/ssh/sshd_config) ; fi if [ ${PROVERA} -eq 0 ] ; then $(echo "#--------------------------#" >> /etc/ssh/sshd_config) ; fi ################################################################## echo "Match Group ${KORISNICKO_IME_RW}_sftp" >> /etc/ssh/sshd_config echo " X11Forwarding no" >> /etc/ssh/sshd_config echo " AllowTcpForwarding no" >> /etc/ssh/sshd_config echo " ChrootDirectory ${CHROOT_FOLDER}" >> /etc/ssh/sshd_config echo " ForceCommandinternal-sftp" >> /etc/ssh/sshd_config chown ${KORISNICKO_IME_RW}:${KORISNICKO_IME_RW}_sftp ${CHROOT_FOLDER}/${IME_SFTP_FOLDERA} chmod g=rx ${CHROOT_FOLDER}/${IME_SFTP_FOLDERA} systemctl restart sshd passwd ${KORISNICKO_IME_RW} ; passwd ${KORISNICKO_IME_RO} ;
Након првог log-off ће све привремене варијабле бити обрисане тако да ако желите то да урадите пре времена само укуцајте exit и притисните ентер. Ове горе скрипте можете креирати и за нове кориснике мимо постојећих, само промените податке у првом кораку,
Препорука је и променити SSH порт са дифолтног 22 на неки безвезе као и поставити надгледање покушаја пробијања лозинке и заштиту кроз fail2ban – све објашњено у овом тексту.