Zahasłowany katalog w Apache. (Slackware)

1. edycja pliku /etc/httpd/httpd.conf

AccessFileName .htaccess

<Files ~ „^\.ht”>
Order allow,deny
Deny from all
Satisfy All
</Files>

2. plik .htpasswd i .htaccess

touch /home/nazwa_usera/.htpasswd
chown apache.apache /home/nazwa_usera/.htpasswd
chmod 660 /home/nazwa_usera/.htpasswd

htpasswd /home/nazwa_usera/.htpasswd nazwa_usera

mkdir /home/nazwa_usera/public_html/katalog
touch /home/nazwa_usera/public_html/katalog/.htaccess

– do pliku .htaccess wpisać:

AuthName „Restricted Area”
AuthType Basic
AuthUserFile /home/nazwa_usera/.htpasswd
AuthGroupFile /dev/null
require valid-user

Efekt:

htaccess

Autor: Krzysztof Wnuk

Usunięcie Krytycznej luki bezpieczeństwa w kernelu Linux, wszystkie wersje od roku 2001.

Wszystko należy wykonywać z konta root.

Przechodzimy do katalogu /usr/src/linux/net następnie usuwamy plik socket.o
otwieramy w ulubionym edytorze plik socket.c i odnajdujemy wpis: (okolice linii 710)

if (more)
flags |= MSG_MORE;

return sock->ops->sendpage(sock, page, offset, size, flags);

zmieniamy wpis aby wyglądał następująco:

if (more)
flags |= MSG_MORE;

return kernel_sendpage(sock, page, offset, size, flags);

zapisujemy i wychodzimy z edytora. Teraz przechodzimy do katalogu /usr/src/linux
i wykonujemy po kolei polecenia:

make
make bzImage
make install

Teraz pozostaje tylko restart systemu i problem rozwiązany.

Autor: Krzysztof Wnuk

Krytyczna luka bezpieczeństwa w kernelu Linux, dotyczy wszystkich wersji od roku 2001

Krytyczna luka bezpieczeństwa w kernelu Linux dotyczy wszystkich wersji 2.4 i 2.6, które ukazały się od 2001 roku we wszystkich architekturach – ostrzegają specjaliści od zabezpieczeń Tavis Ormandy i Julien Tiennes z Google’a. Luka pozwala użytkownikom z ograniczonymi prawami uzyskać w systemie uprawnienia administratora.

Problem

Przyczyną problemu jest możliwość wystąpienia błędu dereferencji pustego wskaźnika powiązana z inicjalizacją gniazd dla rzadko używanych protokołów.

W normalnych warunkach struktura wskaźnika definiuje, jakie operacje, np. accept() czy bind(), są obsługiwane przez gniazdo. Ale jeśli funkcja systemowa accept() nie jest dla danego protokołu zaimplementowana, to powinna wskazywać na zdefiniowane wcześniej pseudoprocedury, takie jak sock_no_accept(). Wygląda jednak na to, że tak się nie dzieje we wszystkich podprogramach obsługi protokołów. Niektóre wskaźniki pozostają w nich niezainicjowane, co w powiązaniu z funkcją sock_sendpage() może być wykorzystywane do wykonywania kodu na prawach roota. Usterka dotyczy m.in. podprogramów obsługi protokołów PF_BLUETOOTH, PF_IUCV, PF_INET6 (z IPPROTO_SCTP), PF_PPPOX i PF_ISDN.

Ormandy i Tiennes uważają, że problem ten dotyczy Linuksa w wersjach 2.4 i 2.6 od maja 2001 roku, a więc od 2.4.4 aż po 2.4.37.4 włącznie oraz 2.6.0 aż po 2.6.30.4. Programiści kernela zamiast naprawić wszystkie protokoły niezaimplementowane w pełni, po prostu przemapowali sock_sendpage na funkcję kernel_sendpage, która odpowiada również za to, że wskaźnik nie jest prawidłowo inicjowany.

Jak wykazał krótki test redakcji heise Security na w pełni załatanym systemie Ubuntu 8.10, nowy exploit umożliwia dostęp do systemu na prawach administratora.

Rozwiązanie

Korekta tego błędu na razie wpłynęła jedynie do repozytorium systemu kontroli wersji kernela.

Wkrótce można się spodziewać nowej, oficjalnej wersji jądra, ponieważ dla tej luki jest już dostępny exploit (wunderbar_emporiump). Autorem kodu jest ponownie Brad Spengler, który już w połowie lipca opublikował rozszerzający uprawnienia exploit dla kernela Linux.

Obejście

Według Ormandy i Tiennesa exploit nie funkcjonuje jednak w najnowszych kernelach z obsługą mmap_min_addr, jeśli tam za pośrednictwem interfejsu sysctl (np. korzystając z wczytywanego przy starcie systemu pliku /etc/sysctl.conf) jako wartość klucza vm.mmap_min_addr zdefiniowana została liczba większa niż zero.

Źródło: heise-online.pl

Udostępnianie internetu na inny komputer + konfiguracja DHCP.

Poniższy artykuł pisany jest w oparciu o serwer (udostępniający) z systemem
Linux Slackware 12.1 z kernelem 2.6.28.4.

Potrzebne rzeczy.
– Serwer lub inny komputer dysponujący dwoma interfejsami sieciowymi i systemem Linux
– Drugi komputer z kartą sieciową na który udostępniamy internet.
– Kabel UTP (skrętka) skrosowany w standardzie T568B na T568A.
– Zainstalowane pakiety (iptables i DHCP)

(W moim przykładzie posługuję się interfejsami sieciowymi:
eth0 – połączenie internetowe, eth1 – udostępnia)

Na początek spinamy serwer z komputerem skrętką ,następnie tworzymy skrypt i wpisujemy do niego poniższe (a jeżeli mamy już skrypt firewalla oparty na iptables to modyfikujemy go wg podanego przykładu)

#!/bin/sh

# lokalizacja sysctl
SYSCTL=”/sbin/sysctl -w”

# lokalizacja iptables
IPTABLES=”/usr/sbin/iptables”
IPTABLESS=”/usr/sbin/iptables-save”
IPTABLESR=”/usr/sbin/iptables-restore”

# interfejs internetowy
INET_IFACE=”eth0″
INET_ADDRESS=”78.88.20.128″

# lan
LAN_IFACE=”eth1″
LAN_IP=”192.168.0.1″

# network
NET_ADDRESS=”192.168.0.0″
NET_MASK=”255.255.255.0″

# hosts
HOST_ADDRESS=”192.168.0.2″

# interfejs lokalny
LO_IFACE=”lo”
LO_IP=”127.0.0.1″

# przywracanie i zapisywanie argumentow
if [ „$1” = „save” ]
then
$IPTABLESS > /etc/sysconfig/iptables
exit 0
elif [ „$1” = „restore” ]
then
$IPTABLESR < /etc/sysconfig/iptables
exit 0
fi

# ip forward
if [ „$SYSCTL” = „” ]
then
echo 1 > /proc/sys/net/ipv4/ip_forward
else
$SYSCTL net.ipv4.ip_forward=”1″
fi

# ignorowanie pakietów ICMP
if [ „$SYSCTL” = „” ]
then
echo „1” > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
else
$SYSCTL net.ipv4.icmp_echo_ignore_broadcasts=”1″
fi

# przeladowanie wszystkich tabel
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t filter -F
$IPTABLES -t mangle -F

# czyszczenie wszystkich lancuchow
$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t filter -X
$IPTABLES -t mangle -X

$IPTABLES -A INPUT -p UDP -i $LAN_IFACE –source-port 68 –destination-port 67 -j ACCEPT

$IPTABLES -t filter -P FORWARD DROP
$IPTABLES -t filter -A FORWARD -s $NET_ADDRESS/$NET_MASK -d 0/0 -j ACCEPT
$IPTABLES -t filter -A FORWARD -s 0/0 -d $NET_ADDRESS/$NET_MASK -j ACCEPT

$IPTABLES -t nat -A POSTROUTING -s $NET_ADDRES -d 0/0 -j MASQUERADE

Konfiguracja DHCP (Dynamic Host Configuration Protocol)

do pliku /etc/rc.d/rc.local dopisujemy następujące linie:

ifconfig eth1 192.168.0.1 up
route add -host dhcp dev eth1
/usr/sbin/dhcpd eth1

Następnie edytujemy plik /etc/dhcpd.conf wg poniższego przykładu:

# domena
option domain-name „ns1.klodzko.linux.pl”;

# Adresy DNS (w moim przypadku vectranetu, mogą być inne wolne DNSy np z opendns.com)
option domain-name-servers 88.156.96.61, 82.139.8.7, 88.156.63.9;

# dynamicznie uaktualniane adresy DNS
ddns-update-style none;

# domyślny czas dzierżawy adresu
default-lease-time 8640000;

# maksymalny czas dzierżawy adresu
max-lease-time 8640000;

# adres podsieci DHCP
subnet 192.168.0.0 netmask 255.255.255.0 {

# zakres adresów przydzielanych przez DHCP
range 192.168.0.10 192.168.0.200;
option broadcast-address 192.168.0.255;

# adres bramy
option routers 192.168.0.1;
option netbios-name-servers 192.168.0.1;
}

### adresy statyczne ### (opcjonalnie)

host laptop {
# adres mac klienta
hardware ethernet 00:1b:38:0c:10:cf;

# przydzielony adres IP
fixed-address 192.168.0.2;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
option netbios-name-servers 192.168.0.1;
}

Na koniec można jeszcze do pliku /etc/hosts dopisać:

255.255.255.255         dhcp

Teraz pozostaje tylko restart serwera i wszystko powinno działać. Dla pewności po restarcie można sprawdzić polecenie route które powinno zwrócić mniej więcej coś takiego:

Destination     Gateway           Genmask               Flags      Metric       Ref          Use      Iface
dhcp                       *          255.255.255.255       UH            0           0               0       eth1
192.168.0.0            *         255.255.255.0            U              0           0               0       eth1

Autor: Krzysztof Wnuk

Działający Firefox 3.5 + libsafe na Slackware.

firefox-iconJeżeli masz zdefiniowany libsafe w pliku /etc/ld.so.preload, Firefox 3.5 zawiśnie na starcie i nie uruchomi się. Są dwa sposoby żeby to obejść bez odinstalowywania libsafe.

1. uruchamianie firefoxa poleceniem LD_PRELOAD=/lib/libc.so.6 firefox

2. do pliku /etc/ld.so.preload na samej górze dodać linię /lib/libc.so.6