>  기사  >  컴퓨터 튜토리얼  >  방화벽 Linux 방화벽

방화벽 Linux 방화벽

王林
王林앞으로
2024-02-19 18:24:411098검색

방화벽 방화벽

firewalld 서비스에는 CLI와 GUI의 두 가지 작동 모드가 있습니다. iptables와 비교하여 방화벽은 동적 업데이트를 지원하고 영역 개념을 도입합니다.

간단히 말하면, 영역은 방화벽에서 미리 정의한 방화벽 정책 집합을 말하며, 이러한 정책을 방화벽 간에 신속하게 전환할 수 있도록 하여 방화벽의 전환 효율성과 적용 속도를 크게 향상시킵니다.

지역 기본 정책 규칙
신뢰할 수 있어요 모든 패킷 허용
들어오는 트래픽을 거부하지만 ssh, mdns, ipp-client, dhcpv6-client 서비스는 통과하도록 허용
내부 집 지역과 동일
들어오는 트래픽을 거부하지만 ssh, ipp-client 및 dhcpv6-client 서비스는 통과하도록 허용
공개 들어오는 트래픽을 거부하지만 ssh, ipp-client 및 dhcpv6-client 서비스는 통과하도록 허용
외부 들어오는 트래픽을 거부하지만 SSH 서비스와 관련된 트래픽은 허용
디엠즈 들어오는 트래픽을 거부하지만 SSH 서비스와 관련된 트래픽은 허용
블록 나가는 트래픽과 관련이 없는 한 들어오는 트래픽을 거부합니다
drop 나가는 트래픽과 관련이 없는 한 들어오는 트래픽을 거부합니다

firewalld는 Linux 시스템의 동적 방화벽 관리 도구입니다. 이전 iptables 방화벽을 대체하는 Centos7 시스템의 기본 방화벽 관리 도구입니다.

Firewalld는 주로 네트워크 계층에서 작동하며 패킷 필터링 방화벽입니다. 기존 iptables와 비교하여 방화벽은 더 유연하고 사용하기 쉬우며 더 세부적인 네트워크 액세스 제어를 달성할 수 있습니다.

firewalld 방화벽은 주로 영역과 서비스라는 두 가지 측면으로 구성됩니다. 영역은 네트워크의 다양한 부분을 정의하고 각 영역에 대한 일련의 규칙을 갖습니다. 예를 들어 공용 인터넷 환경의 호스트에는 공개 영역(Public Zone)이 적합하고, 내부 네트워크 환경의 호스트에는 내부 영역(Internal Zone)이 적합합니다. 반면 서비스는 특정 포트에 대한 액세스를 제어하는 ​​사전 정의된 규칙 집합입니다. 영역 및 서비스 규칙을 구성하여 방화벽을 효과적으로 관리하여 네트워크 보안을 보장할 수 있습니다.

firewalld는 네트워크 영역 및 보안 수준에 따라 정의된 네트워크 연결 및 인터페이스를 지원하는 동적 방화벽 관리 도구입니다. IPv4 및 IPv6 방화벽 설정은 물론 이더넷 브리지도 구성합니다. 런타임 구성과 영구 구성의 두 가지 모드를 제공합니다.

방화벽 Linux 방화벽

방화벽 상태 쿼리 명령: 일반적으로 사용되는 일부 방화벽 상태 쿼리 명령은 현재 방화벽 상태를 가져오기 위해 전체 매개변수만 지정하면 됩니다.

으아악

방화벽 서비스 해제 명령: 먼저 매개변수 --panic-on拒绝所有,并通过--add-service를 사용하여 NFS 서비스에 해당하는 포트 번호를 해제합니다.

으아악

방화벽 포트 해제 명령: --add-port命令增加开启某端口,也可使用--remove-port포트 번호와 서비스 이름을 모두 사용하여 특정 포트를 차단할 수 있습니다.

으아악

방화벽 구성 포트 전달: 사용자가 컴퓨터의 포트 80에 액세스하면 포트 전달 기능이 로컬 컴퓨터 또는 대상 호스트의 포트로 자동으로 전달됩니다.

으아악

기본 영역 쿼리 및 설정: 현재 방화벽 서비스에서 사용 중인 영역을 쿼리하고, 서비스의 새로운 기본 영역을 external영역으로 설정합니다.

으아악

기본 영역을 새 영역으로 수정: ens32 네트워크 포트의 public 영역을 ens32网口的public区域到external 영역으로 수정하면 영구적으로 적용됩니다.

으아악

특정 지역의 서비스 상태 설정: 특정 지역에서 SSH 및 HTTPS 프로토콜을 요청하는 트래픽을 허용할지 여부를 설정합니다

으아악

포트 전달 정책 설정: 192.168.1.0/24网络中的系统,访问本地端口5423将被转发到本地的80port.

으아악

액세스 포트 허용/제거: 특정 지역에 있는 호스트의 포트 정책을 일괄적으로 허용하거나 제거합니다.

으아악

방화벽 기술 유형:

(1) 패킷 필터링 방화벽(패킷 필터링)

(2) 애플리케이션 프록시 방화벽(애플리케이션 프록시)

(3) Stateful 검사 방화벽(Stateful Inspection)

(firewalld는 패킷 필터링 방화벽이므로 여기서는 패킷 필터링 방화벽에 대해서만 이야기합니다)

패킷 필터링 방화벽 개요:

(1) 넷필터: 리눅스 커널에 위치한 패킷 필터링 기능 시스템이 리눅스 방화벽의 '커널 상태'가 된다.

(2) Firewalld: 방화벽 규칙을 관리하기 위한 CentOS7의 기본 도구로, Linux 방화벽의 "사용자 모드"가 됩니다.

————위 두 이름 모두 리눅스 방화벽으로 표현될 수 있습니다.

패킷 필터링 작업 수준:

(1) 주로 네트워크 계층에서 IP 패킷의 소스 IP를 확인합니다.

(2) 패키지 내 IP 주소, 포트 및 기타 정보 처리에 반영됩니다.

네트워크 영역:

Firewalld의 사전 정의된 9개 네트워크 영역:

①신뢰할 수 있는 ②공개 ③직장 ④집⑤내부 ⑥외부 7dmz 8차단 9드롭

————기본적으로 일부 유효한 영역이 있으며, Firewalld에서 제공하는 영역은 신뢰할 수 없음에서 신뢰할 수 있음 순으로 정렬됩니다.

(1) 드롭 존: 드롭 존을 사용하면 들어오는 모든 패킷이 삭제됩니다. 이는 Centos6의 iptables -j drop과 유사하며, 드롭 규칙을 사용하면 응답이 없습니다.

(2) 차단 영역: 차단 영역은 들어오는 네트워크 연결을 거부하고 icmp-host-prohibited를 반환합니다. 서버에서 설정된 연결만 전달됩니다. 즉, 시스템에서 초기화된 네트워크 연결만 허용됩니다.

(3) 공개 영역: 기본적으로 ssh 및 dhcpv6-client만 허용됩니다. 이 영역은 기본 영역입니다(기본값은 기본값을 의미하므로 공개 영역도 기본 영역입니다. 어떤 구성도 없는 공개 영역).

(4) 외부 영역: 이 영역은 라우터의 시작 마스커레이딩 옵션과 동일합니다. 지정된 연결, 즉 ssh만 허용되고 다른 연결은 삭제되거나 허용되지 않습니다.

(5) Isolation Zone(DMZ Zone): 외부에서 일부 서비스만 접속하도록 허용하고 싶다면 DMZ Zone에서 정의하면 되고, 선택된 연결만, 즉 SSH로 설정하는 기능도 있습니다. 이 지역은 비군사 지역이라고도 불립니다.

(6)工作区域(Work Zone):在这个区域中,我们只能定义内部网络,比如私有网络通信才被允许, 只允许ssh、ipp-client和dhcpv6-client。

(7)家庭区域(Home Zone):这个区域专门用于家庭环境,它同样只允许被选中的连接, 即ssh、ipp-client、mdns、samba-client和dhcpv6-client。

(8)内部区域(Internal Zone):这个区域和 工作区域(Work Zone) 类似,只允许通过被选中的连接,与 家庭区域(Home Zone) 相同。

(9)信任区域(Trusted Zone):信任区域允许所有网络通信通过,因为 信任区域(Trusted Zone)是最被信任的,即使没有设置任何的服务,那么也是被允许的,因为 信任区域(Trusted Zone)是允许所有连接的。

————以上是系统定义的所有的区域(Zone),但是,不是所有的区域(Zone)都在使用,只有活跃的区域(Zone)才有实际操作意义。

注意:因为默认区域只允许ssh和dhcp,所以在没有任何配置的情况下默认是拒绝ping包的。

常用命令

# 查看所有放行端口
firewall-cmd --zone=public --list-ports
 
# 禁止IP访问机器
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address="192.168.0.1" drop'
 
# 禁止一个IP段,比如禁止192.168.*.*
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address="192.168.0.1/16" drop'
 
# 禁止一个IP段,比如禁止192.168.0.*
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address="192.168.0.1/24" drop'
 
# 禁止机器IP从防火墙中删除
firewall-cmd --permanent --remove-rich-rule='rule family=ipv4 source address="192.168.0.1" drop'
 
# 允许http服务(对应服务策略目录:/usr/lib/firewalld/services/)
firewall-cmd --permanent --add-service=http
 
# 关闭http服务(对应服务策略目录:/usr/lib/firewalld/services/)
firewall-cmd --permanent --remove-service=http
 
# 允许端口:3306
firewall-cmd --permanent --add-port=3306/tcp
 
# 允许端口:1-3306
firewall-cmd --permanent --add-port=1-3306/tcp
 
# 关闭放行中端口:3306
firewall-cmd --permanent --remove-port=3306/tcp
 
# 查看firewall的状态
firewall-cmd --state
 
# 查看防火墙规则(只显示/etc/firewalld/zones/public.xml中防火墙策略)
firewall-cmd --list-all
 
# 查看所有的防火墙策略(即显示/etc/firewalld/zones/下的所有策略)
firewall-cmd --list-all-zones
 
# 重新加载配置文件
firewall-cmd --reload
 
# 更改配置后一定要重新加载配置文件
firewall-cmd --reload

# Postgresql端口设置。允许192.168.142.166访问5432端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.142.166" port port="5432" protocol="tcp" accept"

# redis端口设置。允许192.168.142.166访问6379端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.142.166" port port="6379" protocol="tcp" accept"

# beanstalkd端口设置。允许192.168.142.166访问11300端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.142.166" port port="11300" protocol="tcp" accept"

# 查看防火墙端口列表
firewall-cmd --list-ports

# 添加指定端口tcp
firewall-cmd --zone=public --add-port=8080/tcp --permanent# 开放8080/tcp端口 
firewall-cmd --zone=public --add-port=10002-10010/tcp --permanent# 开放10002-10010/tcp端口范围

# 添加指定端口udp
firewall-cmd --zone=public --add-port=9200/udp --permanent # 开放9200/udp端口
firewall-cmd --zone=public --add-port=20015-20020/udp --permanent# 开放20015-20020/udp端口范围

# 删除指定端口
firewall-cmd --zone= public --remove-port=19800/tcp --permanent # 删除已开放的19880/tcp端口
firewall-cmd --zone= public --remove-port=9200-9300/udp --permanent# 删除已开放的9200-9300/udp 端口范围

# 热加载防火墙,使之生效
firewall-cmd --reload

# 指定某IP访问某端口
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.107" port protocol="tcp" port="3306" accept"

# 删除策略
firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="192.168.0.107" port protocol="tcp" port="3306" accept"

# 指定某个网段访问某个端口范围
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="11.76.168.0/24" port protocol="udp" port="1-65535" accept"

# 删除策略
firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="11.76.168.0/24" port protocol="tcp" port="1-65535" accept"

# 禁止指定ip 访问某个端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.100.200" port protocol="tcp" port="80" reject"
 
# 禁止某个段的ip 访问某个端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="80" reject"
 
# 允许指定ip 访问所有端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.100.100" port protocol="tcp" accept"

# 允许指定ip段 访问所有端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" accept"

# 允许192.168.1.10所有访问所有端口
firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.1.10" accept' --permanent

# 移除192.168.1.10所有访问所有端口
firewall-cmd --zone=public --remove-rich-rule 'rule family="ipv4" source address="192.168.1.10" accept' --permanent

# 允许192.168.2.0/24(0-255)所有访问所有端口
firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.2.0/24" accept' --permanent

# 允许192.168.1.10所有访问TCP协议的22端口
firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.1.10" port port=22 protocol=tcp reject' --permanent

# 移除192.168.1.10所有访问TCP协议的22端口
firewall-cmd --zone=public --remove-rich-rule 'rule family="ipv4" source address="192.168.1.10" port port=22 protocol=tcp reject' --permanent

# 防火墙重新载入(必须重新载入后才能生效)
firewall-cmd --reload

# 查看rich-rules(富规则)
firewall-cmd --list-rich-rules

# 查看防火墙服务规则
firewall-cmd --list-services

# 查看防火墙所有规则
firewall-cmd --list-all

# 查看防火墙所有区域的配置规则
firewall-cmd --list-all-zones

# 查看默认区域
firewall-cmd --get-default-zone

# 查看网络接口使用区域
firewall-cmd --get-active-zones

# 查看默认的可用服务
firewall-cmd --get-services

# 要启用或禁用HTTP服务
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --zone=public --remove-service=http --permanent





# 移除现有规则(此步骤相当重要,很多文章和博客都没提及到)
firewall-cmd --permanent --zone=public --remove-port=80/tcp
firewall-cmd --reload
 
# 在192.168.100.100102上测试访问
curl192.168.100.101
发现均无法再访问101的80端口

# 设置规则
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.100.102" port protocol="tcp" port="80" accept"
firewall-cmd --reload

# 测试访问
curl 192.168.100.101
# 100无法访问102可以访问
至此实现了通过防火墙firewalld设置规则,指定ip访问指定端口

위 내용은 방화벽 Linux 방화벽의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 mryunwei.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제