Msec – poziomy bezpieczeństwa

Sierpień 12th, 2008 Brak komentarzy »

Msec (Mandriva Security) jest zestawem skryptów definiujących tzw: “poziomy bezpieczeństwa systemu”. Jest 5 predefiniowanych poziomów – i możemy przełączać się pomiędzy nimi wydając polecenie:

msec numer_poziomu

Przykładowo najwyższy poziom (msec 5) wprowadza cały szereg restrykcji związanych z dostępem do zasobów systemowych. Prawa do katalogów zawierających pliki binarne zawężone zostają do 711 (użytkownik musi wówczas znać nazwę polecenia które chce wykonać, nie działa listowanie katalogów, użytkowników, dopełnianie nazw tabulatorem). Wprowadzone zostają również inne ograniczenia – przykładowo żeby uruchomić dowolną aplikację graficzną (chociażby xterm’a) – użytkownik musi należeć do grupy xgrp. Również umask przy poziomie 5 ustawiony jest domyślnie na 077. Regularnie (ta regularność zdefiniowana jest w cronie) weryfikowane są również uprawnienia, konta z pustymi hasłami, porty, sprawdzane są sumy kontrolne plików binarnych, określone uprawnienia są systematycznie zerowane wg wzorca zawartego w pliku /usr/share/msec/level.5. Dodatkowo broadcasted_icmp_echo, czy icmp_echo są wyłączone (system nie odpowiada na pingi). Skrypty msec kontrolują również czy którykolwiek ze skonfigurowanych w systemie interfejsów sieciowych jest w trybie PROMISCOUS (tryb wymagany przez typowe sniffery).

Plik /var/lib/msec/security.conf zawiera konfigurację bieżącego poziomu bezpieczeństwa. Jeśli chcemy zmienić nieco ustawienia w i nadpisać niektóre z opcji – możemy posłużyć się plikiem: /etc/security/msec/security.conf. Przykładowa zawartość pliku /var/lib/msec/security.conf:

CHECK_OPEN_PORT=yes
CHECK_UNOWNED=no
CHECK_SECURITY=yes
CHECK_PASSWD=no
CHECK_SUID_ROOT=yes
MAIL_EMPTY_CONTENT=no
CHECK_PROMISC=no
TTY_WARN=no
CHECK_PERMS=no
CHECK_SGID=yes
SYSLOG_WARN=yes
CHECK_SHADOW=no
CHKROOTKIT_CHECK=no
RPM_CHECK=no
CHECK_WRITABLE=yes
CHECK_SUID_MD5=yes

Możemy również posłyżyć się graficzną nakładką na msec – konfiguratorem draksec:

Optymalizacja i przyspieszenie połączenia sieciowego

Sierpień 12th, 2008 Brak komentarzy »

Poprzez optymalny dobór ustawień parametrów w /proc/sys/net, możemy znacząco zoptymalizować połączenie sieciowe.

Poniższe opcje można dopisać do /etc/sysctl.conf lub do pliku startowego /etc/rc.local:

echo 256960 > /proc/sys/net/core/rmem_default
echo 256960 > /proc/sys/net/core/rmem_max
echo 256960 > /proc/sys/net/core/wmem_default
echo 256960 > /proc/sys/net/core/wmem_max

echo 0 > /proc/sys/net/ipv4/tcp_timestamps
echo 1 > /proc/sys/net/ipv4/tcp_sack
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling

Konfigurację sysctl można wykonywać również następujący sposób:

# sysctl -w net.core.rmem_default=256960

Ma to tę zaletę, że do zmiany parametru używanego przez kod kernela nie trzeba mieć podmontowanego procfs.

Zarządzanie pakietami RPM

Sierpień 11th, 2008 Brak komentarzy »

W Linux-EduCD 0.9 można używać nadal apt-get’a. Przykładowo żeby zainstalować
aplikację RealPlayer, wystarczy z konta root wydać polecenie:

apt-get update ; apt-get install RealPlayer

Odnajdywanie pakietów, po fragmentach nazwy, słowach kluczowych z opisu pakietu np:

apt-cache search Real

Jest również graficzna nakładka na apt’a – synaptic, dostępna z paska zadań, lub Kmenu-> System -> Konfiguracja -> Pakiety ->Synaptic.

W momencie kiedy chcemy sami zarządzać pakietami RPM w systemie, możemy posłużyć się interaktywnym narzędziem rpm.

Instalacja pobranego z sieci pakietu rpm (z ewentualną aktualizacją jeśli istnieje w systemie starsza wersja):

rpm -Uvh nazwa_pakietu.rpm

Weryfikacja, czy pakiet jest kompletny, nie przekłamany i mam poprawny podpis PGP:

rpm -K -vv nazwa_pakietu.rpm

Informacje o rozmieszczeniu plików wchodzących w skład danego pakietu rpm:

rpm -ql nazwa_pakietu

Szczegółowe informacje o pakiecie:

rpm -qi nazwa_pakietu

Deinstalacja pakietu:

rpm -e nazwa_pakietu

Przebudowa (np. uszkodzonej) bazy pakietów RPM:

rm -f /var/lib/rpm/__db* && rpm –rebuilddb

Przeszukanie zainstalowanych aplikacji na podstawie fragmentu nazwy:

rpm -qa |grep pvm

Wykaz innych pakietów/bibliotek wymaganych do poprawnego działania naszej aplikacji, np:

rpm -qR pvm

co da w wyniku:

[root@nb-rajmund ~]# rpm -qR pvm
/sbin/chkconfig
initscripts >= 5.54
bash >= 2
shadow-utils
openssh-server
openssh-clients
/bin/sh
/bin/sh
/bin/sh
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
bash
tcsh
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.3)

HDPARM – kontrola napędów w systemie

Sierpień 11th, 2008 Brak komentarzy »

Rajmund Radziewicz

W Linuksie możemy bardzo precyzyjnie odczytywać i ustawiać parametry twardego dysku czy pozostałych napędów IDE naszego komputera. Daje to ogromną kontrolę nad wieloma operacjami systemowymi i często pozwala zwiększyć wydajność takich operacji, w szczególności związanych z zapisem bądź odczytem danych. Do kontrolowania tego typu ustawień służy program hdparm.Pozwala m.in na:

  • testowanie, diagnozowanie i ustawianie szybkości odczytu/zapisu urządzeń
  • włączanie/wyłączanie DMA
  • sterowanie zachowaniem buforów podręcznych (cache)
  • ustawianie urządzeń w trybach: tylko-do-odczytu/tylko-do-zapisu
  • Włączanie/wyłączanie automatycznej funkcji oszczędzania energii w niektórych napędach
  • Wyłączanie/włączanie wbudowanej w napęd opcji zarządzania uszkodzeniami. Przy tej opcji firmware urządzenia próbuje automatycznie zarządzać uszkodzonymi sektorami, przenosząc je w zapasowe miejsce

Oczywiście dobór wszelkich ustawień pownien być dobrze przemyślany. Nieostrożne posługiwanie się hdparmem i stosowanie “zbyt wygórowanych opcji” na “niezbyt wygórowanym sprzęcie”, może doprowadzić nawet do utraty danych. Warto więc przed “eksperymentami” zrobić kopię zapasową i dowiedzieć się (np. z dokumentacji) na co możemy sobie pozwolić, zwiększając wydajność dysków.
Domyśle ustawienia jądra przy dostępie do kontrolerów i dysków IDE w Linuksie są dosyć “ostrożne” i najczęściej do normalnej pracy w zupełności wystarczają. W momencie kiedy potrzebujemy jednak zwiekszyć wydajność, przykładowo dlatego, że stosujemy aplikacje przetwarzające duże ilości danych — wówczas hdparm może okazać się przydatny. Przed ustawieniami hdparma, warto dowiedzieć się więcej o możliwościach naszego dysku. Polecenie:

/sbin/hdparm -I /dev/hda

… poda nam dokładne informacje o napędzie, obsługiwaną pamieć, szybkość, liczbę cylindrów, konfigurację itp. Warto sprawdzić również w dokumentacji — czy poza samym dyskiem nasza płyta główna również obsługuje DMA, czy kontroler naszego dysku jest 32-bitowy ..itd.
Aby sprawdzić domyślne ustawienia z jakimi aktualnie pracuje nasz dysk, wystarczy polecenie:

/sbin/hdparm /dev/hda

W rezultacie możemy otrzymać coś w stylu:

/dev/hda:
multcount = 16 (on)
IO_support = 0 (default 16-bit)
unmaskirq = 0 (off)
using_dma = 0 (off)
keepsettings = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
geometry = 2432/255/63, sectors = 39070080, start = 0

Z tych ważniejszych parametrów, istotne są:

IO_support — sposób przekazywania danych do kontrolera. W naszym przypadku jest to tryb 16-bitowy. Bardzo “ostrożny”, ale większość dzisiejszych układów obsługuje już 32 bity.
using_dma — ta flaga określa nam, czy dysk używa tzw: bezpośredniego dostępu do pamięci (DMA).
unmaskirq — ustawienie to pozwala sterownikowi na “niemaskowanie” innych przerwań podczas przetwarzania przerwania dyskowego, co może znacznie poprawić czas reakcji systemu. Należy pamiętać, że nie wszystki urządzenia potrafią obsłużyć taką opcję!

Sprawdźmy aktualną wydajność naszego dysku:

/sbin/hdparm -Tt /dev/hda

Program hdparm z flagą -T pokazuje nam test szybkości odczytu pamięci podręcznej, -t test szybkości odczytu danych, nie znajdujących się w pamięci podręcznej. Wynik powyższego polecenia może wyglądać następująco:

/dev/hda:
Timing buffer-cache reads: 492 MB in 2.01 seconds = 244.78 MB/sec
Timing buffered disk reads: 42 MB in 3.07 seconds = 13.68 MB/sec

Można zwiększyć te parametry, jeżeli pozwala na to nasze urządzenie. Tak więc po kolei:

-d1 włącza obsługę DMA
-c1 32-bitową obsługę we/wy
-u1 ustawienie opisanego wyżej “niemaskowania” przerwań
-m16 (w niektórych dyskach również -m32) ustawia tzw: wielosektorowe we/wy. Często powoduje znaczn zwiększenie przepływu danych

Należy pamiętać, że powyższe opcje często mogą nie przynieść oczekiwanego rezultatu, jeśli przykładowo do kontrolera podpięte są jakieś urzadzenia nie obsługujące UDMA. Podsumowując, jeśli chcemy włączyć 32-bitowy dostęp do dysku, obsługę DMA i wielosektorowe we/wy, wpisjemy:

/sbin/hdparm -m16 -c1 -d1 -u1 /dev/hda

Jeśli chcemy, żeby ustawienia te były aktywne po restarcie komputera, należy dopisać powyższą komendę do skryptu startowego.
W Debianie lub dystrybucjach na nim bazujących, można polecenie hdparm z odpowiednimi opcjami dopisać do /etc/init.d/rcS. Plik ten jest wykonywany jeszcze przed sprawdzaniem systemu plików. W RedHacie i pochodnych od niego (Fedora, Whitebox, Aurox) możemy dopisać wywołanie hdparma do /etc/rc.d/rc.local, przykładowo:

if [ /usr/sbin/hdparm ]; then

echo ‘ustawiam opcje hdparm dla /dev/hda’
hdparm -qm16 -qc3 -qd1 -qu1 /dev/hda

fi

Dodatkowe ‘-q’ powoduje, że opcje wykonywane są “cicho” (bez wyświetlania komunikatów przez system).

Graficzne centrum administracyjne

Sierpień 10th, 2008 Brak komentarzy »

W Linux-EduCD dostępne jest graficzne centrum administracyjne mcc (Mandriva Control Center) znane z Mandrivy czy PCLinuxOS. Narzędzie znajdziemy w KMenu -> Centrum administracyjne. Można też uruchomić je z konsoli poleceniem:
drakconf lub mcc.

W skład MCC wchodzą m.in:

drakconnect – konfiguracja sieci (ethernet, wireless, ISDN, Satelita (DVB), bluetooth, GPRS)
drakhardware – konfiguracja i wykrywanie sprzętu
drakperm – konfiguracja uprawnień do zasobów systemu
draksec – profile/poziomy bezpieczeństwa (nakładka na msec)
drakxservices – zarządzanie usługami/demonami w systemie
diskdrake – zarządzanie dyskami/partycjami
drakgw – współdzielenie połączenia sieciowego
printerdrake – zarządzanie/konfiguracja drukarki
drakbackup – tworzenie kopii zapasowych
draklog – narzędzie do monitorowania logów
drakxtv – konfiguracja karty telewizyjnej
userdrake – zarządzanie użytkownikami
drakfirewall – konfiguracja firewalla
drakfont – instalacja i zarządzanie czcionkami, pobieranie czcionek windowsowych
drakauth – uwierzytelnianie
drakboot – konfiguracja opcji logowania do systemu
draknet_monitor – monitorowanie połączeń sieciowych
mousedrake – konfiguracja myszy
drakedm – konfiguracja graficznego menadżera logowania
draksambashare – udostępnianie zasobów/drukarek
drakproxy – konfiguracja pośrednika proxy
drakvpn – konfiguracja VPN
drakx11 – konfiguracja karty graficznej/monitora
drakups – konfiguracja UPS’a
drak3d – efekty 3D pulpitu
scannerdrake – konfiguracja skanera
draklocale – wybór/zmiana języka/kodowania/lokalizacji
drakTermServ – zarządzanie pakietem TerminalServer

Automatyczne montowanie partycji NTFS

Sierpień 10th, 2008 Brak komentarzy »

Za montowanie partycji NTFS w Linux-EduCD 0.9 odpowiada sterownik ntfs-3g. Możemy w każdej chwili zamontować partycję (z poziomu konta root) do zapisu poleceniem:

ntfs-3g /dev/partycja /mnt/win_d

Możemy również zautomatyzować cały proces. Jeśli chcemy – aby system montował partycje NTFS do zapisu automatycznie, musimy zmodyfikować nieco pliki modprobe.preload oraz fstab. Edytujemy jako użytkownik root plik /etc/modprobe.preload (za pomocą vim’a, mcedit, kate) i dopisujemy na jego końcu: “fuse”.

Następnie jako root modyfikujemy plik /etc/fstab

Jeśli posiadamy jakieś partycje NTFS zobaczymy coś w stylu:

———
## fstab dla Linux-EduCD

none    /proc   proc    defaults        0 0
none    /dev/pts        devpts  mode=0620       0 0
none    /proc/bus/usb   usbfs   defaults        0 0

# /dev/sda1, size=104968710, type=7: NTFS (primary)
/dev/sda1       /mnt/win_d      ntfs    user,exec,ro,noauto,nls=utf8,umask=0    0 0

# /dev/sda4, size=48195, type=131: Linux native (primary)
/dev/sda4       /mnt/sda4       ext2    user,exec,rw,noauto     0 0

# /dev/sda5, size=83955627, type=131: Journalised FS: ext3 (extended)
/dev/sda5 / ext3 noatime 1 1
——————

W pliku tym zmieniamy wszystkie wystąpienia “ntfs” na “ntfs-3g”.

Następnie wydajemy polecenie: modprobe fuse

Odmontowujemy partycje:

umount /mnt/win_d

Oraz montujemy ponownie:

mount /mnt/win_d

Jeśli chcemy – aby partycje NTFS montowane były w trybie do-zapisu przy każdym uruchomieniu system, możemy do pliku /etc/rc.local dopisać:

ntfs-3g /dev/partycja /mnt/partycja

Cron – uruchamianie zadań w określonym czasie

Sierpień 10th, 2008 Brak komentarzy »

Demon cron służy do uruchamiania zadań systemowych o określonym czasie, z dokładnością do minuty. Przydatny jest zarówno do harmonogramowania czynności administracyjnych (archiwizacja, usuwanie plików tymczasowych, audyty bezpieczeństwa), jak również do uruchamiania asynchronicznie dowolnych programów/skryptów czy innych usług np. z określonymi parametrami.

Cron przeszukuje pliki “crontab” (tabele) które znajdują się w /var/spool/cron/crontabs i odczytuje zawarte w nich instrukcje. W pliku /etc/crontab wpisane są dodatkowe reguły, które uruchamiają zadania cogodzinowe, codzienne, cotygodniowe oraz comiesięczne. Zadania te (w postaci skryptów) znajdują się kolejno w : /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly i /etc/cron.monthly.

Wpisy w plikach crontab zbudowane są z 6 pól. Pierwsze 5 pól określa czas wykonania, natomiast 6 pole czynność.

Opis poszczególnych pól:

- Minuta (od 0 do 59)
- Godzina (od 0 do 23)
- Dzień (od 0 do 31)
- Miesiąc (od 0 do 12)
- Dzień tygodnia (od 0 do 7)
- Polecenie (reszta)

Jeśli dane pole zawiera gwiazdkę (*), oznacza “wykonuj zawsze”.

Żeby uruchomić określony skrypt lub zadanie, wydajemy polecenie:

crontab -e (edytuj tablicę crona)

i dopisujemy do niej przykładowo:

*/2 * * * * exec /ścieżka/do/skryptu

Teraz co dwie minuty będzie wykonywany skrypt – do którego ścieżkę podaliśmy w tablicy. Inne przykłady:
0 2 * * * /sbin/shutdown -h now - wpis oznacza, że codziennie o 2.00 będzie wyłączany komputer

0 22 * * 1-5 mail -s “Mail od crona” – codziennie o 22.00 wysyłaj maila o podanej treści do właściciela

0 11 * * 1,3 /opt/skrypt.sh – uruchamiaj /opt/skrypt.sh w każdy poniedziałek i środę o godz. 11

Ponadto:

crontab -l – wyświetla listę zadań bieżącego użytkownika systemowego zdefiniowaną w tablicy crona

crontab -e – edytuje tablicę

crontab -r czyśc tablicę

Cron loguje wszystkie swoje czynności do /var/log/cron (pośredniczy w tym demon syslogd).

Zaawansowane wyszukiwanie plików

Sierpień 10th, 2008 Brak komentarzy »

Możliwość zaawansowanego wyszukiwanie plików w systemie (za pomocą wyrażeń regularnych, reguł, czy po określonych atrybutach) dostarcza narzędzie find. Dla przykładu wyszukanie plików w katalogu /root zaczynających się od słówka linux:

find /root/ -name “linux*”

Aby wyświetlić listę wszystkich plików w systemie, których nazwa zaczyna się od słowa “linux”, po którym występują dokładnie 3 dowolne znaki:

find / -name “linux???”

Aby wyświetlić wszystkie pliki w katalogu /usr większe niż 10MB:

find /usr -size +10000k

Aby wyszukać wszystkie puste pliki znajdujące się np. w katalogu domowym:

find ~ -empty

Wyszukanie plików w katalogu domowym, które były odczytywane w ciągu ostatniej godziny:

find ~ -amin 60

Wyszukaj wszystkie pliki w /etc które były odczytywane 3 dni temu:

find /etc -daystart -atime 3

Wyszukaj pliki w katalogu /tmp należące do użytkownika rajmund:

find /tmp  -user rajmund

Konfiguracja OpenLDAP

Sierpień 9th, 2008 Brak komentarzy »

LDAP (Lightweight Directory Access Protocol – “Lekki Protokół Dostępu do Katalogu”) jest (jak sama nazwa wskazuje) lekkim protokołem przeznaczonym do korzystania z usług katalogowych. Główne zalety – to scentralizowany dostęp do danych z różnych maszyn (np. na temat studentów, wykładowców), replikacja tych danych, bezpieczeństwo, obsługa przestrzeni nazw itp.

Każdy wpis w LDAP posiada tzw. “nazwę wyróżnioną” (distinguished name), w skrócie DN. Ta nazwa pozycjonuje wpis w drzewie informacji DIT (Data Information Tree). LDAP pozwala ponadto na takie operacje jak:

- wyszukiwanie (search, compare)

- aktualizację (add, delete, modify, modifyDN)

- uwierzytelnianie, operacje kontrolne (bind, unbind, abandon)

Instalacja OpenLDAP w Linux-EduCD 0.9:

apt-get install openldap openldap-servers openldap-clients

W pliku konfiguracyjnym /etc/openldap/slapd.conf należy zmodyfikować wpisy, przykładowo:


suffix “dc=test,dc=pl”
rootdn “cn=Kierownik,dc=przyklad,dc=pl”

rootpw tajnehasło

Hasło można również wygenerować za pomocą slappasswd i w postaci zahaszowanej wkleić do powyższego pliku, jeśli nie chcemy żeby wpisane było jawnie.

Serwer LDAP uruchamiamy poleceniem:

slapd

Sprawdzenie poprawności składni pliku konfiguracyjnego slapd.conf:

slaptest

Pobranie informacji z serwera, np:

ldapsearch -x -b ” -s base ‘(objectclass=*)’ namingContexts

Przebudowanie indeksów bazy danych:

slapindex

Aby dodać wpis do katalogu można posłużyć się komendą ldapadd oraz odpowiednio przygotowanym plikiem tekstowy w formacie LDIF, np:

ldapadd -x -D “cn=Kierownik,dc=przyklad,dc=pl” -W -f plik_z_wpisami.ldif

Plik ldif (zbiór rekordów) może wyglądać następująco:

dn: uid=rradziewicz,ou=People,dc=openldap,dc=org

uid: root

cn: root

sn: root

mail: rajmund@linux-educd.pl

objectClass: person

objectClass: organizationalPerson

objectClass: inetOrgPerson

objectClass: account

objectClass: posixAccount

objectClass: top

objectClass: kerberosSecurityObject

krbname: rajmund@linux-educd.pl

objectClass: shadowAccount

userPassword: {crypt}PYaxb1iOPqmN.

shadowLastChange: 10770

shadowMax: 99999

shadowWarning: 7

loginShell: /bin/bash

uidNumber: 1000

gidNumber: 1000

homeDirectory: /home/rajmund

gecos: rajmund