一、防火墙的概念1. 防火墙概念
防火墙技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。防火墙技术的功能主要在于及时发现并处理计算机网络运行时可能存在的安全风险、数据传输等问题,其中处理措施包括隔离与保护,同时可对计算机网络安全当中的各项操作实施记录与检测,以确保计算机网络运行的安全性,保障用户资料与信息的完整性防火墙设置在哪,为用户提供更好、更安全的计算机网络使用体验。(来自百度百科)
Linux内核的防火墙功能有多次演化:
2. 防火墙的功能3. 防火墙的关键技术4. 防火墙的划分
逻辑上分,防火墙可分为:
物理上分,可分为:
二、包过滤Netfilter
Netfilter是Rusty Russell提出的 Linux2.4.x引入的内核防火墙框架,它提供一套的hook函数管理机制,就是在网络层放了几个HOOK点,用于抓取数据。它可以实现以下功能:
这些Hook点基于 IPv4 在协议栈定义的五个钩子位置:
NF_IP_PRE_ROUTING:刚刚进入网络层的数据包通过此点(刚刚进行完版本号,校验
和等检测), 目的地址转换在此点进行;NF_IP_LOCAL_IN:经路由查找后,送往本机的通过此检查点,INPUT包过滤在此点进行;NF_IP_FORWARD:要转发的包通过此检测点,FORWARD包过滤在此点进行;NF_IP_POST_ROUTING:所有马上便要通过网络设备出去的包通过此检测点,内置的源地址转换功能(包括地址伪装)在此点进行;NF_IP_LOCAL_OUT:本机进程发出的包通过此检测点,OUTPUT包过滤在此点进行。
钩子的返回值列表:
Netfilter在系统中的位置如下图所示:
(图片来自csdn ruisenabc博客)
三、iptables1. 功能介绍
iptables是一个客户端代理,通过它将用户的安全设定执行到对应的安全框架——netfilter中。netfilter是内核中的安全框架。在RedHat较早版本中iptables比较主流,使用netfilter/iptables 组成了Linux平台下的包过滤防火墙。
iptables工作流程:
(图片来源于博客园 liang2580博客)
iptables的规则:
2. 术语
五个链:
PREROUTING (路由前)INPUT (数据包流入口)FORWARD (转发管卡)OUTPUT(数据包出口)POSTROUTING(路由后)3. iptables的表(1) filter表
iptables的默认表,定义三个链:
(2) nat表
定义端口映射的表,定义了三个链:
(3) mangle表
负责修改数据包中特殊的路由标记,如TTL、TOS、MARK等,这个表定义了五个链:
(4) 防火墙的策略4. COMMAND 命令(1) 链管理命令(立即生效)
-P 设置默认策略iptables -P INPUT (DROP|ACCEPT) 默认是关的/开的
-L 查看iptables规则列表-F flash , 清空规则链
iptables -t nat -F PREROUTING
iptables -t nat -F 清空nat表的所有链
-X 用于删除用户自定义的空链使用方法跟-N相同,但是在删除之前必须要将里面的链给清空-E 用来给用户自定义的链重命名
iptables -E oldname newname
-Z 清空链,及链中默认规则的计数器iptables -Z
(2) 规则管理命令(3) 查看管理命令 “-L”
附加子命令:
(4) 匹配标准通用匹配扩展匹配
-p tcp 扩展:
-p udp 扩展:
-p icmp 扩展:
显式扩展-m
(5) -j ACTION(6) 状态检测
端口的4种关系:
5. 常用操作
在CentOS7以上系统中,如果你想使用自己的 iptables 和 ip6tables 静态防火墙规则, 需要安装 iptables-services 并且禁用 firewalld ,并启用 iptables 和ip6tables服务。
静态防火墙规则配置文件:
(1) 服务的安装与启动、停止
yum install iptables-services
systemctl mask firewalld.service
systemctl enable iptables.service
systemctl enable ip6tables.service
systemctl stop firewalld.service
systemctl start iptables.service
systemctl start ip6tables.service
或:
service iptables status 查询防火墙状态
service iptables stop 停止
service iptables start 启动
service iptables restart 重启
chkconfig iptables off 永久关闭
chkconfig iptables on 永久关闭后启用
(2) 开启端口
开启端口
方法一
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT 写入修改
/etc/init.d/iptables save 保存修改
service iptables restart 重启防火墙,修改生效
方法二
vi /etc/sysconfig/iptables 打开配置文件加入如下语句:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT 重启防火墙,修改完成
(3) 关闭端口
方法一 命令行
/sbin/iptables -I INPUT -p tcp --dport 80 -j DROP 写入修改
/etc/init.d/iptables save 保存修改
service iptables restart 重启防火墙,修改生效
方法二 修改配置文件
vim /etc/sysconfig/iptables
# 打开配置文件加入如下语句:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j DROP
# 重启防火墙,修改完成
(3) 删除一个规则
iptables –D INPUT –p tcp –dport 22 –j DROP
# 或通过规则号删除
iptables -L -n --ine-numbers
# 根据打印出的表、链路规则号删除一个规则
iptables -D INPUT 1
(4) 其它端口设置
只允许指定ip访问指定的端口
iptables -A INPUT -s 74.82.164.142 -p tcp --dport 9306 -j ACCEPT
iptables -A INPUT -p tcp --dport 9306 -j DROP # 如果在iptables表最下面有一条拒绝所有规则以外的规则的话,则这行不用写。
允许某IP访问所有端口
-A INPUT -p tcp -s ip地址 --dport 1024/65535-j ACCEPT
-A INPUT -p tcp -s ip地址 -j ACCEPT
# 查看端口状态
/etc/init.d/iptables status
# 查看所有链路信息
iptables -L -n
# 显示规则号
iptables -L -n --line-number
# 只看nat链路
iptables -L -n -t nat
# 清除所有规则(默认是filter表),临时生效,重启后恢复
iptables -F
# 删除用户自定义的链(默认是filter表)
iptables -X
# 链的计数器清零(默认是filter表)
iptables -Z
# 清除所有规则(指定nat表)
iptables -t nat -F
iptables flush
四、FirewallD1. 功能介绍
CentOS7以后默认的防火墙换成了FirewallD(底层调用iptables),提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具。firewalld把网卡分到不同的区域防火墙设置在哪,共有9个默认区:
阻塞区域(block):任何传入的网络数据包都将被阻止。工作区域(work):相信网络上的其他计算机,不会损害你的计算机。家庭区域(home):相信网络上的其他计算机,不会损害你的计算机。公共区域(public):不相信网络上的任何计算机,只有选择接受传入的网络连接。隔离区域(DMZ):隔离区域也称为非军事区域,内外网络之间增加的一层网络,起到缓冲作用。对 于隔离区域,只有选择接受传入的网络连接。信任区域(trusted):所有的网络连接都可以接受。丢弃区域(drop):任何传入的网络连接都被拒绝。内部区域(internal):信任网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。外部区域(external):不相信网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。
FirewallD提供了对上面9个zone的配置文件,在/usr/lib/firewalld/zones/ 下:block.xml、dmz.xml、drop.xml、external.xml、 home.xml、internal.xml、public.xml、trusted.xml、work.xml。由于默认区域是public,默认情况下只有一个public.xml。 对另外zone操作时会自动生成对应的配置文件。
2. 常用操作
systemctl start firewalld.service #启动firewall
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --version #查看版本
systemctl status firewalld.service #查看状态
OR
firewall-cmd --state
firewall-cmd --get-active-zones #获取启用的zone
firewall-cmd --list-all #查看开放的端口和服务
firewall-cmd --zone=public --list-all #查看指定区域中开放的端口和服务
firewall-cmd --get-services #查看系统中可用服务
firewall-cmd --reload #重启firewalld,不用重启服务
firewall-cmd --complete-reload #需要重启服务
firewall-cmd --add-service=ftp #临时开放FTP
firewall-cmd --add-service=ftp --permanent #永久开放FTP
firewall-cmd --remove-service=ftp --permanent #永久关闭FTP
systemctl restart firewalld #让设定生效
firewall-cmd --query-service ftp #查看启用状态
firewall-cmd --add-port=3128/tcp #添加端口
要永久生效,使用firewall-cmd --permanent --add-port=3128/tcp
五、Ubuntu UFW1. 启用UFW
Ubuntu在它的发行版中,附带了一个基于iptables的防火墙配置工具:UFW。UFW默认不启用,所有端口默认全开放。启动ufw:
sudo ufw default deny
sudo ufw enable
使用示例
打开22端口
sudo ufw allow 22
或者
sudo ufw allow ssh
查看防火墙状态
sudo ufw status
关闭防火墙
sudu ufw disable
删除规则
sudo ufw delete allow 22
打开tcp端口
sudo ufw allow 22/tcp
六、在深度系统安装可视化防火墙管理工具
深度系统命令行使用防火墙和ubuntu类似,也可以安装基于UFW的可视化工具 gufw:
sudo apt install gufw -y
安装后到启动菜单可以找到:
添加80端口示意图:
———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击网站首页每天更新
站 长 微 信: aiwo51889