济宁网站排名,免费的好看图片,wordpress网站扫描工具,wordpress 调用多媒体基本概念 什么是防火墙
在计算中#xff0c;防火墙是基于预定安全规则来监视和控制传入和传出网络流量的网络安全系统。该计算机流入流出的所有网络通信均要经过此防火墙。防火墙对流经它的网络通信进行扫描#xff0c;这样能够过滤掉一些攻击#xff0c;以免其在目标计算机…基本概念 什么是防火墙
在计算中防火墙是基于预定安全规则来监视和控制传入和传出网络流量的网络安全系统。该计算机流入流出的所有网络通信均要经过此防火墙。防火墙对流经它的网络通信进行扫描这样能够过滤掉一些攻击以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口。而且它还能禁止特定端口的流出通信封锁特洛伊木马。最后它可以禁止来自特殊站点的访问从而防止来自不明入侵者的所有通信
防火墙分为硬件防火墙和软件防火墙他们的优缺点
**硬件防火墙**拥有经过特别设计的硬件及芯片性能高、成本高(当然硬件防火墙也是有软件的只不过有部分功能由硬件实现所以硬件防火墙其实是硬件软件的方式) **软件防火墙**应用软件处理逻辑运行于通用硬件平台之上的防火墙性能比硬件防火墙低、成本低。 netfilter和iptables的关系
iptables中的五链四表 链的概念
iptables开启后数据报文从进入服务器到出来会经过5道关卡分别为prerouting(路游前)input输入output输出forward转发postrouting路由后 每一道关卡中有着一条条规则数据报文必须按顺序一个一个匹配这些规则这些规则串起来就像一条链所以我们把这些关卡叫做“链”
INPUT链当接收到防火墙本机地址的数据包(入站)时应用此链中的规则 OUTPUT链当防火墙本机向外发送数据包(出站)时应用此链中的规则 FORWARD链当接收到需要通过防火墙发送给其他地址的数据包(转发)时应用此链中的规则 PREROUTING链互联网进入局域网在对数据包作路由选择之前应用此链中的规则如DNAT POSTROUTING链局域网出互联网在对数据包作路由选择之后应用此链中的规则如SNAT。
其中中INPUT、OUTPUT链更多的应用在“主机防火墙”中即主要针对服务器本机进出数据的安全控制而FORWARD、PREROUTING、POSTROUTING链更多的应用在“网络防火墙”中特别是防火墙服务器作为网关使用时的情况。
表的概念主要熟记前两张表
虽然每一条链上有多条规则但有些规则的作用(功能)很相似多条具有相同功能的规则合在一起就组成了一个“表”iptables提供了四种“表”
**filter表主要用于对数据包进行过滤根据具体的规则决定是否放行该数据包(如DROP、ACCEPT、REJECT、LOG)所谓的防火墙其实基本上是指这张表上的过滤规则对应内核模块iptables_filter **nat表network address translation网络地址转换功能主要用于修改数据包的IP地址、端口号等信息(网络地址转换如SNAT、DNAT、MASQUERADE、REDIRECT)。属于一个流的包(因为包的大小限制导致数据可能会被分成多个数据包)只会经过这个表一次如果第一个包被允许做NAT或Masqueraded那么余下的包都会自动地被做相同的操作也就是说余下的包不会再通过这个表。对应内核模块iptables_nat
**mangle表拆解报文做出修改并重新封装主要用于修改数据包的TOS(Type Of Service服务类型)、TTL(Time To Live生存周期)指以及为数据包设置Mark标记以实现Qos(Quality Of Service服务质量)调整以及策略路由等应用由于需要相应的路由设备支持因此应用并不广泛。对应内核模块iptables_mangle **raw表是自1.2.9以后版本的iptables新增的表主要用于决定数据包是否被状态跟踪机制处理在匹配数据包时raw表的规则要优先于其他表对应内核模块iptables_raw。 我们最终定义的防火墙规则都会添加到这四张表中的其中一张表中。
表链关系
5条链(即5个关卡)中并不是每条链都能应用所有类型的表事实上除了Ouptput链能同时有四种表其他链都只有两种或三种表 规则的概念
iptables规则主要包含“条件动作”即匹配出什么条件规则后执行相对应的 动作 匹配条件即五元组 S_IPsource ip源ip S_PORTsource port源端口 D_IP: destination ip目标ip D_PORT: destination port目标端口 TCP/UDP第四层(传输层)协议
处理的动作
**ACCEPT**允许数据包通过**DROP**直接丢弃数据包不回应任何信息客户端只有当该链接超时后才会有反应**REJECT**拒绝数据包会给客户端发送一个数据包被丢弃的响应的信息**SNAT**S指Source源NAT(源地址转换)。在进入路由层面的route之后出本地的网络栈之前改写源地址目标地址不变并在本机建立NAT表项当数据返回时根据NAT表将目的地址数据改写为数据发送出去时候的源地址并发送给主机。解决私网用户用同一个公网IP上网的问题**MASQUERADE**是SNAT的一种特殊形式适用于动态的、临时会变的IP上**DNAT**D指Destination目的NAT解决私网服务端接收公网请求的问题。和SNAT相反IP包经过route之前重新修改目标地址源地址不变在本机建立NAT表项当数据返回时根据NAT表将源地址修改为数据发送过来时的目标地址并发给远程主机。可以隐藏后端服务器的真实地址**REDIRECT**在本机做端口映射**LOG**在/var/log/messages文件中记录日志信息然后将数据包传递给下一条规则。 除去最后一个LOG前3条规则匹配数据包后该数据包不会再往下继续匹配了所以编写的规则顺序极其关键。
DROP和REJECT执行的动作类似区别在于前者拒绝后不会给客户端响应数据包被丢弃只有在连接超时后客户端才会知道后者会给客户端响应数据包被丢弃个人观点后者人性化点那么要记住这个区别可以从其本身的意思drop是丢弃顾名思义是直接扔掉不打任何招呼只有当事人后来才可能发现reject是拒绝那么这就需要双方当场就说明意思。所以说这两者就类似于谈恋爱的俩人男方或者女方给对方送花吧想想就明白了。
iptables的命令操作
service命令是用于启动Linux的进程的(参见[这里](https://www.xiebruce.top/782.html))但在这里是例外service iptables start并没有启动一个进程你无法用ps aux | grep iptables的方式看到一个叫iptables的进程你只能用service iptables status去查看它的状态。
所以iptables其实不能叫“服务”因为它并没有一个“守护进程”其实iptables只是相当于一个客户端工具真正的防火墙是Linux内核中的netfilter由于netfilter是内核功能用户无法直接操作iptables这个工具是提供给用户设置过滤规则的但最终这个过滤规则是由netfilter来执行的。
查询规则 常用选项
-L: list的缩写list我们通常翻译成列表意思是列出每条链上的规则因为多条规则就是一个列表所以用-L来表示。-L后面还可以跟上5条链(POSTROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING)的其中一条链名注意链名必须全大写如查看“INPUT链”上的规则:iptables -L INPUT不指定的话就是默认查看所有链上的所有规则列表
Chain INPUT: INPUT链上的规则同理后面的“Chain FORWARD”、“Chain OUTPUT”分别是FORWARD链和OUTPUT链上的规则(policy ACCEPT): 表示默认策略是接受即假如我没设置那就是允许只有我设置哪个不允许才会不允许示例中是安装iptables后的默认规则由于默认是ACCEPT你规则也设置为ACCEPT按道理来说是没什么意义的因为你不设置也是ACCEPT呀但事实上是为了方便修改为REJECT/DROP等规则说白了就是放在那要设置的时候我们就可以直接修改target: 英文意思是“目标”但该列的值通常是动作比如ACCEPT(接受)、REJECT(拒绝)等等但它确实可以是“目标”。
-t前面-L不是列出所有链的规则列表吗为什么没有PREROUTING和POSTROUTING链呢因为有默认参数-tt是table的缩写意思是指定显示哪张“表”中的规则(前面说过iptables有四种表)iptables -L其实就相当于iptables -t filter -L即相当于你查看的是“filter”表中的规则。而根据前面的讲解filter表只可用于INPUT、FORWARD、OUTPUT三条链中这就是为什么iptables -L不显示PREROUTING链和POSTROUTING链的原因。
-n: numeric的缩写numeric意思是数字的数值的意思是指定源和目标地址、端口什么的都以数字/数值的方式显示否则默认会以域名/主机名/程序名等显示该选项一般与-L合用因为单独的-n是没有用的(没有-L列表都不显示所以用-n就没有意义了)。
-v: 在Linux命令里一般都是指“verbose”这个词的意思是是“冗余的啰嗦的”即输出更加详细的信息
--line-numbers: 如果你想列表有序号可以加上该选项iptables -nvL --line-numbers
添加规则
我们可以向某条链中的某个表的最前面添加纪录即“插入”用到选项-I即“insert”同时也可以向某条链中的某个表的最后添加记录即“追加”用到选项-A即“append”在vi/vim的命令模式下按I是在光标所行的行首插入按A是在光标所在行的行尾插入跟这个在表头跟表尾插入非常像。
之所以有向前添加和向后添加是因为如果前面规则的是丢弃或拒绝那么后面的规则是不会起作用的而如果前面的是接受后面的是丢弃或拒绝则接受之后后面的丢弃或拒绝也是不会生效的。这里要记住就是规则的执行是有先后顺序的
例如向INPUT链的filter表中添加一条规则
iptables -t filter -I INPUT -s 192.168.2.22 -j DROP
-t: 是指定插入到哪个表中不写的话默认为“filter”表-I: 指定插入到哪条链中并且会在该链指定表(在这里是filter表)中的最前面插入(I:Input)如果用-A则是在最后插入(A:Append)。-s: 匹配源ips: source源。-j: jump跳转的意思后面可指定跳转的target(目标)比如自定义的链当然更多的是跳转到“action(动作)”中比如ACCEPT、DROP、REJECT等等。整个意思就是向iptables中的“INPUT”链(-I INPUT)的“filter”表(-t filter)的最前面(-I)添加一条记录这次记录会匹配源地址为“192.168.2.22”的请求(-s 192.168.2.22)并把该请求丢弃掉(-j DROP)。
删除iptables中的记录
1、根据编号删除** 前面说过查询iptables规则列表时添加--line-numbers简写成--line即可显示记录编号我们现在就可以根据这个编号来删除了 iptables -t filter -D INPUT 2 -t filter指定操作的表为filter表-D表示delete后面跟的两个参数第一个是链名第二个是要删除的规则的编号。
2、根据条件删除** iptables -t filter -D INPUT -s 10.37.129.2 -j DROP 删除INPUT链中的filter表中源地址为“10.37.129.2”并且动作为“DROP”的规则。
3、清空** -F: flush的缩写flush是“冲洗、冲掉”的意思在这里是清空的意思iptables -t filter -F INPUT代表清空“INPUT”链中“filter”表中的所有规则如果不指定链不指定表即直接用iptables -F则清空所有链中所有表的规则。
修改规则
用“替换”来描述会更好一点因为所谓的修改其实就是把整个规则替换成新的规则因为用到一个选项-Rreplace“替换” iptables -t filter -R INPUT 1 -s 10.37.129.3 -j ACCEPT
其中的-R就是replace即替换的意思整句命令意思是从INPUT链中的filter表中替换编号为1的规则编号1后面的-s 10.37.129.3 -j ACCEPT就是要替换成的新规则。
修改策略(policy)* iptables -P FORWARD DROP
-P: policy即策略。整个意思是把FORWARD链的默认规则设置为DROPiptables [-t table] -P chain target这个说明表示可以根据不同的表设置不同的限制 iptables -t raw -P OUTPUT ACCEPT iptables -t filter -P OUTPUT DROP
-ddestination用于匹配报文的目标地址可以同时指定多个ip(逗号隔开逗号两侧都不允许有空格)也可指定ip段 -p用于匹配报文的协议类型,可以匹配的协议类型tcp、udp、udplite、icmp、esp、ah、sctp等centos7中还支持icmpv6、mh -i用于匹配报文是从哪个网卡接口流入本机的由于匹配条件只是用于匹配报文流入的网卡所以在OUTPUT链与POSTROUTING链中不能使用此选项 -o用于匹配报文将要从哪个网卡接口流出本机于匹配条件只是用于匹配报文流出的网卡所以在INPUT链与PREROUTING链中不能使用此选项
iptables的扩展模块 tcp扩展模块
-p tcp -m tcp --sport用于匹配tcp协议报文的源端口可以使用冒号指定一个连续的端口范围(-p protocol-m:match,指匹配的模块很多人可能以为是module的缩写其实是match的缩写–sport: source port) -p tcp -m tcp --dport用于匹配tcp协议报文的目标端口可以使用冒号指定一个连续的端口范围(–dport 80:88
iptables -t filter -I OUTPUT -d 192.168.1.146 -p tcp -m tcp --sport 22 -j REJECT iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport 22:25 -j REJECT iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport :22 -j REJECT iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport 80: -j REJECT iptables -t filter -I OUTPUT -d 192.168.1.146 -p tcp -m tcp ! --sport 22 -j ACCEPT
此外tcp扩展模块还有-tcp-flags选项它可以根据TCP头部的“标识位”来匹配。
multiport扩展模块
-p tcp -m multiport --sports用于匹配报文的源端口可以指定离散的多个端口号,端口之间用”逗号”隔开; -p udp -m multiport --dports用于匹配报文的目标端口可以指定离散的多个端口号端口之间用”逗号”隔开 #示例如下 iptables -t filter -I OUTPUT -d 192.168.1.146 -p udp -m multiport --sports 137,138 -j REJECT iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport --dports 22,80 -j REJECT iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport ! --dports 22,80 -j REJECT iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport --dports 80:88 -j REJECT iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport --dports 22,80:88 -j REJECT