龙空技术网

在国产深度操作系统学习Linux防火墙

编程圈子 779

前言:

现在看官们对“ubuntu 20 防火墙”大概比较注重,你们都需要分析一些“ubuntu 20 防火墙”的相关内容。那么小编同时在网上收集了一些有关“ubuntu 20 防火墙””的相关内容,希望大家能喜欢,看官们快快来学习一下吧!

一、防火墙的概念1. 防火墙概念

防火墙技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。防火墙技术的功能主要在于及时发现并处理计算机网络运行时可能存在的安全风险、数据传输等问题,其中处理措施包括隔离与保护,同时可对计算机网络安全当中的各项操作实施记录与检测,以确保计算机网络运行的安全性,保障用户资料与信息的完整性,为用户提供更好、更安全的计算机网络使用体验。(来自百度百科)

Linux内核的防火墙功能有多次演化:

2.0.X: ipfwadm2.2.X: ipchains2.4.X: iptables2. 防火墙的功能网络安全屏障强化网络安全策略监控审计日志记录与事件通知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博客)

三、iptables1. 功能介绍

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的默认表,定义三个链:

INPUTFORWARDOUTPUT(2) nat表

定义端口映射的表,定义了三个链:

OUTPUTFREROUTINGPOSTROUTING(3) mangle表

负责修改数据包中特殊的路由标记,如TTL、TOS、MARK等,这个表定义了五个链:

INPUTFORWARDOUTPUTPREROUTINGPOSTOUTING(4) 防火墙的策略通行阻止4. COMMAND 命令(1) 链管理命令(立即生效)

-P 设置默认策略iptables -P INPUT (DROP|ACCEPT) 默认是关的/开的

-L 查看iptables规则列表-F flash , 清空规则链

iptables -t nat -F PREROUTINGiptables -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-servicessystemctl mask firewalld.servicesystemctl enable iptables.servicesystemctl enable ip6tables.servicesystemctl stop firewalld.servicesystemctl start iptables.servicesystemctl 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 ACCEPTiptables -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 -Fiptables 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 #启动firewallsystemctl stop firewalld.service  #停止firewallsystemctl disable firewalld.service #禁止firewall开机启动firewall-cmd --version              #查看版本systemctl status firewalld.service  #查看状态ORfirewall-cmd --statefirewall-cmd --get-active-zones     #获取启用的zonefirewall-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      #临时开放FTPfirewall-cmd --add-service=ftp --permanent     #永久开放FTPfirewall-cmd --remove-service=ftp --permanent  #永久关闭FTPsystemctl 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 denysudo 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端口示意图:

标签: #ubuntu 20 防火墙