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,超时返 ...
随机推荐
- layui省市区三级联动城市选择
基于layui框架制作精美的省市区下拉框三级联动菜单选择, 支持三级联动城市选择,点击提交获取选中值代码. 示例图如下: 资源链接: https://pan.baidu.com/s/1s6l8iDBE ...
- 【转载】Android 中 View 绘制流程分析
创建Window 在Activity的attach方法中通过调用PolicyManager.makeNewWindo创建Window,将一个View add到WindowManager时,Window ...
- MongoDB的模糊查询操作(类关系型数据库的 like 和 not like)
1.作用与语法描述 作用: 正则表达式是使用指定字符串来描述.匹配一系列符合某个句法规则的字符串.许多程序设计语言都支持利用正则表达式进行字符串操作.MongoDB 使用 $regex 操作符来设置匹 ...
- oracle数据库修改密码有效期,解决ORA-28001: 口令已经失效
工作中oracle数据库安装完成后,需要修改默认的密码有效期,默认为180天,如果不修改,到期忘记更改密码可能会造成不必要的影响. 两种修改方式pl/sql或者cmd窗口 1.pl/sql修改默认密码 ...
- Centos7下的zabbix安装与部署
目录: 1.Zabbix介绍 2.LAMP/LNMP介绍 3.Zabbix安装与部署 1.Zabbix介绍 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. ...
- ramdisk配置、解压、创建rootfs、启动简单分析
关键词:ramdisk.rdint..init.ramfs.__initramfs_start.__initramfs_size.rootfs.ramfs.populate_rootfs().gzip ...
- Octave绘图数据
t = [0:0.01:0.98] :设置一个步长为0.01的矩阵 y1 = sin(2*pi*4*t) :设置一个sin函数 plot(t,y1) :绘制出以 t 为横轴 以 y1为纵轴的图 ...
- Codeforces Round #603 (Div. 2) E. Editor 线段树
E. Editor The development of a text editor is a hard problem. You need to implement an extra module ...
- CSP2019游记(翻车记)
Preface 也许是人生中最重要的一场比赛了(再进不了冬令营我就没了) 结果不论怎样,想必也都是人生中的一次分水岭吧 从暑假开始到今天的一段时间,自己似乎终于找到了学OI的动力与乐趣.能认识到更多志 ...
- The trap of Bash trap
Can you spot the problem with the following Bash script? resource_created="false" function ...