집 >운영 및 유지보수 >리눅스 운영 및 유지 관리 >방화구 또는 iptables를 사용하여 Linux에서 방화벽을 어떻게 설정합니까?
firewalld
또는 iptables
사용하여 Linux에 방화벽을 설치하려면 건축 적 차이로 인해 다양한 접근 방식이 필요합니다. firewalld
는 방화벽 규칙을 관리하기위한 사용자 친화적 인 인터페이스를 제공하는 동적 방화벽 데몬이며, iptables
커널의 NetFilter 프레임 워크를 직접 조작하는 명령 줄 유틸리티입니다.
방화구 사용 :
firewalld
설치되었는지 확인하십시오. 대부분의 분배에서 패키지 관리자 (예 : Debian/Ubuntu의 apt install firewalld
, dnf install firewalld
)를 사용하여 Fedora/Centos/RHEL을 사용하여 수행됩니다.systemctl start firewalld
systemctl enable firewalld
사용하여 Boot에서 시작할 수 있도록합니다.firewalld
"영역"을 사용하여 다른 네트워크 컨텍스트 (예 : "public", "내부", "DMZ")를 정의합니다. 각 영역에는 기본 규칙 세트가 있습니다. firewall-cmd --get-active-zones
로 구역을 나열 할 수 있습니다. SSH (포트 22)와 같은 서비스를 기본 영역 (일반적으로 "공개")에 추가하려면 firewall-cmd --permanent --add-service=ssh
사용하십시오. 변경 사항을 영구적으로 만들려면 --permanent
플래그를 사용하십시오. firewall-cmd --reload
로 방화벽을 다시로드하여 변경 사항을 적용하십시오.firewall-cmd --permanent --add-port=80/tcp
(HTTP) 또는 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" accept'
).iptables 사용 :
iptables
는 일반적으로 대부분의 Linux 배포판에 기본적으로 포함됩니다.iptables
체인 (예 : INPUT
, OUTPUT
, FORWARD
)을 사용하여 규칙을 관리합니다. 각 규칙은 소스/대상 IP 주소, 포트, 프로토콜 및 조치 (수락, 드롭, 거부)를 지정합니다. 예를 들어, ssh 연결을 허용하려면 : iptables -A INPUT -p tcp --dport 22 -j ACCEPT
.iptables
규칙은 재부팅 전체에서 지속되지 않습니다. 스크립트 또는 iptables-save
와 같은 유틸리티를 사용하여 저장하고 부팅 시간에 시작 스크립트를 사용하여로드해야합니다. 정확한 방법은 분포에 따라 다릅니다.iptables
매우 세밀한 제어를 제공하므로 다양한 일치 기준 및 사용자 정의 체인을 갖춘 복잡한 규칙 세트가 가능합니다. 그러나이를 위해서는 네트워킹 및 iptables
구문에 대한 깊은 이해가 필요합니다. 주요 차이점은 방화벽 관리에 대한 접근 방식에 있습니다. firewalld
iptables
위에 구축 된 높은 수준의 사용자 친화적 인 인터페이스를 제공합니다. 일반적인 방화벽 작업을 단순화하여 영역, 서비스 및 포트를보다 쉽게 관리 할 수 있습니다. 반면에 iptables
NetFilter 프레임 워크에 대한 직접적이고 낮은 수준의 제어를 제공하여 유연성이 높지만 기술 전문 지식이 더 필요합니다.
다음은 주요 차이점을 요약 한 표입니다.
특징 | 방화구 | iptables |
---|---|---|
인터페이스 | 사용자 친화적 인 옵션이있는 명령 줄 도구 | 명령 줄만, 복잡한 구문 |
구성 | 구역, 서비스, 항구, 풍부한 규칙 | 사슬, 특정 일치 기준이있는 규칙 |
고집 | 내장 지속 메커니즘 | 부팅시 수동 저장 및로드가 필요합니다 |
복잡성 | 배우고 사용하기 쉽습니다 | 가파른 학습 곡선, 더 복잡합니다 |
유연성 | iptables보다 유연성이 떨어집니다 | 매우 유연하고 복잡한 규칙을 허용합니다 |
동적 업데이트 | 동적 업데이트를 지원합니다 | 수동 업데이트가 필요합니다 |
방화구 사용 :
특정 포트를 허용하려면 (예 : 포트 80의 HTTP) :
<code class="bash">firewall-cmd --permanent --add-port=80/tcp firewall-cmd --reload</code>
특정 포트를 거부하려면 (예 : 포트 21의 FTP) :
이것은 firewalld
에서 간단합니다. 이를 정확하게 달성하기 위해 사용자 정의 영역을 만들거나 풍부한 규칙을 사용해야 할 것입니다. 일반적으로 firewalld
기본적으로 허용하고 명시 적으로 거부하도록 설계되었습니다.
특정 서비스 (예 : SSH)를 허용하려면 :
<code class="bash">firewall-cmd --permanent --add-service=ssh firewall-cmd --reload</code>
iptables 사용 :
특정 포트를 허용하려면 (예 : 포트 80의 HTTP) :
<code class="bash">iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT # If you want to allow outgoing traffic on port 80 as well. service iptables save # Save the rules (method varies by distribution)</code>
특정 포트를 거부하려면 (예 : 포트 21의 FTP) :
<code class="bash">iptables -A INPUT -p tcp --dport 21 -j DROP service iptables save # Save the rules (method varies by distribution)</code>
firewalld
또는 iptables
사용하든 관계없이 다음과 같은 모범 사례를 따르십시오.
INPUT
체인에 세심한주의를 기울입니다.firewalld
및 iptables
모두 지원)을 사용하여 연결을 추적하고 반환 트래픽을 허용합니다.생산 시스템에 배치하기 전에 항상 제어 된 환경에서 방화벽 규칙을 테스트해야합니다. 방화벽 규칙이 잘못 구성되어 시스템에 액세스 할 수 없습니다.
위 내용은 방화구 또는 iptables를 사용하여 Linux에서 방화벽을 어떻게 설정합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!