centos 7에서 iptables를 어떻게 사용할 수 있습니까? [닫은]


154

최소한의 구성 (os + dev 도구)으로 CentOS 7을 설치했습니다. httpd서비스를 위해 80 포트를 열려고 하지만 iptables 서비스에 문제가 있습니다 ... 무엇이 잘못 되었습니까? 내가 뭘 잘못하고 있죠?

# 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.

이 /etc/init.d/iptables 시도해보십시오
Satya

8
나는 여기 에 대답을 얻었다 . RHEL 7은 방화벽 이있는 iptables를 사용합니다
Meiblorn

답변:


333

RHEL 7 / CentOS 7 사용시 방화벽 iptables를 관리하기 위해 이 도입되었습니다. IMHO, 방화벽은 서버 환경보다 워크 스테이션에 더 적합합니다.

보다 고전적인 iptables 설정으로 돌아갈 수 있습니다. 먼저 방화벽 서비스를 중지하고 마스킹하십시오.

systemctl stop firewalld
systemctl mask firewalld

그런 다음 iptables-services 패키지를 설치하십시오.

yum install iptables-services

부팅시 서비스를 활성화하십시오.

systemctl enable iptables

서비스 관리

systemctl [stop|start|restart] iptables

방화벽 규칙 저장은 다음과 같이 수행 할 수 있습니다.

service iptables save

또는

/usr/libexec/iptables/iptables.init save

5
iptables를 저장하지 않습니다. 서버를 재부팅하면 모든 변경 사항이 손실됩니다.
roosevelt

2
내 시스템에서 iptables가 올바르게 저장됩니다. 부팅 할 때 iptables 서비스가 시작되었는지 확인 했습니까? 'systemctl enable iptables'를 실행하면됩니다.
Sgaduuw

1
방화벽을 실행하여 iptables 규칙을 목록에 추가 할 수도 있습니다 (시스템을 재부팅 할 때마다). 방화벽을 중지하려면 "systemctl mask firewalld"를 실행하십시오
TroodoN-Mike

@ TroodoN-Mike가 제안한 것처럼 방화벽 마스킹에 대한 정보를 답변에 추가했습니다.
Sgaduuw

8
@Sgaduuw fitewalld가 왜 서버에 적합하지 않다고 생각하는지 자세히 설명해 주시겠습니까?
Alexander Groß

98

RHEL 및 CentOS 7은 iptables 대신 firewall-cmd를 사용합니다 . 이런 종류의 명령을 사용해야합니다.

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

그런 다음 규칙을 다시로드하여 모든 것이 정상인지 확인할 수 있습니다.

firewall-cmd --reload

lxc 또는 docker 컨테이너를 사용하려는 경우 iptable-save를 사용하는 것보다 espacially하는 것이 좋습니다. docker 서비스를 시작하면 iptable-save 명령이 프롬프트하는 몇 가지 규칙이 추가됩니다. 결과를 저장하면 저장하지 말아야 할 규칙이 많이 있습니다. 도커 컨테이너는 다음에 다시 부팅 할 때 IP 주소를 변경할 수 있기 때문입니다.

영구 옵션이있는 Firewall-cmd가 더 좋습니다.

"man firewall-cmd"또는 공식 방화벽 문서 확인 를 옵션을 확인하십시오. 영역, 구성, 작동 방식을 확인하는 많은 옵션이 있습니다 ... 맨 페이지가 실제로 완료되었습니다.

Centos 7부터 iptables-service를 사용하지 말 것을 강력히 권장합니다


1
훌륭한 설명-완벽하게 작동했습니다. 감사!
digitalformula

1
firewall-cmd --reload가 작동하지 않습니다. 변경 사항을 적용하려면 "systemctl restart firewalld"를 사용하여 다시 시작해야했습니다.
바질 무사

"방화벽은 동적이기 때문에 언제든지 구성을 변경할 수 있으며 즉시 구현할 수 있습니다. 방화벽의 일부를 다시로드 할 필요가 없으므로 기존 방화벽
yicone

효율적이고 깨끗합니다. 고마워요
Vaibhav

17

재부팅하면 iptables가 시작되지 않는 문제가있었습니다.

이것은 그것을 고쳤다 :

yum install iptables-services
systemctl mask firewalld
systemctl enable iptables
systemctl enable ip6tables
systemctl stop firewalld
systemctl start iptables
systemctl start ip6tables

CentOS 7에서 작동하지 않음 : # systemctl start iptables제공 Failed to start iptables.service: Unit not found.# systemctl start ip6tables제공Failed to start ip6tables.service: Unit not found.
PKHunter

14

다음 명령을 시도하십시오 iptables-save.


man iptables-save-iptables 규칙을 stdout에 덤프합니다.
Paul Hargreaves

1
다음을 사용할 수 있습니다iptables-save > /etc/sysconfig/iptables
dgregory

5

/etc/sysconfig/ip6tables-config파일 변경을 수정했습니다 .

IP6TABLES_SAVE_ON_STOP="no"

에:

IP6TABLES_SAVE_ON_STOP="yes"

이:

IP6TABLES_SAVE_ON_RESTART="no"

에:

IP6TABLES_SAVE_ON_RESTART="yes"

이것은 재부팅을 통해 iptables 명령을 사용하여 변경 한 내용을 저장하는 것처럼 보였습니다.


1

IPtables 구성을 기존 파일에 넣고 부팅 후로드됩니다.

/ etc / sysconfig / iptables


1

지난 달에 LXC VM 컨테이너에서 iptables를 구성하려고 시도했지만 재부팅 후 iptables 구성이 자동으로로드되지 않았습니다.

내가 작동하게하는 유일한 방법은 다음 명령을 실행하는 것입니다.

yum -y iptables-services를 설치합니다. systemctl 비활성화 방화벽; 방화벽이있는 systemctl 마스크; 서비스 iptables 재시작; 서비스 iptables 저장


0

또한 systemctl mask firewalld명령 을 실행 한 후 ip6tables에 대해서도 동일한 작업을 수행 할 수 있어야합니다 .

    systemctl start ip6tables.service
    systemctl enable ip6tables.service

0

그렇게하고 fail2ban을 사용하는 경우 적절한 필터 / 조치를 활성화해야합니다.

다음 줄을 넣으십시오. /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

fail2ban을 활성화하고 시작하십시오.

systemctl enable fail2ban
systemctl start fail2ban

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.