linux之防火墙

2018827

22:59

 

1、规则链

规则的作用在于对数据包进行过滤或处理,根据处理时机的不同,各种规则被组织在不同的“链”中规则链是防火墙规则/策略的集合

 

默认的5种规则链

INPUT:处理入站数据包

OUTPUT:处理出站数据包

FORWARD:处理转发数据包

POSTROUTING链:在进行路由选择后处理数据包

PREROUTING链:在进行路由选择前处理数据包

2、规则表

具有某一类相似用途的防火墙规则,按照不同处理时机区分到不同的规则链以后,被归置到不同的“表”中规则表是规则链的集合

 

默认的4个规则表

raw表:确定是否对该数据包进行状态跟踪

mangle表:为数据包设置标记

nat表:修改数据包中的源、目标IP地址或端口

filter表:确定是否放行该数据包(过滤)

 

3、规则表间的优先顺序

依次为:raw、mangle、nat、filter

 

raw(PREROUTING、OUTPUT)

mangle(INPUT、OUTPUT、FORWARD、        POSTROUTING、PREROUTING)

nat(POSTROUTING、PREROUTING、OUTPUT)

filter(INPUT、FORWARD、OUTPUT)

 

规则链间的匹配顺序

入站数据:PREROUTING、INPUT

出站数据:OUTPUT、POSTROUTING

转发数据:PREROUTING、FORWARD、POSTROUTING

 

规则链内的匹配顺序

按顺序依次进行检查,找到相匹配的规则即停止(LOG策略会有例外)

若在该链内找不到相匹配的规则,则按该链的默认策略处理

 

4、iptables命令的语法格式

iptables  [-t 表名]  管理选项  [链名]  [条件匹配]  [-j 目标动作或跳转]

 

几个注意事项

不指定表名时,默认表示filter表

不指定链名时,默认表示该表内所有链

除非设置规则链的缺省策略,否则需要指定匹配条件

 

案例:常用管理选项

iptables -t filter -A INPUT -p tcp -j ACCEPT

iptables -I INPUT -p udp -j ACCEPT

iptables -I INPUT 2 -p icmp -j ACCEPT

iptables -P INPUT DROP

iptables -L INPUT --line-numbers

 

iptables -D INPUT 2

iptables -F

iptables -t nat -F

iptables -t raw -N TCP_PACKETS

iptables -t raw -L

 

5、设置匹配数据包的条件

通用条件匹配

可直接使用,不依赖于其他的条件或扩展模块

包括网络协议、IP地址、网络接口等匹配方式

 

iptables -I INPUT -p icmp -j REJECT

iptables -A FORWARD -p ! icmp -j ACCEPT

iptables -A FORWARD -s 192.168.1.11 -j REJECT

iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP

iptables -A FORWARD -o eth1 -d 61.35.4.3 -j DROP

 

隐含条件匹配

一般需要以特定的协议匹配作为前提

包括端口、TCP标记、ICMP类型等匹配方式

 

iptables -A FORWARD -p tcp --dport 22 -j ACCEPT

iptables -A OUTPUT -p tcp --sport 20:80 -j ACCEPT

 

iptables -A INPUT -i eth0 -p icmp --icmp-type Echo-Request -j DROP

iptables -A INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT

 

或者:

iptables -A INPUT -i eth0 -p icmp --icmp-type 8 -j DROP

iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT

 

iptables -I INPUT -i eth1 -p tcp - -tcp-flags  SYN,RST,ACK  SYN -j REJECT

iptables -I INPUT -i eth1 -p tcp - -syn -j REJECT

 

显式条件匹配

需要使用“-m 扩展模块”的形式明确指定匹配方式

包括多端口、MAC地址、IP地址范围、数据包状态等匹配方式

 

MAC地址匹配:使用“-m mac”结合“--mac-source MAC地址”的形式

 

多端口匹配:使用“-m multiport”结合“--sports 源端口列表”或者“--dports 目标端口列              表”的形式,多个端口之间使用逗号“,”分隔,连续的端口也可以使用冒号“:”分隔

 

IP地址范围匹配:使用“-m iprange”结合“--src-range 源IP范围”或者“--dst-range 目标              IP范围” 的形式以“-”符号连接起始IP地址、结束IP地址

 

数据包状态匹配:        使用“-m state”结合“--state 状态类型”的形式,同时表示多种状态时以                     逗号“,”分隔。常见的数据包状态包括:NEW、ESTABLISHED、RELATED、INVALID

 

 

iptables -A FORWARD -m mac --mac-source 00:0C:29:27:55:3F -j DROP

iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT

iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP

 

iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP

iptables -A INPUT -p tcp -m state --state NEW -j DROP

iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

 

6、案例需求描述

配置入站链默认拒绝,其它链都是允许

iptables -F

iptables -P INPUT DROP

iptables -P OUTPUT ACCEPT

iptables -P FORWARD ACCEPT

 

允许入站接口是本地回环接口的任何数据

iptables -A INPUT -i lo -j ACCEPT

允许所有客户机访问Linux服务器的samba共享

iptables -A INPUT -p tcp --dport 139 -j ACCEPT

iptables -A INPUT -p tcp --dport 445 -j ACCEPT

 

允许响应所有客户机的dns请求

iptables -A INPUT -p udp --dport 53 -j ACCEPT

 

只允许一台客户机ping通服务器

iptables -A INPUT -p icmp -s 192.168.120.2 -j ACCEPT

 

7、需求描述

配置入站和出站链默认是拒绝,其它链都是允许

iptables -F

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD ACCEPT

 

禁止某一个客户机访问Linux服务器的共享(只能使用--tcp-flag实现)

iptables -A INPUT -p tcp --dport 139 - -tcp-flags  SYN  SYN -j DROP

iptables -A INPUT -p tcp --dport 445 - -tcp-flags  SYN  SYN -j DROP

 

但允许服务器访问那个客户机上的共享(只能使用--tcp-flag实现)

iptables -A OUTPUT -d 192.168.120.2 -p tcp --dport 139 - -tcp-flags  SYN  SYN -j ACCEPT

iptables -A OUTPUT -d 192.168.120.2 -p tcp --dport 445 - -tcp-flags  SYN  SYN -j ACCEPT

iptables -A INPUT -s 192.168.120.2 -p tcp --sport 139 - -tcp-flags  SYN  SYN -j ACCEPT

iptables -A INPUT -s 192.168.120.2 -p tcp --sport 445 - -tcp-flags  SYN  SYN -j ACCEPT

 

禁止服务器ping那台客户机,但允许那台客户机ping通服务器(只能使用--icmp-type)

iptables -A OUTPUT -d 192.168.120.2 -p icmp --icmp-type 8 -j DROP

iptables -A INPUT -s 192.168.120.2 -p icmp --icmp-type 8 -j ACCEPT

iptables -A OUTPUT -d 192.168.120.2 -p icmp --icmp-type 0 -j ACCEPT

 

8、需求描述

配置服务器出站链默认是拒绝,其它链都是允许

iptables -F

iptables -P INPUT ACCEPT

iptables -P OUTPUT DROP

iptables -P FORWARD ACCEPT

 

客户机不能访问服务器上任何资源

iptables -A INPUT -s 192.168.120.2 -j DROP

iptables -A INPUT -s 192.168.120.2 -j DROP

 

要求服务器能访问任意客户机上的所有资源,例如能ping通客户机,也可以ssh和http访问客户机(只能使用--state实现)

iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT

iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT

iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

你可能感兴趣的:(inux)