Istnieje serwer bez obrony iptables :ACCEPT all..
Na tym serwerze mogą znajdować się niestandardowe aplikacje.
Jeśli powinniśmy zahartować ten serwer (a więc zaprzeczyć wszystkim i pozwolić tylko na to, co jest potrzebne aplikacjom) za pomocą ścisłych reguł iptables, musimy dowiedzieć się ręcznie, z której aplikacji korzysta, dst/src
port/protocol
a następnie musimy napisać reguły iptables dla im..
Pytanie : czy są jakieś skrypty, które mogą pomóc w zebraniu tych informacji z uruchomionej maszyny? (z dzienników?) - I automatyczne generowanie reguł iptables?
Jak tam jest audit2allow
na SELinux
. Tylko dla iptables
!
Maszyna nie może mieć żadnych awarii!
Np .: skrypt „MAGIC” powinien działać na komputerze przez tydzień / miesiąc, zbierając informacje, a następnie po tygodniu / miesiącu skrypt będzie mógł wygenerować plik reguł iptables, którego możemy użyć.
Wiele osób może dostać się w tej sytuacji (jak zahartować serwer w odniesieniu do iptables). I byłoby świetnie, gdyby istniał skrypt / rozwiązanie, które może to zrobić: \
Odpowiedzi:
Zrób to ręcznie
lub
Wyjaśnienie:
źródło
Uruchom
tcpdump
na maszynie przez około tydzień, aby uchwycić średni ruch. Następnie możesz przeglądać ruch za pomocą Wireshark, aby sprawdzić, które porty są używane.Polecenie to byłoby
tcpdump -i <interface> -s 65535 -w <some-file>
Następnie możesz odwzorować to z powrotem za pomocą,
netstat -tuanp
aby zobaczyć, jakie PID / aplikacje używają jakich portów.Teoretycznie można to skrypty.
źródło
Możesz zacząć od bardzo podstawowego szablonu, takiego jak https://gist.github.com/jirutka/3742890 , który pozwala tylko na ssh i ping, a także dodawać dowolne inne elementy ręcznie.
szybki hack skryptowy w celu wygenerowania reguł iptables dla aplikacji nasłuchującej na interfejsie publicznym (0.0.0.0) / tcp
możesz również użyć
iptables -I INPUT <number>
do wstrzyknięcia reguł w określonej lokalizacji, z którą możesz wymienićiptables -nvL --line-numbers INPUT
źródło
Niestety nie ma takiego skryptu, jaki kiedykolwiek widziałem, który mógłby działać w trybie uczenia się lub w trybie pasywnym, rejestrując całe użycie sieci, pobierając jego wyniki i generując rzeczywistą zaporę sieciową na podstawie
iptables
dzienników.Najlepszym rozwiązaniem będzie rozpoczęcie w prosty sposób i ciągłe dodawanie różnych elementów, gdy zaczniesz w pełni rozumieć usługi świadczone przez system. Musisz skorzystać z narzędzi, takich jak
netstat
porty, które są używane dla różnych usług, które hostujesz, a także jakie adresy IP mają do nich dostęp.UWAGA: powyżej możesz zobaczyć, jakie usługi mam uruchomione na serwerze, które akceptują połączenia TCP, tj. „Nasłuchują” połączeń na różnych portach.
Nietrudno jest zacząć od rzeczy takich jak SSH (port 22) i HTTP (port 80), jeśli są one typowe dla twojego systemu, więc zrobiłbym tego typu usługi masowo naraz. W przypadku innych usług, takich jak LDAP lub NIS, możesz chcieć robić to w bardziej kontrolowany sposób, upewniając się, że nic się nie psuje podczas ich wprowadzania.
Narzędzia takie jak FireHOL , Firewall Builder (fwbuilder) i eztables mogą być pomocne podczas ataku na ten projekt, ponieważ zapewniają przyjemną warstwę abstrakcji od konieczności
FireHOLiptable
ręcznego tworzenia niestandardowych reguł, co może być trudne.przykład
fwbuilderprzykład
Korzystanie z Fail2Ban
Mając podstawową
fragmentiptables
zaporę ogniową, prawdopodobnie będziesz chciał ją uzupełnić za pomocą narzędzia takiego jak Fail2Ban .Korzystanie z takich narzędzi pomoże ograniczyć narażenie, które Twój system będzie musiał znieść, gdy będziesz go hartował. Nawet jeśli jesteś dość przekonany, że twój system został zahartowany, możesz nadal chcieć kontynuować korzystanie z Fail2Ban w ramach swoich środków bezpieczeństwa.
Bibliografia
źródło
Użyj reguł iptable, aby zarejestrować nowe połączenia, które również będą rejestrować udp.
Możesz określić inne,
--log-level
aby dzienniki były przechowywane w innym pliku niż / var / log / messages (musisz skonfigurować demona syslog).Myślę, że powinieneś przeczytać główne dzienniki aplikacji, ponieważ niektóre serwery mają bardzo okresową aktywność, taką jak południe, koniec tygodnia, koniec miesiąca (kwartał, rok), więc nie przegapisz ważnej aktywności sieciowej serwera.
Ponieważ serwer ma krytyczne znaczenie, sprawia, że macierz przepływu sieciowego serwera w ładnym arkuszu kalkulacyjnym (źródło ip, ip dest, protokół, port, aplikacja), który pomoże ci zbudować reguły.
źródło
Wiem, że to nie jest skrypt i nie jest odpowiedzią na pytanie OP, ale to mój pomysł, którym chcę się podzielić z OP.
Mam wszystkie porty nasłuchujące z:
Może to może przybliżyć cię do napisania własnego skryptu. :)
źródło
Możesz zacząć od czegoś takiego:
a następnie postępuj zgodnie z
lub
Pierwsza linia używa netstat do listy procesów nasłuchiwania i ich portów. Następnie wygeneruje linie „iptables”, aby umożliwić każdemu z tych połączeń przychodzących. Małe podstawienie wyrażenia regularnego sed zostało dostosowane dla danych wyjściowych netstat na moim serwerze, więc może to wymagać drobnych poprawek. Kiedy to działa, powinieneś otrzymać coś takiego:
Dwie ważne rzeczy do zapamiętania:
1) Te reguły nic dla ciebie nie robią , dopóki nie umieścisz wiersza DROP lub REJECT na końcu lub nie ustawisz domyślnej polityki dla niedopasowanych pakietów. Reguły te zezwalają na pakiety, co jest sporne, jeśli domyślna zasada zezwala na wszystko, co nie jest dopasowane.
2) Zasady te są ambiwalentne w odniesieniu do źródłowego adresu IP. Z oryginalnego postu wygląda na to, że chcesz zezwolić wszystkim swoim klientom na korzystanie z serwera, a następnie przejrzyj dzienniki, aby uzyskać źródłowe adresy IP z portami docelowymi. Nie znam narzędzia do tego, więc ten skrypt uniemożliwi tylko tworzenie nowych usług na twoim serwerze, które nasłuchują na innych portach ... co jest czymś .
źródło