Linux防火墙(Firewalls)

Posted 葡萄架

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux防火墙(Firewalls)相关的知识,希望对你有一定的参考价值。

结构关系图

查看这两个防火墙文件

# cat /etc/hosts.deny 

# cat /etc/hosts.allow

查看Linux中防火墙的状态

某个服务是否能由tcpwraps来进行控制关键在于这个服务的模块

图形化界面firewall-config

 

 

 

命令行firewall-cmd

 

 

区域:

查看firewall防火墙有几个zone(区域)

# firewall-cmd --get-zones

 

查看firewall防火墙默认区域

 # firewall-cmd --get-default-zone

查看eno16777736 是否与默认zone绑定在一起。

# firewall-cmd --query-interface=eno16777736 

查看eno16777736是否与home=zone绑定在一起。

# firewall-cmd --query-interface=eno16777736 --zone=home

查看eno16777736与那个zone绑定在一起

# firewall-cmd --get-zone-of-interface=eno16777736

 

 

 

 

接口

删除eno16777736接口

# firewall-cmd --remove-interface=eno16777736

查看eno16777736接口

# firewall-cmd --get-zone-of-interface=eno33554992

添加接口

 # firewall-cmd --zone=home --add-interface=eno33554992

直接更改到默认接口

# firewall-cmd --change-interface=eno33554992

直接更改到指定接口

# firewall-cmd --change-interface=eno33554992 --zone=home

 

 

 

服务:

查看防火墙所有服务

# firewall-cmd --get-services

查看具体的某个服务

# firewall-cmd --get-services | grep http

查看某个服务是否开启

# firewall-cmd --query-service=http 

查看某个服务在指定区域是否开启

# firewall-cmd --query-service=http --zone=home

 添加某个服务

 # firewall-cmd --add-service=http 

移除某个服务

# firewall-cmd --remove-service=http 

以上都是临时生效的

设置成永久生效应该添加permanent

设置成永久生效

# firewall-cmd --remove-service=http --permanent

 

 

 

 

端口

查看端口是否存在

# firewall-cmd --query-port=88/tcp 

# firewall-cmd --query-port=88/tcp --zone=home

临时添加端口(永久)+  --permanent

 # firewall-cmd --add-port=88/tcp 

临时(永久)删除端口  +  --permanent

# firewall-cmd --remove-port=88/tcp 

 

 

更改默认区域:

更改默认的zone为home(永久生效)不需要加permanent

# firewall-cmd --set-default-zone=home 

更改默认的zone为trusted(绿色通道)永久生效不需要加permanent

# firewall-cmd --set-default-zone=trusted 

 

以上为命令行如何操作、设置firewall-config

 

---------------------------------------------------------------------------------------------------------------------------------------------

查看默认的zone里面所有的设置

# firewall-cmd --list-all

查看home、zone里面所有的设置。

 # firewall-cmd --list-all --zone=home 

查看是否配置Apache  httpd服务

# systemctl is-active httpd

 

 

 

source(来源):

 

添加source(来源)规则到home,zone里面并查看

# firewall-cmd --add-source=192.168.0.0/24 --zone=home

# firewall-cmd --list-all --zone=home

删除home,zone里面source(来源)规则

# firewall-cmd --remove-source=192.168.0.0/24 --zone=home

 

 

 

 

ICMP过滤器

在图形界面中,打钩不允许,不打钩允许。

ICMP类型:

echo-request(没有打钩允许ping,打钩不允许ping)

echo-reply

查看ICMP服务

# firewall-cmd --get-icmptypes 

查看ICMP某一模块的状态

# firewall-cmd --query-icmp-block=echo-request

删除ICMP某一模块

# firewall-cmd --remove-icmp-block=echo-request

添加ICMP某一模块

# firewall-cmd --add-icmp-block=echo-request

 

 

 

 

准备三台虚拟机,分别作为内网、外网、路由器(两张网卡)

 

路由器:

路由器需要两张网卡,第二张网卡需要同内网在同一个LAN区段

 路由器IP地址

 路由器查看转发功能、并开启

# cat /proc/sys/net/ipv4/ip_forward 

# echo 1 > /proc/sys/net/ipv4/ip_forward 

查看并配置网关

# route -n

添加网关

# route add default gw 10.0.0.1

 

内网:

内网网卡,要与路由器LAN在同一区段

内网IP

 

外网:

外网网卡

 外网IP

外网网关与路由器IP相同,则内网能ping同

外网网关与路由器IP不同,则内网不能ping同

但不影响抓包

内网ping外网抓包

抓包

# tcpdump -i eno16777736 icmp

 

 

 

伪装:

抓包的时候隐藏私有地址

 

查看伪装区域

# firewall-cmd --query-masquerade

添加伪装区域(临时生效)

# firewall-cmd --add-masquerade 

删除伪装区域(临时生效)

# firewall-cmd --remove-masquerade 

 

 

 

端口转发(端口映射)

查看firewall信息

# firewall-cmd --list-all

删除映射端口

# firewall-cmd --remove-forward-port=\'port=80:proto=tcp:toport=:toaddr=10.0.0.2\'

添加映射端口

# firewall-cmd --add-forward-port=\'port=80:proto=tcp:toport=:toaddr=10.0.0.2\'

 

 

付规则(Rich Rules)

打开英文版的,中文版的有bug

#LANG=C firewall-config &

查看Rich Rules 信息

# firewall-cmd --list-rich-rules 

 

删除Rich Rules

# firewall-cmd --remove-rich-rule \'rule family="ipv4" source address="192.168.0.0/24" port port="80" protocol="tcp" accept\'

 

添加Rich Rules

remove改add

控制是否能上网:masquerade

以上是关于Linux防火墙(Firewalls)的主要内容,如果未能解决你的问题,请参考以下文章

Linux服务器防攻击的各种方案

防火墙Firewalls ASA

CentOS防火墙的配置

Firewalls

RHCE7下firewalls-cmd命令参数详解

centos7中防火墙的使用