1.iptables基本管理
关闭firewalld,开启iptables服务
查看防火墙规则
追加、插入防火墙规则
删除、清空防火墙规则
 
1.1 关闭firewalld,启动iptables服务
1)关闭firewalld服务器
]# systemctl stop firewalld.service 
]# systemctl disable firewalld.service
2)安装iptables-services并启动服务
]# yum -y install iptables-services
]# systemctl start iptables.service
 
1.2 熟悉iptables框架
1)iptables的4个表(区分大小写):
iptables默认有4个表,nat表(地址转换表)、filter表(数据过滤表)、raw表(状态跟踪表)、mangle表(包标记表)。
 
2)iptables的5个链(区分大小写):
INPUT链(入站规则)
OUTPUT链(出站规则)
FORWARD链(转发规则)
PREROUTING链(路由前规则)
POSTROUTING链(路由后规则)
 
1.3 iptables命令的基本使用方法
1)iptabels语法格式
]# iptables [-t 表名]  选项  [链名]  [条件]  [-j 目标操作]
]# iptables -t  filter -I INPUT -p icmp -j REJECT
]# iptables -t  filter -I INPUT -p icmp -j ACCEPT
]# iptables -I  INPUT  -p icmp  -j REJECT
 
//注意事项与规律:
//可以不指定表,默认为filter表
//可以不指定链,默认为对应表的所有链
//如果没有找到匹配条件,则执行防火墙默认规则
//选项/链名/目标操作用大写字母,其余都小写
 
//目标操作:
// ACCEPT:允许通过/放行
// DROP:直接丢弃,不给出任何回应
// REJECT:拒绝通过,必要时会给出提示
// LOG:记录日志,然后传给下一条规则
iptables命令的常用选项如表-1所示。
2)iptables命令的使用案例
创建规则的案例:
]# iptables -t filter -A INPUT -p tcp -j ACCEPT
//追加规则至filter表中的INPUT链的末尾,允许任何人使用TCP协议访问本机
 
]# iptables -I INPUT -p udp -j ACCEPT
//插入规则至filter表中的INPUT链的开头,允许任何人使用UDP协议访问本机
 
]# iptables -I INPUT 2 -p icmp -j ACCEPT
//插入规则至filter表中的INPUT链的第2行,允许任何人使用ICMP协议访问本机
 
查看iptables防火墙规则
]# iptables -nL INPUT  //仅查看INPUT链的规则
target     prot opt source               destination
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0
 
]# iptables -L INPUT --line-numbers    //查看规则,显示行号
num  target     prot opt source         destination
1    ACCEPT     udp   --  anywhere     anywhere
2    ACCEPT     icmp --   anywhere     anywhere
3    ACCEPT     tcp  --   anywhere     anywhere
 
删除规则,清空所有规则
]# iptables -D INPUT 3
//删除filter表中INPUT链的第3条规则
 
]# iptables -nL INPUT //查看规则,确认是否删除
 
]# iptables -F
//清空filter表中所有链的防火墙规则
 
]# iptables -t nat -F
//清空nat表中所有链的防火墙规则
 
]# iptables -t mangle -F
//清空mangle表中所有链的防火墙规则
 
]# iptables -t raw -F
//清空raw表中所有链的防火墙规则
 
设置防火墙默认规则
]# iptables -t filter -P INPUT DROP
]# iptables -nL
Chain INPUT (policy DROP)
… …
 
2.filter过滤和转发控制
针对Linux主机进行出站、入站控制
利用ip_forward机制实现Linux路由/网关功能
在Linux网关上实现数据包转发访问控制
 
根据防火墙保护的对象不同,防火墙可以分为主机型防火墙与网络型防火墙,如图-1所示。
主机型防火墙,主要保护的是服务器本机(过滤威胁本机的数据包)。
网络防火墙,主要保护的是防火墙后面的其他服务器,如web服务器、FTP服务器等。
2.1 iptables防火墙规则的条件
iptables防火墙可以根据很多很灵活的规则进行过滤行为,具体常用的过滤条件如表-2所示。
表-2 iptables过滤条件
1)主机型防火墙案例(55主机,54,56客户机)
]# iptables -I INPUT -p tcp --dport 80 -j REJECT
]# iptables -I INPUT -s 192.168.4.54 -j REJECT
]# iptables -I INPUT -d 192.168.4.53 -p tcp --dport 80 -j REJECT
]# iptables -I INPUT -i eth0 -p tcp --dport 80 -j REJECT
 
]# iptables -A INPUT -s 192.168.4.56 -j DROP
//丢弃192.168.4.54发给本机的所有数据包
 
]# iptables -A INPUT -s 192.168.2.0/24 -j DROP
//丢弃192.168.2.0/24网络中所有主机发送给本机的所有数据包
 
]# iptables -A INPUT -s 114.212.33.12 -p tcp --dport 22 -j REJECT
//拒绝114.212.33.12使用tcp协议远程连接本机ssh(22端口)
 
2) 开启Linux的路由转发功能
1)Linux内核默认支持软路由功能,通过修改内核参数即可开启或关闭路由转发功能。
]# echo 0 > /proc/sys/net/ipv4/ip_forward  //关闭路由转发
]# echo 1 > /proc/sys/net/ipv4/ip_forward  //开启路由转发
 
//注意以上操作仅当前有效,计算机重启后无效
]# echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
//修改/etc/sysctl.conf配置文件,可以实现永久有效规则
 
2.2 网络型防火墙案例
一定要把proxy主机的路由转发功能打开。
表-3 实验拓扑
添加网关的命令
client ~]# nmcli connection modify eth0 ipv4.gateway 192.168.4.5
client ~]# nmcli connection up eth0
web1 ~]# nmcli connection modify eth1 ipv4.gateway 192.168.2.5
web1 ~]# nmcli connection up eth1
 
确认不同网络的联通性
client]# ping 192.168.2.100
web1 ~]# ping 192.168.4.100
 
在web1主机上启动http服务
web1 ~]# yum -y install httpd
web1 ~]# echo "test page" > /var/www/html/index.html
web1 ~]# systemctl restart httpd
 
没有防火墙的情况下client访问web服务
client ~]# curl http://192.168.2.100 //成功
设置proxy主机的防火墙规则,保护防火墙后面的Web服务器
proxy ~]# iptables -I FORWARD -s 192.168.4.100 -p tcp --dport 80 -j DROP
设置完防火墙规则后,再次使用client客户端访问测试效果
client ~]# curl http://192.168.2.100  //失败
 
2.2 禁ping的相关策略
 
1)默认直接禁ping的问题?
proxy ~]# iptables -I INPUT -p icmp -j DROP
//设置完上面的规则后,其他主机确实无法ping本机,但本机也无法ping其他主机
//当本机ping其他主机,其他主机回应也是使用icmp,对方的回应被丢弃
 
2)禁止其他主机ping本机,允许本机ping其他主机
proxy ~]# iptables -A INPUT -p icmp  \
> --icmp-type echo-request -j DROP
//仅禁止入站的ping请求,不拒绝入站的ping回应包
注意:关于ICMP的类型,可以参考help帮助,参考命令如下:
]# iptables -p icmp --help
 
3 防火墙扩展规则
根据MAC地址封锁主机
在一条规则中开放多个TCP服务
根据IP范围设置封锁规则
 
iptables在基本过滤条件的基础上还扩展了很多其他条件,在使用时需要使用-m参数来启动这些扩展功能,语法如下:
iptables 选项 链名称 -m 扩展模块 --具体扩展条件 -j 动作
 
3.1 根据MAC地址过滤
 
1)根据IP过滤的规则,当对方修改IP后,防火墙会失效
proxy ~]# iptables -F
proxy ~]# iptables -I INPUT -s 192.168.4.100 -p tcp --dport 22 -j DROP
//设置规则禁止192.168.4.100使用ssh远程本机
但是,当client主机修改IP地址后,该规则就会失效,注意因为修改了IP,对client主机的远程连接会断开,需要使用virt-manager开启虚拟机操作:
 
client ~]# ifconfig eth0  192.168.4.101
client ~]# ssh 192.168.4.5       //依然成功
 
根据MAC地址过滤,可以防止这种情况的发生
client ~]# ip link show eth0     //查看client的MAC地址
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:af:21:25 brd ff:ff:ff:ff:ff:ff
 
proxy ~]# iptables -A INPUT -p tcp --dport 22 \
> -m mac --mac-source  52:54:00:af:21:25 -j DROP
//拒绝52:54:00:af:21:25这台主机远程本机
 
3.2 基于多端口设置过滤规则
 
1)一次需要过滤或放行很多端口时会比较方便
proxy ~]# iptables -A INPUT -p tcp  \
> -m multiport --dports  20,22,25,80,110,143,16501:16800 -j ACCEPT
//一次性开启20,21,22,25,80,110,143,16501到16800所有的端口
提示,多端口还可以限制多个源端口,但因为源端口不固定,一般不会使用,限制多个源端口的参数是--sports.
 
3.3 根据IP地址范围设置规则
1)允许从 192.168.4.10-192.168.4.20 登录
proxy ~]# iptables -A INPUT -p tcp --dport 22  \
> -m iprange --src-range 192.168.4.10-192.168.4.20 -j ACCEPT
注意,这里也可以限制多个目标IP的范围,参数是--dst-range,用法与--src-range一致。
 
2)禁止从 192.168.4.0/24 网段其他的主机登录
proxy ~]# iptables -A INPUT -p tcp --dport 22 -s 192.168.4.0/24 -j DROP
 
4.配置SNAT实现共享上网
搭建内外网案例环境
配置SNAT策略实现共享上网访问
 
4.1 搭建内外网案例环
这里,我们设定192.168.2.0/24网络为外部网络,192.168.4.0/24为内部网络。
现在,在外部网络中有一台web服务器192.168.2.100,因为设置了网关,client已经可以访问此web服务器了。但,如果查看web1的日志就会发现,日志里记录的是192.168.4.100在访问网页。
web1 ~]# cat /var/log/httpd/access_log
192.168.4.100 - - [20/Feb/2019:18:57:46 +0800] "GET / HTTP/1.1" 200 10 "-" "curl/7.29.0"
我们需要实现的效果是,client可以访问web服务器,但要伪装为192.168.2.5后再访问web服务器(模拟所有位于公司内部的电脑都使用的是私有IP,希望访问外网,就需要伪装为公司的外网IP后才可以)。
 
4.2 设置防火墙规则,实现IP地址的伪装(SNAT源地址转换)
 
1)确保proxy主机开启了路由转发功能
proxy ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
 
2)设置防火墙规则,实现SNAT地址转换
proxy ~]# iptables -t nat -A POSTROUTING \
> -s 192.168.4.0/24 -p tcp --dport 80 -j SNAT --to-source 192.168.2.5
 
3)登陆web主机查看日志
proxy ~]# tail /var/log/httpd/access_log
.]# tail /var/log/httpd/access_log
192.168.2.5 - - [20/Feb/2019:18:19:03 +0800] "GET / HTTP/1.1" 403 3985 "-" "curl/7.29.0"
通过日志会发现,客户端是先伪装为了192.168.2.5之后再访问的web服务器!
 
4)扩展知识,对于proxy外网IP不固定的情况可以执行下面的地址伪装,动态伪装IP。
proxy ~]# iptables -t nat -A POSTROUTING \
> -s 192.168.4.0/24 -p tcp --dport 80 -j MASQUERADE
最后,所有iptables规则都是临时规则,如果需要永久保留规则需要执行如下命令:
proxy ~]# service iptables save

四十七.iptables防火墙 filter表控制 扩展匹配 nat表典型应用的更多相关文章

  1. 第二十四章 IPtables防火墙

    一.iptables防火墙基本概述 1.应用场景 1.主机安全2.端口转发/ip转发3.内部共享上网 2.iptables工作流程 1.配置防火墙规则可以添加在下面,也可以添加在前面,是有顺序的2.匹 ...

  2. Linux防火墙之iptables常用扩展匹配条件(二)

    上一篇博文我们讲到了iptables的一些常用的扩展匹配模块以及扩展模块的一些选项的说明,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12273755.htm ...

  3. Iptables防火墙规则使用梳理

    iptables是组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤.封包重定向和网络地址转换(NAT)等功能 ...

  4. Iptables防火墙规则使用

    iptables是组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤.封包重定向和网络地址转换(NAT)等功能 ...

  5. 网络安全之iptables防火墙

    1>各种传输方式到最后都会转化为能够通过网络发送的数据格式: 1>文本格式: 2>二进制格式:2>TCP三次握手连接,四次断开,连接时客户端是主动打开,服务器是被动 打开,处于 ...

  6. iptables filter表案例、iptables nat表应用 使用介绍

    第7周第4次课(5月10日) 课程内容: 10.15 iptables filter表案例10.16/10.17/10.18 iptables nat表应用 扩展1. iptables应用在一个网段 ...

  7. Linux防火墙之iptables基本匹配条件和隐式扩展匹配条件

    一.iptables的基本匹配条件 上一篇博文我们说到了iptables的基本工作原理.数据报文在内核的走向和管理链.管理规则.以及查看规则.导入和导出规则:回顾请参考https://www.cnbl ...

  8. Linux之iptables(四、网络防火墙及NAT)

    网络防火墙 iptables/netfilter网络防火墙: (1) 充当网关 (2) 使用filter表的FORWARD链 注意的问题: (1) 请求-响应报文均会经由FORWARD链,要注意规则的 ...

  9. iptables里filter表前面几个数字的意思

    一般的linux系统iptables配置文件filter表前面都带下面三行,但是具体是什么意思呢! *filter:INPUT ACCEPT [0:0]:FORWARD ACCEPT [0:0]:OU ...

随机推荐

  1. Windows上安装配置SSH教程(1)

    作者:feipeng8848 出处:https://www.cnblogs.com/feipeng8848/p/8559803.html 本站使用「署名 4.0 国际」创作共享协议,转载请在文章明显位 ...

  2. vue的生命周期 created mounted等

    生命周期: beforeCreate 在实例初始化之后,数据观测和event/watcher时间配置之前被调用 created 页面加载之前执行,在实例创建完成后被立即调用.执行顺序:父组件-子组件 ...

  3. Istio旨在成为容器化微服务的网格管道

    在精彩的软件容器世界中,当新项目涌现并解决你认为早已解决的问题时,这感觉就像地面在你的脚下不断地移动.在许多情况下,这些问题很久以前被解决,但现在的云原生架构正在推动着更大规模的应用程序部署,这就需要 ...

  4. Tomcat HTTP connector和AJP connector

    Tomcat服务器通过Connector连接器组件与客户程序建立连接,“连接器”表示接收请求并返回响应的端点.即Connector组件负责接收客户的请求,以及把Tomcat服务器的响应结果发送给客户. ...

  5. java实现HTTP请求 HttpUtil

    示例: package com.sensor.utils; import java.net.HttpURLConnection; import java.net.URL; public class H ...

  6. 如何导出robotframework的工程

    不知道是不是只有我一个小白,自己折腾了很久,也百度了很久,不知道怎么导出哇.现在来扫扫盲罗.我拿自己的项目举例:找到我的RF工程目录可以看到下面有3个项目,直接拷贝你想要的项目就ok啦,是不是so e ...

  7. 了解Scrum敏捷开发过程的优点

    Scrum 1. 我们的团队 1.1 团队名称 开发小分队&7号 1.2 团队成员 徐棒 彭康明 刘鹏芝 罗樟 王小莉 胡广健 沈兴艳 1.3 我在团队中位置 需求实现团队(负责将需求模块实现 ...

  8. 使用 JS 来动态操作 css ,你知道几种方法?

    JavaScript 可以说是交互之王,它作为脚本语言加上许多 Web Api 进一步扩展了它的特性集,更加丰富界面交互的可操作性.这类 API 的例子包括WebGL API.Canvas API.D ...

  9. ubuntu无法安装usb驱动

    第一步: 输入命令 lsusb 箭头指向的就是连接的手机 第二步: 输入命令,新建并打开文件 sudo gedit /etc/udev/rules.d/-android.rules [注意]如果提示没 ...

  10. VMnet、VMnet1和 VMnet8的区别是什么

    1.经常使用虚拟机的人在配置网络的时候在疑惑 虚拟的 网卡 VMnet1 和 VMnet8的差别是什么 如上面的图, 是安装了一台虚拟机,下图是安装了多个网卡以及虚拟机产生的虚拟网卡 VMware N ...