meleuo

iptables防火墙详解四表五链,centos7防火墙配置教程
iptables防火墙防火墙是指设置在不同网络或网络安全域之间的一系列部件的组合,它能增强机构内部网络的安全性。它...
扫描右侧二维码阅读全文
06
2019/03

iptables防火墙详解四表五链,centos7防火墙配置教程

iptables防火墙

防火墙是指设置在不同网络或网络安全域之间的一系列部件的组合,它能增强机构内部网络的安全性。它通过访问控制机制,确定哪些内部服务允许外部访问。它可以根据网络传输的类型决定IP包是否可以传进或传出内部网

防火墙通过审查经过的每一个数据包,判断它是否有相匹配的过滤规则,根据规则的先后顺序进行一一比较,直到满足其中的一条规则为止,然后依据控制机制做出相应的动作。如果都不满足,则将数据包丢弃,从而保护网络的安全

cenos 7的防火墙默认的是firewalld,但是可以修改为iptables防火墙

/用户态内核态
centos6iptablesnetfilter
centos7firewalldnetfilter

linux防火墙规则分类

自定义规则:详细自定义的规则可以过滤port 、ip 、mac、state 、icmp。
默认规则:兜底的规则,先匹配的是自定义规则,当自定义规则匹配不上是执行默认的规则,默认规则就2中DROP丢弃 & ACCEPT放行

防火墙的四表

111418_0315_7.png

表名作用
raw链路优化
mangle信息修改
nat地址转换 NAT
filter数据包过滤

表顺序:
表顺序:
raw > mangle > nat > filter
链顺序
入站:PREROUTING INPUT
出站:OUTPUT POSTROUTING
转发:PREROUTING FORWORD POSTROUTING
规则链内的匹配顺序
按顺序依次检查,匹配即停止(LOG策略例外)
若找不到相匹配规则,则按该链的默认策略处理

防火墙五链

承载防火墙的规则

链路名作用
INPUT负责数据包的入站
OUTPUT负责数据包的出站
FORWORD负责数据包的转发
PREROUTING路由前 DNAT    端口映射
POSTROUTING路由后 SNAT 内网上网

防火墙规则

请输入图片描述
数据包的常见控制类型
数据包的常见控制类型
ACCEPT:允许通过
DROP:直接丢弃,不给出任何回应
REJECT:拒绝通过,必要时会给出提示
LOG:记录日志信息,然后传给下一条规则继续匹配
SNAT:修改数据包源地址
DNAT:修改数据包目的地址
几个注意事项
不指定表名时,默认指filter表
不指定链名时,默认指表内的所有链
除非设置链的默认策略,否则必须指定匹配条件
选项、链名、控制类型使用大写字母,其余均为小写
例:
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
自定义规则,在filter表的input链上添加一条规则放通所有对本机TCP80端口的访问
iptables -t filter -A INPUT -j DROP
添加一条默认规则,拒绝所有连接(包括22)

iptables命令基本格式

iptables  [-t 表名]  选项  [链名]  [条件]  [-j 控制类型]    

添加一条规则放通8080端口

[root@VM_0_15_centos ~]# iptables -L -n -v
Chain INPUT (policy ACCEPT 72 packets, 4863 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:21 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:3313 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:3312 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:3311 
    3  1605 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:443 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 64 packets, 8057 bytes)
 pkts bytes target     prot opt in     out     source               destination         
[root@VM_0_15_centos ~]# iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
[root@VM_0_15_centos ~]# iptables -L -n -v
Chain INPUT (policy ACCEPT 27 packets, 2807 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:21 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:3313 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:3312 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:3311 
  216 21663 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:443 
   13  1198 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:8080 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 36 packets, 4129 bytes)
 pkts bytes target     prot opt in     out     source               destination         
[root@VM_0_15_centos ~]# 

防火墙匹配类型

请输入图片描述
通用匹配

可直接使用,不依赖于其他条件或扩展
包括网络协议、IP地址、网络接口等条件

隐含匹配

要求以特定的协议匹配作为前提
包括端口、TCP标记、ICMP类型等条件

显式匹配

要求以"-m 扩展模块"的形式明确指出类型
包括多端口、MAC地址、IP范围、数据包状态等条件

常见的通用匹配条件

协议匹配:-p [协议名]
地址匹配:-s [源地址]      - d [目的地址]
接口匹配:-i [入站网卡]   -o  [出站网卡]

iptables -A FORWARD -s 192.168.1.11 -j REJECT
拒绝来着192.168.1.11的数据包转发请求

iptables -I INPUT -s 10.20.30.0/24 -j DROP
丢弃10.20.30.0/24网段的所有数据

iptables -A FORWARD -p ! icmp -j ACCEPT
允许除了icmp协议外的所有的转发请求

iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
丢弃来自172.16.0.0/12网段访问eth1网卡的数据包

常用的隐含匹配条件

端口匹配:--sport 源端口、--dport 目的端口
ICMP类型匹配:--icmp-type ICMP类型

iptables -A FORWARD -s 192.168.4.0/24 -p udp --dport 53 -j ACCEPT
允许来着192.168.4.0/24网段53号端口的转发请求

iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
 放通ftp自动和被动模式的端口

iptables -A INPUT -p icmp --icmp-type 8 -j DROP
拒绝icmp的级别为8的数据包,达到禁别人ping自己的效果,但是

iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
放行目标主机未知回执

iptables -A INPUT -p icmp -j DROP
 兜底丢弃来自ICMP协议的所有数据包

常用的显式匹配条件

多端口匹配:-m multiport --sport      源端口列表
           -m multiport --dport    目的端口列表
IP范围匹配:-m iprange --src-range  IP范围
MAC地址匹配:-m mac –mac1-source MAC地址
状态匹配:-m state --state 连接状态

iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT
允许来着25,82,110,143端口的入站请求

iptables -A FORWARD -p tcp -m iprange --src-range 192.168.4.21-192.168.4.28 -j ACCEPT
 允许来着192.168.4.21-28范围内ip的转发请求

iptables -A INPUT -m mac --mac-source 00:0c:29:c0:55:3f -j DROP
拒绝来着mac地址为00:0c:29:c0:55:3f    入站请求

iptables -P INPUT DROP
 兜底规则拒绝所有

iptables -I INPUT -p tcp -m multiport --dport 80-82,85 -j ACCEPT
 允许来着80,81,82,85端口的入站请求

iptables -I INPUT -p tcp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
当属于tcp协议的入站请求且数据状态是是NEW(新建连接),ESTABLISHED(有数据传输的),RELATED(相关连的)。

iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

未雨绸缪

配置Linux防火墙很容易把自己墙掉!就算是Linux老鸟也有失误的时候,更不用说的是初识Linux的新手了,为了避免这类情况可以在配置好防火墙或者准备配置前执行这个把这个脚本放在后台执行,避免尴尬的事情发生

#!/bin/bash
sleep 600s
users=`w | wc -l`
if [ "$users" = "2" ]
  then  
        iptables-save
        service iptables stop
        systemctl iptables stop
  else  
        exit
fi

centos7关闭firewalld防火墙开启iptables步骤

systemctl stop firewalld
systemctl disable firewalld
yum -y install iptables-services
systemctl start iptables
systemctl enable iptables
Last modification:May 21st, 2019 at 03:32 pm
如果觉得我的文章对你有用,请随意赞赏

Leave a Comment