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.
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
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
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.
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.
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ć.
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.
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.
Odpowiedzi:
sudo ufw default deny
sudo ufw zezwala na http
sudo ufw zezwala na https
sudo ufw pozwalają ssh
sudo ufw enable
źródło
Użyj tego skryptu.
Po prostu zdecyduj, czy chcesz zezwolić na przychodzące ICMP (ping), czy nie.
źródło
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ą:
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
A następnie uczyń go wykonywalnym i uruchom go, wykonując
Aby dowiedzieć się więcej, przeczytaj stronę podręcznika .
źródło
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
/vi
edytorów. Sprawdź ten samouczek dotyczący Ubuntu.źródło
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/
źródło
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.
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ć.
źródło
Wolałbym Shorewall . Jest łatwy w konfiguracji, ale jednocześnie elastyczny.
źródło
Może powinieneś spojrzeć na http://iptables-tutorial.frozentux.net/iptables-tutorial.html . Możesz także znaleźć więcej informacji na lartc.org
źródło
sudo apt-get install firestarter
Następnie spójrz w menu System-> Administracja.
źródło