一、防火墙的概念
1. 防火墙概念
防火墙技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。防火墙技术的功能主要在于及时发现并处理计算机网络运行时可能存在的安全风险、数据传输等问题,其中处理措施包括隔离与保护,同时可对计算机网络安全当中的各项操作实施记录与检测,以确保计算机网络运行的安全性,保障用户资料与信息的完整性,为用户提供更好、更安全的计算机网络使用体验。(来自百度百科)
Linux内核的防火墙功能有多次演化:
- 2.0.X: ipfwadm
- 2.2.X: ipchains
- 2.4.X: iptables
2. 防火墙的功能
- 网络安全屏障
- 强化网络安全策略
- 监控审计
- 日志记录与事件通知
3. 防火墙的关键技术
- 包过滤技术
- 加密技术
- 防病毒技术
- 代理服务器
4. 防火墙的划分
逻辑上分,防火墙可分为:
- 主机防火墙
- 网络防火墙
物理上分,可分为:
- 硬件防火墙,性能高、成本高;
- 软件防火墙,性能低、成本低。
二、包过滤Netfilter
Netfilter是Rusty Russell提出的 Linux2.4.x引入的内核防火墙框架,它提供一套的hook函数管理机制,就是在网络层放了几个HOOK点,用于抓取数据。它可以实现以下功能:
- 数据包过滤
- 数据包处理
- 地址伪装
- 透明代理
- 动态网络地址转换NAT
- 基于、地址的过滤和基于状态过滤
- 包速率限制
这些Hook点基于 IPv4 在协议栈定义的五个钩子位置:
- NF_IP_PRE_ROUTING:刚刚进入网络层的数据包通过此点(刚刚进行完版本号,校验
和等检测), 目的地址转换在此点进行; - NF_IP_LOCAL_IN:经路由查找后,送往本机的通过此检查点,INPUT包过滤在此点进行;
- NF_IP_FORWARD:要转发的包通过此检测点,FORWARD包过滤在此点进行;
- NF_IP_POST_ROUTING:所有马上便要通过网络设备出去的包通过此检测点,内置的源地址转换功能(包括地址伪装)在此点进行;
- NF_IP_LOCAL_OUT:本机进程发出的包通过此检测点,OUTPUT包过滤在此点进行。
钩子的返回值列表:
- NF_ACCEPT 继续传输;
- NF_DROP 丢弃数据报不再传输;
- NF_STOLEN 模块接管该数据,Netfilter放弃对数据包的处理;
- NF_QUEUE 对数据包进行排队;
- NF_REPEAT 再次调用该钩子函数,使用时要注意避免死循环。
Netfilter在系统中的位置如下图所示:
(图片来自csdn ruisenabc博客)
三、iptables
1. 功能介绍
iptables是一个客户端代理,通过它将用户的安全设定执行到对应的安全框架——netfilter中。netfilter是内核中的安全框架。在RedHat较早版本中iptables比较主流,使用netfilter/iptables 组成了Linux平台下的包过滤防火墙。
iptables工作流程:
(图片来源于博客园 liang2580博客)
iptables的规则:
- 从前到后执行
- 遇到匹配的规则就不再继续向下检查
- 遇到不匹配的规则就继续向下执行。
2. 术语
- 表(tables):链的容器
- 链(chains):规则的容器
- 规则(policy):包的通行规则定义
五个链:
- PREROUTING (路由前)
- INPUT (数据包流入口)
- FORWARD (转发管卡)
- OUTPUT(数据包出口)
- POSTROUTING(路由后)
3. iptables的表
(1) filter表
iptables的默认表,定义三个链:
- INPUT
- FORWARD
- OUTPUT
(2) nat表
定义端口映射的表,定义了三个链:
- OUTPUT
- FREROUTING
- POSTROUTING
(3) mangle表
负责修改数据包中特殊的路由标记,如TTL、TOS、MARK等,这个表定义了五个链:
- INPUT
- FORWARD
- OUTPUT
- PREROUTING
- POSTOUTING
(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) 规则管理命令
- -A 追加
- -I num : 插入
- -R num :Replays替换/修改第几条规则
- -D num : 删除第几条规则
(3) 查看管理命令 “-L”
附加子命令:
- -n 以数字方式显示ip,否则显示主机名
- -v 显示详细信息
- -vv 更详细
- -vvv 更更详细
- -x 在计数顺上显示精确值
- –line-numbers 显示规则的行号
- -t nat:显示所有的关卡的信息
(4) 匹配标准
通用匹配
- -s 源ip
- -d 目标ip
- -p 协议,TCP/UDP/ICMP
- -i eth0 从某网卡流入
- -o eth0 从某网卡流出
扩展匹配
-p tcp 扩展:
- –dport xx-xx 指定目标端口范围
- –dport xx 指定目标端口
- –sport 指定源端口
- –tcp-flags tcp的标志位
-p udp 扩展:
- –dport
- –sport
-p icmp 扩展:
- –icmp-type 8 匹配表求回显数据包
显式扩展-m
(5) -j ACTION
- – DROP 丢弃
- – REJECT 拒绝
- – ACCEPT 接受
- – DNAT
- – SNAT
- – MASQUERADE 源地址伪装
- – REDIRECT 重定向
- – MARK 打防火墙标记的
- – RETURN 返回
(6) 状态检测
端口的4种关系:
- NEW TCP新连接
- ESTABLISHED 已建立的连接
- RELATED 如TCP 20/21一来一去的端口
- INVALID 无法识别的
5. 常用操作
在CentOS7以上系统中,如果你想使用自己的 iptables 和 ip6tables 静态防火墙规则, 需要安装 iptables-services 并且禁用 firewalld ,并启用 iptables 和ip6tables服务。
静态防火墙规则配置文件:
- /etc/sysconfig/iptables
- /etc/sysconfig/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
四、FirewallD
1. 功能介绍
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 UFW
1. 启用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端口示意图:
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/15077.html