Bagaimana saya bisa menggunakan iptables pada centos 7? [Tutup]

154

Saya menginstal CentOS 7 dengan konfigurasi minimal (os + dev tools). Saya mencoba membuka 80 port untuk httpdlayanan, tetapi ada yang salah dengan layanan iptables saya ... apa yang salah dengan itu? Apa yang saya lakukan salah?

# ifconfig/sbin/service iptables save
bash: ifconfig/sbin/service: No such file or directory


# /sbin/service iptables save
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.

# sudo service iptables status
Redirecting to /bin/systemctl status  iptables.service
iptables.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)

# /sbin/service iptables save
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.

# sudo service iptables start
Redirecting to /bin/systemctl start  iptables.service
Failed to issue method call: Unit iptables.service failed to load: No such file or directory.
Meiblorn
sumber
coba /etc/init.d/iptables ini simpan
Satya
8
Saya mendapat jawabannya di sini . RHEL 7 menggunakan firewalld instad iptables
Meiblorn

Jawaban:

333

Dengan RHEL 7 / CentOS 7, firewalld diperkenalkan untuk mengelola iptables. IMHO, firewalld lebih cocok untuk workstation daripada untuk lingkungan server.

Dimungkinkan untuk kembali ke pengaturan iptables yang lebih klasik. Pertama, hentikan dan sembunyikan layanan firewalld:

systemctl stop firewalld
systemctl mask firewalld

Kemudian, instal paket layanan iptables:

yum install iptables-services

Aktifkan layanan saat boot:

systemctl enable iptables

Mengelola layanan

systemctl [stop|start|restart] iptables

Menyimpan aturan firewall Anda dapat dilakukan sebagai berikut:

service iptables save

atau

/usr/libexec/iptables/iptables.init save
Sgaduuw
sumber
5
Itu tidak menyimpan iptables. Mem-boot ulang server kehilangan semua perubahan.
roosevelt
2
Di sistem saya iptables disimpan dengan benar. Sudahkah Anda memastikan layanan iptables dimulai saat boot? Anda dapat melakukan ini dengan menjalankan 'systemctl enable iptables'
Sgaduuw
1
Anda mungkin juga menjalankan firewalld yang akan menambahkan aturan iptables tambahan ke daftar (setiap kali Anda me-reboot sistem). Untuk menghentikan firewalld jalankan "systemctl mask firewalld"
TroodoN-Mike
Menambahkan info tentang masking firewalld ke jawabannya, seperti yang disarankan @ TroodoN-Mike
Sgaduuw
8
@ Sraduuw Bisakah Anda jelaskan mengapa menurut Anda fitewalld tidak / kurang cocok untuk server?
Alexander Groß
98

RHEL dan CentOS 7 menggunakan firewall-cmd bukan iptables . Anda harus menggunakan perintah semacam itu:

# add ssh port as permanent opened port
firewall-cmd --zone=public --add-port=22/tcp --permanent

Kemudian, Anda dapat memuat ulang aturan untuk memastikan semuanya baik-baik saja

firewall-cmd --reload

Ini lebih baik daripada menggunakan iptable-save, terutama jika Anda berencana untuk menggunakan kontainer lxc atau buruh pelabuhan. Meluncurkan layanan buruh pelabuhan akan menambahkan beberapa aturan yang diminta oleh iptable-save. Jika Anda menyimpan hasilnya, Anda akan memiliki banyak aturan yang TIDAK boleh disimpan. Karena kontainer buruh pelabuhan dapat mengubahnya alamat ip saat reboot berikutnya.

Firewall-cmd dengan opsi permanen lebih baik untuk itu.

Periksa "man firewall-cmd" atau periksa dokumen firewalld resmi untuk melihat opsi. Ada banyak opsi untuk memeriksa zona, konfigurasi, cara kerjanya ... halaman manual benar-benar lengkap.

Saya sangat merekomendasikan untuk tidak menggunakan layanan iptables sejak Centos 7

Metal3d
sumber
1
Penjelasan hebat - bekerja dengan baik untuk saya. Terima kasih!
digital formula
1
firewall-cmd --reload tidak berfungsi. Saya harus memulai ulang menggunakan "systemctl restart firewalld" agar perubahan diterapkan.
Basil Musa
"Karena firewalld bersifat dinamis, perubahan pada konfigurasinya dapat dilakukan kapan saja, dan diimplementasikan segera. Tidak ada bagian dari firewall yang perlu dimuat ulang, sehingga tidak ada gangguan yang tidak disengaja pada koneksi jaringan yang ada" - dari dokumen resmi firewalld
yicone
Efisien dan bersih. Terima kasih banyak
Vaibhav
17

Saya memiliki masalah yang me-reboot tidak akan memulai iptables.

Ini memperbaikinya:

yum install iptables-services
systemctl mask firewalld
systemctl enable iptables
systemctl enable ip6tables
systemctl stop firewalld
systemctl start iptables
systemctl start ip6tables
par
sumber
Pada CentOS 7 tidak bekerja: # systemctl start iptablesmemberi Failed to start iptables.service: Unit not found.dan # systemctl start ip6tablesmemberiFailed to start ip6tables.service: Unit not found.
PKHunter
14

Coba perintah berikut iptables-save.

João Chambel
sumber
man iptables-save - dump aturan iptables ke stdout.
Paul Hargreaves
1
maka kita dapat menggunakaniptables-save > /etc/sysconfig/iptables
dgregory
5

Saya memodifikasi /etc/sysconfig/ip6tables-configpengubahan file:

IP6TABLES_SAVE_ON_STOP="no"

Untuk:

IP6TABLES_SAVE_ON_STOP="yes"

Dan ini:

IP6TABLES_SAVE_ON_RESTART="no"

Untuk:

IP6TABLES_SAVE_ON_RESTART="yes"

Ini sepertinya menyimpan perubahan yang saya buat menggunakan perintah iptables melalui reboot.

Gali
sumber
1

Masukkan konfigurasi IPtables dalam file tradisional dan akan dimuat setelah boot:

/ etc / sysconfig / iptables

BVB Media
sumber
1

Bulan lalu saya mencoba mengkonfigurasi iptables pada wadah LXC VM, tetapi setiap kali setelah reboot konfigurasi iptables tidak dimuat secara otomatis.

Satu-satunya cara bagi saya untuk membuatnya bekerja adalah dengan menjalankan perintah berikut:

yum -y menginstal iptables-services; systemctl nonaktifkan firewalld; mask systemctl firewalld; iptables layanan restart; iptables layanan simpan

BVB Media
sumber
0

Dan untuk menambahkan, Anda juga harus dapat melakukan hal yang sama untuk ip6tables setelah menjalankan systemctl mask firewalldperintah:

    systemctl start ip6tables.service
    systemctl enable ip6tables.service
jman594
sumber
0

Jika Anda melakukannya, dan Anda menggunakan fail2ban, Anda harus mengaktifkan filter / tindakan yang tepat:

Masukkan baris berikut /etc/fail2ban/jail.d/sshd.local

[ssh-iptables]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
logpath  = /var/log/secure
maxretry = 5
bantime = 86400

Aktifkan dan mulai fail2ban:

systemctl enable fail2ban
systemctl start fail2ban

Referensi: http://blog.iopsl.com/fail2ban-on-centos-7-to-protect-ssh-part-ii/

Sebas
sumber