CentOS 7 저장 iptables 설정 된 후

문제 : 서버가 재부팅 된 후 iptables가 기본 설정으로 재설정됩니다.

다음과 같이 규칙을 설정하려고합니다.

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

그 후 나는 :

service iptables save

그리고 이런 식으로 다시 씁니다.

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

그리고이 후에 나는 방금 달렸다 (이것은 한 번 이루어졌다) :

chkconfig iptables on (재부팅 후 설정을 복원하려면이 작업을 수행해야한다는 것을 읽었습니다)

그 후 재부팅 하고이 명령을 실행하십시오.

systemctl list-unit-files | grep iptables

iptables.service가 활성화되어 있지만 포트 3000을 여는 규칙은 더 이상 작동하지 않습니다.

이 설정을 어떻게 유지합니까?



답변

CentOS 7은 이제 FirewallD를 사용하고 있습니다!

예:

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

새로 고침 규칙 :

firewall-cmd --reload


답변

다음 명령으로 방화벽을 비활성화하십시오.

systemctl disable firewalld

그런 다음 다음 명령을 사용하여 iptables-service를 설치하십시오.

yum install iptables-services

그런 다음 iptables를 서비스로 활성화하십시오.

systemctl enable iptables

이제 다음 명령으로 iptable 규칙을 저장할 수 있습니다.

service iptables save


답변

CentOS는 최소 7에서 당신은 설치해야 할 iptables-services패키지를 (덕분에 @RichieACC 에 대한 제안을 ) :

sudo yum install -y iptables-services

그런 다음 다음을 사용하여 서비스를 활성화하십시오 systemd.

sudo systemctl enable iptables.service

그리고 initscript를 실행하여 방화벽 규칙을 저장하십시오.

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


답변

아마도 이런 스크립트가 누군가에게 도움이 되었습니까?

방화벽을 제거하고 INPUT 테이블의 현재 규칙을 플러시하므로 현재 구성된 모든 항목을 잃게됩니다 .

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 트래픽에 의해 시스템이 (현재 또는 나중에) 도달 할 수있는 경우에 동일하게 원하는 것 같습니다.

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


답변

/ etc / sysconfig / iptables 파일을 직접 수정할 수 있습니다. iptables 서비스를 다시로드하여 해당 파일에서 규칙을 다시로드하십시오. 그러나 이미 언급했듯이 Centos의 새로운 기본 방화벽 시스템 인 방화벽은 이것이 사용 방법을 배울 수있는 좋은 기회라고 생각하지 않습니까?


답변