十二、iptables基本管理
关闭firewalld,启动iptables服务
[root@proxy ~]# systemctl stop firewalld.service //关闭firewalld服务器
[root@proxy ~]# systemctl disable firewalld.service
[root@proxy ~]# yum -y install iptables-services //安装iptables-services并启动服务
[root@proxy ~]# systemctl start iptables.service
iptables框架(4表5链,区分大小写)
4表:nat表(地址转换表)、filter表(数据过滤表,出入规则)、raw表(状态跟踪表)、mangle表(包标记表)。
5链:INPUT链(入站规则) OUTPUT链(出站规则) FORWARD链(转发规则)
PREROUTING链(路有前规则,用于目标地址转换DNAT) POSTROUTING链(路由后规则,用于源地址转换SNAT)
规则(匹配即停止):ACCEPT:允许通过/放行 DROP:直接丢弃,不给出任何回应
REJECT:拒绝通过,必要时会给出提示 LOG:记录日志,然后传给下一条规则
REDIRECT:重定向、映射、透明代理 SNAT:源地址转换
DNAT:目标地址转换 MASQUERADE:IP伪装(NAT),后面不跟ip,实时监控网卡ip,是多少就转多少
iptables常用选项

I 默认插入第一行 后面跟数字可以精确插入某行
iptabels语法格式
[root@proxy ~]# iptables [-t 表名] 选项 [链名] [条件] [-j 目标操作]
[root@proxy ~]# iptables -t filter -I INPUT -p icmp -j REJECT //ping协议icmp
注意事项与规律:
可以不指定表,默认为filter表 可以不指定链,默认为对应表的所有链
除非设置默认策略,否则必须指定匹配条件 选项/链名/目标操作用大写字母,其余都小写
案例
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协议访问本机
[root@proxy ~]# 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
[root@proxy ~]# 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
[root@proxy ~]# iptables -D INPUT 3 //删除filter表中INPUT链的第3条规则
[root@proxy ~]# iptables -nL INPUT //查看规则,确认是否删除
[root@proxy ~]# iptables -F //清空filter表中所有链的防火墙规则
[root@proxy ~]# iptables -t nat -F //清空nat表中所有链的防火墙规则
[root@proxy ~]# iptables -t mangle -F //清空mangle表中所有链的防火墙规则
[root@proxy ~]# iptables -t raw -F //清空raw表中所有链的防火墙规则
[root@proxy ~]# iptables -t filter -P INPUT DROP //设置防火墙默认规则
[root@Proxy ~]# service iptables save //保存防火墙规则,不保存重启丢失
filter过滤和转发控制
根据防火墙保护的对象不同,防火墙可以分为主机型防火墙与网络型防火墙。
主机型防火墙,主要保护的是服务器本机(过滤威胁本机的数据包),input output 。
网络防火墙,主要保护的是防火墙后面的其他服务器,如web服务器、FTP服务器等,规则写在forward。

iptables防火墙规则的条件
iptables防火墙可以根据很多很灵活的规则进行过滤行为,具体常用的过滤条件:

可以!取反 !-p tcp -j ACCEPT 不是tcp的允许
主机型防火墙案例
[root@proxy ~]# iptables -I INPUT -p tcp --dport 80 -j REJECT
[root@proxy ~]# iptables -I INPUT -s 192.168.2.100 -j REJECT
[root@proxy ~]# iptables -I INPUT -d 192.168.2.5 -p tcp --dport 80 -j REJECT
[root@proxy ~]# iptables -I INPUT -i eth0 -p tcp --dport 80 -j REJECT
iptables -A INPUT -s 192.168.4.120 -j DROP //丢弃192.168.4.120发给本机的所有数据包
iptables -A INPUT -s 10.0.10.0/24 -j DROP //丢弃10.0.10.0/24网络中所有主机发送给本机的所有数据包
iptables -A INPUT -s 114.212.33.12 -p tcp --dport 22 -j REJECT //拒绝114.212.33.12使用tcp协议远程连接本机ssh(22端口)
网络型防火墙案例
[root@proxy ~]# echo 1 > /proc/sys/net/ipv4/ip_forward //开启路由转发,仅当前有效,计算机重启后无效,1启动0关闭
[root@proxy ~]# echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf //修改/etc/sysctl.conf配置文件,可以实现永久有效规则
[root@client ~]# nmcli connection modify eth0 ipv4.gateway 192.168.4.5 //添加网关
[root@client ~]# nmcli connection up eth0
[root@web1 ~]# nmcli connection modify eth1 ipv4.gateway 192.168.2.5
[root@web1 ~]# nmcli connection up eth1
[root@client ~]# ping 192.168.2.100 //测试网关生效
[root@web1 ~]# ping 192.168.4.100
[root@web1 ~]# yum -y install httpd //在web1主机上启动http服务
[root@web1 ~]# echo "test page" > /var/www/html/index.html
[root@web1 ~]# systemctl restart httpd
[root@client ~]# curl http://192.168.2.100 //没有防火墙的清空下client访问web服务,成功
iptables -I FORWARD -s 192.168.4.100 -p tcp --dport 80 -j DROP //设置proxy主机的防火墙规则,保护防火墙后面的Web服务器
[root@client ~]# curl http://192.168.2.100 //再次使用client客户端访问,失败
禁ping的相关策略
iptables -I INPUT -p icmp -j DROP //其他主机无法ping本机,但本机也无法ping其他主机
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP //仅禁止入站的ping请求,不拒绝入站的ping回应包
[root@proxy ~]# iptables -p icmp --help //关闭ICMP的类型,可以参考help帮助
防火墙扩展规则
iptables 选项 链名称 -m 扩展模块 --具体扩展条件 -j 动作

根据MAC地址过滤(必须要主机能识别对方的mac,否则无效)
[root@proxy ~]# iptables -F
[root@client ~]#iptables -I INPUT -s 192.168.4.100 -p tcp --dport 22 -j DROP //设置规则禁止192.168.4.100使用ssh远程本机
[root@client ~]# ifconfig eth0 192.168.4.101
[root@client ~]# ssh 192.168.4.5 //ip修改后规则失效,连接成功
[root@client ~]# ip link show eth0 //查看client的MAC地址,也可以nmap -sP 扫描对方mac地址
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 52:54:00:00:00:0b brd ff:ff:ff:ff:ff:ff
iptables -A INPUT -p tcp --dport 22 -m mac --mac-source 52:54:00:00:00:0b -j DROP //拒绝52:54:00:00:00:0b主机远程本机
基于多端口设置过滤规则
[root@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所有的端口, : 表示连续
根据IP地址范围设置规则
iptables -A INPUT -p tcp --dport 22 -m iprange --src-range 192.168.4.10-192.168.4.20 -j ACCEPT //允许从192.168.4.10-20登录
iptables -A INPUT -p tcp --dport 22 -s 192.168.4.0/24 -j DROP //禁止从 192.168.4.0/24 网段其他的主机登录
配置SNAT实现共享上网
效果:client伪装为192.168.2.5后访问web服务器
搭建内外网案例环境

按上图配置ip、网关,设定192.168.2.0/24网络为外部网络,192.168.4.0/24为内部网络。
client访问web1服务器web页,web1的日志记录的是192.168.4.100在访问网页。
设置防火墙规则,实现IP地址的伪装(SNAT源地址转换)
[root@proxy ~]# echo 1 > /proc/sys/net/ipv4/ip_forward //开启路由转发
iptables -t nat -A POSTROUTING -s 192.168.4.0/24–p tcp --dport 80 -j SNAT --to-source 192.168.2.5 //SNAT地址转换
[root@proxy ~]# tail /var/log/httpd/access_log //登陆web主机查看日志
.. ..
192.168.2.5 - - [12/Aug/2018:17:57:10 +0800] "GET / HTTP/1.1" 200 27 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)" //通过日志会发现,客户端是先伪装为了192.168.2.5之后再访问的web服务器!
十二、iptables基本管理的更多相关文章
- Redis教程(十二):服务器管理命令总结
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/140.html 一.概述: Redis在设计之初就被定义为长时间不间断运行 ...
- 《Linux内核设计与实现》读书笔记(十二)- 内存管理【转】
转自:http://www.cnblogs.com/wang_yb/archive/2013/05/23/3095907.html 内核的内存使用不像用户空间那样随意,内核的内存出现错误时也只有靠自己 ...
- springcloud(十二)-springcloud-config统一管理微服务配置
1.为什么要统一管理微服务配置 对于传统的单体应用,常使用配置文件管理所有配置.例如一个SpringBoot开发的单体应用,可将配置内容放在application.yml文件中.如果需要切换环境,可设 ...
- 第十二篇 SQL Server代理多服务器管理
本篇文章是SQL Server代理系列的第十二篇,详细内容请参考原文 在这一系列的上一篇,我们查看了维护计划,一个维护计划可能会创建多个作业,多个计划.你还简单地看了SSIS子系统,并查看了维护计划作 ...
- 三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)
摘自 http://blog.csdn.net/liujun13579/article/details/7773945 三十二.Java图形化界面设计--布局管理器之CardLayout(卡片布局) ...
- Linux学习总结(十二)—— CentOS用户管理:创建用户、修改用户、修改密码、密码有效期、禁用账户、解锁账户、删除用户、查看所有用户信息
文章首发于Linux学习总结(十二)-- CentOS用户管理,请尊重原创保留原文链接. 创建用户 useradd -g webadmin -d /home/zhangsan zhangsan pas ...
- [转帖]十二 个经典 Linux 进程管理命令介绍
https://www.cnblogs.com/swordxia/p/4550825.html 接了 http referer 头 没法显示图片 可以去原始blog 里面去查看. 随笔- 109 ...
- 【译】第十二篇 SQL Server代理多服务器管理
本篇文章是SQL Server代理系列的第十二篇,详细内容请参考原文 在这一系列的上一篇,我们查看了维护计划,一个维护计划可能会创建多个作业,多个计划.你还简单地看了SSIS子系统,并查看了维护计划作 ...
- abp(net core)+easyui+efcore实现仓储管理系统——EasyUI之货物管理四 (二十二)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
- Linux学习之CentOS(二十六)--Linux磁盘管理:LVM逻辑卷的创建及使用
在上一篇随笔里面 Linux学习之CentOS(二十五)--Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理,详细的讲解了Linux的动态磁盘管理LVM逻辑卷的基本概念以及LVM的工作原理, ...
随机推荐
- Windowsw核心编程 第13章 Windows内存结构
第1 3章 Wi n d o w s的内存结构 13.1 进程的虚拟地址空间 每个进程都被赋予它自己的虚拟地址空间.对于 3 2位进程来说,这个地址空间是4 G B,因为3 2位指针可以拥有从0 x ...
- c/c++ 指针数组 和 数组指针
看这个标题都要晕了,我们不妨把他拆开来理解,比较容易 指针数组:对象是一个数组,数组元素的类型是指针 指针数组的定义方式: 类型名 *数组名[数组长度]; 如: int *p[8]; 数组指针:对象是 ...
- 解决docker镜像无法删除的问题
发现问题 来自守护进程的错误响应:冲突:无法删除050f26b6caca(必须强制) - 映像在多个存储库中被引用 Error response from daemon: conflict: unab ...
- Mybatis学习之自定义持久层框架(七) 自定义持久层框架优化
前言 接上文,这里只是出于强迫症,凭借着半年前的笔记来把之前没写完的文章写完,这里是最后一篇了. 前面自定义的持久层框架存在的问题 Dao层若使用实现类,会存在代码重复,整个操作的过程模版重复(加载配 ...
- 手写一个最简单的IOC容器,从而了解spring的核心原理
从事开发工作多年,spring源码没有特意去看过.但是相关技术原理倒是背了不少,毕竟面试的那关还是得过啊! 正所谓面试造火箭,工作拧螺丝.下面实现一个最简单的ioc容器,供大家参考. 1.最终结果 2 ...
- 如何解决 shell 脚本重复执行的问题
在开发过程中,经常会使用shell脚本去完成定时备份的任务,普遍的做法是通过系统的定时任务定时执行备份脚本 设想这样一种场景,本次备份时间到了,自动执行备份脚本,如果备份比较耗时的话,会一直持续到下一 ...
- I/O流以及文件的基本操作
文件操作: 文件操作其实就是一个FIle类:我们学习文件操作就是学习File类中的方法: 文件基操: 第一部分:学习文件的基本操作(先扒源码以及文档) Constructor Description ...
- 使用 CSS perfer-* 规范,提升网站的可访问性与健壮性
文本将介绍 CSS 媒体查询中新增的几个特性功能: prefers-reduced-motion prefers-color-scheme prefers-contrast prefers-reduc ...
- [Linux] 删除find到的目录
参考 https://www.centos.bz/2017/09/linux%E7%B3%BB%E7%BB%9F%E4%B8%8Bfind%E5%91%BD%E4%BB%A4%E9%80%92%E5% ...
- SUSE12 操作系统安装
今天开发同事需要一个客户的SUSE环境,原来没有安装过这个操作系统,网络配置方面有些问题见下一篇 镜像:SLE-12-SP3-Server-DVD-x86_64-GM-DVD1.iso 安装过程: 选 ...