Blokir koneksi keluar pada RHEL7 / CentOS7 dengan firewalld?

12

RHEL7 / CentOS7 memiliki fitur firewalldlayanan firewall baru , yang menggantikan iptables service(keduanya menggunakan iptablesalat untuk berinteraksi dengan Netfilter kernel di bawahnya).

firewallddapat dengan mudah disetel untuk memblokir lalu lintas masuk, tetapi seperti dicatat oleh Thomas Woerner 1,5 tahun yang lalu "membatasi lalu lintas keluar tidak mungkin dengan firewalld dengan cara yang sederhana saat ini". Dan sejauh yang saya bisa lihat situasinya tidak berubah sejak saat itu. Atau apakah itu? Apakah ada cara untuk memblokir lalu lintas keluar firewalld? Jika tidak adakah cara "standar" lainnya (pada distro RHEL7) untuk memblokir lalu lintas keluar kecuali secara manual menambahkan aturan melalui iptablesalat?

golem
sumber

Jawaban:

11

Saya tidak menemukan opsi di GUI yang bagus itu, tetapi dimungkinkan melalui antarmuka langsung

Untuk mengaktifkan hanya port keluar 80:

firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p tcp -m tcp --dport=80 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -j DROP

Ini akan menambahkannya ke aturan permanen, bukan aturan runtime.
Anda harus memuat ulang aturan permanen sehingga menjadi aturan runtime.

firewall-cmd --reload

untuk menampilkan aturan permanen

firewall-cmd --permanent --direct --get-all-rules

untuk menampilkan aturan runtime

firewall-cmd --direct --get-all-rules
Pengguna Fedora
sumber
Bagaimana seseorang mencapai ini menggunakan bahasa aturan kaya yang sebenarnya?
Casey
@Casey Menurut pemahaman saya, aturan kaya secara ketat digunakan untuk rantai INPUT.
Beras
Saya menganggap aturan di atas hanya berfungsi untuk ipv4(iptables). Mungkin diinginkan untuk memiliki aturan yang sama untuk ipv6(untuk ip6tables) atau eb(untuk ebtables).
mwfearnley
Juga, ini membunuh koneksi SSH saya ke server! Lihat jawaban pengguna253068 untuk bagaimana mempertahankan koneksi yang sudah ada.
mwfearnley
5

Setelah mengajukan pertanyaan yang sama sendiri, dan dengan sedikit mengutak-atik, saya telah mengumpulkan beberapa aturan yang bagus untuk membatasi lalu lintas keluar ke permintaan HTTP / HTTPS dan DNS:

Izinkan koneksi terjalin:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Izinkan HTTP:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 80 -j ACCEPT

Izinkan HTTPS:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 443 -j ACCEPT

Izinkan untuk permintaan DNS:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 53 -j ACCEPT
# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p udp --dport 53 -j ACCEPT

Tolak semua yang lain:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 2 -j DROP

Mungkin ide yang baik untuk menguji terlebih dahulu dengan menghilangkan argumen '- permanen'.

Saya tidak berarti seorang ahli, tetapi ini tampaknya bekerja dengan baik oleh saya :)

Adobe
sumber
Pada titik tertentu Anda mungkin merasa berguna untuk menghapus aturan. Menghapus satu aturan langsung tampaknya sulit, tetapi untuk palu godam, firewall-cmd [--permanent] --direct --remove-rules ipv4 filter OUTPUTakan melakukan penghapusan massal.
mwfearnley
1

Tentang GUI; Saya pikir Anda menemukan ini di bawah " Konfigurasi Langsung ". Untuk mengaksesnya Anda harus memilihnya di " Lihat ". Saya bisa saja salah.

Catatan samping

Untuk menghapus aturan; Anda harus keluar dan masuk kembali.

pengguna301864
sumber