Linux—网络防火墙详解
一、安装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—网络防火墙详解的更多相关文章
- Linux网络配置文件详解
--Linux网络配置文件详解----------------------2013/10/03 目前在企业级服务器的Linux系统中,RHEL占有绝对的优势,不管是曾经在互联网公司还是在目前测试Vir ...
- 【转】Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备
原文:https://www.cnblogs.com/bakari/p/10449664.html -------------------------------------------------- ...
- Linux iptables 防火墙详解
0x00 iptables介绍 linux的包过滤功能,即linux防火墙,它由netfilter 和 iptables 两个组件组成. netfilter 组件也称为内核空间,是内核的一部分,由一些 ...
- Linux 网络编程详解九
TCP/IP协议中SIGPIPE信号产生原因 .假设客户端socket套接字close(),会给服务器发送字节段FIN: .服务器接收到FIN,但是没有调用close(),因为socket有缓存区,所 ...
- linux网络配置详解
一:相关网络配置的文件 1.网卡名配置相关文件 网卡名命名规则文件: /etc/udev/rules.d/70-persistent-net.rules # PCI device 0x8086:0x1 ...
- TCP/UDP Linux网络编程详解
本文主要记录TCP/UDP网络编程的基础知识,采用TCP/UDP实现宿主机和目标机之间的网络通信. 内容目录 1. 目标2.Linux网络编程基础2.1 嵌套字2.2 端口2.3 网络地址2.3.1 ...
- Linux 网络编程详解一(IP套接字结构体、网络字节序,地址转换函数)
IPv4套接字地址结构 struct sockaddr_in { uint8_t sinlen;(4个字节) sa_family_t sin_family;(4个字节) in_port_t sin_p ...
- Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 在前面一篇文章 ...
- Linux 网络编程详解十一
/** * read_timeout - 读超时检测函数,不含读操作 * @fd:文件描述符 * @wait_seconds:等待超时秒数,如果为0表示不检测超时 * 成功返回0,失败返回-1,超时返 ...
随机推荐
- 【二】Gradle中的gradlew
gradle 相当于 gradle wapper,是gradle的包装命令 使用gradlew来构建项目被认为是最佳实践. 使用gradlew有以下好处: 当客户机上没有安装gradle时,可以直接用 ...
- Linux下使用 github+hexo 搭建个人博客01-hexo搭建
为什么要搭建自己的博客系统? 原因有好几个吧,归类如下:1.自己搭建博客系统很有成就感,可以自己选定页面风格和页面排版: 2.自己搭建博客系统可以根据自己的需要添加各种插件功能,因此整体上比网上的第三 ...
- JS关于日期格式转换的问题
写Js时,有个地方用到日期,要求是yyyy--MM--dd的格式,于是想到了format函数,下面介绍了时间函数的定义,和调用前引入函数和如何格式化自己想要的日期格式. //当前时间 var Time ...
- Linux—修改文件权限、文件拥有者以及文件所在组
修改文件权限——chmod 修改文件拥有者——chown 修改文件所属组群——chgrp
- android tween animation合集
自己写的一些tween animation动画xml文件,可用于activity切换,图片切换动画等 http://files.cnblogs.com/zj2012zy/anim.rar
- RPM常用命令总结
安装 rpm -ivh package_name (package_name指的是RPM包的文件名) 查询 1.查询是否安装,及安装版本 rpm -q 已安装的软件名(ex:rpm -q docker ...
- Error creating bean with name 'sqlSessionFactory' defined in class path resource [config/spring/applicationContext.xml]: Invocation of init method failed;
我报的错: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSes ...
- 「MacOS」将网站转换为应用程序,只需一个Unite
unite mac有着非常强大的功能,能够轻松的将网站转换为macOS上的应用程序,除了现代化的网页浏览功能以外,Unite for Mac下载还包括特定于macOS的功能,通知,TouchBar支持 ...
- qtdomdocument找不到
- pytorch 建立模型的几种方法
利用pytorch来构建网络模型,常用的有如下三种方式 前向传播网络具有如下结构: 卷积层-->Relu层-->池化层-->全连接层-->Relu层 对各Conv2d和Line ...