Centos 7 iptables ayarlarını kaydetme


58

Sorun: iptables, sunucu yeniden başlatıldıktan sonra varsayılan ayarlara sıfırlar.

Bu şekilde kural koymaya çalışıyorum:

iptables -I INPUT -p tcp --dport 3000 -j ACCEPT

ondan sonra yaparım:

service iptables save

ve böyle bir şeyi geri yazar

iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

ve bundan sonra sadece koştum (bu bir kez yapıldı):

chkconfig iptables on (Yeniden başlattıktan sonra ayarları geri yüklemek için bunun yapılması gerektiğini okudum)

Ondan sonra yeniden başlatıp bu komutu çalıştırıyorum:

systemctl list-unit-files | grep iptables

ve iptables.service'in etkin olduğunu görüyorum, ancak kural (3000 numaralı bağlantı noktasını açmak için) artık çalışmıyor.

Bu ayarları nasıl devam ettiririm?


Neden sadece firewalld kullanmadın? Muhtemelen hala çalışıyor.
Michael Hampton

Muhtemelen firewalld sunucu ortamları için uygun değil çünkü ...
Juan Jimenez

Yanıtlar:


67

CentOS 7 şimdi FirewallD kullanıyor !

Örnek:

firewall-cmd --zone=public --add-port=3000/tcp --permanent

kuralları tekrar yükle:

firewall-cmd --reload

2
AWS AMI’den centos7 görüntüsünün neden firewallD olmadığı hakkında herhangi bir fikir.
Saad Masood

5
VEYA firewalld'i devre dışı bırakabilir ve yerel iptables uyumluluğunu elde etmek için "iptables-services" paketini kurabilirsin :)
vagarwal 22:16

1
Ben 80 port iletimini yapılandırmak çalıştı - lo (için> 8180 --zone=trustedfirewalld-cmd ile) ama (o çalışır çalışmaz --zone=publiciptables ile Bunu yapmak) sudo /sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8180 ; sudo /sbin/iptables -t nat -I OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8180işler (ama her firewalld --reloadgeri alır bu kaybeder)
djb

@ saad: aws zaten bir güvenlik duvarı hizmeti sağladığından ami küçük tutulabilir
roothahn

O değil! Bir Centos 7 VPS sipariş ettim ve varsayılan olarak iptables var! İşletim sistemi sürümü: 7.5.1804 (Core)
codezombie

66

Firewalld'i aşağıdaki komutla devre dışı bırakın:

systemctl disable firewalld

Ardından aşağıdaki komutu kullanarak iptables-service'i kurun:

yum install iptables-services

Ardından iptables hizmetlerini etkinleştirin:

systemctl enable iptables

Artık iptable kurallarınızı aşağıdaki komutu uygulayarak kaydedebilirsiniz:

service iptables save

22

CentOS Minimal 7 sitesinde yüklemeniz gerekebilir iptables-servicespaketini (sayesinde @RichieACC için öneri ):

sudo yum install -y iptables-services

Ardından hizmeti kullanarak hizmeti etkinleştirin systemd:

sudo systemctl enable iptables.service

Güvenlik duvarı kurallarınızı kaydetmek için initscript'i çalıştırın:

sudo /usr/libexec/iptables/iptables.init save

2

Belki böyle bir senaryo herkes için yararlı olurdu?

Firewalld'i kaldırdığı ve INPUT tablosundaki geçerli tüm kuralları temizlediği için şu anda yapılandırılmış olan herhangi bir şeyi kaybedeceğinize dikkat edin :

yum remove firewalld && yum install iptables-services

iptables --flush INPUT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT            # Any packages related to an existing connection are OK
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT   # ssh is OK
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT   # Port 3000 for IPv4 is OK
iptables -A INPUT -j REJECT # any other traffic is not welcome - this should be the last line
service iptables save       # Save IPv4 IPTABLES rules van memory naar disk
systemctl enable iptables   # To make sure the IPv4 rules are reloaded at system startup

IPv6 trafiğiyle sisteminize (şimdi veya istediğiniz zaman) ulaşmanız durumunda aynı istediğinizi tahmin ediyorum:

ip6tables --flush INPUT
ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT            # Any packages related to an existing connection are OK
ip6tables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT   # ssh is OK
ip6tables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT   # Port 3000 for IPv6 is OK
ip6tables -A INPUT -j REJECT # any other traffic is not welcome - this should be the last line
service ip6tables save       # Save IPv6 IPTABLES rules van memory naar disk
systemctl enable ip6tables   # To make sure the IPv6 rules are reloaded at system startup

1

/ Etc / sysconfig / iptables dosyasını doğrudan değiştirebilirsiniz. Kuralları bu dosyadan yeniden yüklemek için iptables hizmetini yeniden yükleyin. Yine de, daha önce de söylendiği gibi, firewalld, Centos için yeni varsayılan güvenlik duvarı sistemidir ve bunun nasıl kullanılacağını öğrenmek için iyi bir şanstır, değil mi?


7
CentOS7'de artık bir / etc / sysconfig / iptables dosyası yok
roothahn

1
Üzgünüm @roothahn, ama elbette var ... bazı paketleri kaçırmazsan tabii. /Usr/lib/systemd/system/iptables.service adresinden, aslında başlatılmış olanın "/usr/libexec/iptables/iptables.init start" olduğunu görüyorsunuz. / etc / sysconfig
taşlanarak

1
Evet /etc/sysconfig/iptables, benim için de yok. Ancak, /etc/sysconfig/iptables-configvar. Ancak içinde iptablesdaha önce olduğu gibi içinde güvenlik duvarı kuralları yoktur .
Kentgrav

2
Dosyanın orada varsayılan veya minimal kurulumda olmadığını gördüm. CentOS 7 varsayılan olarak iptables.service dosyasını yüklemiyor gibi görünüyor. "yum install -y iptables.service" hizmeti yükledi ve benim için bir varsayılan / etc / sysconfig / iptables oluşturdu.
RichieACC

3
Bu "yum install iptables-services"
olmalı
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.