防火墙之iptables
Posted qxrm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了防火墙之iptables相关的知识,希望对你有一定的参考价值。
Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入和流出服务器的数据包进行很精细的控制.特别是它可以在一台非常低的硬件配置服务器上跑的非常好。iptables是linux2.4及2.6内核中集成的服务,其功能与安全性比其老一蜚ipfwadm,ipchains 强大的多,iptables主要工作在0SI七层的二、三、四层,如果重新编译内核,iptables也可以支持 7 层控制(squid代理+iptables)。
四表五链:
INPUT | FORWARD | OUTPUT | PREROUTING | POSTROUTING | |
---|---|---|---|---|---|
Filter(过滤流入流出主机的数据包) | √ | √ | √ | × | × |
NAT(负责网络地址转换,即来源与目的的ip地址和port的转换) | × | × | √ | √ | √ |
Managle(主要负责修改数据包中特殊的路由标记,如TTL、TOS、MARK等) | √ | √ | √ | √ | √ |
raw(RAW表可以应用在那些不需要做nat的情况下,以提高性能。如大量访问的web服务器,可以让80端口不再让iptables做数据包的链接跟踪处理,以提高用户的访问速度) | × | × | √ | √ | × |
说明: √表示对应的表有该链,× 表示无。
1、防火墙是一层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
2、如果匹配上了规则,即明确表明是阻止还是通过,此时数据包就不在向下匹配新规则了。
3、如果所有规则中没有明确表明是阻止还是通过这个数据包,也就是没有匹配上规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
1、尽可能不给服务器配置外网ip ,可以通过代理转发或者通过防火墙映射.并发不是特别大情况有外网ip,可以开启防火墙服务;
1)局域网上网共享(路由和网关),使用NAT的POSTROUTING链。
2)外部IP和端口映射为内部IP和端口(DMZ功能),使用NAT的PREROUTING链
2、FILTER功能,即防火墙功能FILTER INPUT FORWARD
参数 | 参数说明 |
---|---|
显示相关参数 | |
-n/--numeric | 以数字的方式显示地址或端口信息 |
-L/ --list | 列出一个链或所有链中的规则信息 |
--list-rules/-S | Print the rules in a chain or all chains |
--line-number | 当列出规则信息时,打印规则行号 |
-v | 显示详细信息,可以叠加 |
-h | 显示帮助信息 |
初始化相关参数 | |
iptables -F | 清除所有规则,不会处理默认的规则 |
iptables -X | 删除用户自定义的链 |
iptables -Z | 链的计数器清零(数据包计数器与数据包字节计数器) |
配置常用参数 | |
-t 表名称 | 指定配置哪个表,指定配置表名称。 |
--append/-A 链名称 | 附加或追加上相应规则策略,到指定链(链名称必须大写),默认将配置的规则插入到最后一条。 |
--check/-C | Check for the existence of a rule |
--insert/-I 链名称 | 插入相应规则策略,到指定链上,默认将配置的规则插入到第一条(可以根据规则序号插入到指定位置)--封IP地址使用。 |
--delete/-D 链名称 | 删除指定的规则(可以根据规则序号进行删除) |
--replace/-R | Replace rule rulenum (1 = first) in chain |
-P 接(大写)链名称 | 改变链上的最终默认规则策略 |
--new/-N | 创建新的用户定义链 |
-p 协议名称 |
指定规则的协议名称 all tcp udp icmp |
--dport | 指定匹配的目标端口信息 |
--sport | 指定匹配的源端口信息 |
-j 动作 | 匹配数据包后的动作 |
ACCEPT | 允许 |
DROP | 丢弃(没有响应) |
REJECT | 拒绝(回应请求者明确的拒绝) |
MASQUERADE | 伪装上网时使用 |
SNAT | 共享地址上网 |
DNAT | 目的地址改写 |
-i [!] --in-interface | 在INPUT链配置规则中,指定从哪一个网卡接口进入的流量(只能配置在INPUT链上) |
-o [!] --out-interface | 在OUTPUT链配置规则中,指定从哪一个网接口出去的流量(只能配置在OUTPUT链上) |
-s [!] --source | 指定源IP地址或源网段信息 |
-d [!] --destination | 指定目标IP地址或目标网段信息 |
扩展参数 | |
-m 模块 | 表示增加扩展,匹配功能扩展匹配(可以加载扩展参数) |
multiport | 实现不连续多端口扩展匹配 |
icmp | 使用icmp的扩展 |
state | 状态模块扩展 |
--icmp-type | 只有类型8是真正会影响ping,或者也可以采用any;了解很多icmp类型iptables -p icmp -h |
--limit n/second/minute/hour | 指定时间内的请求速率”n”为速率,后面为时间分别为:秒分 时 |
--limit-burst [n] | 在同一时间内允许通过的请求”n”为数字,不指定默认为5 |
--exact/-x | 扩展数字(显示精确数值) |
iptables -A INPUT -p tcp --dport 22 -j DROP # 禁止所有人访问22端口
iptables -I INPUT -p tcp --dport 22 -j ACCEPT # 恢复连接方法
iptables -I INPUT 2 -p tcp --dport 22 -j ACCEPT # 通过插入指定行号信息,指定将规则插入到第几行
iptables -D INPUT -p tcp --dport 22 -j ACCEPT # 删除指定规则
iptables -D INPUT 2 # 根据规则行号,删除相应的规则
只允许10.0.0.1的ip通过ssh连接这台服务器
iptables -I INPUT -s 10.0.0.1 -p tcp --dport 22 -j ACCEPT
配置实例二:禁止网段连入(禁止172.16.1.0网段访问172.16.1.188)
iptables -A INPUT -s 172.16.1.0/24 -d 172.16.1.188 -j DROP
配置实例三:禁止某个172.16.1.0网段访问服务器主机的22端口
iptables -A INPUT -s 172.16.1.0/24 -d 172.16.1.188 -p tcp --dport 22 -j DROP
iptables -A INPUT -s 10.0.0.0/24 -d 172.16.1.8 -j ACCEPT
iptables -A INPUT -p tcp --dport 22:80 -j DROP # 设置连续多端口控制策略
iptables -A INPUT -p tcp -m multiport --dport 22,80 -j DROP # 设置不连续多端口控制策略
iptables -A INPUT -p icmp --icmp-type 8
iptables -A INPUT -p icmp --icmp-type 8 -j DROP
iptables -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -p icmp -m icmp --icmp-type any -j ACCEPT
以上是关于防火墙之iptables的主要内容,如果未能解决你的问题,请参考以下文章