niedziela, 13 października 2013

SSH - zabezpieczamy się przed atakami typu brute force


Pokaż komentarze


Jak donosi wikipedia:

"Algorytm siłowy, algorytm brute force (ang. "brutalna siła" tj. niewspomagana umysłem) – określenie algorytmu, który opiera się na sukcesywnym sprawdzeniu wszystkich możliwych kombinacji w poszukiwaniu rozwiązania problemu, zamiast skupiać się na jego szczegółowej analizie."
Postaramy się w niniejszym wpisie utrudnić to zadanie włamywaczom.

Instalacja w Ubuntu jak zwykle sprowadza się do pojedynczego polecenia:
sudo apt-get install denyhosts
Na dobrą sprawę wpis na tym można zakończyć. Podstawowa konfiguracja już działa !

Rozwinę jednak myśl i dopiszę  kilka zdań celem wyjaśnienia.
To co zainstalowaliśmy to: DenyHosts. Jego zadanie to zapobieganie włamaniom na nasz serwer. Wykrywa on ataki typu brute force, "notuje" nieprawidłowe próby logowania, zapisuje takie zdarzenia do dziennika oraz blokuje adresy IP z którego przeprowadzany był atak.

Plik konfiguracyjny znajduje się w:
/etc/denyhosts.conf
Zablokowane adresy dopisują się do pliku:
/etc/hosts.deny
standardowy wpis w pliku konfiguracyjnym nie czyści automatycznie zablokowanych hostów i wygląda tak:
 PURGE_DENY =
oczywiście można to zmienić, podpowiedź jest w samym konfigu:
#      format is: i[dhwmy]
#      Where 'i' is an integer (eg. 7)
#            'm' = minutes
#            'h' = hours
#            'd' = days
#            'w' = weeks
#            'y' = years
#
# never purge:
PURGE_DENY =
#
# purge entries older than 1 week
#PURGE_DENY = 1w
#
# purge entries older than 5 days
#PURGE_DENY = 5d

BLOCK_SERVICE

Standardowa blokada dotyczy sshd, warto dać zabezpieczenia także inne usługi dlatego proponuję zmienić tu opcję sshd na all:
BLOCK_SERVICE  = all

DENY_THRESHOLD_INVALID

Tu możemy podać po ilu nieudanych próbach ma być blokowany adres IP. Standardowa wartość to 5:
DENY_THRESHOLD_INVALID = 5

DENY_THRESHOLD_VALID

 W tym miejscu możemy wpisać ile razy może się pomylić znany nam użytkownik, którego konto jest zapisane w /etc/passwd. Standardowo liczba ta wynosi 10:
DENY_THRESHOLD_VALID = 10

DENY_THRESHOLD_ROOT 

Root może pomylić się tylko raz:
DENY_THRESHOLD_ROOT = 1

DENY_THRESHOLD_RESTRICTED

Dzięki tej opcji automatycznie blokujemy IP przy próbie użycia loginu zablokowanego w restricted-usernames:
DENY_THRESHOLD_RESTRICTED = 1

SYNC_SERVER

Opcja ta pozwala pobrać dane z serwera przechowującego adresy IP urządzeń, z których odnotowano różnego rodzaju ataki.
SYNC_SERVER = http://xmlrpc.denyhosts.net:9911
tu mamy możliwość konfiguracji także częstotliwości pobierania danych z serwera:
SYNC_INTERVAL = 1h
wysyłania naszych danych na taki serwer:
SYNC_UPLOAD = yes
oraz pobieranie danych z serwera:
SYNC_DOWNLOAD = yes
Oczywiści program daj możliwość  raportowania ataków. W sekcji SSTP można ustawić wysyłanie maili.
Po naszych modyfikacjach restartujemy usługę:
sudo service denyhosts restart


Etykiety

/etc/network/interface 12.04 precise pangolin 2clickupdate 2clickupdatecore accounts adesk admin adobe air ailurus akonadi aktualizacja ubuntu alias allegro alpha3 alsamixer ankieta apache apparmor apt-fast apt-get aptitude arandr arista ascii audio avast axel backup badblock baner bash bashrc beta bg bing bleachbit blip blkid blog blokada ikon bluetooth błąd bootchart brasero bug c_rehash cache caps_lock cardapio cat cd-rw centrum-oprogramowania certutil certyfikat chattr checkinstall chmod chown chrome chromium ciekawostki clipboard cmd compizconfig-settings-manager conky conky_netbit cookies cp cpuburn crebs cryptkeeper ctrl+alt+backspace cups cups-pdf curl czas pracy na baterii czcionka dansguardian dash dbupdate dconf-editor dconf-tools dd deb debian denyhosts depicus dev devilspie dhc dhcp dhcp3-server digikam diskdump disown dist-upgrade distro timeline dkclient dlna dns dns-320 do-release-upgrade docky dpkg dropbox dtrx dvd-rw dyski dźwięk echo eclip-x eizo ekg2 elementary else emense empathy enca error eth0 eth1 eth2 eth3 ethtool ext4 ext73 Faenza Faience fdisk fg figlet file-browser firefox firmware flash foff fog project foldery font foto free -m freetuxtv fstab ftp gadu-gadu gconf gconf-cleaner gdebi gdiskdump gdm gg git giver gksu glippy gmail-notifer gnac gnash gnome gnome-disk-utility gnome-do gnome-shell gnome-tweak-tool gnomebaker google gparted gpedit.msc gpg gra grafika grep grsync grub grub2 gui gurlchecker gwibber hardstatus hasła hdd hold homerun hostname hosts hotmail hp2100 htop http https humor i-nex iconv ideal.pl if ifconfig ikony indicator applet indicator-multiload instalacja intel ip iperf ipla iptraf iso jabber jail java jNetMap jobs k3b kadu katalog kde keiryng kernel kernel instalator kernel terminator kernel wywalator keylock kill killall klonowanie klucze kodeki kodowanie kontrola rodzicielska konwersja kubuntu kupfer kvm lamp launchpad libpeerconnection.log librecad libreoffice libssh lightdm lighttpd linux livecd load log lsb_release lsb-core lucid macosx make make install maverick meerkat mc medibuntu menu microsoft minidlna mint minus mkfs mkfs.ext3 moc monospace moonlight mount mount-error-cannot-allocate-memory multi-flex multiboot multicd multimedia muzyka mysql namebench nanny nano napisy nas natty nautilus nautilus-gksu nautilus-open-terminal ncdu netactivity news nmap notify-osd nvlc o2 oneiric ocelot opendns openoffice openssh-client openssl outlook owncloud pac pacmanaer paczka paczki panel partial partycje passwd pastie pdf phatch photivo photofilmstrip php phpmyadmin phpsysinfo pidgin pidof ping pisak pkill plank plasma pliki plugin płatne programy pogoda pojemność baterii polecenia polityka prywatności poweroff ppa ppa-purge ppasearch procesor przedlądarka pulpit pulseaudio pxe pxe server python qnap quantal radio ram raw rawtherapee rc.local rdesktop rdp rdpv5 recovery redshift regedit.exe remastersys remove-apt-repository renamer repozytorium rescueboot resize grip rfkill rhythmbox rj45 rkhunter rm root rootkit rtorrent saidar samba sbackup scp screen screenrc sdb seagate sed sentymentalnie server serwer sftp share shell shellinabox shotwell shutdown shutter sieć silicon silicon empire silverlight SimpleHTTPServer skróty klawiszowe skrypt skydrive smestorage sparkleshare specto splash sprzęt squid srt ssd ssh ssh-copy-id ssh-keygen ssl stacja graficzna stały ip styl su subtitleeditor sudo swap swat sycany synaptic sync synchronizacja synchrorep synology sysv-rc-conf szybkość sieci tablet tabulator tahoma tak tapety tar.bz2 tar.gz tasksel tekst telefon telepathy-oxygen telepathy-sunshine telnet temat terminal terminal server client test testdrive tetris tftpd tgz theme thunderbird tinyproxy tło top torrent traceroute transmission transmission-daemon trashindicator treminal trick truecrypt trusty tryb awaryjny ttf tune2fs TV ubuntu ubuntu.kubuntu.terminal udev-notify UID umount unity update update-ca-certificates update-grub upgrade upnpc usb user ushare uuid vbox vboxmanage veromix viewnior virtualbox visudo vlc vncviewer vsftpd w wacom wake on lan webmin wget who whowatch wifi windows windows 8 windows server 2012 windows7 wine wirtualizacja wlan wodim wol wp7 wskaźnik baterii www wygląd x2go x2goclient xbmc xclip XDG_DIR xkill xorg xorg-serwer xorg.conf xterm yes yetris youtube youtube-dl zenity zip zrzut ekranu