Bagaimana cara mengatur firewall sederhana di Ubuntu?

18

Bisakah seseorang memberikan beberapa langkah sederhana dengan contoh konfigurasi cara mengatur firewall sederhana di Ubuntu (hanya menggunakan konsol)? Hanya akses ssh, http, dan https yang boleh.

Klew
sumber
Apakah Anda berbicara tentang firewall jaringan, atau hanya firewall sistem?
Brad Gilbert
Apa yang Anda maksud dengan firewall jaringan? Apakah ini firewall di router? Jika ya, maka saya berbicara tentang firewall sistem.
Klew

Jawaban:

20

sudo ufw tolak default

sudo ufw memungkinkan http

sudo ufw memungkinkan https

sudo ufw izinkan ssh

sudo ufw aktifkan

Nerdfest
sumber
Jika saya akan memanggil perintah ini secara berurutan melalui ssh, apakah itu akan merusak koneksi saya?
Klew
Saya tidak percaya begitu, tetapi Anda harus memeriksa untuk memastikan. Ini juga menyimpan statusnya di antara restart, jadi Anda hanya perlu melakukannya sekali.
Nerdfest
Saya akan memeriksanya ketika saya akan dekat dengan komputer ini ...
klew
Anda bisa memasukkannya ke dalam skrip dan menjalankannya dan kemudian bahkan jika Anda terputus Anda akan dapat menyambung kembali setelah itu. Lihat jawaban saya di bawah untuk skrip.
Hamish Downer
2
Komentar sebelumnya benar. Pada dasarnya, jalankan perintah pertama di script di atas lalu.
Nerdfest
14

Gunakan skrip ini.

Putuskan apakah Anda ingin mengizinkan ICMP masuk (ping) atau tidak.

# 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
sumber
8

Seperti disebutkan dalam komentar untuk jawaban lain, Anda tidak ingin kehilangan koneksi sebelum Anda mengizinkan port ssh. Dari halaman manual:

"MANAJEMEN JARAK JAUH

Saat menjalankan ufw, aktifkan atau mulai ufw melalui skrip initnya, ufw akan membilas rantainya. Ini diperlukan agar ufw dapat mempertahankan status yang konsisten, tetapi mungkin menjatuhkan koneksi yang ada (misalnya ssh). ufw mendukung penambahan aturan sebelum mengaktifkan firewall, sehingga administrator dapat melakukan:

ufw allow proto tcp from any to any port 22

sebelum menjalankan 'ufw aktifkan'. Aturan masih akan dihapus, tetapi port ssh akan terbuka setelah mengaktifkan firewall. Harap perhatikan bahwa sekali ufw 'diaktifkan', ufw tidak akan membilas rantai saat menambahkan atau menghapus aturan (tetapi akan ketika memodifikasi aturan atau mengubah kebijakan default). "

Jadi di sini adalah pendekatan yang menggunakan skrip untuk mengaturnya. Anda akan keluar saat menjalankan skrip ini, tetapi setelah menjalankan skrip Anda dapat masuk kembali melalui ssh.

Masukkan yang berikut ini dalam sebuah skrip dan sebut itu start-firewall.sh

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

Dan kemudian membuatnya dapat dieksekusi dan menjalankannya dengan melakukan

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

Untuk mempelajari lebih lanjut, baca halaman manual .

Hamish Downer
sumber
2

Jika Anda membiasakan diri dengan skrip iptables, Anda akan memiliki kontrol penuh atas semua kemampuan firewall. Ini sama sekali tidak ramah seperti Firestarter, tetapi dapat dilakukan di konsol dengan nano/ vieditor. Lihatlah tutorial ini yang ditujukan untuk Ubuntu.

spoulson
sumber
1

Quicktables membantu saya mempelajari aturan iptables. Jalankan saja skripnya dan itu akan menghasilkan skrip iptables untuk Anda ... maka Anda dapat membukanya dan melihat perintah terkait yang dihasilkan oleh pertanyaan yang diajukan kepada Anda. Ini sumber belajar yang bagus.

Sayangnya, tidak lagi dipertahankan.

http://qtables.radom.org/

JP Richardson
sumber
1

Saya sangat suka menggunakan firehol ( paket ).

Untuk membuat aturan pengaturan yang Anda suka, Anda perlu mengedit file / etc / default / firehol dan mengubah START_FIREHOL = YA

Dan Anda ingin membuat /etc/firehol/firehol.conf Anda terlihat seperti ini.

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"

Salah satu hal hebat tentang firehol adalah perintah 'coba'. Anda dapat menyesuaikan file konfigurasi Anda dan melakukan 'firehol try', jika Anda terhubung melalui ssh, dan sesuatu tentang apa yang Anda ubah membunuh akses jaringan Anda maka firehol akan mengembalikan perubahan. Agar perubahan benar-benar diberlakukan, Anda harus mengatakan komit.

Sakit kepala
sumber
1
Firehol sangat pintar untuk memanipulasi aturan iptables. '$ firehol try' "Mengaktifkan firewall, tetapi menunggu sampai pengguna mengetik kata commit. Jika kata ini tidak diketik dalam 30 detik, firewall sebelumnya dipulihkan."
Gareth
Sooo Anda dapat menambah / mengedit / menghapus aturan dan kemudian mengujinya. Jika Anda melakukan ini melalui SSH dari jarak jauh maka itu tidak akan mengunci Anda dari server Anda sendiri!
Gareth
1

Saya lebih suka Shorewall . Mudah untuk setup tetapi fleksibel pada saat bersamaan.

Artyom Sokolov
sumber
-1

sudo apt-get install firestarter

Kemudian, lihat di menu System-> Administration.

spoulson
sumber
Penanya hanya ingin menggunakan konsol
Mikeage
Ahh, kesalahanku. Kalau tidak. admin masih dapat ssh -X ke server dan menjalankan firestarter dari jarak jauh.
spoulson
1
Saya juga perlu menginstal beberapa server X untuk memulai ssh -X :).
Klew
@ tuh, Anda tidak perlu menginstal X server penuh untuk menjalankan aplikasi X lewat ssh. Anda memang membutuhkan beberapa perpustakaan, tetapi Anda tidak perlu semuanya. Untuk minimum, Anda hanya perlu paket xauth dan xbase-clients.
Zoredache