Jak mogę używać Iptables na Centos 7? [Zamknięte]

154

Zainstalowałem CentOS 7 z minimalną konfiguracją (narzędzia os + dev). Próbuję otworzyć port 80 dla httpdusługi, ale coś jest nie tak z moją usługą iptables ... co jest z nią nie tak? Co ja robię źle?

# 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
źródło
spróbuj tego /etc/init.d/iptables save
Satya
8
Mam tutaj odpowiedź . RHEL 7 zastosowania firewalld instad z iptables
Meiblorn

Odpowiedzi:

333

Wraz z RHEL 7 / CentOS 7 wprowadzono firewalld do zarządzania iptables. IMHO, firewalld jest bardziej odpowiedni dla stacji roboczych niż dla środowisk serwerowych.

Można wrócić do bardziej klasycznej konfiguracji iptables. Najpierw zatrzymaj i zamaskuj usługę zapory:

systemctl stop firewalld
systemctl mask firewalld

Następnie zainstaluj pakiet iptables-services:

yum install iptables-services

Włącz usługę podczas rozruchu:

systemctl enable iptables

Zarządzanie usługą

systemctl [stop|start|restart] iptables

Zapisywanie reguł zapory sieciowej można wykonać w następujący sposób:

service iptables save

lub

/usr/libexec/iptables/iptables.init save
Sgaduuw
źródło
5
To nie jest zapisywanie iptables. Ponowne uruchomienie serwera powoduje utratę wszystkich zmian.
roosevelt
2
W moim systemie iptables są poprawnie zapisane. Czy upewniłeś się, że usługa iptables jest uruchamiana podczas rozruchu? Możesz to zrobić, uruchamiając 'systemctl enable iptables'
Sgaduuw
1
Możesz także mieć uruchomiony firewalld, który doda dodatkowe reguły iptables do listy (za każdym razem, gdy restartujesz system). Aby zatrzymać firewalld, uruchom "systemctl mask firewalld"
TroodoN-Mike
Dodano informację o maskowaniu zapory ogniowej do odpowiedzi, zgodnie z sugestią @ TroodoN-Mike
Sgaduuw
8
@Sgaduuw Czy możesz wyjaśnić, dlaczego uważasz, że fitewalld nie jest / jest mniej odpowiedni dla serwerów?
Alexander Groß,
98

RHEL i CentOS 7 używają firewall-cmd zamiast iptables . Powinieneś użyć tego rodzaju polecenia:

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

Następnie możesz przeładować reguły, aby upewnić się, że wszystko jest w porządku

firewall-cmd --reload

Jest to lepsze niż używanie iptable-save, zwłaszcza jeśli planujesz używać kontenerów lxc lub docker. Uruchomienie usług Dockera spowoduje dodanie reguł, o które podpowie polecenie iptable-save. Jeśli zapiszesz wynik, będziesz mieć wiele reguł, których NIE należy zapisywać. Ponieważ kontenery Dockera mogą zmienić ich adresy IP przy następnym uruchomieniu.

Do tego lepiej nadaje się firewall-cmd z opcją trwałą.

Zaznacz „man firewall-cmd” lub w oficjalnej dokumentacji firewalld, aby zobaczyć opcje. Jest wiele opcji do sprawdzenia stref, konfiguracji, jak to działa ... strona man jest naprawdę kompletna.

Zdecydowanie odradzam używanie usługi iptables od czasu Centos 7

Metal3d
źródło
1
Świetne wyjaśnienie - dla mnie zadziałało idealnie. Dzięki!
digitalformula
1
firewall-cmd --reload nie działa. Musiałem zrestartować za pomocą „systemctl restart firewalld”, aby zmiany odniosły skutek.
Basil Musa
„Ponieważ firewalld jest dynamiczny, zmiany w jego konfiguracji mogą być wprowadzone w dowolnym momencie i są wdrażane natychmiast. Żadna część zapory nie musi być przeładowywana, więc nie ma niezamierzonych przerw w istniejących połączeniach sieciowych” - z oficjalnej dokumentacji firewalld
yicone
Wydajnie i czysto. Wielkie dzięki
Vaibhav
17

Miałem problem z ponownym uruchomieniem iptables.

To naprawiło:

yum install iptables-services
systemctl mask firewalld
systemctl enable iptables
systemctl enable ip6tables
systemctl stop firewalld
systemctl start iptables
systemctl start ip6tables
par
źródło
Na CentOS 7 nie działa: # systemctl start iptablesdaje Failed to start iptables.service: Unit not found.i # systemctl start ip6tablesdajeFailed to start ip6tables.service: Unit not found.
PKHunter
14

Wypróbuj następujące polecenie iptables-save.

João Chambel
źródło
man iptables-save - zrzuca reguły iptables na standardowe wyjście.
Paul Hargreaves
1
wtedy możemy użyćiptables-save > /etc/sysconfig/iptables
dgregory
5

Zmodyfikowałem /etc/sysconfig/ip6tables-configplik zmieniający się:

IP6TABLES_SAVE_ON_STOP="no"

Do:

IP6TABLES_SAVE_ON_STOP="yes"

I to:

IP6TABLES_SAVE_ON_RESTART="no"

Do:

IP6TABLES_SAVE_ON_RESTART="yes"

Wydawało się, że zapisuje zmiany, które wprowadziłem za pomocą poleceń iptables podczas ponownego uruchamiania.

Dójka
źródło
1

Umieść konfigurację IPtables w tradycyjnym pliku, a zostanie ona załadowana po uruchomieniu:

/ etc / sysconfig / iptables

BVB Media
źródło
1

W zeszłym miesiącu próbowałem skonfigurować iptables na kontenerze LXC VM, ale za każdym razem po ponownym uruchomieniu konfiguracja iptables nie była ładowana automatycznie.

Jedynym sposobem, aby to działało, było uruchomienie następującego polecenia:

yum -y zainstaluj usługi iptables; systemctl wyłącz firewalld; systemctl mask firewalld; restart usługi iptables; usługa iptables save

BVB Media
źródło
0

Aby dodać, powinieneś być w stanie zrobić to samo dla ip6tables po uruchomieniu systemctl mask firewalldpolecenia:

    systemctl start ip6tables.service
    systemctl enable ip6tables.service
jman594
źródło
0

Jeśli to zrobisz i używasz fail2ban, musisz włączyć odpowiednie filtry / akcje:

Umieść następujące wiersze /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

Włącz i uruchom fail2ban:

systemctl enable fail2ban
systemctl start fail2ban

Źródła: http://blog.iopsl.com/fail2ban-on-centos-7-to-protect-ssh-part-ii/

Sebas
źródło