Pokazywanie postów oznaczonych etykietą linux - administracja. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą linux - administracja. Pokaż wszystkie posty

piątek, 6 listopada 2009

Secure FTP - bezpieczne FTP w praktyce

Nie mam zamiaru opowiadać tu o słabościach protokołu FTP i problemach związanych z konfiguracją takowego serwera. Lepiej pójść na skróty i skorzystać z gotowego, lepszego i prostszego rozwiązania (KISS) jakim jest SFTP. Mając zainstalowany serwer SSH (prawie na pewno będzie to openSSH) dostajemy taką możliwość gratis.

Najprostszym a zarazem najszybszym sposobem jest stworzenie konta i ustawienie domyślnego shella na binarkę serwera sftp - najczęściej jest to sftp-server (w debianie - /usr/lib/sftp-server, w Gentoo - /usr/lib/misc/sftp-server, w innych - poszukajcie sobie sami). Zakładamy konto:

useradd -m -s /usr/lib/misc/sftp-server username


Pozostaje jeszcze dodać sftp-server do listy dozwolonych powłok (shell) zgłoszeniowych (debilne tłumaczenie - login shells), np. tak:

echo "/usr/lib/misc/sftp-server" >> /etc/shells


Szybko i prosto zdefiniowaliśmy serwer SFTP. Jedyne co można zarzucić temu rozwiązaniu to możliwość poruszania się użytkownika po całym filesystemie - w miarę oczywiście posiadanych uprawnień - a tego nie zawsze chcemy.

Drugim sposobem, który jest może trudniejszy w konfguracji jest udostępnienie jedynie dostępu do serwera sftp z możliwością chrootowania katalogu użytkownika (chroot).
Zmieniamy w /etc/ssh/sshd_config

Subsystem sftp internal-sftp

# These lines must appear at the *end* of sshd_config
Match User username
ChrootDirectory /home/userhome
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no


Restartujemy sshd (/etc/init.d/sshd restart) i już.
Waryo pamiętać o ustawieniu shella użytkownika na /sbin/nologin

Bardzo ważne jest ustawienie właściciela i grupy na katalogu do którego będzie ograniczone środowisko robocze użytkownika na root oraz ustawienie odpowiednich uprawnień aby umożliwić użytkownikowi zapis w tym katalogu.

ps. Zamiast Match User można użyć np. Match Group - polecam poczytanie manuala sshd.

piątek, 28 sierpnia 2009

Polecenie watch - jak go używać?

Polecenie watch okazuje się często bardzo przydatnym narzędziem w codziennej praktyce administratorskiej. Pozwala nam ono wykonywać cyklicznie komendę podaną jako parametr w wywołaniu watch wyświetlając jej wynik za każdym razem na nowym ekranie:

watch [opcje] polecenie

Pozwala to w dość skuteczny sposób śledzić zmiany zachodzące pomiędzy kolejnymi wykonaniami polecenia.

Przejdźmy do praktyki. Prześledźmy zmiany pamięci dostępnej w systemie:

# watch -n 1 free


Co 1 sekundę wykonujemy polecenie free (wyświetla statystyki pamięci dostępnej w systemie - o tym innym razem).
Polecenie watch pozwala nam na więcej - możemy śledzić zmiany zachodzące w wyniku wykonania między dwoma kolejnymi wywołaniami (opcja -d):

# watch -n 1 -d free


Możemy też użyć wartości =cumulative przy opcji -d - zaznaczone będą wszystkie zmiany jakie zachodzą między wywołaniami polecenia - zmiany te będą kumulowane - nie zostaną skasowane jak w wypadku użycia samej opcji -d

# watch -n 2 free -d=cumulative free


Inne przykłady zastosowania komendy watch:

- śledzenie liczby przerwań (o przerwaniach innym razem)
# watch -n1 -d 'cat /proc/interrupts'


- śledzenie procesów ZOMBIE w systemie - no tak nie całkiem do końca ale powinno zadziałać (o procesach innym razem)

# watch -n2 "ps auxw | grep 'defunct' | grep -v 'grep' | grep -v 'watch'"


grep -v odfiltrowuje linie zawierające tekst pasujący do wzorca - stosuje się to często przy wyszukiwaniu konkretnego procesu w systemie gdy chcemy odfiltrować proces grep w zwróconym wyniku:

# ps ax|grep cron|grep -v grep

Zadanie - Jak inaczej można odfiltrować grep z listy procesów?

- śledzenie nawiązanych połączeń:

# watch -n 1 -d "netstat -tpanl | grep ESTABLISHED"


Zastosowań znajdzie się pewnie mnóstwo - ja często używam watch przy poleceniu dd w celu sprawdzenia ile danych zostało skopiowanych za jego pomocą. Polecenie dd wyświetla aktualny stan kopiowania tylko w momencie gdy proces dd otrzyma sygnał SIGUSR1 (polecam man dd):

# watch -n 2 'kill -SIGUSR1 $pid


$pid określa numer procesu dd w systemie (trzeba go wcześniej zidentyfikować).

środa, 12 sierpnia 2009

Sudo - jak umożliwić użytkownikowi przełączenie na konto root?

Na początku pozwolę sobie stwierdzić, że można to zrobić pewnie na milion sposobów - no może trochę przesadziłem - ale na pewno jest ich trochę - i w tym tkwi piękno linuxa.
Najpierw zastanówmy się o co chodzi w tym zadaniu tak naprawdę? Upraszczając - jeśli użytkownik może się przełączyć na konto roota to de facto nadajemy mu uprawnienia administracyjne. Jak to zrobić? Można np. stworzyć grupę i nadać członkom tej grupy uprawnienia do uruchamiania wszystkich poleceń systemowych. Często korzystam z gotowej "receptury" w /etc/sudoers:

#visudo
# Uncomment to allow people in group wheel to run all commands
%wheel ALL=(ALL) ALL

i już. Członkowie grupy wheel mają teraz uprawnienia administracyjne. Wystarczy dodać odpowiednie osoby do grupy wheel poprzez edycję /etc/groups lub wywołanie groupmod lub gpasswd lub ...

# gpasswd -a fares wheel
Adding user fares to group wheel


Teraz już z konta fares możemy przejśc na root:
fares@ny $ sudo su -



I to tyle. Czekam na wasze rozwiązania w komentarzach.

wtorek, 30 czerwca 2009

Pisanie skryptów administracyjnych z wykorzystaniem języka Ruby.

Krótka poranna wstawka. Naukę można zacząć od interaktywnej konsoli Ruby. Zwie się to irb. Jeśli ktoś nie ma zainstalowanego Ruby na swojej stacji - nic straconego - wystarczy przeglądarka. Pod adresem Try Ruby zaznajomić z językiem. Miłej zabawy.