百度指数的网站,WordPress 微盘,wordpress使用memcached,网站建设费入如保入账iptables防火墙概念说明
开源的基于数据包过滤的网络安全策略控制工具。
centos6.9 --- 默认防火墙工具软件iptables
centos7 --- 默认防火墙工具软件firewalld#xff08;zone#xff09;
iptables主要工作在OSI七层的二、三、四层#xff0c;如果重新编译内核zone
iptables主要工作在OSI七层的二、三、四层如果重新编译内核iptables也可以支持7层控制(squid代理iptables)。 iptables工作流程规则匹配流程
iptables是采用数据包过滤机制工作的所以它会对请求的数据包的包头数据进行分析并根据我们预先设定的规则进行匹配来决定是否可以进入主机。 iptables工作流程小结
1、防火墙是一层层过滤的。实际是按照配置规则的顺序从上到下从前到后进行过滤的。
2、如果匹配上了规则即明确表明是阻止还是通过此时数据包就不在向下匹配新规则了。
3、如果所有规则中没有明确表明是阻止还是通过这个数据包也就是没有匹配上规则向下进行匹配直到匹配默认规则得到明确的阻止还是通过。
4、防火墙的默认规则是对应链的所有的规则执行完以后才会执行的最后执行的规则。 iptables四表五链概念 表tables 链chains Filter This is the default table (if no -t option is passed) 这是默认表 INPUT for packets destined to local sockets 对于指定到本地套接字的包即到达本地防火墙服务器的数据包 FORWARD for packets being routed through the box 路由穿过的数据包即经过本地防火墙服务器的数据包 OUTPUT for locally-generated packets 本地创建的数据包 NAT This table is consulted when a packet that creates a new connection is encountered 当遇到新创建的数据包连接时将参考这个表 PREROUTING for altering packets as soon as they come in 一进来就对数据包进行改变 OUTPUT or altering locally-generated packets before routing 本地创建的数据包在路由之前进行改变 POSTROUTING for altering packets as they are about to go out 在数据包即将出去时改变数据包信息 Managle This table is used for specialized packet alteration 这个表专门用于改变数据包 INPUT for packets coming into the box itself 进入到设备本身的包 FORWARD for altering packets being routed through the box 对路由后的数据包信息进行修改 PREROUTING for altering incoming packets before routing 在路由之前更改传入的包 OUTPUT for altering locally-generated packets before routing 本地创建的数据包在路由之前进行改变 POSTROUTING for altering packets as they are about to go out 在数据包即将离开时更改数据包信息 raw 此表用处较少可以忽略不计 四表 filter 作用主机防火墙 默认的表。*****
nat 作用端口或IP映射或共享上网*****
mangle 配置路由标记 ttl tos mark
raw 忽略 iptables的几个表以及每个表对应链的作用 filter表默认的表作用主机防火墙INPUT进入主机的数据包OUTPUT本地创建的数据包FORWARD路由穿过的数据包即经过本地防火墙服务器的数据包NAT表作用端口或IP映射或共享上网PREROUTING一进来就对数据包进行改变OUTPUT本地创建的数据包在路由之前进行改变POSTROUTING在数据包即将出去时改变数据包信息mangle表配置路由标记 ttl tos markINPUT进入到设备本身的包FORWARD对路由后的数据包信息进行修改PREROUTING在路由之前更改传入的包OUTPUT本地创建的数据包在路由之前进行改变POSTROUTING在数据包即将离开时更改数据包信息 filter表信息详细介绍 filter表 强调主要和主机自身相关真正负责主机防火墙功能的过滤流入流出流经主机的数据包filter表示iptables默认使用的表这个表定义了三个链chains ) 企业工作场景主机防火墙 INPUT 负责过滤所有目标地址是本机地址的数据包 通俗来说就是过滤进入主机的数据包 FORWARD 负责转发流经主机的数据包。起转发的作用和NAT关系很大后面会详细介绍 LVS NAT 模式net ipv4.ip_forwardl OUTPUT 处理所有源地址是本机地址的数据包 通俗的讲就是处理从主机发出去的数据包 NAT表信息详细介绍 NAT表 负责网络地址转换的即来源与目的IP地址和port的转换。 应用和主机本身无关一般用于局域网共享上网或者特殊的端□转换服务相关。 工作场票 1. 用于企业路由zebra )或网关iptables),共享上网POSTROUTING) 2. 做内部外部IP地址一对一映射dmz),硬件防火墙映射IP到内部服务器ftp服务(PREROUTING ) 3. WEB单个端口的映射直接映射80端口 PREROUTING )这个表走义了3个链nat功能相当于网络的acl控制。和网络交换机acl类似。 OUTPUT 和主机放出去的数据包有关改变主机发出数据包的目的地址。 PREROUTING 在数据包到达防火墙时进行路甶判断之前执行的规则作用是改变数据包的目的地址、目的端□等就是收信时根据规则重写收件人的地址。 例如把公网IP : XXX.XXX.XXX.XXX映射到局域网的XX.XX.XX.XX服务器上。 如果是web服务可以报80转换为局域网的服务器9000端□上 POSTROUTING 在数据包离开防火墙时进行路由判断之后执行的规则作用改变数据包的源地址源端口等。 写好发件人的地址要让家人回信时能够有地址可回。 例如。默认笔记本和虚拟机都是局域网地址在出网的时候被路甶器将源地址改为了公网地址。 生产应用局域网共享上网。 iptanles企业应用场景
1、主机防火墙filter表的INPUT链。
2、局域网共享上网(nat表的POSTROUTING链)。半个路由器NAT功能。
3、端口及IP映射(nat表的PREROUTING链)硬防的NAT功能。
4、IP一对一映射。 回到顶部 iptables工作原理 iptables基本语法
-I(大写i 插入) -A(追加) -R(替换) -D删除 -L列表显示
-I将会把规则放在第一行-A将会放在最后一行。
例子 iptables –t filter -A INPUT -p tcp --dport 22 -j DROP
iptables –t filter -A INPUT -p tcp --dport 3306 -j DROP
iptables –t filter -I INPUT -p tcp --dport 80 -j DROP
说明前两句就算是先执行第三句也会是第一行 查看防火墙规则
-L 查看iptables控制策略列表信息
-n 查看iptables控制策略列表里面的ip地址和端口信息不翻译以数字表示
--line-number 查看iptables策略信息时显示每条规则序号信息
-v 查看iptables策略详细信息进出口 [rootiptables ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT)
num target prot opt source destination 清除防火墙规则
-F 清除所有规则不会处理默认的规则
-X 删除用户自定义的链
-Z 清除链的计数器数据包计数器与数据包字节计数器
其余参数
-A 向指定链添加相应规则默认从规则号结尾进行添加添加最后
-I 向指定链中插入规则默认插入到第一条规则之上
-p 指定访问数据的协议类型tcp、udp、icmp
--dport 指定目标端口信息
--sport 指定源端口信息
-j 执行操作的动作ACCEPT、DROP丢弃、REJECT拒绝
-D 删除指定链里面的规则策略
-i 指定数据流量进入接口信息只能配置在INPUT链
-o 指定数据流量流出接口信息只能配置在OUTPUT链
-s 指定数据流量源地址或网段信息
-d 指定数据流量目标地址或网段信息
! 表示控制策略取反
-m 表示增加扩展匹配功能 参数说明
禁止10.0.0.0网段连入 iptables -t filter -A INPUT -i eth0 -s 10.0.0.0/24 -j DROP
可以不指定 -t filter 因为默认就是filter表 -i流量进入的接口从eth0进入 -s源地址 源地址不是10.0.0.150的单个IP的禁止连接 iptables -t filter -A INPUT -i eth0 -s 10.0.0.150 -j DROP 禁用icmp协议 iptables -t filter -A INPUT -p icmp --icmp-type 8 -i eth0 -s 10.0.0.0/24 -j DROP 禁止访问响应服务端口 以22端口为例 iptables -A INPUT -p tcp --dport 22 -j DROP 在默认表中的INPUT链中追加策略禁止22端口访问删除某规则 iptables -D INPUT -p tcp --dport 22 -j ACCEPT --- 删除指定规则
iptables -D INPUT 2 --- 根据规则行号删除相应的规则 禁止网段连入 例子禁止192.168.17.0网段访问10.0.0.7主机 iptables -A INPUT -s 192.168.17.0/24 -d 10.0.0.7 -j DROP 例子禁止某个192.168.17.0网段不能访问服务器主机的22端口 iptables -A INPUT -s 192.168.17.0/24 -d 10.0.0.7 -p tcp --dport 22 -j DROP 匹配指定协议以外的所有协议 表示取反 iptables -A INPUT ! –p tcp –s 10.0.0.0/24 -j DROP centos6写法 -p ! tcp centos5写法 设置连续多端口控制策略 iptables -A INPUT -p tcp --dport 22:80 -j DROP 设置不连续多端口控制策略 iptables -A INPUT -p tcp -m multiport --dport 22,80 -j DROP -m --- 表示增加扩展匹配功能 multiport 实现不连续多端口扩展匹配 对网络数据传输进行限速 iptables -I INPUT -s 10.0.0.7 -p icmp --icmp-type 8 -m limit --limit 6/min --limit-burst 5 -j ACCEPT
iptables -I INPUT -s 10.0.0.7 -p icmp --icmp-type 8 -j DROP--limit n/{second/minute/hour}:
解释指定时间内的请求速率”n”为速率后面为时间分别为秒 分 时--limit-burst [n]
解释在同一时间内允许通过的请求”n”为数字不指定默认为5 企业级防火墙部署案例 两种思想对于默认策略为允许状态防火墙规则就相当于黑名单对于默认策略为禁止状态防火墙规则就相当于白名单。 首先清空默认规则然后设置远程连接规则防止自己被踢出更改默认规则 iptables -F
iptables -X
iptables -Z
iptables -A INPUT -p tcp --dport 22 -j ACCEPT --- 防止被踢出门外
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT 被指安全白名单策略 iptables -A INPUT -i lo -j ACCEPT --- 让自己可以ping自己
iptables -A INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT --- 允许哪些网站服务可以访问
iptables -A INPUT -s 172.16.1.0/24 -j ACCEPT --- 允许架构内部服务进行访问
iptables -A INPUT -s 10.0.0.0/24 -j ACCEPT --- 允许一些合作企业的外网服务器进行访问 这几条就是最简单的企业防火墙部署 防火墙配置永久生效方法 第一种方式 [rootiptables ~]# /etc/init.d/iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
[rootiptables ~]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.7 on Wed Jan 17 16:12:23 2018
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [82:9632]
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -s 172.16.1.0/24 -j ACCEPT
COMMIT
# Completed on Wed Jan 17 16:12:23 2018 第二种方式 iptables-save /etc/sysconfig/iptables 状态机制配置 # 允许关联的状态包通过web服务不要使用FTP服务 NEW new说明这个包是我们看到的第一个包意思就是这是conntrack模块看到的某个连接的第一个包它即将被匹配了。比如我们看到一个SYN包是我们所留意的连接的第一个包就要匹配它。 表示新建立连接的数据包状态 ESTABLISHED ESTABLISHED已经注意到两个方向上的数据传输而且会继续匹配这个连接的包。处于ESTABLISHED状态的连接是非常容易理解的。只要发送并接到应答连接就是ESTABLISHED的了。一个连接要从new变为ESTABLISHED只需要接到应答包即可不管这个包是发往防火墙的还是要由防火墙转发的。ICMP的错误和重定向信息包也被看作是ESTABLISHED只要他们是我们所发出的信息的应答。 表示新建立连接数据包发送之后回复响应的数据包状态 RELATED RELATED是个比较麻烦的状态当一个连接和某个已处于ESTABLISHED状态的连接有关系时就会被认为是RELATED的了。换句话说一个连接要想是RELATED的首先要有一个ESTABLISHED的连接。这个ESTABLISHED连接再产生一个主连接之外的连接这个新的连接就是RELATED的了当然前提是conntarck模块要能理解RELATED。 表示借助已经建立的链路发送新的连接数据包 INVALID INVALID说明数据包不能被识别属于哪个连接或没有任何状态。有几个原因可以产生这种情况比如内存溢出收到不知属于哪个连接的ICMP错误信息。一般地我们DROP这个状态的任何东西因为防火墙任务这是不安全的东西。 无效无法识别的数据包 防火墙服务配置在FTP服务器上时需要配置以下策略 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables NAT实践过程 配置内网服务器利用iptables服务器外网网卡上网 route add default gw 172.16.1.200 --- 首先在内网服务器设置网关网关为拥有外网网卡的防火墙服务器内网地址 在防火墙服务器开启路由转发功能 [rootiptables ~]# vim /etc/sysctl.conf
[rootiptables ~]# sysctl -p
net.ipv4.ip_forward 1 实现内网访问外网的NAT映射 iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.200
-s 172.16.1.0/24 --- 指定将哪些内网网段进行映射转换
-o eth0 --- 指定在共享上网哪个网卡接口上做NAT地址转换
-j SNAT --- 将源地址进行转换变更
-j DNAT --- 将目标地址进行转换变更
--to-source ip地址 --- 将源地址映射为什么IP地址
--to-destination ip地址 --- 将目标地址映射为什么IP地址 iptables实现外网IP的端口映射到内网IP的端口 需求将网关的IP和9000端口映射到内网服务器的22端口 端口映射 10.0.0.88:9000 --172.16.1.8:22 实现命令 iptables -t nat -A PREROUTING -d 10.0.0.88 -p tcp --dport 9000 -i eth0 -j DNAT --to-destination 172.16.1.8:22
-d 10.0.0.8目标地址
-j DNAT 目的地址改写 效果连接88服务器的9000端口会自动跳转连接到8服务器的22端口 [e:\~]$ ssh 10.0.0.88 9000Connecting to 10.0.0.88:9000...
Connection established.
To escape to local shell, press CtrlAlt].Last login: Wed Jan 17 09:48:56 2018 from 172.16.1.88
[rootweb01 ~]# 网络安全学习路线 对于从来没有接触过网络安全的同学我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线大家跟着这个大的方向学习准没问题。 同时每个成长路线对应的板块都有配套的视频提供 需要网络安全学习路线和视频教程的可以在评论区留言哦~ 最后 如果你确实想自学的话我可以把我自己整理收藏的这些教程分享给你里面不仅有web安全还有渗透测试等等内容包含电子书、面试题、pdf文档、视频以及相关的课件笔记我都已经学过了都可以免费分享给大家 给小伙伴们的意见是想清楚自学网络安全没有捷径相比而言系统的网络安全是最节省成本的方式因为能够帮你节省大量的时间和精力成本。坚持住既然已经走到这条路上虽然前途看似困难重重只要咬牙坚持最终会收到你想要的效果。 黑客工具SRC技术文档PDF书籍web安全等可分享 结语 网络安全产业就像一个江湖各色人等聚集。相对于欧美国家基础扎实懂加密、会防护、能挖洞、擅工程的众多名门正派我国的人才更多的属于旁门左道很多白帽子可能会不服气因此在未来的人才培养和建设上需要调整结构鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”才能解人才之渴真正的为社会全面互联网化提供安全保障。 特别声明 此教程为纯技术分享本教程的目的决不是为那些怀有不良动机的人提供及技术支持也不承担因为技术被滥用所产生的连带责任本教程的目的在于最大限度地唤醒大家对网络安全的重视并采取相应的安全措施从而减少由网络安全而带来的经济损失