Jak skonfigurować prosty firewall na Ubuntu?

18

Czy ktoś mógłby podać kilka prostych kroków z przykładem konfiguracji, jak skonfigurować prostą zaporę ogniową na Ubuntu (używając tylko konsoli)? Należy zezwolić tylko na dostęp ssh, http i https.

Klew
źródło
Mówisz o zaporze sieciowej, czy tylko zaporze systemowej?
Brad Gilbert
Co rozumiesz przez zaporę sieciową? Czy to zapora na routerze? Jeśli tak, to mówiłem o zaporze systemowej.
klew 30.04.2009

Odpowiedzi:

20

sudo ufw default deny

sudo ufw zezwala na http

sudo ufw zezwala na https

sudo ufw pozwalają ssh

sudo ufw enable

Nerdfest
źródło
Gdybym wywoływał te polecenia po kolei za pomocą ssh, czy spowoduje to przerwanie mojego połączenia?
klew 30.04.2009
Nie wierzę w to, ale powinieneś to sprawdzić. To także utrzymuje jego status pomiędzy restartami, więc powinieneś to zrobić tylko raz.
Nerdfest,
Sprawdzę to, kiedy będę blisko tego komputera ...
klew
Możesz umieścić go w skrypcie i uruchomić, a następnie, nawet jeśli zostaniesz rozłączony, będziesz mógł później połączyć się ponownie. Zobacz moją odpowiedź poniżej dla skryptu.
Hamish Downer
2
Poprzedni komentarz jest poprawny. Zasadniczo uruchom pierwsze polecenie z powyższego skryptu jako ostatnie.
Nerdfest,
14

Użyj tego skryptu.

Po prostu zdecyduj, czy chcesz zezwolić na przychodzące ICMP (ping), czy nie.

# Clear any existing firewall stuff before we start
iptables --flush
iptables -t nat --flush
iptables -t mangle --flush

# As the default policies, drop all incoming traffic but allow all
# outgoing traffic.  This will allow us to make outgoing connections
# from any port, but will only allow incoming connections on the ports
# specified below.
iptables --policy INPUT DROP
iptables --policy OUTPUT ACCEPT

# Allow all incoming traffic if it is coming from the local loopback device
iptables -A INPUT -i lo -j ACCEPT

# Accept all incoming traffic associated with an established
# connection, or a "related" connection
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow incoming connections
# SSH
iptables -A INPUT -p tcp -i eth0 --dport 22 -m state --state NEW -j ACCEPT
# HTTP
iptables -A INPUT -p tcp -i eth0 --dport 80 -m state --state NEW -j ACCEPT
# HTTPS
iptables -A INPUT -p tcp -i eth0 --dport 443 -m state --state NEW -j ACCEPT

# Allow icmp input so that people can ping us
iptables -A INPUT -p icmp -j ACCEPT

# Reject all other incoming packets
iptables -A INPUT -j REJECT
Mikeage
źródło
8

Jak zauważono w komentarzach do innej odpowiedzi, nie chcesz utracić połączenia przed zezwoleniem na port ssh. Ze strony podręcznika:

"ZDALNE ZARZĄDZANIE

Podczas uruchamiania ufw enable lub uruchamiania ufw przez skrypt startowy ufw opróżnia łańcuchy. Jest to wymagane, aby ufw mógł utrzymać spójny stan, ale może porzucić istniejące połączenia (np. Ssh). ufw obsługuje dodawanie reguł przed włączeniem zapory, więc administratorzy mogą:

ufw allow proto tcp from any to any port 22

przed uruchomieniem „ufw enable”. Reguły nadal będą opróżniane, ale port ssh będzie otwarty po włączeniu zapory. Należy pamiętać, że po włączeniu ufw, ufw nie opróżni łańcuchów podczas dodawania lub usuwania reguł (ale zrobi to podczas modyfikacji reguły lub zmiany domyślnej polityki). ”

Oto podejście, które wykorzystuje skrypt do jego ustawienia. Zostaniesz wylogowany po uruchomieniu tego skryptu, ale po uruchomieniu go możesz zalogować się ponownie za pomocą ssh.

Umieść następujący skrypt w skrypcie i nazwij go start-firewall.sh

#!/bin/sh
ufw allow ssh
ufw enable
ufw default deny
ufw allow http
ufw allow https

A następnie uczyń go wykonywalnym i uruchom go, wykonując

$ chmod + x start-firewall.sh
$ sudo ./start-firewall.sh

Aby dowiedzieć się więcej, przeczytaj stronę podręcznika .

Hamish Downer
źródło
2

Jeśli zapoznasz się ze skryptami iptables, będziesz mieć pełną kontrolę nad wszystkimi funkcjami zapory. Nie jest tak przyjazny jak Firestarter, ale można to zrobić na konsoli za pomocą nano/ viedytorów. Sprawdź ten samouczek dotyczący Ubuntu.

spoulson
źródło
1

Quicktables pomogło mi nauczyć się zasad iptables. Po prostu uruchom skrypt, a wygeneruje dla ciebie skrypt iptables ... następnie możesz go otworzyć i wyświetlić powiązane polecenia wygenerowane na podstawie zadanych przez ciebie pytań. To świetne źródło wiedzy.

Niestety nie jest już utrzymywany.

http://qtables.radom.org/

JP Richardson
źródło
1

Naprawdę lubię używać firehol ( pakiet ).

Aby utworzyć reguły konfiguracji, które chcesz, musisz edytować plik / etc / default / firehol i zmienić START_FIREHOL = TAK

I chciałbyś, aby twój /etc/firehol/firehol.conf wyglądał tak.

version 5

interface any IfAll
    client any AnyClient accept
    server "ssh http https" accept
    # Accept everything from trusted networks
    server anystateless AllInside accept src "10.3.27.0/24"

Jedną ze wspaniałych cech ognistego ognia jest polecenie „spróbuj”. Możesz dostosować swój plik konfiguracyjny i wykonać „próbę ognistej”, jeśli łączysz się przez ssh, a coś o tym, co zmieniłeś, zabiło dostęp do sieci, to ogniste ogniwo cofnie zmiany. Aby zmiany rzeczywiście weszły w życie, musisz powiedzieć zatwierdzić.

Zoredache
źródło
1
Firehol jest genialny do manipulowania regułami iptables. „$ firehol try” „Aktywuje zaporę, ale czeka, aż użytkownik wpisze słowo zatwierdzenia. Jeśli to słowo nie zostanie wpisane w ciągu 30 sekund, poprzednia zapora zostanie przywrócona”.
Gareth,
Możesz dodać / edytować / usunąć reguły, a następnie je przetestować. Jeśli robisz to za pośrednictwem SSH zdalnie, to nie zablokuje cię na własnym serwerze!
Gareth,
1

Wolałbym Shorewall . Jest łatwy w konfiguracji, ale jednocześnie elastyczny.

Artem Sokołow
źródło
-1

sudo apt-get install firestarter

Następnie spójrz w menu System-> Administracja.

spoulson
źródło
pytający chce korzystać wyłącznie z konsoli
Mikeage
Ach, mój błąd. Alternatywnie. administrator nadal może ssh -X na serwerze i uruchomić firestarter zdalnie.
spoulson
1
Musiałbym również zainstalować jakiś serwer X, aby uruchomić ssh -X :).
zabił
@klew, nie musisz instalować pełnego serwera X, aby uruchamiać aplikacje X przez ssh. Potrzebujesz kilku bibliotek, ale nie potrzebujesz wszystkiego. Dla absolutnego minimum potrzebujesz tylko pakietów xauth i xbase-client.
Zoredache