firewall防火墙(一)

2024-01-10 01:52
文章标签 防火墙 firewall

本文主要是介绍firewall防火墙(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、Linux防火墙基础

        防火墙是指设置在不同网络与网络安全域之间的一系列部件的组合,也是不同安全域之间信息的唯一出口。通过检测、限制并更改跨越防火墙的数据流,尽可能地对外屏蔽网络内部的信息、架构和运行状态,且有选择地接收外部网络访问。从传统意义上来说防火墙技术分为三类:包过滤、应用代理、状态检测。无论一个防火墙的实现过程有多复杂,归根结底都是在这三种技术的基础上进行扩展的

2、firewall-cmd命令。

 1)启动、停止、查看firewalld服务

        在安装CentOS 7系统时,会自动安装firewalld和图形化工具firewall-config。

[root@localhost ~]# systemctl start firewalld  //启动firewalld
[root@localhost ~]# systemctl enable firewalld  //设置开机自启动
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.

        如果firewalld正在运行,通过下面的命令可以查看运行状态

[root@localhost ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)Active: active (running) since 二 2024-01-09 16:05:04 CST; 5min agoDocs: man:firewalld(1)Main PID: 11193 (firewalld)CGroup: /system.slice/firewalld.service└─11193 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid1月 09 16:05:04 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
1月 09 16:05:04 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.[root@localhost ~]# firewall-cmd --state 
running

         如果想要禁用firewalld,执行以下命令即可实现

[root@localhost ~]# systemctl stop firewalld  //停止firewalld
[root@localhost ~]# systemctl disable firewalld  //设置开机不自启动

2)获得预定义信息

[root@localhost ~]# firewall-cmd --get-zones 
block dmz drop external home internal public trusted work[root@localhost ~]# firewall-cmd --get-services 
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry docker-swarm dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target jenkins kadmin kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls managesieve mdns minidlna mongodb mosh mountd ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius redis rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh syncthing syncthing-gui synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server[root@localhost ~]# firewall-cmd --get-icmptypes 
address-unreachable bad-header communication-prohibited destination-unreachable echo-reply echo-request fragmentation-needed host-precedence-violation host-prohibited host-redirect host-unknown host-unreachable ip-header-bad neighbour-advertisement neighbour-solicitation network-prohibited network-redirect network-unknown network-unreachable no-route packet-too-big parameter-problem port-unreachable precedence-cutoff protocol-unreachable redirect required-option-missing router-advertisement router-solicitation source-quench source-route-failed time-exceeded timestamp-reply timestamp-request tos-host-redirect tos-host-unreachable tos-network-redirect tos-network-unreachable ttl-zero-during-reassembly ttl-zero-during-transit unknown-header-type unknown-option

3)区域管理

//显示当前系统中的默认区域
[root@localhost ~]# firewall-cmd --get-default-zone 
public//显示默认区域的所有规则
[root@localhost ~]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens33 ens37 ens38sources: services: ssh dhcpv6-clientports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules: //显示网络接口ens33对应区域
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33
public

4)将网络接口ens33对应区域更改为internal区域

[root@localhost ~]# firewall-cmd --zone=internal --change-interface=ens33
The interface is under control of NetworkManager, setting zone to 'public'.
success
[root@localhost ~]# firewall-cmd --zone=internal --list-interfaces 
ens33
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33 
internal

5)显示所有激活区域

[root@localhost ~]# firewall-cmd --get-active-zones 
publicinterfaces: ens33 ens37 ens38

2.2、服务管理

 1)为默认区域设置允许访问的服务

[root@localhost ~]# firewall-cmd --list-services 
ssh dhcpv6-client  //默认区域内允许访问的所有服务//设置默认区域允许访问http服务和https服务
[root@localhost ~]# firewall-cmd --add-service=http
success
[root@localhost ~]# firewall-cmd --add-service=https
success[root@localhost ~]# firewall-cmd --list-services 
ssh dhcpv6-client http https

2)为internal区域设置允许访问的服务

//设置internal区域允许访问mysql服务
[root@localhost ~]# firewall-cmd --zone=internal --add-service=mysql 
success//设置internal区域不允许访问samba-client服务
[root@localhost ~]# firewall-cmd --zone=internal --remove-service=samba-client 
success//显示internal区域允许访问的所有服务
[root@localhost ~]# firewall-cmd --zone=internal --list-services 
ssh mdns dhcpv6-client mysql

2.3、端口管理

1)在进行服务配置时,预定义的网络服务可以使用服务名配置,服务所涉及的端口就会自动打开。但是,对应非预定义的服务只能手动为指定的区域添加端口。

//在internal区域打开443/tcp端口
[root@localhost ~]# firewall-cmd --zone=internal --add-port=443/tcp
success//禁止443/tcp端口访问
[root@localhost ~]# firewall-cmd --zone=internal --remove-port=443/tcp
success

3、两种配置模式

        firewall-cmd命令工具有两种配置模式:运行时模式表示当前内存中运行的防火墙配置,在系统或firewall服务重启、停止时配置将失效;永久模式表示重启防火墙或重新加载防火墙时的规则配置,是永久存储在配置文件中的。

        firewall-cmd命令工具与配置模式相关的选项有三个:

4、firewalld防火墙应用案例

实验环境:

1)准备一台Linux网关服务器;一台LinuxWeb服务器

2)一台内网测试机;一台internet测试机

3)网关服务器设置三张网卡;分别为NAT、仅主机1和仅主机2

实验需求

1)ens33分配到external(外部)区域;ens37分配到trusted(信任)区域;ens38分配到dmz(非军事)。

2)网站服务器和网关服务均通过SSH来远程管理,为了安全,将SSH默认端口改为12345。

3)网站服务器开启https,过滤未加密的http流量

4)网站服务器拒绝ping

4.1、基本环境配置

1)在网关服务器上配置主机名即网卡地址

[root@localhost ~]# hostname HEY
[root@localhost ~]# vim /etc/hostname 
HEY[root@localhost ~]# ip add
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group inet 192.168.136.24/24 brd 192.168.136.255 scope global noprefixroute ens33
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group inet 192.168.154.254/24 brd 192.168.154.255 scope global noprefixroute ens37
4: ens38: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP groupinet 192.168.177.254/24 brd 192.168.177.255 scope global noprefixroute ens38

2)开启网关服务器的路由转发功能


[root@localhost ~]# vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1

4.2、网站服务器环境搭建

 1)配置Web服务器的主机及网卡地址

[root@localhost ~]# vim /etc/hostname 
web
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.177.100  netmask 255.255.255.0  broadcast 192.168.177.255

2)安装http和mod_ssl软件包

[root@web ~]# yum -y install httpd mod_ssl

3)启用并启动httpd服务

[root@web ~]# systemctl start httpd
[root@web ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

4)创建网站首页测试页index.html

[root@web ~]# vim /var/www/html/index.html

5)更改SSH的侦听地址,并重启sshd服务,注意需要将SELinux关闭

[root@web ~]# vim /etc/ssh/sshd_config 
Port 12345
[root@web ~]# systemctl restart sshd

4.3、在网站服务器上启动并配置firewalld防火墙

1)在网站服务器上启动firewalld防火墙并将默认区域设置为dmz区域,并将接口加入到dmz区域中

[root@web ~]# systemctl start firewalld
[root@web ~]# systemctl enable firewalld
[root@web ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)Active: active (running) since 二 2024-01-09 17:07:05 CST; 11s ago
[root@web ~]# firewall-cmd --change-interface=ens33 --zone=dmz

2)为dmz区域打开https服务及添加tcp的12345端口

[root@web ~]# firewall-cmd --zone=dmz --add-service=https --permanent 
success
[root@web ~]# firewall-cmd --zone=dmz --add-port=12345/tcp --permanent 
success

3)禁止ping

[root@web ~]# firewall-cmd --add-icmp-block=echo-request --zone=dmz --permanent
success

4)因为预定义的SSH服务已经更改默认端口,所以将预定义SSH服务移除

[root@web ~]# firewall-cmd --zone=dmz --remove-service=ssh --permanent 

5)重新加载firewalld激活配置,并查看刚才的配置

[root@web ~]# firewall-cmd --reload 
firsuccess
[root@web ~]# firewall-cmd --list-all --zone=dmz
dmztarget: defaulticmp-block-inversion: nointerfaces: sources: services: httpsports: 12345/tcpprotocols: masquerade: noforward-ports: source-ports: icmp-blocks: echo-requestrich rules: 

4.4、在网关服务器上配置firewalld防火墙

1)验证firewalld在网关服务器上启动并正在运行

[root@HEY ~]# firewall-cmd --state
not running
[root@HEY ~]# systemctl start firewalld
[root@HEY ~]# systemctl enable firewalld
[root@HEY ~]# firewall-cmd --state
running

2)配置默认区域为external区域,并查看配置结果


[root@HEY ~]# firewall-cmd --set-default-zone=external 
success
[root@HEY ~]# firewall-cmd --list-all
external (active)target: defaulticmp-block-inversion: nointerfaces: ens37 ens38 ens33sources: services: sshports: protocols: masquerade: yesforward-ports: source-ports: icmp-blocks: rich rules: 

3)将ens37网卡配置到trusted区域,将ens38配置到dmz区域

[root@HEY ~]# firewall-cmd --change-interface=ens37 --zone=trusted 
The interface is under control of NetworkManager, setting zone to 'trusted'.
success
[root@HEY ~]# firewall-cmd --change-interface=ens38 --zone=dmz 
The interface is under control of NetworkManager, setting zone to 'dmz'.
success

4)查看配置情况

[root@HEY ~]# firewall-cmd --get-active-zones 
dmzinterfaces: ens38
externalinterfaces: ens33
trustedinterfaces: ens37

5)使用内网测试机访问Web网站

 

6)更改SSH的侦听端口,并重启服务(需关闭SELinux)

[root@HEY ~]# vim /etc/ssh/sshd_config 
Port 12345
[root@HEY ~]# systemctl restart sshd

7)配置external区域添加tcp的12345端口

[root@HEY ~]# firewall-cmd --zone=external --add-port=12345/tcp --permanent 
success

8)配置external区域移除SSH服务

[root@HEY ~]# firewall-cmd --zone=external --remove-service=ssh --permanent 
success

9)配置external区域禁止ping

[root@HEY ~]# firewall-cmd --zone=external --add-icmp-block=echo-request --permanent 
success

10)重新加载防火墙激活配置

[root@HEY ~]# firewall-cmd --reload 
success

11)使用internet测试机访问Web网站

这篇关于firewall防火墙(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/589154

相关文章

CentOS linux关闭iptables防火墙(Linux中的防火墙叫iptables)

linux服务器下防火墙为iptables组件,在安装一些软件的时候,iptables防火墙会阻止我们一些必要的连接。 查看iptables状态:service iptables status iptables开机自动启动: 开启: chkconfig iptables on  关闭: chkconfig iptables off iptables关闭服务: 开启: service

Centos7防火墙firewal常用命令介绍

前言 在CentOS 7中,firewalld是默认的防火墙管理工具,它提供了一种简化和易于使用的方法来配置和管理防火墙规则。 firewalld简介 引入:从CentOS 7开始,默认使用firewalld来配置防火墙,而不是传统的iptables。配置文件:firewalld的配置文件以xml格式存储,主要位于/usr/lib/firewalld/和/etc/firewalld/目录中。

红队内网攻防渗透:内网渗透之内网对抗:隧道技术篇防火墙组策略ICMPDNSSMB协议出网判断C2上线解决方案

红队内网攻防渗透 1. 内网隧道技术1.1 学隧道前先搞清楚的知识1.2 常用的隧道技术1.3 判断协议出网的命令1.4 C2上线-开防火墙入站只80&出站只放ICMP1.4.1 icmp隧道上线CS后门1.4.1 icmp隧道上线MSF后门 1.5 C2上线-开防火墙入站只80&出站只放DNS1.5.1 DNS隧道上线CS后门1.5.2 DNS隧道上线MSF后门 1.6 C2上线-SMB-

关于防火墙导致ssh连接不上虚拟机问题

关闭防火墙 虚拟机防火墙打开后ssh连不上虚拟机,可能是因为SSH服务的默认端口22被防火墙阻止了。 最简单的解决方法就是 关掉防火墙。 // 关闭防火墙sudo ufw disable 允许SSH端口(默认为22)通过防火墙 // 确认SSH服务正在运行:sudo systemctl status ssh// 如果没有运行,启动SSH服务:sudo systemctl start

H3C防火墙抓包(命令行)

命令行 请按照如下步骤收集下设备的debug信息 1)        创建一个空ACL 3XXX,写上两条明细rule,分别对应来回流量的源目地址 [FW]acl advanced 3XXX [FW-acl-ipv4-adv-3XXX]rule permit ip source  x.x.x.x 0 destination y.y.y.y 0 [FW-acl-ipv4-adv-3XXX]rule

H3C防火墙抓包(图形化)

一.报文捕获 ,然后通过wireshark查看报文 二.报文示踪 , 输入源目等信息, 查看报文的详情

[程序员] openstack: openvswitch: firewall丢包

最近看到一个老问题:说openvswitch提供的防火墙策略,会导致网络性能下降,而且有丢包。 https://bugzilla.redhat.com/show_bug.cgi?id=1559604 the firewalling changed and the firewall_driver is now ‘openvswitch’ ([security_groups] in openvsw

深圳比创达电子EMC|EMC与EMI滤波器:守护电子设备的电磁防火墙

随着科技的飞速发展,电子设备在我们日常生活中的普及率越来越高,从智能手机到大型工业设备,无一不体现出电子技术的重要地位。然而,随之而来的电磁兼容性问题(EMC)和电磁干扰问题(EMI)也日益凸显,成为了制约电子设备性能提升的重要因素。在这其中,EMC与EMI滤波器凭借其出色的电磁防护能力,成为了守护电子设备安全的利器。 一、EMC与EMI滤波器的基本概念 首先,我们需要了解EMC与EMI滤波器

防火墙中的NAT

防火墙的NAT NAT分类 源NAT 基于源IP地址进行转换。 我们之前接触过的静态NAT,动态NAT,NAPT都属于源NAT,都是针对源IP地址进行转换的。源NAT主要目的是为了保证内网用户可以访问公网。 先执行安全策略,后执行NAT 目标NAT 基于目标IP地址进行转换。我们之前接触过的服务器映射 (端口映射) 就属于目标NAT。是为了保证公网用户可以访问内部的服务器。 双向

CentOS6关闭防火墙使用以下命令,

CentOS6关闭防火墙使用以下命令, //临时关闭service iptables stop//禁止开机启动chkconfig iptables off 1234 CentOS7中若使用同样的命令会报错, stop iptables.serviceFailed to stop iptables.service: Unit iptables.service not loaded.