Professional Documents
Culture Documents
Najpopularniejszym serwerem DNS jest BIND ( nazywany czasem named). Generalnie sami
musimy zadbać o zabezpieczenie binda
Bind
Pierwsze co musimy zrobić, aby posiadać własny serwer DNS to go zainstalować. W Debianie
wystarczy wydać komendę: Dobrym sposobem jest wydzielenie dla niego jail'a.
Konfiguracja
W katalogu konfiguracyjnym (/etc/bind/) znajdują się 2 pliki, które będą nas interesowały:
options {
version "nith-kula DNS";
directory "/var/cache/bind";
forwarders { XXX.XX.XX.XX; };
auth-nxdomain no;
listen-on { YYY.YYY.YYY.YY; 127.0.0.1; };
allow-recursion { 127.0.0.1; };
};
Aby zacząć przygodę z domenami utwórzmy jeszcze 2 katalogi. Osobny dla domen, dla których
będziemy serwerem podstawowym, osobno dla zapasowych:
mkdir /etc/bind/M
mkdir /etc/bind/S
W pliku named.conf.local definiujemy jakie strefy (domeny) chcemy obsługiwać przez nasz serwer
DNS. Jeśli nasz BIND ma być serwerem podstawowym (primary) dla domeny domena.pl
powinniśmy dodać we wspomnianym pliku:
zone "domena.pl" {
type master;
file "/etc/bind/M/domena.pl";
notify yes;
allow-transfer { XXX.XXX.XXX.XX; };
};
W następnej kolejności dla domena.pl musimy utworzyć wspomniany plik strefy. Przykładowy plik
strefy:
$TTL 86400
$ORIGIN domena.pl.
@ IN SOA dns1.domena.pl. root.domena.pl. (
2010111801 ;; serial
2H ;; refresh
1H ;; retry
7D ;; expire
1D ;; TTL
)
@ IN NS dns1.domena.pl.
@ IN NS dns2.domena.pl.
@ IN MX 10 mail.domena.pl.
@ IN A XXX.XX.XX.X
dns1 IN A XXX.XX.XX.X
dns2 IN A YYY.YY.YY.Y
www IN CNAME @
mail IN CNAME @
ftp IN CNAME www
Plik strefy dzieli się na 3 sekcje: nazwa domeny i okres ważności wpisów, kto zarządza domeną
oraz zawartość. Kiedyś wszelkie czasy podawane był w sekundach, dzisiaj możemy tworzyć
„skróty” podając 1D (Day) lub 2H (Hours).Komentarze oznaczamy podwójnym średnikiem (;;).
Zauważyliście powyżej zapewne kropki podawane na końcach domen – dns1.domena.pl., gdyby
zabrakło kropki BIND automatycznie dokleiłby domenę z $ORIGIN. Wtedy z dns1.domena.pl
zrobiłoby się dns1.domena.pl.domena.pl. I ostatnia sprawa: @ jest pewnego rodzaju zmienną, która
przechowuje nazwę domeny.
Reszta pliku strefy jest dowolna, ale omówimy co znaczą poszczególne wpisy.
Jak wspomniałem każda domena, musi mieć zdefiniowane swoje serwery DNS:
@ IN NS dns1.domena.pl.
@ IN NS dns2.domena.pl.
@ IN NS dns1.example.com.
@ IN NS dns2.example.com.
Jeśli jest to definicja serwerów nazw, które sami obsługujemy musimy rozwiązać nazwę
dns1.domena.pl na adres IP:
@ IN A XXX.XX.XX.X
dns1 IN A XXX.XX.XX.X
dns2 IN A YYY.YY.YY.Y
Jeśli chcemy ustawić serwer poczty dla naszej domeny musimy posłużyć się rekordem IN MX:
@ IN MX 10 mail.domena.pl.
Wpis ten mówi, że wszelka poczta kierowana na @domena.pl ma być kierowana na serwer
pocztowy mail.domena.pl o priorytecie 10. Priorytet przydaje się nam wtedy, gdy podamy kilka
serwerów pocztowych.
www IN CNAME @
mail IN CNAME @
ftp IN CNAME www
Najprościej mówiąc IN CNAME to alias, który tworzy sub-domenę. Najlepiej wskazywać na rekord
IN A, niż inny IN CNAME.
# /etc/init.d/bind9 restart
Secondary DNS
zone "domena.pl" {
type slave;
file "/etc/bind/S/domena.pl";
masters { ZZZ.ZZZ.ZZZ.ZZ; };
};
Jak zapewne zauważyliście nie ma wpisu dotyczącego notify oraz allow-transfer, natomiast pojawia
się opcja masters. Masters wskazuje nam na podstawowy serwer nazw naszej domeny. To wszystko.
Po przeładowaniu BIND:
# /etc/init.d/bind9 reload
Na początku naszej przygody z definiowaniem stref DNS na pewno przyda nam się program
named-checkzone (paczka bind9utils), który służy do sprawdzenia poprawności naszego pliku
strefy. Wywołanie jest bardzo proste.:
Jako pierwszy parametr podajemy nazwę domeny, natomiast po nim ścieżkę do pliku strefy tej
domeny.
PS: Warto spojrzeć na rozwiązania konkurencji, np. PowerDNS.
Uzupełnienie:
Trzy podstawowe sposoby zabezpieczeń
SSH
Uzupełnienie:
Najlepsze sposoby zabezpieczenia openssh servera:
1. Usuń openssh jeśli nie potrzebujesz z niego korzystać, na stacjach roboczych na pewno nie
potrzebujesz ssh
Standardowo wszyscy użytkownicy maja dostęp do systemu przez SSH. Nawet konta UNIX/Linux
dla użytkowników korzystających tylko z ftp czy email mogą mieć dostęp do ssh. Jest to sporym
zagrożeniem gdyż daje dostęp do całego systemu w tym perla czy pythona a to z kolei daje duże
pole do popisu dla nieproszonych gości.
Ograniczenie użytkowników, dodać linie do pliku
AllowUsers root kula nith
Możemy zezwolić na dostęp wszystkim oprócz kilku
DenyUsers jez judio damian
4: Automatyczne wylogowanie
Aby użytkownik który loguje się do serwera nie pozostawił sesji ssh bez nadzoru możemy ustawić
czas po którym automatycznie zostanie on wylogowany. W tym celu w sshd_config konfigurujemy
następujące wartości:
ClientAliveInterval 300
ClientAliveCountMax 0
Interesuje nas idle timeout interval podawany w sekundach (300 s = 5 min). Po tym czasie sesja
zostanie zerwana a użytkownik oznaczony jako wylogowany
5: Wyłacz pliki.rhosts
Nie czytaj plikó ~/.rhosts and ~/.shosts. Obniża to wygodę ale zwiększa bezpieczeństwo
zapobiegając automatycznemu logowaniu. Należy uaktualnić sshd_config o :
IgnoreRhosts yes
Nie ma potrzeby logowania się do ssh jako root. Normalny użytkownik może uzyc polecenia su lub
sudo aby uzyskać pełny dostęp do istotnych funkcji. Podnosi to bezpieczeństwo, nazwa
niedomyślnego użytkownika jest tez trudniejsza do zgadnięcia, zwykle sniffuje się tylko
początkowe dane. W sshd_config ustawić:
PermitRootLogin no
+ At any time, the XYZG may inspect and seize data stored on this IS.
+ Communications using, or data stored on, this IS are not private, are subject
to routine monitoring,
interception, and search, and may be disclosed or used for any XYZG authorized
purpose.
+ Notwithstanding the above, using this IS does not constitute consent to PM, LE
or CI investigative searching
or monitoring of the content of privileged communications, or work product,
related to personal representation
or services by attorneys, psychotherapists, or clergy, and their assistants.
Such communications and work
product are private and confidential. See User Agreement for details.
Jest to lekarstwo na wielki procent jeleni którzy mają ochotę dostać się do naszego systemu. Można
wpisać tam cokolwiek ale im bardziej rządowe wydaje się być tym lepiej.
9: Zablokuj na firewallu SSH (Port 22)
Pozwala to zablokować niepożądane próby logowania spoza lokalnej sieci oraz wyznaczonych
hostów z sieci WAN.
-bez przykładów bo iptables dopiero będzie
10: Zmiana portu SSH i ograniczenie ip na których nasłuchuje połączeń
Domyślnie ssh nasłuchuje na wszystkich interfejsach oraz adresach ip. Aby podnieść poziom
bezpieczeństwa można ograniczyć adresy na których nasłuchuje i zmienić domyślny port. W
ssh_config poprawiamy i dodajemy:
Port 300
ListenAddress 192.168.1.5
ListenAddress 202.54.1.5
Należy użyć zewnętrznego oprogramowania jak np. Fail2ban czy Brute Force Detection
15: Ograniczenie liczby połączeń na port ssh
Zmniejszenie maksymalnej liczby zapytań do ssh. W tym celu wykorzystujemy regułę iptables np.
max 5 połaczeń na 60 sekund.
16: Analiza logów
Upewnij się ze LogLevel jest ustawiony na INFO lub DEBUG w sshd_config:
LogLevel INFO
17: Aktualizuj regularnie system operacyjny i openssh
Uzupełnienie