[SSH, port forwarding...] Колико је ово паметно?

Пало ми је нешто на памет, па реко да ипак видим ако се неко боље разуме, колико ми је паметно то што сам урадио :slight_smile:

Дакле идеја је да увек са било ког рачунара у било које време могу приступити свом рачунару преко SSH.

Отворио сам подешавања рутера, ставио да порт 22 преусмери на мој рачунар и то ради ок.

Е сада проблем је што немам статичну јавну IP адресу тако да не могу увек знати на коју адресу да се повежем преко SSH. Ево шта сам ја урадио:

Пошто имам свој веб сајт (shared hosting) направио сам php скрипту на њему, која кад се отвори, очитава IP адресу рачунара, повезује се на базу података коју сам направио и проверава да ли се та адреса поклапа са оном у бази. Ако се не поклапају, у базу се уноси нова IP адреса - адреса са које се приступило скрипти.

Затим сам на свом рачунару у crontab уписао да на сваких сат времена отвара ту скрипту, овако некако:

wget mojsajt.com/ip_refresh.php?key=blabla > /dev/null

Ово ?key=blabla сам ставио чисто онако, да не може да се приступи скрипти директно него мора да се укуца key као GET метода - скрипта проверава да ли је исправан кључ унет једноставном if наредбом. Знам да није нека мера безбедности али из неког мог трипа сам ставио тако.

Исто тако сам и направио скрипту којој се приступа преко mojsajt.com/ip_show.php?key=blabla, која приказује тренутну IP адресу овог мог рачунара из базе.

Тако да ако нисам код куће а рецимо треба ми неки фајл са рачунара, могу увек да сазнам преко те странице која је IP адреса мог рачунара код куће и да му приступим преко SSH.

Е сада, да ли неко може да сазна да ове скрипте уопште постоје на мом сајту и да им приступи, и чак и ако успе, да ли је то опасно за мене - ако неко зна моју IP адресу и отворен ми је SSH порт?

Ја колико капирам у најгорем случају може да покушава да ми се накачи на рачунар, и ако поред тога успе још и да ми погоди корисничко име и шифру, е онда је и заслужио да ради шта хоће

Заправо могу и да подесим apache да тражи шифру за приступ тој страници која приказује моју адресу (ако је дозвољено то на овом мом хостингу)

Можда је глупо питање, али ето, занима ме ваше мишљење, јер сад постоји начин да ми било ко уђе у рачунар па ме мало лупа параноја :slight_smile:

Promeni port za SSH na neki iznad 1024 kako bi izbegao smaranje od strane botova/skripti.
Za dodatnu zastitu, mozes da instaliras fail2ban ili koristi kljuceve umesto lozinke, ali i nema potrebe ako samo povremeno obratis paznju na auth.log i imas solidnu lozinku.
Dodatna sigurnost je i ako zabranis logovanje kao root i logujes se kao obican korisnik.

Ovo je nesto sto bi verovatno vecina Linux korisnika htela da ima ukoliko imaju neki racunar koji im je stalno ukljucen. Problem je samo sto nemaju svi neki hosting i mogucnost da to urade na taj nacin. Tako da se postavlja pitanje kako na najjednostavniji nacin proveriti javnu IP adresu i poslati neko obavestenje o promeni.
Postoje servisi kao sto su ident.me i ifconfig.me pomocu koji se jednostavno moze dobiti javna IP adresa:

$ curl ident.me

Sledece pitanje je kako poslati obavestenje. Ne znam za Debian, ali ostale distribucije koje su zasnovane na Debian-u ne dolaze sa instaliranim sendmail-om ili postfix-om. Samim tim slanje e-mail a iz konzole je mali problem. Na svu srecu, postoje programi kao sto su SendEmail i SSMTP. SendEmail je zaista jednostavan za koriscenje, u jednoj kobasici na komandnoj liniji se navede sve sto treba, ali na zalost ne podrzava TLS pa samim tim je mucenje namestiti slanje preko gmail-ovog smtp servera. Ukoliko koristite smtp nekog od provajdera, onda je sve ok :slight_smile:
Ako hocete da koristite gmail smtp - SSMTP je resenje. Ima konfiguracioni fajl koji se nalazi u /etc/ssmtp/ssmtp.conf
U taj fajl treba ubaciti sledece:

[email protected] AuthPass=sifra FromLineOverride=YES mailhub=smtp.gmail.com:587 UseSTARTTLS=YES

Ovaj program, SSMTP, se instalira kao “alternativni” sendmail. Tako da, ukoliko imate neke skripte koje vam se pokrecu preko crontab-a, ne zaboravite da dodate >/dev/null 2>&1 na kraju komande kako ne biste primali email obavestenja…

I tako dolazimo polako do skripte koja nam omogucava proveru javne IP adrese :slight_smile:


#!/bin/bash

adresa="[email protected]"

ip="ip_adresa.txt"
iptmp="ip.tmp"
email="obavestenje.txt"

echo "To: $adresa" > $email
echo -e "Subject: Nova IP adresa\n" >> $email
echo -e "Tvoja nova IP adresa je:\n" >> $email


if [ -e $ip ]; then
curl ident.me > $iptmp
if diff $ip $iptmp > /dev/null ; then
echo "IP adrese su iste. Ne radi nista."
rm $iptmp
else
mv $iptmp $ip
cat $ip >> $email
ssmtp $adresa < $email
sed -i '$ d' $email
fi
else
curl ident.me > $ip
cat $ip >> $email
ssmtp $adresa < $email
sed -i '$ d' $email
fi

Sve sto je potrebno je da se ubaci skripta u crontab:

$ crontab -e

0 * * * * * /home/crni/skripte/ip.sh >/dev/null 2>&1

Kao sto je rekao Kex, treba promeniti default ssh port. Alternativa za fail2ban je DenyHosts (u sustini isto, denyhosts je samo za ssh, dok f2b nadgleda i druge servise)