一、安装firewalld服务

[root@localhost ~]# apt-get install firewalld
[root@localhost ~]# yum install firewalld

二、开启、关闭、重启firewalld服务

# 关闭firewalld服务
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# service firewalld stop # 开启firewalld服务
[root@localhost ~]# systemctl start firewalld
[root@localhost ~]# service firewalld start # 查看firewalld服务状态
[root@localhost ~]# systemctl status firewalld
[root@localhost ~]# service firewalld status # 重启firewalld服务
[root@localhost ~]# systemctl restart firewalld
[root@localhost ~]# service firewalld restart # 设置开机不启动防火墙
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# service firewalld disable # 设置开机启用防火墙
[root@localhost ~]# systemctl enable firewalld
[root@localhost ~]# service firewalld enable

三、查看firewall规则与状态

# 查看防火墙状态
[root@localhost ~]# firewall-cmd --state
# 查看防火墙版本
[root@localhost ~]# firewall-cmd --version
# 查看防火墙规则(只显示/etc/firewalld/zones/public.xml中的防火墙策略)
[root@localhost ~]# firewall-cmd --list-all
# 查看所有的防火墙策略(即显示/etc/firewalld/zones/下的所有策略)
[root@localhost ~]# firewall-cmd --list-all-zones
# 重新加载配置文件(修改配置后要重新加载一下)
[root@localhost ~]# firewall-cmd --reload

四、规则设定

示例:开放3306 端口

[root@localhost ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent

1、firwall-cmd:是Linux提供的操作firewall的一个工具。
2、--zone:作用域。
3、--permanent:表示设置为持久。永久生效。
4、--add-port=3306/tcp:标识添加的端口,格式为:端口/通讯协议。

1、开放端口(这种情况下所有ip均能访问80端口,即对外暴露80端口了)

# 开放80端口(增加80端口的权限),对外暴露80端口,即任意ip都能访问
[root@localhost ~]# firewall-cmd --permanent --add-port=80/tcp
[root@localhost ~]# firewall-cmd --permanent --add-port=80/tcp --zone=public # 关闭80端口
[root@localhost ~]# firewall-cmd --permanent --remove-port=80/tcp
[root@localhost ~]# firewall-cmd --permanent --remove-port=80/tcp --zone=public # 查询所有开放的端口
[root@localhost ~]# firewall-cmd --list-ports
[root@localhost ~]# firewall-cmd --zone=public --list-ports # 查询端口是否开放
[root@localhost ~]# firewall-cmd --query-port=80/tcp
[root@localhost ~]# firewall-cmd --zone=public --query-port=80/tcp

2、允许指定ip访问指定端口

[root@localhost ~]# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="28.16.62.45" port protocol="tcp" port="3120" accept"
[root@localhost ~]# firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="28.16.62.45" port protocol="tcp" port="3120" accept"

3、阻止指定ip访问指定端口

[root@localhost ~]# firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='28.16.62.45' port protocol="tcp" port="3120" drop"        # 方式一
[root@localhost ~]# firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='28.16.62.45' port protocol="tcp" port="3120" reject" # 方式二 [root@localhost ~]# firewall-cmd --permanent --remove-rich-rule="rule family='ipv4' source address='28.16.62.45' port protocol="tcp" port="3120" drop"
[root@localhost ~]# firewall-cmd --permanent --remove-rich-rule="rule family='ipv4' source address='28.16.62.45' port protocol="tcp" port="3120" reject"

4、屏蔽IP:拒绝指定IP,所有端口都不能访问

[root@localhost ~]# firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address="28.16.62.45" drop"            # 添加规则:禁止IP为28.16.62.45,访问本机(方式一)
[root@localhost ~]# firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address="28.16.62.45" reject" # 添加规则:禁止IP为28.16.62.45,访问本机(方式二) [root@localhost ~]# firewall-cmd --permanent --remove-rich-rule="rule family=ipv4 source address="28.16.62.45" drop" # 删除规则:删除上面定义的规则(方式一)
[root@localhost ~]# firewall-cmd --permanent --remove-rich-rule="rule family=ipv4 source address="28.16.62.45" reject" # 删除规则:删除上面定义的规则(方式二)

5、放行IP:允许指定IP,能访问所有端口

[root@localhost ~]# firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address="28.16.62.45" accept"
[root@localhost ~]# firewall-cmd --permanent --remove-rich-rule="rule family=ipv4 source address="28.16.62.45" accept"

五、伪装IP

防火墙可以实现伪装IP的功能,下面的端口转发就会用到这个功能。

[root@localhost ~]# firewall-cmd --query-masquerade                  # 检查是否允许伪装IP
[root@localhost ~]# firewall-cmd --add-masquerade # 允许防火墙伪装IP,开启转发(很重要,否则配置的转发不生效)
[root@localhost ~]# firewall-cmd --remove-masquerade # 禁止防火墙伪装IP
[root@localhost ~]# firewall-cmd --add-masquerade --permanent # 永久生效,注意--permanent代表永久生效,会讲配置写入/etc/firewalld/zones下的xml配置。不加此参数则在重启设备之前生效。

六、端口转发

端口转发可以将指定地址访问指定的端口时,将流量转发至指定地址的指定端口。转发的目的如果不指定ip的话就默认为本机,如果指定了ip却没指定端口,则默认使用来源端口。

如果配置好端口转发之后不能用,可以检查下面两个问题:

  • 比如我将80端口转发至8080端口,首先检查本地的80端口和目标的8080端口是否开放监听了。
  • 其次检查是否允许伪装IP,没允许的话要开启伪装IP。
# 转发到本机器其它端口,不要要开启IP伪装。转发到其他机器时需要先开启IP伪装。
[root@localhost ~]# firewall-cmd --add-forward-port=port={端口}:proto={协议}:toaddr={地址}:toport={端口} --permanent # 将到本机的3306端口的访问转发到本机服务器的13306端口(注意:转发到本机时不能写本机IP,否则就不会转发成功)
[root@localhost ~]# firewall-cmd –-permanent –-zone=public --add-forward-port=port=3306:proto=tcp:toport=13306 # 将到本机的3306端口的访问转发到192.168.1.105服务器的13306端口
[root@localhost ~]# firewall-cmd --permanent –-zone=public --add-forward-port=port=3306:proto=tcp:toaddr=192.168.1.105:toport=13306

注意:如果不开启伪装IP,端口转发会失败;其次,要确保源服务器上的端口(3306)和目标服务器上的端口(13306)是开启的。端口转发不允许添加accept和reject。

# 将80端口请求转发至本机的3120端口,如果需要永久生效,加–-permanent选项。注意--permanent代表永久生效,会讲配置写入/etc/firewalld/zones下的xml配置。不加此参数则在重启设备之前生效。重载配置文件之后就会失效。
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=3120 # 重载配置回失效
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=3120 --permanent # 重载配置不会失效

七、通过 ipset 来封禁IP

1、增加 ipset

[root@localhost ~]# firewall-cmd --permanent --zone=public --new-ipset=test --type=hash:ip                          # 方法一:ipv4
[root@localhost ~]# firewall-cmd --permanent --zone=public --new-ipset=test --type=hash:ip --option=family=inet6 # 方法一:ipv6 [root@localhost ~]# firewall-cmd --permanent --zone=public --new-ipset-from-file=/path/test.xml # 方法二:导入 ipset 规则,相当于从配置文件中增加ipset

2、指定 ipset 中增加entry、删除entry

[root@localhost ~]# firewall-cmd --permanent --zone=public --ipset=test --add-entry=28.16.62.45         # 增加entry
[root@localhost ~]# firewall-cmd --permanent --zone=public --ipset=test --remove-entry=28.16.62.45 # 删除entry

3、将 ipset 应用到策略中

[root@localhost ~]# firewall-cmd --permanent --zone=public --add-rich-rule='rule source ipset=test drop'        # 封禁 test
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-rich-rule='rule source ipset=test accept' # 放行 test [root@localhost ~]# firewall-cmd --permanent --zone=public --remove-rich-rule='rule source ipset=test drop' # 删除上面封禁的 test
[root@localhost ~]# firewall-cmd --permanent --zone=public --remove-rich-rule='rule source ipset=test accept' # 删除上面放行的 test

4、重载配置,使防火墙配置生效

[root@localhost ~]# firewall-cmd --reload

5、获取指定 ipset 信息

[root@localhost ~]# firewall-cmd --get-ipsets                     # 查看ipset名称
[root@localhost ~]# firewall-cmd --info-ipset=test # 查看ipset详细信息

6、删除指定 ipset 信息

[root@localhost ~]# firewall-cmd --permanent --zone=public --delete-ipset=test

7、ipset的存储路径:/etc/firewalld/ipsets

8、ipset类型的区别

# firewall-cmd --permanent --zone=public --new-ipset=blacklist --type=hash:ip       # 封禁IP
# firewall-cmd --permanent --zone=public --ipset=blacklist --add-entry=222.222.222.222 # firewall-cmd --permanent --zone=public --new-ipset=blacklist --type=hash:net # 封禁网段
# firewall-cmd --permanent --zone=public --ipset=blacklist --add-entry=222.222.222.0/24 1、hash:ip
2、hash:ip,mark
3、hash:ip,port
4、hash:ip,port,ip
5、hash:ip,port,net
6、hash:mac
7、hash:net
8、hash:net,iface
9、hash:net,net
10、hash:net,port
11、hash:net,port,net

  

https://www.cnblogs.com/ilvutm/p/9301919.html

https://www.cnblogs.com/lemon-flm/p/7608029.html

https://www.cnblogs.com/cy-8593/p/9506758.html

https://www.jb51.net/article/156954.htm

https://www.cnblogs.com/zxg-blog/p/9835263.html

https://www.cnblogs.com/volcao/p/9521884.html

https://www.cnblogs.com/longhao/p/3993011.html

https://www.cnblogs.com/lambertwe/p/7352552.html

Linux—网络防火墙详解的更多相关文章

  1. Linux网络配置文件详解

    --Linux网络配置文件详解----------------------2013/10/03 目前在企业级服务器的Linux系统中,RHEL占有绝对的优势,不管是曾经在互联网公司还是在目前测试Vir ...

  2. 【转】Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备

    原文:https://www.cnblogs.com/bakari/p/10449664.html -------------------------------------------------- ...

  3. Linux iptables 防火墙详解

    0x00 iptables介绍 linux的包过滤功能,即linux防火墙,它由netfilter 和 iptables 两个组件组成. netfilter 组件也称为内核空间,是内核的一部分,由一些 ...

  4. Linux 网络编程详解九

    TCP/IP协议中SIGPIPE信号产生原因 .假设客户端socket套接字close(),会给服务器发送字节段FIN: .服务器接收到FIN,但是没有调用close(),因为socket有缓存区,所 ...

  5. linux网络配置详解

    一:相关网络配置的文件 1.网卡名配置相关文件 网卡名命名规则文件: /etc/udev/rules.d/70-persistent-net.rules # PCI device 0x8086:0x1 ...

  6. TCP/UDP Linux网络编程详解

    本文主要记录TCP/UDP网络编程的基础知识,采用TCP/UDP实现宿主机和目标机之间的网络通信. 内容目录 1. 目标2.Linux网络编程基础2.1 嵌套字2.2 端口2.3 网络地址2.3.1 ...

  7. Linux 网络编程详解一(IP套接字结构体、网络字节序,地址转换函数)

    IPv4套接字地址结构 struct sockaddr_in { uint8_t sinlen;(4个字节) sa_family_t sin_family;(4个字节) in_port_t sin_p ...

  8. Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 在前面一篇文章 ...

  9. Linux 网络编程详解十一

    /** * read_timeout - 读超时检测函数,不含读操作 * @fd:文件描述符 * @wait_seconds:等待超时秒数,如果为0表示不检测超时 * 成功返回0,失败返回-1,超时返 ...

随机推荐

  1. 简单的LNMP安全加固

    安全加固 Nginx安全加固: Nginx配置文件 (nginx.conf):/usr/local/nginx/nginx.conf 禁用autoindex: autoindex:是Nginx的目录浏 ...

  2. 去掉烦人的“!=null"(判空语句)

    文章首发于公众号 松花皮蛋的黑板报 作者就职于京东,在稳定性保障.敏捷开发.高级JAVA.微服务架构有深入的理解 为了避免空指针调用,我们经常会看到这样的语句 if (someobject != nu ...

  3. 【分享】git全套视频教程

    1.课件 https://www.cnblogs.com/wfd360/p/10891140.html 2.教程列表 3.教程下载 3.1.直接在线学习 学习地址:https://study.163. ...

  4. linux学习(四)复制(cp)移动(mv)删除(rm)查找(find)文件、文件夹操作、软硬链接的区别

    目录 复制文件 mv命令 rm命令 touch 命令 file命令 find命令 grep命令 mkdir命令 rmdir命令 @(复制移动删除查找文件.软硬链接的区别) 复制文件 cp命令用于复制文 ...

  5. linux 性能调优工具参考 (linux performance tools)

    之前发现几张图对于linux使用者有着较强的参考意义,下面对其进行简单备忘: # linux 静态信息查看工具 # linux 性能测试工具 benchmark # linux 性能观测工具 # li ...

  6. 高通平台:USB充电【转】

    USB Battery Charging V1.2 Specification 定义了USB充电器的类型或者叫做充电源. 1. 支持的充电器类型 1.1 Standard Downstream Por ...

  7. postman---Postman配置环境变量和全局变量

    我们在测试的过程中,遇到最多的问题也可以是环境的问题了吧,今天开发用了这个测试环境,明天又换了另一个测试环境,这样对于我们测试非常的麻烦,特别最接口的时候需要来回的输入环境地址比较麻烦,今天我们看看强 ...

  8. testng.xml文件的配置

    ------Web自动化测试之Webdriver+TestNG--从零到熟练(系列) TestNG用来管理测试用例的是testng.xml配置文件,我们可以通过配置这个文件来达到组织测试用例,输出测试 ...

  9. BZOJ2591/LG3047 「USACO12FEB」Nearby Cows 换根树形DP

    问题描述 BZOJ2591 LG3047 题解 换根树形DP. 设 \(opt[i][j]\) 代表 当 \(1\) 为根时,\(i\) 为根的子树中,到 \(i\) 的距离为 \(j\) 的权值和 ...

  10. STM32 F4xx Fault 异常错误定位指南

    STM32 F407 采用 Cortex-M4 的内核,该内核的 Fault 异常可以捕获非法的内存访问和非法的编程行为.Fault异常能够检测到以下几类非法行为: 总线 Fault: 在取址.数据读 ...