firewalld防火墙启动开启和iptables基本操作介绍
防火墙概述
防火墙是整个数据包进入主机前的第一道关卡,是一种应用于网络上的过滤机制。
从保护对象上可分为:主机防火墙、网络防火墙;从物理上可分为:硬件防火墙、软件防火墙;
防火墙主要通过Netfilter与TCP Wrappers两个机制来管理的。
1)Netfilter:数据包过滤机制
2)TCP Wrappers:程序管理机制
关于数据包过滤机制(Netfilter)有两个软件:firewalld与iptables
https://blog.csdn.net/weixin_34130269/article/details/92255081
https://www.cnblogs.com/iXiAo9/p/13853020.html
https://www.jianshu.com/p/64bda2ed387f
Netfilter 机制
netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包
含内核用来控制信息包过滤处理的规则集。
Firewalld 与 Iptables
firewalld是一种提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具
它自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和 iptables一样,
他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样罢了
参考:https://blog.csdn.net/lilygg/article/details/84981537
Firewal lD的默认区域是public
查看内核版本,已添加到 Linux 内核版本 3.12 和 iptables 1.4.21
[root@ser307562508379 ~]# uname -srm
Linux 3.10.0-327.el7.x86_64 x86_64
[root@ser307562508379 ~]# uname -a
Linux ser307562508379 3.10.0-957.el7.x86_64 #1 SMP Thu Nov
8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
查看iptables版本
[root@ser307562508379 ~]# rpm -q iptables
iptables-1.4.21-16.el7.x86_64
查看防火墙开启关闭状态firewall
#查看firewall开始还是关闭
systemctl status firewalld.service
查看active显示中的状态,firewall是否开启
active(running) 开启 active(dead) 关闭
#查看firewall的状态
firewall-cmd --state
not running 关闭 running 开启
开启和关闭和重启防火墙firewall
systemctl stop firewalld.service 关闭firewalld systemctl start firewalld 开启firewalld systemctl enable firewalld 设置开机启动 service firewalld start #开启 service firewalld stop #关闭 service firewalld restart #重启 #centos7启动防火墙 systemctl start firewalld.service #centos7停止防火墙/关闭防火墙 systemctl stop firewalld.service #centos7重启防火墙 systemctl restart firewalld.service #设置开机启用防火墙 systemctl enable firewalld.service #设置开机不启动防火墙 systemctl disable firewalld.service
systemctl stop iptables关闭这个火墙,为了不影响firewalld的实验效果
systemctl mask iptables锁住这个服务
firewalld端口开放检查和生效
以下设置都在/etc/firewalld/zones/public.xml
目录下实现 #查看所有打开的端口: firewall-cmd --zone=public --list-ports #开放端口 firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-port=443/tcp --permanent firewall-cmd --zone=public --add-port=888/tcp --permanent firewall-cmd --zone=public --add-port=8888/tcp --permanent firewall-cmd --zone=public --add-port=22/tcp --permanent firewall-cmd --zone=public --add-port=10828/tcp --permanent #开放一个固定段的端口 firewall-cmd --zone=public --add-port=39000-40000/tcp --permanent #删除端口 firewall-cmd --zone= public --remove-port=80/tcp --permanent #设置固定ip段才能访问端口,设置好后需要把端口删除访问,只留下白名单 http://www.aiii.vip/963.html #更新防火墙规则才会生效 firewall-cmd --reload
firewalld端口开放删除端口
查看所有打开的端口:
firewall-cmd --zone=public --list-ports
添加开放端口
firewall-cmd --zone=public --add-port=10828/tcp --permanent
批量开放端口
firewall-cmd --zone=public --add-port=100-500/tcp --permanent
删除端口
firewall-cmd --zone=public --remove-port=22/tcp --permanent
删除批量端口
firewall-cmd --zone=public --remove-port=100-500/tcp --permanent
检查开放端口
firewall-cmd --permanent --query-port=10828/tcp
#更新防火墙生效
firewall-cmd --reload
firewalld设置IP段白名单
#添加ip段到白名单宝塔8888端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="123.144.0.0/14" port protocol="tcp" port="8888" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="27.8.0.0/13" port protocol="tcp" port="8888" accept'
#添加ip段到白名单宝塔phpmysql的888开放管理
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="123.144.0.0/14" port protocol="tcp" port="888" accept'
#添加ip段到白名ssh10828端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="123.144.0.0/14" port protocol="tcp" port="10828" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="27.8.0.0/13" port protocol="tcp" port="10828" accept'
#删除白名单IP段端口22
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="123.144.0.0/14" port protocol="tcp" port="22"accept' #如删除端口10828
#更新防火墙
firewall-cmd --reload
firewalld防火墙策略位置查看
查看防火墙规则路径(只显示/etc/firewalld/zones/public.xml中防火墙策略)
里面的是firewalld设置的开放端口和白名单或者黑名单
注意此生效的规则会自动添加到iptables规则上,可通过iptables -L来检查是否生效
#查看防火请已经生效的规则
firewall-cmd --list-all
#查看所有的防火墙策略(即显示/etc/firewalld/zones/下的所有策略)
firewall-cmd --list-all-zones
#设置了一个规则需要更新防火强才会生效,更新防火墙
firewall-cmd --reload
systemctl restart firewalld.service
firewalld防火墙syn修改内核参数
防御syn攻击使用,参考 http://www.aiii.vip/893.html
文件路径修改
/etc/sysctl.conf
# 如果要马上应用配置文件里的设置生效:
sudo sysctl -p /etc/sysctl.conf
修改设置的syn提高防御
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 0
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 20
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 20
net.ipv4.tcp_timestamps = 1 net.ipv4.tcp_tw_recycle = 1
net.netfilter.nf_conntrack_tcp_timeout_close = 10
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 10
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 20
net.netfilter.nf_conntrack_tcp_timeout_last_ack = 20
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 10
清除firewalld配置,千万不要乱按下面的清除,记得清理浏览器缓存
[root@localhost /]# find /etc/firewalld/ -name *.xml -exec rm -rf {} \; #删除防火墙目录下的所有xml文件
[root@localhost /]# iptables -P INPUT ACCEPT # 确保iptables防火墙input为允许 非常重要
[root@localhost /]# iptables -F # 清除iptables 所有规则
firewall-cmd --reload #更新防火墙规则
firewall-cmd --list-all #查看防火墙规则清单
<service name="http"/>
firewall http/https 服务开启
firewall-cmd --query-service http ##查看http服务是否支持,返回yes或者no
firewall-cmd --add-service=http ##临时开放http服务
firewall-cmd --add-service=http --permanent ##永久开放http服务
firewall-cmd --reload ##重启防火墙生效
firewall-cmd --query-service https
firewall-cmd --add-service=https --permanent
firewall http的80端口如何关闭
如果想禁止国外,关闭防火墙80端口,添加到防火墙白名单访问
直接删除掉80端口,但是还是能访问的,如何去关闭
在/etc/firewalld/zones/public.xml 删除掉<service name="http"/> 才能完全关闭端口
<service name="dhcpv6-client"/>
<service name="http"/>
配置firewalld-cmd
查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
显示状态: firewall-cmd --state
查看所有打开的端口: firewall-cmd --zone=public --list-ports
更新防火墙规则: firewall-cmd --reload
查看区域信息: firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体
启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed
Iptables基本命令
firewall和iptables都是属于防火墙,通过内核的netfilter来实现,但是在实际centos7操作中
firewall的优先级明显要大于iptablesd的。
在firewall设置了开启或关闭端口,需要更新防火墙firewall-cmd --reload,这时候就会立即更新
到iptablesd里面。
iptables规则的查看和清除
https://blog.csdn.net/chengqiuming/article/details/70139629
https://blog.csdn.net/pingweicheng/article/details/80483107
#是否安装了iptables,显示版本号
iptables -V
#关闭iptables
service iptables stop
#启动iptables
service iptables start
#重启iptables
service iptables restart
保存命令行中设置的iptables规则到iptables文件中
方法1
service iptables save
方法2
/etc/rc.d/init.d/iptables save
#查看iptables规则
#方法1
iptables -L -n
#方法2
cat /etc/sysconfig/iptables
#方法3
iptables --list
#方法4
iptables-save
#清除iptables规则
iptables -F
共有 0 条评论