iptables 一些小练习

可以参考之前的一起食用 https://www.cnblogs.com/lovesKey/p/10909633.html

  1. 允许来自192.168.0.0/16网段的地址来访问我的192.168.1.7的sshd服务(22端口).

    1. 定义进来的:

      iptables -t filter -A INPUT -s 192.168.0.0/16 -d 192.168.1.7 -p tcp --dport 22 -j ACCEPT

    2. 定义出去的:

      iptables -t filter -A OUTPUT -s 192.168.1.7 -d 192.168.0.0/16 -p tcp --dport 22 -j ACCEPT

    3. 将默认策略都改成DROP:

      iptables -P INPUT DROP
      iptables -P OUTPUT DROP
      iptables -P FORWARD DROP
    4. 状态检测

      这是一种现实扩展(意味着我们要用-m 显示加载模块),用于检测回话之间的连接关系,我们可以实现会话功能的扩展

      什么是状态检测?

      对于tcp协议来说,它是一个有连接的协议,需要三次握手,第一次握手我们称之为NEW连接,而从第二次握手之后,ack都为1,这是正常的数据传输,tcp第二次第三次握手称为 已建立的连接ESTABLISHED,如:SYN=1 ACK=1 RST=1 这种我们无法识别,称为 无法识别的 INVALID

      在如比较特殊的,ftp协议 21是控制端口,20是数据端口.在主动模式下是这样的. 这样21和20端口就是有关系的,我们称为 RELATED

      这样我们就有了四种状态了.

      NEW

      ESTABLISHED

      RELATED

      INVALID

      2.1 练习题

      ​ 默认进来的拒绝,出去的允许,进来的只允许ESTABLISHED进来,出去只允许ESTABLISHED出去,默认规则都是用拒绝

      • 查看之前的规则位于第几行.[这里是因为上一个练习的原因才使用替换的,请注意. 默认你可以增加或插入不用改写的]

        iptables -L -n --line-number

      • 改写INPUT

        • iptables -R INPUT 2 -s 192.168.0.0/16 -d 192.168.1.7 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
        • iptables -R OUTPUT 1 -m state --state ESTABLISHED -j ACCEPT

    5. 允许自己ping别人,别人不能ping我们.

      1. icmp 协议 进来的 request 8(ping),出去的 response 0(响应) . 我需要标记为8出去,标记为0进来. 其中 8 可以用 echo-request 0 可以用echo-reply

        • iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
        • iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT

        小扩展:对于127.0.0.1比较特殊,我们需要明确定义它

        iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

        iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

    6. SNAT 源地址转换

      ​ 将所有192.168.0.0网段ip经过的时候全部转换成223.223.223.223 这个假设出来的外网ip:

      iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j SNAT --to-source 223.223.223.223

      1. 如果外网地址不确定,如拨号连接的每次都会变动的ip可以使用 MASQUERADE(动态地址伪装)

        1. iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j MASQUERADE

    地址伪装并不适用于所有的地方。

    1. DNAT 目标地址转换

      1. 数据流向是由外向内的,外面是客户端,里面是服务器端通过目标地址转换可以让外面的ip通过我们的外网ip来访问我们内部不同的服务器.

        1. iptables -t nat -A PREROUTING -d 223.223.223.223 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.7

      目标地址转换一定要在路由之前来进行转换,所以要在 PREROUTING

iptables一些练习的更多相关文章

  1. iptables

    一.在服务器上打开 22.80.9011端口: iptables -A INPUT -p tcp --dport 9011 -j ACCEPT iptables -A OUTPUT -p tcp -- ...

  2. 浅谈iptables 入站 出站以及NAT实例

    --------------本文是自己工作上的笔记总结,适合的可以直接拿去用,不适合的,适当修改即可!--------------- iptbales默认ACCEPT策略,也称通策略,这种情况下可以做 ...

  3. Failed to stop iptables.service: Unit iptables.service not loaded.

    redhat 7 [root@lk0 ~]# service iptables stop Redirecting to /bin/systemctl stop iptables.service Fai ...

  4. CentOS7安装iptables防火墙

    CentOS7默认的防火墙不是iptables,而是firewalle. 安装iptable iptable-service #先检查是否安装了iptables service iptables st ...

  5. linux iptables常用命令之配置生产环境iptables及优化

    在了解iptables的详细原理之前,我们先来看下如何使用iptables,以终为始,有可能会让你对iptables了解更深 所以接下来我们以配置一个生产环境下的iptables为例来讲讲它的常用命令 ...

  6. CentOS系统配置 iptables防火墙

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

  7. /etc/sysconfig/下找不到iptables文件解决方法

    时间:2014-12-19 01:17来源:csdn 作者:大智 举报 点击:5639次 本想做些防火墙策略.防火墙策略都是写在/etc/sysconfig/iptables文件里面的.可我发现我也没 ...

  8. docker通过iptables修改或新增镜像映射端口

    443 8088 22 端口是初始映射端口 [root@SERVER ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAM ...

  9. lnmp 预设iptables设置

    「LNMP」iptables初始配置   首先使用命令iptables -P INPUT ACCEPT允许所有连接,否则容易把自己关在外边.然后使用iptables -F;iptables -X;ip ...

  10. 关闭SELinux和iptables防火墙

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

随机推荐

  1. Vue组件全局/局部注册

    全局注册 main.js中创建 Vue.component('button-counter', { data: function () { return { count: 0 } }, templat ...

  2. Access-Control-Max-Age

    app.UseCors(builder => builder .AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() .AllowCreden ...

  3. Java Web-JQuery学习

    Java Web-JQuery学习 JQuery概念 是一个JS框架,可以用来简化JS的开发,设计宗旨是"write less,do more",即写更少的代码,做更多的事情.它封 ...

  4. POJ1475(Pushing Boxes)--bbffss

    题目在这里 题目一看完就忙着回忆童年了.推箱子的游戏. 假设只有一个箱子.游戏在一个R行C列的由单位格子组成的区域中进行,每一步, 你可以移动到相邻的四个格子中的一个,前提是那个格子是空的:或者,如果 ...

  5. 关于Vue-ElementUI修改默认样式不成功问题解决

    Element是一个很好用的组件库,但是有时候我们需要修改一些组件的样式以满足我们自己的需求. 我们用浏览器调试找到相应的class,在本地重写这个class时,发现修改不成功. 这是因为在Vue文件 ...

  6. 上传图片,图片过大压缩处理以及解决自拍时会出现图片横屏的bug修复、长按保存图片

    js部分:module.exports = { resize: function (file, callback, options) { //配置 options = Object.assign({ ...

  7. Java 之 File类(文件操作)

    一.概述 java.io.File 类是文件和目录路径名册抽象表示,主要用于文件和目录的创建.查找和删除等操作. File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法. 路径问题: ...

  8. linux查看日志报错

    查看运行时错误: tail  -f  catalina.out   | grep   -C   10  'Exception'          10是行数: 单引号里面的是要查找的关键字:

  9. laravel管理模型插入

    post控制器public function comment(Post $post,Request $request){ try{ if(empty($request->content)){ E ...

  10. 服务发现之consul理论整理_结合Docker+nginx+Tomcat简单部署案例

    目录 一.理论概述 服务发现的概念简述 consul简述 二.部署docker+consul+Nginx案例 环境 部署 三.测试 四.总结 一.理论概述 服务发现的概念简述 在以前使用的是,N台机器 ...