| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Linux之Firewall防火墙、iptables、firewalld -> 正文阅读 |
|
[系统运维]Linux之Firewall防火墙、iptables、firewalld |
防火墙概念防火墙的核心是数据报文过滤 网络模块由内核实现,而过滤的实现必须在内核中,而用户是?? 无法直接访问内核,更别说把过滤规则放置到内核中,因此在TCP/IP协议栈上,选取了几个不同的位置,开放给用户空间的应用程序,该应用程序可以通过系统调用将规则发送到指定的内核位置。 工作流程:网口数据包由底层的网卡NIC接收,通过数据链路层的解包之后(去除数据链路帧头),就进入了TCP/IP协议栈 (本质就是一个处理网络数据包的内核驱动)和Netfilter混合的数据包处理流程中了。数据包的接收、处理、转发流程构成 一个有限状态向量机,经过一些列的内核处理函数、以及Netfilter Hook点,最后被转发、或者本次上层的应用程序消化 掉。 工作在主机或者网络的边缘,对进出的数据报文进行检查,监控,并且能够根据事先定义的匹配条件和规则做出相应的动作的 组件,机制或者系统 防火墙分类1. 从软、硬件形式上分为软件防火墙和硬件防火墙以及芯片级防火墙。 2.从防火墙技术分为 “包过滤型”和“应用代理型”两大类。 3.从防火墙结构分为 < 单一主机防火墙、分布式防火路由器集成式防火墙和墙三种。 4. 按防火墙的应用部署位置分为 边界防火墙、个人防火墙和混合防火墙三大类。 5. 按防火墙性能分为 百兆级防火墙和千兆级防火墙两类。 常见的访问控制包括:哪些ip可以访问服务器、可以使用哪些协议、哪些接口,是否通过数据包进行修改等? 防火墙的功能1.可以保护易受攻击服务; 2.控制内外网之间网络系统的访问; 3.集中管理内网的安全性,降低管理成本; 4.提高网络的保密性和私有性; 5.记录网络的使用状态,为安全规划和网络维护提供依据 包过滤防火墙包过滤防火墙原理包过滤防火墙的配置?第一,管理员必须明确企业网络的安全策略; 第二,必须用逻辑表达式清楚地表述数 据包的类型; 第三,必须用设备提供商可支持的语法重写这些表达式。 包过滤防火墙分类静态包过滤防火墙:利用静态包过滤规则建立的防火墙叫静态包过滤型防火墙 对于静态包过滤防火墙来说,决定接收还是拒绝一个数据包,取决于对数据包中IP头和协 议头等特定域的检查和判定,这些特定域包括: 1)数据源地址;2)目的地址;3)应用或协议;4)源端口号; 5)目的 端口号。 主要实现3个主要功能 1、接收每个到达的数据包; 2、对数据包采用过滤规则,对数据包的IP头和传输字段内容进行检 查。如果数据包的头信息与一组规则匹配,则根据该规则确定是转发还是丢弃该数据包。 3、如果没有规则与数据包头信息 匹配,则对数据包施加默认规则。默认规则可以丢弃或者接收所有数据包。默认丢弃数据包规则更加严格,而默认接收数 据包规则更加开放。通常,防火墙首先默认丢弃所有数据包,然后再逐个执行过滤规则,以加强对数据包的过滤。 静态包过滤防火墙的安全性: 无法区分真实的IP地址和伪造的IP地址,即无法防御IP地址欺骗攻击;由于静态包过滤防 火墙仅检查那些特定的协议头信息:1)源/目的IP地址;2)源/目的端口号(服务类型),因此黑客可能将恶意的命令或 数据隐藏在那些未经检查的头信息中,即“隐信道攻击”;缺少状态感知能力:一些需要动态分配端口的服务需要防火墙 打开许多端口,即管理员必须为静态包过滤规则打开所有的端口,因此增大了网络的安全性风险。 动态包过滤防火墙动态包过滤防火墙是就是后来的包状态监测(Stateful Inspection)技术,监控每一个连接,自动临时增加适当的规则。 ?iptables命令格式 ? ? ? ?-m:extend matches,这个选项用于提供更多的匹配参数,如:
?iptables安装
案例1、搭建web服务,并且能够访问#开放web服务端口 防火墙默认执行动作改为DROP [root@localhost ~]# iptables -P INPUT DROP [root@mail html]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT #列出规则表中的编号 #iptables? -L --line-numbers #删除刚刚添加的规则,并进行测试 [root@mail html]# iptables -D INPUT 1 2、禁止所有人ssh远程登陆该服务器[root@mail html]# iptables -I INPUT -p tcp --dport 22??? -s? 192.168.24.0/24?? ?-j REJECT? #删除刚刚添加的规则,并进行测试 [root@mail html]# iptables -D INPUT 1 3、禁止某个主机地址ssh远程登陆该服务器#拒绝144主机访问服务器的22端口 [root@mail ~]# iptables -I INPUT -p tcp -s 172.24.8.144 --dport 22 -j REJECT #开启服务器的web服务,并用144客户端进行访问 [root@mail html]# iptables -I INPUT -p tcp -s ?192.168.171.144 ?--dport 80 -j ACCEPT #查看所有规则 Iptables -t filter -P INPUT DROP Iptables -A INPUT -s 172.16.30.128 -d 172.16.30.200 -p tcp --dport 22 -j ACCEPT Netstat -lntup | grep 80? 查看开放的端口
练习1、添加iptables规则禁止用户访问域名为www.baidu.com的网站 iptables -I FORWARD -d www.baidu.com -j DROP 2、添加iptables规则禁止用户访问ip地址为20.20.20.20的网站 iptables -I FORWARD -D 20.20.20.20 -j DROP 3、添加iptables规则禁止IP地址为192.168.171.144的客户机上网 iptables -I FORWARD -s 192.168.171.144 -j DROP 4、添加iptables规则禁止192.168.171.0子网所有的客户机上网 iptables -I FORWARD -s 192.168.171.0/24 -j DROP 5、禁止192.168.171.0子网所有客户机使用ftp协议下载 iptables -I FORWARD -s 192.168.171.0/24 -p tcp --dport 21 -j DROP 6、禁止192.168.171.0子网所有客户机使用telnet协议连接远程计算机 iptables -I FORWARD -s 192.168.171.0/24 -p tcp --dport 23 -j DROP 7、强制所有的客户机访问192.168.171.1这台web服务器 iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.171.1:80 将内网转为公网将源地址转为公网地址111.112.113.114 Iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth1 -j SNAT --to-source? 111.112.113.114 8、禁止internat上的计算机通过ICMP协议ping到nat服务器的ppp0接口,但允许内网的客户机通过ICMP协议ping通 iptables -I INPUT -i ppp0 -p icmp -j DROP -i eth0:从这块网卡流入的数据 流入一般用在INPUT和PREROUTING上 -o eth0:从这块网卡流出的数据 流出一般在OUTPUT和POSTROUTING上 9、发布内网192.168.171.143主机的web服务,internet用户通过访问防火墙的IP地址即可访问该主机的web服务 iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.171.143:80 10、发布内网192.168.171.143主机的终端服务,internat用户通过访问防火墙的IP地址访问该主机的终端服务 iptables -t nat -I PREROUTING -p tcp --dport 3389 -j DNAT --to-destination 192.168.171.143:3389 #开放常用的端口iptables -A INPUT -p TCP --dport 80 -j ACCEPT iptables -A INPUT -p TCP --sport 80 -j ACCEPT iptables -A INPUT -p TCP --dport 25 -j ACCEPT iptables -A INPUT -p TCP --sport 25 -j ACCEPT iptables -A INPUT -p TCP --dport 110 -j ACCEPT iptables -A INPUT -p TCP --sport 110 -j ACCEPT iptables -A INPUT -p TCP --dport 143 -j ACCEPT iptables -A INPUT -p TCP --sport 143 -j ACCEPT #SSH iptables -A INPUT -p TCP --dport 59687 -j ACCEPT iptables -A INPUT -p TCP --dport 9900 -j ACCEPT iptables -A INPUT -p UDP --sport 53 -j ACCEPT iptables -A INPUT -p TCP --sport 53 -j ACCEPT #antispam iptables -A INPUT -p TCP --sport 6220 -j ACCEPT iptables -A INPUT -p TCP --sport 6610 -j ACCEPT iptables -A INPUT -p TCP --sport 6611 -j ACCEPT #SSL iptables -A INPUT -p TCP --dport 995 -j ACCEPT iptables -A INPUT -p TCP --dport 993 -j ACCEPT iptables -A INPUT -p TCP --dport 465 -j ACCEPT iptables -A INPUT -p TCP --dport 443 -j ACCEPT #NTP date iptables -A INPUT -p UDP --sport 123 -j ACCEPT #snmp iptables -A INPUT -i eth0 -p udp -s 125.76.229.215 --dport 161 -j ACCEPT iptables -A INPUT -i eth0 -p udp -s 60.195.249.83 --dport 161 -j ACCEPT iptables -P FORWARD DROP iptables -A INPUT -j REJECT iptables -P OUTPUT ACCEPT #防止同步包洪水(Sync Flood) iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT #防止各种端口扫描 iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT #Ping洪水攻击(Ping of Death) iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT #屏蔽 SYN_RECV 的连接 iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT FirewallD 使用服务(service) 和区域(zone)来代替 iptables 的规则(rule)和链(chain)。 firewalld的认识??1、firewalld提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具。 2、firewalld将网卡分为不同的区域(区域),这些区域的区别在于对待来访的用户及传输的数据包的默认动作的不同,通过制定一 些安全 策略从而保证系统在被访问或传输数据时的安全。 /usr/lib/firewalld????? service ssh.xml ? 默认情况下,有以下的区域(zone)可用: firewalld分为九个区域,含义如下:trust(信任):可接受所有的网络连接; home(家庭):用于家庭网络,仅接受ssh、mdns、ipp-client、samba-client或dhcpv6-client服务连接;????????????? internal(内部):用于内网络,仅接受ssh、ipp-client、mdns、samba-client或dhcpv6-client服务连接; work(工作区):用于工作区,仅接受ssh、ipp-client、dhcpv6-client服务连接; public(公共):用于公共区域的使用,仅接受ssh、dhcpv6-client服务,为firewalld的默认区域; external(外部区域):出去的ipv4的网络连接经过此区域的伪装和转发,只支持ssh服务; dmz(隔离区):仅接受ssh服务; block(限制):拒绝所有的网络服务; drop(丢弃):任何访问的网络数据包都会被丢弃,没有任何回应。 预定义服务/添加端口1 直接编辑配置文件/etc/firewalld/ 2 使用firewall-config图形工具 通过这个图形工具,可以更改和检查firewalld内存中的配置(Runtime),也可以修改磁盘上的持久配置(Permanent) 3 使用firewall-cmd命令 预定义服务 使用firewall-config来启动图形界面查看预定义服务,在有条件的情况下推荐使用 预定义服务可以通过查看firewalld.service(5)man手册 也可以通过查看目录了解更详细,该目录下面的禁止编辑 [root@localhost ~]# ls /usr/lib/firewalld/services/ 也可以查看该目录下的,该目录下的可以编辑 [root@localhost ~]# ls /etc/firewalld/services/ #使用命令查看所有支持的服务 [root@localhost ~]# firewall-cmd --get-services #添加服务 [root@mail ~]# firewall-cmd --add-service=http #设置服务超时时间,即服务的开启时间,单位秒 [root@mail ~]# firewall-cmd --add-service=http --timeout=10 ? 熟练和习惯使用tab进行选项补全和参数补全#启用紧急模式(所有的 规则出入都拒绝) [root@mail ~]# firewall-cmd --panic-on #禁用紧急模式 [root@mail ~]# firewall-cmd --panic-off #查询紧急模式状态 [root@mail ~]# firewall-cmd --query-panic #查看当前区域 [root@mail ~]# firewall-cmd --get-default-zone #查看所有支持的区域 [root@mail ~]# firewall-cmd --get-zones #设置trusted区域为当前区域 [root@mail ~]# firewall-cmd --set-default-zone=trusted #根据接口查询区域 [root@mail ~]# firewall-cmd --get-zone-of-interface=eno16777736 #添加当前源地址 [root@mail ~]# firewall-cmd --add-source=192.168.171.1/24 #添加一个端口 [root@mail ~]# firewall-cmd --add-port=8080/tcp #删除源地址 [root@mail ~]# firewall-cmd --remove-source=192.168.171.1/24 #删除端口 [root@mail ~]# firewall-cmd --remove-port=8080/tcp #以上都为运行时生效 #永久生效#添加规则 [root@mail ~]# firewall-cmd --permanent --add-service=http #重新加载 [root@mail ~]# firewall-cmd --reload #列出所支持的ICMP类型 [root@mail ~]# firewall-cmd --get-icmptypes #列出所有区域的详细信息 [root@mail ~]# firewall-cmd --list-all-zones #添加ssh服务进行测试 [root@mail ~]# firewall-cmd --permanent --add-service=ssh ??????????????????????????????????????????????????????????????????????????? --add-source=目标ip ????????????????????????????????????????????????????????? --remove-source=目标ip --add-source=ip? --zone=drop (指定不同区域对当前区域不生效) #列出指定区域的规则 [root@mail ~]# firewall-cmd --zone=trusted --list-all #启用伪装功能,但因为内核限制,只支持ipv4 [root@mail ~]# firewall-cmd --add-masquerade #添加禁止icmp报文 [root@mail ~]# firewall-cmd --add-icmp-block=echo-request 永久模式不直接影响运行时状态,只有在重启服务或者重载时生效 运行模式,直接模式不保存规则,在重载或者重启服务后必须再次提交,传递的参数和iptable一致 #添加一个列表 [root@mail ~]# firewall-cmd --direct permanent --add-chain ipv4 raw blacklist #给列表添加一个规则 [root@mail ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw PREROUTING 0 -s 192.168.171.0/24 -j blacklist #定义列表的动作 [root@mail ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 1 -j DROP |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 16:00:29- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |