一、iptables基本管理

iptables运行前提:关闭firewalld防火墙再开启iptables,不然造成冲突。

基本指令:

1.部署iptables服务

yum –y install iptables-services

systemctl start iptables.service

systemctl status iptables.service

2.iptables的框架(4表5链)

iptables默认有4个表:filter表(数据过滤表)、nat表(地址转换表)、raw表(状态跟踪表)以及mangle表(包标记表),常用的有filter以及nat。

每个表下有5条链对应不同的过滤节点:INPUT链(入站规则),OUTPUT链(出站规则)、FORWARD链(转发规则)、PREROUTING链(路由前规则)以及POSTROUTING链(路由后规则)。

3.iptables命令的基本使用方法

基本格式:iptables [-t 表名] 选项 [链名] [条件] [-j 目标操作]

ps:

1.可以不指定表,默认为filter表;

2.可以不指定链,默认为对应表的所有链;

3.除非设置默认策略,否则必须指定匹配条件;

4.选项/链名/目标操作用大写字母,其余用小写

5.关于目标操作:

a.ACCEPT:允许通过/放行

b.DROP:直接丢弃,不给出任何回应

c.REJECT:拒绝通过,必要时会给出提示

d.LOG:记录日志,然后传给下一条规则

6.iptables的常用选项

7.举例说明

a.创建规则:[root@proxy ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT

//追加规则至filter表中的INPUT链的末尾,允许任何人使用TCP协议访问本机

b.查看iptables防火墙规则:

[root@proxy ~]# iptables -nL INPUT //仅查看INPUT链的规则

[root@proxy ~]# iptables -L INPUT --line-numbers //查看规则,显示行号

c.删除规则:

[root@proxy ~]# iptables -D INPUT 3 //删除filter表中INPUT链的第3条规则

[root@proxy ~]# iptables -F//清空filter表中所有链的防火墙规则

[root@proxy ~]# iptables -t nat -F //清空nat表中所有链的防火墙规则

d. 设置防火墙默认规则

[root@proxy ~]# iptables -t filter -P INPUT DROP

[root@proxy ~]# iptables -nL

Chain INPUT (policy DROP)

ps:设置前最好设置允许远程,不然设置默认为drop后远程会直接断开,实际应用中不设置为reject。

二、filter过滤和转发控制

2.1防火墙分类

实际应用中,根据防火墙需要保护的对象的不同,防火墙可以分为主机型防火墙与网络型防火墙。

主机型防火墙:主要保护的是服务器本机(过滤威胁本机的数据包);

网络防火墙:主要保护的是防火墙后面的其他服务器,如web服务器、ftp服务器等

2.2防火墙过滤条件及举例

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

举例:(针对主机型防火墙)

[root@proxy ~]# iptables -I INPUT -p tcp --dport 80 -j REJECT

拒绝任何通过tcp协议访问本机80端口;

[root@proxy ~]# iptables -I INPUT -s 192.168.2.100 -j REJECT

拒绝来自192.168.2.100主机访问

[root@proxy ~]# iptables -I INPUT -d 192.168.2.5 -p tcp --dport 80 -j REJECT

拒绝通过tcp协议访问192.168.2.5主机的80端口

[root@proxy ~]# iptables -A INPUT -s 114.212.33.12 -p tcp --dport 22-j REJECT

拒绝114.212.33.12使用tcp协议远程连接本机ssh(22端口)

2.3针对网络防火墙,需要开启lunux的路由转发功能

linux内核默认支持软路由功能,通过修改内核参数即可开启或关闭路由转发功能

[root@proxy ~]# echo 0 > /proc/sys/net/ipv4/ip_forward //关闭路由转发

[root@proxy ~]# echo 1 > /proc/sys/net/ipv4/ip_forward //开启路由转发

//注意以上操作仅当前有效,计算机重启后无效

[root@proxy ~]# echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf

//修改/etc/sysctl.conf配置文件,可以实现永久有效规则

举例:(网络防火墙过滤)

实验前需要搭建的测试环境:

环境测试:

1.确认不同网络的连通性:4.100能ping通2.100

2.web1上建立测试页面并启动web服务

3.未建立防火墙前client能访问web1的页面

实例:

[root@proxy ~]# iptables -I FORWARD -s 192.168.4.100 -p tcp --dport 80 -j REJECT

拒绝192.168.4.100 通过tcp协议访问其他网段的80端口;

[root@proxy ~]# iptables -I INPUT -p icmp -j DROP

设置其他主机无法ping本机,但存在本机也无法ping其他主机,因为本机ping其他主机时,其他主机的回应使用的也是icmp协议,会被丢弃,无法接受

解决方法:仅禁止入站的ping请求,不拒绝入站的ping回应包

[root@proxy ~]# iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

ps:关闭ICMP的类型,可以参考help帮助,参考命令如下:

[root@proxy ~]# iptables -p icmp --help

三、防火墙扩建规则

iptables在基本过滤条件的基础上海扩展了很多其他条件,在使用时需要使用-m参数来激活这些扩展功能,基本语法如下:

iptables 选项 链名 –m 扩展模块 –具体扩展条件 –j 目标操作

3.1根据mac地址的过滤

实际应用中,根据ip过滤的规则在对方修改ip后再次访问,防火墙并不能识别过滤,而由于一台主机仅对应一个mac地址,因此根据mac地址过滤则可以防止这种情况发生。

eg:

[root@proxy ~]# iptables -I INPUT -s 192.168.4.100 -p tcp --dport 22 -j DROP

//设置规则禁止192.168.4.100使用ssh远程本机,此时用4.100远程得不到回应

[root@client ~]# ifconfig eth0 192.168.4.101 //修改4.100的ip为4.101

[root@client ~]# ssh 192.168.4.5 //可以远程

[root@client ~]# ip link show eth0 //查看client的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

[root@proxy ~]# 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这台主机远程本机

3.2基于多端口设置过滤规则

[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所有的端口,“:”为范围;

3.3根据ip地址范围设置规则

[root@proxy ~]# 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-192.168.4.20 登录

[root@proxy ~]# iptables -A INPUT -p tcp --dport 22 -s 192.168.4.0/24 -j DROP

禁止从 192.168.4.0/24 网段其他的主机登录

四、配置snat实现共享上网

实际应用中,需要企业内部位于局域网的主机可以访问外网,可以通过配置snat策略实现共享上网访问。

环境继续使用刚刚的环境,在这里,我们设定192.168.2.0/24网络为外部网络,192.168.4.0/24为内部网络。

现在,在外部网络中有一台web服务器192.168.2.100,因为设置了网关,client已经可以访问此web服务器了。但,如果查看web1的日志就会发现,日志里记录的是192.168.4.100在访问网页。

我们需要实现的效果是,client可以访问web服务器,但要伪装为192.168.2.5后再访问web服务器(模拟所有位于公司内部的电脑都使用的是私有IP,希望访问外网,就需要伪装为公司的外网IP后才可以)。

实际操作如下:设置防火墙规则,实现IP地址的伪装(SNAT源地址转换)

1)确保proxy主机开启了路由转发功能

[root@proxy ~]# echo 1 > /proc/sys/net/ipv4/ip_forward //开启路由转发

2)设置防火墙规则,实现SNAT地址转换

[root@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主机查看日志

[root@proxy ~]# tail /var/log/httpd/access_log

.. ..

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防火墙入门的更多相关文章

  1. 快速入门linux系统的iptables防火墙 1 本机与外界的基本通信管理

    概述 iptables是一种运行在linux下的防火墙组件,下面的介绍可以快速的学习iptables的入门使用. 特点(重要) 它的工作逻辑分为 链.表.规则三层结构. 数据包通过的时候,在对应表中, ...

  2. Netfilter/iptables防火墙

    http://os.51cto.com/art/201107/273443.htm [51CTO独家特稿]Linux系统管理员们都接触过Netfilter/iptables,这是Linux系统自带的免 ...

  3. iptables 从入门到应用

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://powermichael.blog.51cto.com/12450987/1952 ...

  4. CentOS系统配置 iptables防火墙

    阿里云CentOS系统配置iptables防火墙   虽说阿里云推出了云盾服务,但是自己再加一层防火墙总归是更安全些,下面是我在阿里云vps上配置防火墙的过程,目前只配置INPUT.OUTPUT和FO ...

  5. 关闭SELinux和iptables防火墙

    1.关闭SELinux: 编辑SELinux配置文件: [root@Redis selinux]# vim /etc/selinux/config 修改SELINUX配置项为disable SELIN ...

  6. CentOS 7.0,启用iptables防火墙

    CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.service #停止fir ...

  7. 编译内核实现iptables防火墙layer7应用层过滤 (三)

    在前面的两篇文章中我们主要讲解了Linux防火墙iptables的原理及配置规则,想博友们也都知道iptables防火墙是工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙.以 ...

  8. [CentOs7]iptables防火墙安装与设置

    摘要 CentOS 7.0默认使用的是firewall作为防火墙,如果改为iptables防火墙,如何操作? 关闭firewall: systemctl stop firewalld.service ...

  9. iptables防火墙作为基本需求的配置

    企业中使用iptables防火墙:(一般不要在命令中输入规则) # Firewall configuration written by system-config-firewall# Manual c ...

随机推荐

  1. Python全栈开发之6、面向对象

    一.创建类和对象 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例 ...

  2. IT管理

    IT管理:变更管理:1/ 简单版,效率高类似数仓拉一个相关群,先和业务确定时间,然后在群里发通知.通知模板:@所有人 通知 :hive 计算集群停30分钟 原因: 当前数据量增多,hue 查询内存不足 ...

  3. 2019年9月训练(壹)数位DP (HDU 2089)

    开学之后完全没时间写博客.... HDU 2089 不要62(vjudge) 数位DP 思路: 题目给出区间[n,m] ,找出不含4或62的数的个数 用一个简单的差分:先求0~m+1的个数,再减去0~ ...

  4. js,bom,dom(相信我,你看不懂我写的)

    js dom bom 2种结合方式: 1.在body中加入script标签,<script type="text/javascript" >alert(" 向 ...

  5. Linux目录结构解释

    Linux的常用命令 cp: 用于文件复制的命令. cp file_1 file_2 copy_position -v: 复制的详细过程. -r: 复制目录. mv: 文件移动或文件重命名. mv f ...

  6. ubuntu切换root用户

    方法一:sudo su命令 方法二:sudo -i 方法三:su root

  7. Neo4j Cypher语法(一)

    目录 Cypher手册详解 1 背景 2 唯一性 3 语法 3.1 命名规则 3.2 表达式 3.3 变量与保留关键字 3.4 参数 3.5 操作符 3.6 模式 3.7 列表 Cypher手册详解 ...

  8. Sublime Text3 插件收录

    收录常用的Sublime Text3 插件, 方便安装使用,免得每次一个个的搜, 欢迎补充 安装方法直接打开install package 搜索安装 1. Babel 支持react jsx语法 2. ...

  9. SharePoint 创建页面布局

    一.前言 文章成体系,如果有不明白的地方请查看前面的文章. 二.目录 1.创建页面布局 2.首次使用页面布局 3.修改页面布局 4.使用页面布局 5.最终效果 1.创建页面布局 (1)打开设计管理器, ...

  10. O039、Unshelve Instance 操作详解

    参考https://www.cnblogs.com/CloudMan6/p/5529915.html   上一节我们 shelve Instance 到 Glance,本节学习如何通过 unshelv ...