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

 

版权声明:
作者:wanghaha
链接:http://www.aiii.vip/949.html
来源:我的生活分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>