Tag Archives: Linux

Ubuntu – globalna konfiguracja połączenia z wykorzystaniem serwera proxy ze znakiem @ w haśle

Napotkałem na dość ciekawy problem… W jaki sposób w Ubuntu skonfigurować dostęp przez proxy, z poziomu konsoli, korzystając z autoryzacji domenowej, posiadając znak @ w haśle?

Rozwiązanie:

  1. sudo vi /etc/bash.bashrc #(lub wykorzystanie ulubionego edytora tekstowego zamiast vi)
  2. Dodanie linii export http_proxy=http://DOMENA\\USER:HASŁO_%40@adres.serwera.proxy:port, gdzie znak @ w haśle zastępujemy ciągiem %40
  3. Przelogowanie się

Analogicznie dodajemy wpis dla ftp_proxy jeśli jest taka potrzeba.

 

John The Ripper – Audyt haseł

JTR
W ostatnim czasie na jednym serwerze postanowiłem wykonać szybki audyt haseł. Słabe hasła użytkowników nadal stanowią duży problem w wielu systemach.. Wyniki były dość ciekawe, bardzo szybko udało się wyłapać kilku delikwentów posiadających hasła nie spełniające jakichkolwiek rozsądnych norm. Niestety nie miałem ustawionej odpowiedniej polityki haseł – ustawienia default. Wykorzystałem do tego John The Ripper.

Po krótce John The Ripper to program potrafiący łamać hasła, można go wykorzystać do szybkiego wyszukania kont, które posiadają słabe hasła. Stworzony początkowo na dla systemów Unix, aktualnie działa również na Windows, DOS, BeOS, and OpenVMS. Obsługuje formaty DES, RSA, MD4 i MD5, Kerberos AFS oraz hasze Windows LM, można go zmusić do obsługi innych formatów za pomocą odpowiednich łatek. Program łamie hasełka za pomocą ataku słownikowego lub brute-force.

Do wyszukania najsłabszych haseł można użyć opcji -single.
john -single /etc/shadow
Ten sposób skanowania korzysta z GECOS, czyli po prostu z danych wprowadzonych w /etc/passwd (często są to takie dane jak imię i nazwisko, telefon, ewentualnie jakiś nick) i ich kombinacji, np. odwrotny zapis, zapis poprzedzony cyfra, kilkukrotny zapis.

Przykład użycia:
Dodajemy usera ze słabym hasłem i zaczynamy się bawić…

mojamaszyna:~# adduser testuser
Dodawanie użytkownika `testuser'...
Dodawanie nowej grupy `testuser' (1001)...
Dodawanie nowego użytkownika `testuser' (1015) w grupie `testuser'...
Tworzenie katalogu domowego `/home/testuser'...
Kopiowanie plików z `/etc/skel' ...
Podaj nowe hasło UNIX:
Ponownie podaj hasło UNIX:
passwd: hasło zostało zmienione
Zmieniam informację o użytkowniku testuser
Wpisz nową wartość lub wciśnij ENTER by przyjąć wartość domyślną
Imię i nazwisko []: user testowy
Numer pokoju []:
Telefon do pracy []:
Telefon domowy []:
Inne []: john
Is the information correct? [Y/n] y
mojamaszyna:~# grep 'testuser' /etc/shadow > usertetowy_john
mojamaszyna:~# nice john usertetowy_john
Loaded 1 password hash (FreeBSD MD5 [32/32])
test (testuser)
guesses: 1 time: 0:00:00:00 100% (1) c/s: 1066 trying: test
mojamaszyna:~#

Jak widać powyżej, złamanie takiego słabego hasła trwa dosłownie moment.

Przykłady innych wywołań:

  • słownik
  • john -wordfile:lista_hasel.lst hasla_do_zlamania.txt

  • brute-froce:
  • john -incremental:alpha hasla_do_zlamania.txt – znaki alfanumeryczne
    john -incremental:digits hasla_do_zlamania.txt – cyfry
    john -incremental:lanman hasla_do_zlamania.txt – litery, liczby i część znaków specjalnych
    john -incremental:all hasla_do_zlamania.txt – wszystkie znaki
    john -users:nazwa_usera hasla_do_zlamania.txt – łamanie hasła dla wybranego usera
    john -group:nazwa_grupy hasla_do_zlamania.txt – łamanie hasła dla wybranej grupy

Pełna lista przypadków użycia:
zless /usr/share/doc/john/EXAMPLES.gz

Udanej zabawy!

Fail2ban – automatyczne banowanie nieproszonych gości

Fail2ban jest narzędziem pomagającym zabezpieczyć serwery działające w oparciu o uniksopodobne systemy operacyjne (dostępne paczki na większość dystrybucji Linuksa oraz FreeBSD i Mac OS X). Po krótce fail2ban skanuje logi (np logi serwera ssh lub ftp), wyszukując błędy autentykacji, po czym wykonuje update ustawień firewalla żeby odrzucał cały ruch z danego IP.
Aplikacja jest napisana w Pythonie, blokowanie odbywa się poprzez dodanie reguł do Iptables lub do /etc/hosts.deny.

System bazowy: Debian Lenny, na pokładzie Iptables i Python, sshd, vsftpd

Instalacja z paczek:
apt-get install fail2ban

Konfiguracja:
Znajduje się w /etc/fail2ban, zalecane skopiowanie jail.conf > jail.local i ustawienie danych (np wyjątków nieblokowanych IP), które nie zostaną zmienione w przypadku przypadkowej podmiany podczas aktualizacji wersji.

U mnie /etc/jail2ban/jail.local wygląda tak:

[DEFAULT]

# “ignoreip” can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1 192.168.0.0/24
bantime = 86400
maxretry = 5

[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5

[vsftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 5

Następnie wykonujemy restart usługi:
/etc/init.d/fail2ban restart
… i mamy działającą maszynkę do banowania.

Log znajduje się w /var/log/fail2ban.log, domyślne logi są w statusach INFO, natomiast banowanie jest zapisywanie jako WARNING

2009-11-03 11:42:06,382 fail2ban.actions: WARNING [ssh] Ban 78.93.50.11

Akurat trafił mi się chętny do zablokowania 🙂

Wyświetlenie reguł:
iptables -L

(....cut....)
Chain fail2ban-ssh (1 references)
target prot opt source destination
DROP all -- 78.93.50.11 anywhere
RETURN all -- anywhere anywhere

Chain fail2ban-vsftpd (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere

W przypadku konieczności ręcznego odbanowania IP piszemy:
iptables -D fail2ban-ssh 1 (gdzie 1 – to numer linii w danej sekcji)

I to by było na tyle. Powodzenia!