Rumah >tutorial komputer >pengetahuan komputer >Firewall Linux firewall

Firewall Linux firewall

王林
王林ke hadapan
2024-02-19 18:24:411186semak imbas

firewall firewall

Perkhidmatan firewall mempunyai dua mod kerja: CLI dan GUI. Berbanding dengan iptables, firewall menyokong kemas kini dinamik dan memperkenalkan konsep zon.

Ringkasnya, zon merujuk kepada satu set dasar tembok api yang dipratakrifkan oleh tembok api, yang membolehkan dasar ini ditukar dengan cepat antara tembok api, dengan itu meningkatkan kecekapan pensuisan dan kelajuan aplikasi tembok api dengan ketara.

Kawasan Peraturan Dasar Lalai
dipercayai Benarkan semua paket
rumah Tolak trafik masuk, tetapi benarkan perkhidmatan ssh, mdns, ipp-client, dhcpv6-client lulus
dalaman Setaraf dengan kawasan rumah
kerja Tolak trafik masuk, tetapi benarkan perkhidmatan ssh, ipp-client dan dhcpv6-client lulus
awam Tolak trafik masuk, tetapi benarkan perkhidmatan ssh, ipp-client dan dhcpv6-client lulus
luaran Tolak trafik masuk, tetapi benarkan ia berkaitan dengan perkhidmatan ssh
dmz Tolak trafik masuk, tetapi benarkan ia berkaitan dengan perkhidmatan ssh
sekat Tolak trafik masuk melainkan berkaitan trafik keluar
jatuhkan Tolak trafik masuk melainkan berkaitan trafik keluar

firewalld ialah alat pengurusan tembok api dinamik pada sistem Linux. Ia ialah alat pengurusan tembok api lalai untuk sistem Centos7, menggantikan tembok api iptables sebelumnya.

Firewalld terutamanya berfungsi pada lapisan rangkaian dan merupakan tembok api penapisan paket. Berbanding dengan iptables tradisional, firewalld lebih fleksibel dan mudah digunakan, dan boleh mencapai kawalan capaian rangkaian yang lebih terperinci.

firewalld firewall terutamanya terdiri daripada dua aspek: zon dan perkhidmatan. Zon mentakrifkan bahagian rangkaian yang berbeza dan mempunyai satu set peraturan untuk setiap zon. Sebagai contoh, zon awam sesuai untuk hos dalam persekitaran Internet awam, manakala zon dalaman sesuai untuk hos dalam persekitaran rangkaian dalaman. Perkhidmatan, sebaliknya, ialah satu set peraturan pratakrif yang mengawal akses kepada port tertentu. Dengan mengkonfigurasi zon dan peraturan perkhidmatan, tembok api boleh diuruskan dengan berkesan untuk memastikan keselamatan rangkaian.

firewalld ialah alat pengurusan tembok api dinamik yang menyokong sambungan rangkaian dan antara muka yang ditakrifkan oleh zon rangkaian dan tahap keselamatan. Ia mengkonfigurasi tetapan tembok api IPv4 dan IPv6, serta jambatan Ethernet. Menyediakan dua mod: konfigurasi masa jalan dan konfigurasi kekal.

Firewall Linux firewall

Arahan pertanyaan status firewall: Beberapa perintah pertanyaan status firewall yang biasa digunakan hanya perlu menentukan parameter lengkap untuk mendapatkan status firewall semasa.

[root@localhost ~]# firewall-cmd --state #显示运行状态
[root@localhost ~]# firewall-cmd --get-zones #显示所有zone区域
[root@localhost ~]# firewall-cmd --get-active-zones#显示当前使用的区域
[root@localhost ~]# firewall-cmd --get-default-zone#显示默认使用的区域
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens32 #查看ens32网口的区域
[root@localhost ~]# firewall-cmd --zone=public --list-ports#显示public区域所有开放的端口

Arahan keluaran perkhidmatan firewall: Pertama, kami menggunakan parameter --panic-on拒绝所有,并通过--add-serviceuntuk melepaskan nombor port yang sepadan dengan perkhidmatan NFS.

[root@localhost ~]# firewall-cmd --get-services #显示服务列表
[root@localhost ~]# firewall-cmd --list-service #查询当前放行服务

[root@localhost ~]# firewall-cmd --panic-on #拒绝所有包
[root@localhost ~]# firewall-cmd --panic-off#取消拒绝状态
[root@localhost ~]# firewall-cmd --query-panic#查看是否拒绝
[root@localhost ~]# firewall-cmd --reload #重新加载防火墙

[root@localhost ~]# firewall-cmd --add-service=nfs#临时允许nfs服务通过
[root@localhost ~]# firewall-cmd --add-service=nfs --permanent#永久允许nfs服务通过

#放行https服务数据包通过
[root@localhost ~]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=192.168.1.0/24 service name=httpd accept'
[root@localhost ~]# firewall-cmd --list-rich-rule
rule family="ipv4" source address="192.168.1.0/24" service name="https" accept

Arahan pelepasan port firewall: Kita boleh menggunakan --add-port命令增加开启某端口,也可使用--remove-portuntuk menyekat port tertentu, menggunakan kedua-dua nombor port dan nama perkhidmatan.

[root@localhost ~]# firewall-cmd --list-all #显示所有端口列表
[root@localhost ~]# firewall-cmd --list-services#查看开放的服务
[root@localhost ~]# firewall-cmd --list-ports #查看开放的端口

[root@localhost ~]# firewall-cmd --add-port=443/tcp #临时开启443端口
[root@localhost ~]# firewall-cmd --remove-port=443/tcp#删除443端口

[root@localhost ~]# firewall-cmd --add-service=mysql#开放mysql端口
[root@localhost ~]# firewall-cmd --remove-service=http#阻止http端口

[root@localhost ~]# firewall-cmd --add-port=3306/tcp#开放通过tcp访问3306
[root@localhost ~]# firewall-cmd --remove-port=80/tcp #阻止通过tcp访问3306

[root@localhost ~]# firewall-cmd --add-port=233/udp #开放通过udp访问233

#临时放行8080端口,和8081端口
[root@localhost ~]# firewall-cmd --zone=public --add-port=8080-8081/tcp
success
[root@localhost ~]# firewall-cmd --zone=public --list-ports
8080-8081/tcp

#放行本地的3260端口
[root@localhost ~]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=192.168.1.0/24 port port=3260 protocol=tcp accept'

Pemajuan port konfigurasi tembok api: Fungsi pemajuan port dimajukan secara automatik ke port pada mesin tempatan atau hos sasaran apabila pengguna mengakses port 80 mesin.

#将80端口的流量转发至8080
[root@localhost ~]# firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080

#将80端口的流量转发至192.168.1.1
[root@localhost ~]# firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.1.1

#将80端口的流量转发至192.168.1.1的8080端口上
[root@localhost ~]# firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.1:toport=8080

Soal dan tetapkan kawasan lalai: Soal kawasan yang sedang digunakan oleh perkhidmatan tembok api, dan tetapkan kawasan lalai baharu perkhidmatan kepada kawasan external.

#查询firewall服务当前所使用的区域
[root@localhost ~]# firewall-cmd --get-default-zone
public

#查看ens32网卡的所在区域信息
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens32
public

#设置默认区域为external
[root@localhost ~]# firewall-cmd --set-default-zone=external
success
[root@localhost ~]# firewall-cmd --get-default-zone
external

Ubah suai zon lalai kepada zon baharu: Ubah suai zon awam port rangkaian ens32 ke zon ens32网口的public区域到external dan ia akan berkuat kuasa secara kekal.

[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens32
public

[root@localhost ~]# firewall-cmd --zone=external --change-interface=ens32
[root@localhost ~]# firewall-cmd --zone=external --change-interface=ens32 --permanent
success

[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens32
external

Tetapkan status perkhidmatan kawasan tertentu: Tetapkan sama ada kawasan tertentu membenarkan trafik yang meminta protokol SSH dan HTTPS

#查询public区域内是否放行了ssh,https服务
[root@localhost ~]# firewall-cmd --zone=public --query-service=ssh
yes
[root@localhost ~]# firewall-cmd --zone=public --query-service=https
no

#把public区域的https请求,永久允许通过
[root@localhost ~]# firewall-cmd --zone=public --add-service=https
success
[root@localhost ~]# firewall-cmd --zone=public --add-service=https --permanent
success

#把public区域的https请求,设置为永久拒绝.
[root@localhost ~]# firewall-cmd --zone=public --remove-service=https
success
[root@localhost ~]# firewall-cmd --zone=public --remove-service=https --permanent
success

Tetapkan dasar pemajuan port: pada 192.168.1.0/24网络中的系统,访问本地端口5423将被转发到本地的80port.

[root@localhost ~]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=192.168.1.0/24 forward-port port=5423 protocol=tcp to-port=80' --permanent

Benarkan/alih keluar port akses: kelompok benarkan atau alih keluar dasar pelabuhan hos di kawasan tertentu.

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

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

# 允许192.168.10访问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.10访问22端口
firewall-cmd --zone=public --remove-rich-rule 'rule family="ipv4" source address="192.168.1.10" port port=22 protocol=tcp reject' --permanent

# 允许192.168.1.0/24访问22端口
firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.1.0/24" port port=22 protocol=tcp accept'

Jenis teknologi firewall:

(1) Firewall penapisan paket (penapisan paket)

(2) Firewall proksi aplikasi (proksi aplikasi)

(3) Firewall pemeriksaan stateful (pemeriksaan stateful)

(firewalld ialah firewall penapisan paket, jadi kita hanya bercakap tentang firewall penapisan paket di sini)

Gambaran Keseluruhan Firewall Penapisan Paket:

(1) netfilter: Sistem fungsi penapisan paket yang terletak dalam kernel Linux menjadi "keadaan kernel" tembok api Linux.

(2) firewalld: Alat lalai CentOS7 untuk mengurus peraturan tembok api, menjadi "mod pengguna" tembok api Linux.

————Kedua-dua daripada dua nama di atas boleh diwakili sebagai tembok api Linux.

Tahap kerja penapisan paket:

(1) Terutamanya lapisan rangkaian, menyemak IP sumber untuk paket IP.

(2) Ia dicerminkan dalam pemprosesan alamat IP, port dan maklumat lain dalam pakej.

Kawasan rangkaian:

Sembilan zon rangkaian pratakrif Firewalld:

①dipercayai②awam③kerja④rumah⑤dalaman⑥luaran⑦dmz⑧sekat⑨jatuhkan

————Terdapat beberapa zon yang sah secara lalai, dan zon yang disediakan oleh firewalld disusun daripada tidak dipercayai kepada dipercayai.

(1) Drop Zone: Jika anda menggunakan drop zone, mana-mana paket yang masuk akan digugurkan Ini serupa dengan iptables -j drop pada Centos6 bermakna tiada tindak balas.

(2) Zon Sekat: Zon penyekat akan menolak sambungan rangkaian masuk dan mengembalikan icmp-host-prohibited Hanya sambungan yang telah diwujudkan oleh pelayan akan diluluskan, iaitu, hanya sambungan rangkaian yang dimulakan oleh sistem dibenarkan.

(3) Zon Awam: Hanya menerima sambungan yang dipilih Secara lalai, hanya ssh dan dhcpv6-client dibenarkan (lalai bermaksud lalai, jadi zon awam juga merupakan zon lalai. Dalam Berjalan ke kawasan awam tanpa sebarang konfigurasi).

(4) Zon Luaran: Zon ini bersamaan dengan pilihan penyamaran permulaan penghala Hanya sambungan tertentu akan diterima, iaitu, ssh, manakala sambungan lain akan digugurkan atau tidak diterima.

(5) Zon Pengasingan (Zon DMZ): Jika anda ingin membenarkan hanya beberapa perkhidmatan diakses dari luar, anda boleh menentukannya dalam zon DMZ Ia juga mempunyai ciri sambungan terpilih sahaja, iaitu ssh. Zon ini juga dipanggil kawasan bukan tentera.

(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访问指定端口

Atas ialah kandungan terperinci Firewall Linux firewall. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:mryunwei.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam