Firewall FreeBSD

Bagian ini membahas dengan membangun firewall. Apa itu firewall? Sebuah firewall (dalam konteks ini) adalah satu set aturan yang memungkinkan atau menolak beberapa jenis lalu lintas jaringan (paket) dari memasuki atau meninggalkan Anda mesin FreeBSD.
Firewall Konsep
Ada beberapa jenis firewall Anda dapat berjalan. Hardware firewall, kadang-kadang disebut peralatan Firewall, mengimplementasikan firewall menggunakan hardware. Kebanyakan firewall ini 'keras' adalah proprietary dan biasanya menjalankan OS tertanam seperti FreeBSD atau Linux. Hardware firewall biasanya biaya uang dan menyediakan tool untuk konfigurasi yang bagus grafis untuk menyebarkan firewall Anda. Beberapa firewall hardware contoh Anda mungkin telah mendengar tentang yang 'Cisco Systems PIX', 'SonicWall', Linkysys, dan banyak lainnya.
Software firewall, di sisi lain, biasanya satu set alat yang dijalankan di OS tertentu. Mereka antarmuka dengan sistem paket kernel OS pengolahan. Banyak jenis software firewall ada, beberapa komersial dan beberapa gratis. Beberapa paket perangkat lunak bebas firewall termasuk IPFilter, ipchains, IPTables, dan IPFW. Beberapa software komersial ada firewall yang paling populer yang Checkpoint's Firewall-1. Kami akan fokus pada paket firewall FreeBSD ipfw. Satu hal tentang firewall berbasis perangkat lunak bebas adalah bahwa mereka biasanya sulit untuk setup dan mengelola. FreeBSD menyediakan antarmuka yang bagus untuk membuat, menghapus dan mengatur firewall Anda. Namun, dibutuhkan sejumlah pengetahuan tentang paket IP dan routing untuk memahami sepenuhnya. Saya sarankan Anda pertama kali memahami dasar-dasar ini sebelum Anda mulai membaca. Saya akan mengharapkan Anda memahami beberapa dasar.
FreeBSD firewall catatan
Seperti yang saya sebutkan sebelumnya, kita akan mengeksplorasi firewall FreeBSD ipfw perangkat lunak. 'Alat' ini termasuk dalam sistem dasar FreeBSD sehingga Anda tidak perlu men-download perangkat lunak pihak manapun 3. Anda harus akrab dengan antarmuka pada FreeBSD. Jika Anda tidak silahkan baca Bagian Antarmuka. Interface merupakan kunci untuk firewall pada setiap OS karena mereka adalah saluran untuk paket yang datang dan pergi pada mesin anda. Juga, Anda mungkin harus membangun kernel pada mesin FreeBSD Anda untuk mengaktifkan firewall di kernel. Hal ini dilakukan dengan 'pilihan IPFIREWALL' baris di file konfigurasi kernel. Lihat bagian Kernel untuk rincian lebih lanjut tentang membangun kernel. Lain catatan singkat: segala sesuatu dalam "how-to" dapat diambil dari manual ipfw (8).
Cepat catatan
Jika Anda ingin menjadi nyata efisien dalam manajemen firewall Anda (s), Anda harus memahami satu hal yang sangat penting bahwa orang yang paling ketinggalan: Paket aliran simetris ke dan dari mesin anda. Sebuah kesalahan umum yang dibuat oleh pemula adalah lebih melihat fakta ini. Anda harus selalu melihat paket seperti dengan pikiran ini, yaitu anda perlu firewall kedua cara: di DAN keluar. Ingatlah ini ketika Anda sedang membaca artikel ini.

Dasar Firewall
Kita akan mulai dengan setup yang sederhana. Salah satu mesin yang terhubung langsung ke internet. Kami akan maju ke setup yang lebih maju dalam bagian berikutnya: Membangun Gateway / Router. Tetapi untuk sekarang, mari kita fokus pada dasar-dasar: satu mesin dan satu antarmuka.
Pertama, mari kita konseptual lihat bagaimana paket mengalir ke / dari mesin anda ke / dari internet (atau jaringan):

Perhatikan bagaimana paket aliran dua arah: dalam dan keluar dari mesin Anda. Ini akan penting dalam paragraf yang akan datang.
Selanjutnya, mari kita mengaktifkan firewall saat boot up. Untuk melakukan hal ini kita edit / etc / rc.conf dan tambahkan:
firewall_enable = "YES"
firewall_type = "OPEN"
Ini 2 hal. Pertama dari 'firewall_enable = "YES" memberitahu BSD untuk mengaktifkan firewall pada bootup. firewall_type The = "OPEN" memberitahu BSD untuk menggunakan saham BUKA konfigurasi firewall. Ada beberapa saham yang berbeda setup preconfiged Anda dapat memilih dari untuk pergi antara "" tanda sejalan firewall_type te dalam / etc / rc.conf:
terbuka - akan memungkinkan siapa saja di
klien - akan mencoba untuk melindungi mesin ini hanya
sederhana - akan mencoba untuk melindungi seluruh jaringan
tertutup - benar-benar menonaktifkan layanan IP kecuali melalui interface lo0
UNKNOWN - Menonaktifkan pemuatan aturan firewall.
nama file - akan memuat aturan dalam (path lengkap diperlukan) nama file yang diberikan

Ini / etc / rc.conf pilihan diproses oleh / rc.firewall etc / pada startup. Untuk saat ini memungkinkan fokus pada 2 konfigurasi saham yang berbeda kita bisa bermain dengan: BUKA dan nama file. Sebuah firewall TERBUKA hanya memungkinkan semua lalu lintas ke dan dari mesin anda. Secara default, jika Anda lupa untuk menambahkan ini firewall_type = "OPEN" ke / etc / rc.conf lalu lintas semua akan STOP! Yaitu dengan IPFIREWALL memiliki aturan default untuk menolak lalu lintas dari apapun kepada. Jangan lakukan ini dari jauh atau Anda akan harus pergi ke konsol dan reset untuk mendapatkan kembali! Anda dapat mengubah perilaku ini dengan menambahkan 'pilihan DEFAULT_TO_ACCEPT' untuk file konfigurasi kernel dan membangun kembali kernel anda. Pernyataan OPEN memberitahukan / etc / rc.firewall untuk menambahkan aturan lulus untuk firewall Anda pada bootup. The 'file' adalah persis seperti itu, sebuah nama file yang berisi satu set aturan firewall adat dibangun.
Aturan Firewall
Firewall aturan hanya daftar berurutan pencarian 'aturan' bahwa SETIAP paket akan dibandingkan dengan ketika daun / memasuki sebuah antarmuka. Perhatikan Aku tidak mengatakan mesin, kataku antarmuka. Yang saya maksud dengan yang setiap paket masuk interface dan daun interface. Setiap kali lewat di interface, kernel membandingkan paket-paket untuk aturan ini untuk menentukan apakah harus diizinkan atau diblokir. pencocokan dilakukan dengan membandingkan informasi header paket ke kriteria aturan untuk menentukan apakah cocok. Bila sebuah pertandingan ditemui maka sistem terlihat di 'tindakan' bagi kekuasaan untuk menentukan apakah harus lulus atau diblokir. IP header informasi yang firewall dapat pertandingan melawan adalah: sumber IP, tujuan IP, sumber PORT, PORT tujuan, jenis protokol, dan bendera protokol tertentu. Penting untuk diingat bahwa firewall tidak dapat memeriksa lebih jauh ke dalam suatu paket dari header. Oleh karena itu, tidak dapat menentukan isi payload, yakni bukan isi firewall / proxy.
Sekarang mari kita lihat sintaks dari peraturan tersebut. Sebagai contoh katakanlah kita memiliki mesin dengan setup antarmuka:
# Ifconfig-a
xl0: flags = 8843 mtu 1500
options = 3
inet 205.238.129.221 0xfffffffc netmask 205.238.129.223 broadcast
inet6 fe80:: 250: daff: fe77: cc77% xl0 prefixlen 64 0x1 scopeid
ether 00:50: da: 77: cc: 77
media: Ethernet autoselect (100BaseTX)
status: aktif
Sebuah ruleset kecil mungkin terlihat seperti:

# Ipfw l
00100 mengizinkan ip dari apapun kepada via lo0
00200 menyangkal ip dari apapun untuk 127.0.0.0 / 8
00300 menyangkal ip dari 127.0.0.0 / 8 untuk setiap
65000 mengizinkan ip dari apapun kepada
65535 menyangkal ip dari apapun kepada
Cukup mengintimidasi. Jadi mari kita mundur sejenak di hanya menambahkan salah satu aturan pertama. Kemudian kita akan khawatir tentang ruleset secara keseluruhan. Andaikan saja kita ingin menambahkan sebuah aturan untuk mengizinkan semua lalu lintas ke dan dari mesin ini. Kita bisa menambahkan sesuatu seperti ini:

# Ipfw add 50 mengizinkan ip dari apapun kepada via xl0

WOW! Apa apaan ini? Mari kita memeriksanya sepotong demi sepotong. perintah 'ipfw' Pertama adalah antarmuka baris perintah untuk menambahkan dan menghapus aturan firewall dari sistem. Segala sesuatu yang lain adalah sebuah argumen untuk ipfw. Saya menggunakan argumen 'l' ipfw di atas untuk daftar ruleset saat ini. Ini adalah cara yang umum failry untuk memeriksa berjalan mengetahui aturan.
Berikutnya argumen 'add' untuk ipfw memberitahu sistem yang entri ini harus ditambahkan ke ruleset tersebut.
Nomor 50 digunakan sebagai semacam nomor baris. Saya katakan sebelumnya bahwa aturan ini secara berurutan pencarian untuk pencocokan paket. Angka 50 hanya berarti itu adalah peraturan nomor 50. Peraturan nomor memiliki jangkauan 1-65534. Peraturan nomor 65535 selalu menolak aturan default (Kecuali berubah seperti yang disebutkan di atas). Peraturan nomor tidak harus bersamaan ditambahkan, yaitu Anda dapat menambahkan aturan 100 kemudian tambahkan aturan 200. Hal yang penting untuk rememeber tentang nomor aturan adalah bahwa mereka akan diproses dalam urutan (1 sampai 65535).
Argumen selanjutnya adalah 'memungkinkan'. Ini adalah tindakan yang harus diambil jika paket cocok pada peraturan ini. Berbagai jenis tindakan yang dapat diambil jika sebuah paket cocok dengan aturan ini. Kami hanya akan mencakup 'memungkinkan' dan 'menyangkal' pada bagian ini. The 'memungkinkan' tindakan berarti bahwa kernel akan membiarkan paket pergi. The 'menyangkal' tindakan berarti kernel akan membuang paket pergi.
Ketika saya berkata "jika paket cocok" saya maksudkan persis seperti itu. Lihat, kernel mengambil paket dan membandingkannya dengan sisa baris: 'ip dari apapun kepada melalui xl0'. Ini adalah kriteria yang cocok. Jika kernel memutuskan cocok dengan kriteria maka melakukan 'tindakan' (membolehkan atau menolak) untuk aturan. Jika kernel tidak cocok pada aturan ini, dana untuk membandingkan paket ke aturan berikutnya dalam ruleset firewall. Akhirnya, jika firewall tidak menemukan cocok untuk sejumlah aturan, maka akan sampai ke 65536 aturan default, yang akan menolak paket (membuangnya). Bila sebuah pertandingan tidak terjadi, tindakan tersebut diambil dan tidak ada aturan lebih banyak dibandingkan dengan paket saat ini, yaitu berhenti memproses aturan di nomor aturan.
Kriteria cocok berarti persis seperti apa suara. Anda dapat menganggap jenis sesuai kriteria seperti pernyataan program if-else. Oleh karena itu, Anda dapat menganalisis 'ip dari apapun kepada melalui xl0' seperti:
/ / Menganalisis: 'ip'
/ / Artinya: Apakah jenis protokol pada header paket sama dengan ip?
if (protokol == ip) {

/ / Ya, protokol adalah IP

/ / Menganalisis: 'dari'
/ / Artinya: Apakah sumber IP dalam header paket (dari) sebesar apapun?
if (dari == ada) {

/ / Ya, sumber IP sama apapun

/ / Menganalisis: 'untuk setiap'
/ / Artinya: Apakah IP tujuan dalam header paket (untuk) sebesar apapun?
jika (untuk == ada) {

/ / Ya, desintation IP sama apapun

/ / Menganalisis: 'via xl0'
/ / Artinya: Apakah paket meninggalkan atau masuk melalui interface xl0?
if (melalui eq xl0) {

/ / Ya, paket kiri atau masuk melalui interface xl0

/ / Kami memiliki kecocokan! sekarang melakukan tindakan
/ / Dalam hal ini tindakan adalah 'allow' sehingga berarti
/ / Biarkan melewati interface

} Else {

/ / Paket tidak memasuki atau meninggalkan melalui interface xl0,
/ / Jadi melewatkan peraturan ini dan pindah ke nomor aturan selanjutnya.
}


} Else {
/ / Tidak, IP tujuan tidak sama dengan 'setiap'
/ / Jadi melewatkan peraturan ini dan pindah ke nomor aturan selanjutnya.
}

} Else {

/ / Tidak, IP sumber tidak sama dengan 'setiap'
/ / Jadi melewatkan peraturan ini dan pindah ke nomor aturan selanjutnya.
}

} Else {

/ / Tidak, protokol tidak sama ip
/ / Jadi melewatkan aturan ini dan pindah ke nomor aturan selanjutnya.
}

Ya, kriteria yang sesuai bisa mendapatkan cukup rumit dengan kombinasi berbeda untuk cocok pada. Meskipun membingungkan, kompleksitas ini memberi kita jumlah ekstrim kekuasaan dan fleksibilitas dalam peraturan bangunan.
Sekarang bahwa Anda telah menambahkan sebuah aturan mari kita melihat dalam firewall di dalam kernel menggunakan utilitas baris perintah ipfw dengan argumen 'l' (artinya daftar):
# Ipfw l
00050 mengizinkan ip dari apapun kepada via xl0
Saya sebutkan sebelumnya bahwa Anda harus menyadari bahwa paket antarmuka melintasi Anda di kedua arah. Jadi tambahkan satu aturan kita: 'ipfw add 50 mengizinkan ip dari apapun kepada melalui xl0' bisa ditambahkan oleh 2 ipfw menambahkan laporan yang berbeda. Mari kita lihat:
# Ipfw add 50 mengizinkan ip dari apapun kepada in melalui xl0
# Ipfw add 60 mengizinkan ip dari apapun untuk apapun melalui xl0
# Ipfw l
00050 mengizinkan ip dari apapun kepada dalam recv xl0
00060 mengizinkan ip dari apapun kepada xmit keluar xl0
Perhatikan bagaimana saya mengubah 'melalui' menjadi 'in melalui' dan 'keluar melalui'. The 'in melalui xl0' berarti 'Apakah paket ini masuk melalui interface xl0'. The 'keluar melalui xl0' berarti 'Apakah paket ini meninggalkan keluar interface xl0?'. Catat juga bahwa angka-angka aturan adalah 50 dan 60. Itu berarti paket SETIAP datang atau meninggalkan pertama akan dibandingkan dengan aturan nomor 50, maka peraturan nomor 60.
Anda bahkan bisa mendapatkan lebih spesifik jika Anda inginkan. Karena saya tahu apa yang saya alamat IP (205.238.129.221), saya dapat menambahkan bahwa untuk ruleset untuk mendapatkan bahkan lebih spesifik:
# Ipfw add 50 mengizinkan ip dari apapun untuk 205.238.129.221 in melalui xl0
# Ipfw add 60 mengizinkan ip dari 205.238.129.221 untuk keluar pun via xl0
# Ipfw l
00050 mengizinkan ip dari apapun untuk 205.238.129.221 di recv xl0
00060 mengizinkan ip dari 205.238.129.221 ke xmit keluar xl0
SO bagaimana Anda menghapus sebuah aturan setelah itu ditambahkan. Itu sederhana. Anda menghapusnya dengan Aturan nomor seperti:

# Ipfw menghapus 50
Anda hanya dihapus Aturan nomor 50!
Aturan Pengolahan
Sekarang bahwa Anda adalah seorang ahli dalam aturan sintaks (hehe) mari kita lihat di ruleset firewall secara keseluruhan seperti yang kita lakukan sebelumnya. Menggunakan ruleset sampel:
# Ipfw l
00100 mengizinkan ip dari apapun kepada via lo0
00200 menyangkal ip dari apapun untuk 127.0.0.0 / 8
00300 menyangkal ip dari 127.0.0.0 / 8 untuk setiap
65000 mengizinkan ip dari apapun kepada
65535 menyangkal ip dari apapun kepada
Idenya di sini adalah untuk memperkuat proses aturan bagaimana paket diperiksa dan meninggalkan / masukkan mesin. Ini adalah konsep kunci pemahaman firewall pada umumnya. Memungkinkan membawa Anda melalui contoh cepat dengan ruleset ini di atas. Misalkan mesin saya (205.238.129.221) menerima paket telnet dari internet, yaitu Seseorang (1.2.3.4) mencoba telnet ke mesin saya dari internet. Jadi paket sampel akan memiliki atribut yang terlihat seperti:
Source_IP Source_PORT Destination_IP Destination_PORT Protokol
1.2.3.4 3333 205.238.129.221 23 TCP

Langkah-langkah yang terlibat dalam pengolahan paket ini:
1) Kernel menerima paket pada interface xl0
2) Kernel membandingkan paket untuk aturan (100):
=====> 00100 mengizinkan ip dari apapun kepada via lo0
00200 menyangkal ip dari apapun untuk 127.0.0.0 / 8
00300 menyangkal ip dari 127.0.0.0 / 8 untuk setiap
65000 mengizinkan ip dari apapun kepada
65535 menyangkal ip dari apapun kepada
3) Kernel tidak cocok, sehingga hasil untuk dibandingkan dengan aturan selanjutnya (200):
00100 mengizinkan ip dari apapun kepada via lo0
00200 ======> menyangkal ip dari apapun untuk 127.0.0.0 / 8
00300 menyangkal ip dari 127.0.0.0 / 8 untuk setiap
65000 mengizinkan ip dari apapun kepada
65535 menyangkal ip dari apapun kepada
4) Kernel tidak cocok, sehingga hasil untuk dibandingkan dengan aturan selanjutnya (300):
00100 mengizinkan ip dari apapun kepada via lo0
00200 menyangkal ip dari apapun untuk 127.0.0.0 / 8
00300 ======> menyangkal ip dari 127.0.0.0 / 8 untuk setiap
65000 mengizinkan ip dari apapun kepada
65535 menyangkal ip dari apapun kepada
5) Kernel tidak cocok, sehingga hasil untuk dibandingkan dengan aturan selanjutnya (65000):
00100 mengizinkan ip dari apapun kepada via lo0
00200 menyangkal ip dari apapun untuk 127.0.0.0 / 8
00300 menyangkal ip dari 127.0.0.0 / 8 untuk setiap
65000 ======> mengizinkan ip dari apapun kepada
65535 menyangkal ip dari apapun kepada
6) Kernel DITEMUKAN MATCH A! Tindakan diambil yang 'memungkinkan' sehingga
7) paket mendapatkan diserahkan ke daemon telnet (mendengarkan pada port 23 tcp) untuk diproses
8) Daemon telnet sekarang merespon kembali ke pengirim.
Inilah yang saya sebutkan sebelumnya tentang paket yang simetris. Kebanyakan orang lupa bahwa paket respon akan dikirim kembali ke pengirim. Its atribut terlihat seperti berikut:
Source_IP Source_PORT Destination_IP Destination_PORT Protokol
205.238.129.221 23 1.2.3.4 3333 TCP

Jadi sekarang kita ulangi proses untuk paket keluar: 1) Kernel membandingkan paket untuk aturan (100):
=====> 00100 mengizinkan ip dari apapun kepada via lo0
00200 menyangkal ip dari apapun untuk 127.0.0.0 / 8
00300 menyangkal ip dari 127.0.0.0 / 8 untuk setiap
65000 mengizinkan ip dari apapun kepada
65535 menyangkal ip dari apapun kepada
2) Kernel tidak cocok, sehingga hasil untuk dibandingkan dengan aturan selanjutnya (200):
00100 mengizinkan ip dari apapun kepada via lo0
00200 ======> menyangkal ip dari apapun untuk 127.0.0.0 / 8
00300 menyangkal ip dari 127.0.0.0 / 8 untuk setiap
65000 mengizinkan ip dari apapun kepada
65535 menyangkal ip dari apapun kepada
3) Kernel tidak cocok, sehingga hasil untuk dibandingkan dengan aturan selanjutnya (300):
00100 mengizinkan ip dari apapun kepada via lo0
00200 menyangkal ip dari apapun untuk 127.0.0.0 / 8
00300 ======> menyangkal ip dari 127.0.0.0 / 8 untuk setiap
65000 mengizinkan ip dari apapun kepada
65535 menyangkal ip dari apapun kepada
5) Kernel tidak cocok, sehingga hasil untuk dibandingkan dengan aturan selanjutnya (65000):
00100 mengizinkan ip dari apapun kepada via lo0
00200 menyangkal ip dari apapun untuk 127.0.0.0 / 8
00300 menyangkal ip dari 127.0.0.0 / 8 untuk setiap
65000 ======> mengizinkan ip dari apapun kepada
65535 menyangkal ip dari apapun kepada
6) Kernel cocok! Jadi paket akan dikirim keluar interface xl0
Perhatikan pada langkah di atas bahwa jika kita tidak akan cocok pada Aturan nomor 65000, maka kita akan memukul aturan default dari 65536 yang akan 'menolak' atau drop paket!
Ada beberapa cara berbeda untuk menulis aturan sebagaimana disebutkan di atas. Kita bisa cocok pada bahwa contoh telnet di atas dengan menggunakan beberapa aturan yang berbeda. 7 langkah pertama yang ketika kernel sedang memproses paket yang masuk akan cocok dengan salah satu aturan ini (yang saya akan menunjukkan kepada Anda bagaimana menambahkan):
# Ipfw add 55 mengizinkan ip dari apapun kepada via xl0
ATAU
# Ipfw add 55 mengizinkan ip dari apapun untuk 205.238.129.221 via xl0
ATAU
# Ipfw add 55 mengizinkan ip dari 1.2.3.4 ke via xl0
ATAU
# Ipfw add 55 mengizinkan ip dari apapun kepada in melalui xl0
ATAU
# Ipfw add 55 mengizinkan ip dari apapun untuk 205.238.129.221 in melalui xl0
ATAU
# Ipfw add 55 mengizinkan ip dari 1.2.3.4 ke dalam melalui xl0
ATAU
# Ipfw add 55 mengizinkan ip dari 1.2.3.4 ke 205.238.129.221 in melalui xl0
ATAU
# Ipfw add 55 mengizinkan ip dari 1.2.3.4 ke 205.238.129.221 in melalui xl0
ATAU
# Ipfw add 55 mengijinkan tcp dari apapun untuk 205.238.129.221 23
ATAU
# Ipfw add 55 mengijinkan tcp dari apapun kepada 23 via xl0
ATAU
# Ipfw add 55 mengijinkan tcp dari apapun kepada 23 in melalui xl0
ATAU
# Ipfw add 55 mengijinkan tcp dari apapun untuk 205.238.129.221 23 in melalui xl0
ATAU
# Ipfw add 55 memungkinkan tcp dari 1.2.3.4 ke 205.238.129.221 23 in melalui xl0
ATAU
# Ipfw add 55 memungkinkan tcp dari 1.2.3.4 ke 205.238.129.221 23 3333 in melalui xl0
Seperti yang Anda lihat, ada banyak kombinasi yang berbeda yang akan sudah cocok HANYA ATAS PAKET INBOUND! Sama berlaku untuk paket (respon) outbound, kecuali dari dan untuk memesan akan ditukar dan diganti dengan keluar:
# Ipfw add 65 mengizinkan ip dari apapun kepada via xl0
ATAU
# Ipfw add 65 mengizinkan ip dari 205.238.129.221 ke via xl0
ATAU
# Ipfw add 65 mengizinkan ip dari apapun untuk 1.2.3.4 via xl0
ATAU
# Ipfw add 65 mengizinkan ip dari apapun untuk apapun melalui xl0
ATAU
# Ipfw add 65 mengizinkan ip dari 205.238.129.221 untuk keluar pun via xl0
ATAU
# Ipfw add 65 mengizinkan ip dari apapun untuk keluar melalui xl0 1.2.3.4
ATAU
# Ipfw add 65 mengizinkan ip dari 205.238.129.221 untuk keluar melalui xl0 1.2.3.4
ATAU
# Ipfw add 65 mengizinkan ip dari 205.238.129.221 untuk keluar melalui xl0 1.2.3.4
ATAU
# Ipfw add 65 memungkinkan tcp dari 205.238.129.221 23 untuk setiap
ATAU
# Ipfw add 65 memungkinkan tcp dari 23 ke via xl0
ATAU
# Ipfw add 65 memungkinkan tcp dari 23 untuk keluar pun via xl0
ATAU
# Ipfw add 65 memungkinkan tcp dari 205.238.129.221 23 untuk keluar pun via xl0
ATAU
# Ipfw add 65 memungkinkan tcp dari 205.238.129.221 23 1.2.3.4 keluar melalui xl0
ATAU
# Ipfw add 65 memungkinkan tcp dari 205.238.129.221 23 1.2.3.4 3333 keluar melalui xl0

Ada cukup beberapa kombinasi saya tidak bisa baik. Belum Menton beberapa hal yang aku tidak menutupi di bagian ini, yang akan menambahkan kombinasi bahkan lebih. Jadi, yang menimbulkan pertanyaan yang bagus: Yang aturan yang harus saya gunakan? Jawabannya adalah tidak mudah. Berbeda orang-orang seperti teknik yang berbeda. Saya bisa menyarankan salah satu aturan umum. Aturan lebih spesifik adalah lebih aman Anda akan (atau setidaknya merasa). Artinya, aturan tersebut:

# Ipfw add 65 memungkinkan tcp dari 205.238.129.221 23 1.2.3.4 keluar melalui xl0

Apakah lebih baik (lebih erat aman) dari aturan yang lebih umum seperti:

# Ipfw add 65 mengizinkan ip dari apapun kepada via xl0

Hal ini tidak selalu terjadi tetapi ketika anda sampai ke menyempurnakan ruleset Anda menjadi lebih spesifik tentang aturan dapat membantu Anda lebih baik Anda mengamati mesin / jaringan. Dalam bagian selanjutnya, Fun dengan firewall, saya akan mencakup baik tuning mengetahui aturan dan perbaikan tersebut akan dibahas.
Firewall Pilihan
Sekarang bahwa Anda bisa membangun firewall melalui baris perintah, mari kita tambahkan mereka sehingga mereka datang ketika sistem boot. Seperti disebutkan di atas, aturan firewall yang dimuat oleh skrip startup khusus yang disebut / etc / rc.firewall. Banyak orang menambahkan aturan mereka untuk file ini secara manual. Saya percaya ini adalah ide yang buruk. Ini adalah file sistem dan shold tidak dimodifikasi secara langsung. Hal ini menyebabkan masalah dengan mergemaster dan membuat peningkatan hal-hal lain sulit. Pendekatan saya sarankan adalah untuk membuat file Anda sendiri dan menempatkan aturan di dalamnya yang akan dimuat pada saat boot.
Jadi membuat file, misalnya / Etc / firewall.local, dan tambahkan aturan untuk itu baris demi baris:

# Biarkan bob.rogness.net untuk berbicara kepada saya dan saya untuk berbicara dengan bob.rogness.net
tambahkan 100 mengizinkan ip dari bob.rogness.net ke dalam melalui xl0
menambahkan 105 memungkinkan ip dari apapun untuk bob.rogness.net keluar melalui xl0

# Biarkan mesin ini untuk membuat kueri DNS
5000 menambahkan memungkinkan udp dari saya untuk setiap keluar 53 via xl0
5005 menambahkan mengijinkan udp dari 50 kepada saya di via xl0

# Izinkan setiap orang ssh kepada saya dan memungkinkan saya untuk merespon
10000 tambahkan mengijinkan tcp dari apapun untuk 205.238.129.221 22 via xl0
15673 tambahkan memungkinkan tcp dari 205.238.129.221 22 ke via xl0

# Biarkan dan log segala sesuatu yang lain untuk mencari
20000 tambahkan memungkinkan ip log dari apapun kepada

Simpan file. Anda sekarang dapat menambahkan ke file / etc / rc.conf dan ketika anda reboot otomatis akan memuat firewall Anda:
firewall_type = "/ etc / firewall.local"
Anda juga dapat memanggil dari perintah seperti manual jika Anda terlalu sabar untuk reboot oleh:

# Ipfw / etc / firewall.local

The ruleset firewall di atas juga menunjukkan rincian lagi aku ditinggalkan sebelumnya. Salah satu yang menggunakan nama host (bob.rogness.net) sebagai sumber atau alamat tujuan (aturan 100). Ketika menambahkan seperti ini ipfw akan mencari 'bob.rogness.net' nama dan mengganti 'bob.rogness.net' oleh IP itu memutuskan untuk. Hati-hati bahwa ini tidak dinamis, jika bob.rogness.net perubahan IP, ipfw tidak akan otomatis mengubahnya untuk Anda!
Trik lain saya yang digunakan adalah keywork 'aku' (aturan 5000). Ini referes untuk setiap IP direferensikan pada mesin Anda. Ini adalah trik yang bagus untuk digunakan dalam DHCP atau bila mesin Anda IP antarmuka sering berubah. Ini keywork 'aku' adalah dinamis, yaitu IP anda dapat mengubah dan aturan masih akan cocok.
Trik terakhir yang saya digunakan adalah 'log' kata kunci (aturan 20000). Ini menceritakan firewall untuk log paket (dalam bentuk disingkat) ke syslog. Anda harus mengaktifkan opsi ini di kernel sebelum penggunaan 'pilihan IPFIREWALL_VERBOSE' dengan dan membangun kembali kernel anda. Alasan saya menunjukkan Anda ini adalah karena itu mendesak untuk pemecahan masalah. Jika Anda mengalami masalah karena paket sedang ditolak atau diizinkan atau tidak cocok, dll Hidupkan opsi 'login' pada aturan dipertanyakan Anda (s). Hal ini akan membuang header paket cocok ke syslog untuk pemeriksaan Anda. Hal ini sangat convient tanpa harus menggunakan packet sniffer. Hanya ingat keywork log akan menghemat butt Anda!
Nah, itu dia! Firewall bisa sangat kompleks. Satu-satunya cara untuk mendapatkan baik di seperti itu adalah perbuatan yang tak tertahankan adalah praktek. Checkout berikutnya firewall bagian Fun dengan firewall untuk membahas beberapa hal yang lebih canggih yang dapat Anda lakukan dengan ipfw. Segala pertanyaan, hanya email saya. Oh dan, Anda halaman manual ipfw. Ini adalah alat yang sangat mendalam dan membantu ketika anda menekan suatu hambatan.

Subscribe to receive free email updates:

0 Response to "Firewall FreeBSD"

Poskan Komentar