14.2 Kontrola dostępu do hosta

14.2.1 iptables

iptables jest programem konfiguracyjnym filtra pakietów dla Linuksa 2.4 i powyżej. Jądro 2.4 (2.4.5, żeby być dokładnym) zostało pierwszy raz wprowadzone do Slackware (jako opcja) w wersji 8.0 i ustawione jako domyślne w Slackware 8.1. Sekcja ta porusza jedynie podstawy iptables; warto odwiedzić http://www.netfilter.org/ by uzyskać więcej informacji. Komendy poniżej opisane wprowadzane są do /etc/rc.d/rc.firewall, który musi mieć ustawione prawa wykonywania aby odniosły efekt przy starcie systemu. Zauważ że niepoprawna konfiguracja iptables może zablokować twój komputer. Jeżeli choć trochę wątpisz w swoje umiejętności w tej dziedzinie, upewnij się, że masz lokalny dostęp do maszyny.

Pierwszą rzeczą jaką ludzie powinni zrobić jest ustawienie domyślnej polityki dla każdego wchodzącego łańcucha na DROP:

# iptables -P INPUT DROP
# iptables -P FORWARD DROP

Kiedy wszystko jest odrzucane (denied), możesz zacząć dopuszczać. Pierwszą rzeczą do dopuszczenia jest cały ruch dla ustanowionych już sesji.

# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Aby nie przeszkadzać aplikacjom, które komunikują się używając adresu loopback, zazwyczaj dobrze jest dodać taką regułę:

# iptables -A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -j ACCEPT

Reguła ta dopuszcza ruch wchodzący i wychodzący z 127.0.0.0/8 (127.0.0.0 - 127.255.255.255) poprzez interfejs loopback (lo). Podczas tworzenia reguł, warto dobrze się zastanowić. Może się zdażyć, że regułka będzie zezwalać na cos co w żadnym wypadku nie będzie pożądane. Z drugiej strony - jeżeli reguły zezwalają na zbyt mało - musi ich być dużo :-).

Następną rzeczą do zrobienia będzie umożliwienie dostepu do określonych usług działających na komuterze. Na przykład chcąc uruchomić serwer www, należy użyć regułki podobnej do tej:

# iptables -A INPUT -p tcp --dport 80 -i ppp0 -j ACCEPT

Umożliwi to dostęp z każdego komputera na 80 port twojej maszyny przez interfejs ppp0. Możesz chcieć ograniczyć dostep do usługi tak żeby tylko okreśone komputery miały taki dostep. Poniższa reguła ta umożliwia dostęp do usługi z hosta 64.57.102.34:

# iptables -A INPUT -p tcp -s 64.57.102.34 --dport 80 -i ppp0 -j ACCEPT

Dopuszczanie ruchu ICMP może być użyteczne w celach diagnostycznych. Aby to umożliwić musisz użyć regułki:

# iptables -A INPUT -p icmp -j ACCEPT

Wiekszość osób zechce ustawić Network Address Translation (NAT) na komputerach bramach, tak żeby pozostałe komputery w ich sieci miały dostep do Internetu poprze nie. W tym celu należy użyć następującej regułki:

# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Ważne jest włączenie IP forwarding. Można to zrobić czasowo używając nstepującego polecenia:

# echo 1 > /proc/sys/net/ipv4/ip_forward

Aby aktywować IP forwarding na stałe (np. tak, żeby zmiany zachowały sie po restarcie) należy wyedytować /etc/rc.d/rc.inet2 i zmienić nastepująca linie:

IPV4_FORWARD=0

...na:

IPV4_FORWARD=1

Więcej o NAT dowiesz się z NAT HOWTO.

14.2.2 tcpwrappers

tcpwrappers kontrolują dostęp do daemonów bardziej na poziomie aplikacji, niż na poziomie IP. Może to zapewnić dodatkową warstwę bezpieczeństwa w czasie gdy kontrola dostępu z poziomu IP (np. Netfilter) nie funkcjonuje poprawnie. Może się tak stać w przypadku rekompilacji jądra jeżeli zapomni się wkompilować obsługi iptables. Ochrona na poziomie IP zawiedzie jednak tcpwrappers wciąż będzie pełnić swoją funkcję.

Dostęp do usług chronionych przez tcpwrappers może być kontrolowany przy użyciu /etc/hosts.allow i /etc/hosts.deny.

Większość ludzi będzie mieć tylko jedną linię w swoim pliku /etc/hosts.deny - domyślnie odmowa dostępu do wszystkich daemonów. Będzie ona wyglądać następująco:

ALL : ALL

Kiedy to już jest zrobione, możesz skoncentrować się na umożliwianiu dostępu do usług z określonych hostów, domen czy zakresów IP. Można tego dokonać w pliku /etc/hosts.allow.

Wielu użytkowników zacznie od zezwolenia na połączenia z localhosta. Można to osiągnąć używając:

ALL : 127.0.0.1

Aby umożliwić dostęp do SSHd z 192.168.0.0/24, możesz użyć jednej z podanych reguł:

sshd : 192.168.0.0/24
sshd : 192.168.0.

Możliwe jest także zastrzeżenie dostępu do hosta z określonych domen. Można to zrobić używając następujacej reguły:

sshd : .slackware.com
Grenlandia 2012