Linux学习笔记(三十二)iptables filter表案例、 iptables nat表应用

一、iptables filter表案例

需求:将80、20、21端口放行,对22端口指定特定的ip才放行

以下为操作方法:

vim  /usr/local/sbin/iptables.sh    //加入如下内容

#! /bin/bashipt="/usr/sbin/iptables"   //定义一个变量,写iptables的绝对路径
$ipt -F                //清空规则
$ipt -P INPUT DROP        //添加默认的INPUT规则
$ipt -P OUTPUT ACCEPT     //添加默认的OUTPUT规则
$ipt -P FORWARD ACCEPT    //添加默认的FORWARD规则
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT      //放行一些相关的通信,这一条加上防止一些小问题,以后写规则只需要修改之后的部分即可
$ipt -A INPUT -s 192.168.127.0/24 -p tcp --dport 22 -j ACCEPT  
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT

icmp示例

 iptables -I INPUT -p icmp --icmp-type 8 -j DROP   //可以ping通别人,别人ping不通自己,简单说就是禁止别人ping自己

二、iptables  nat表应用

A机器两块网卡ens33(192.168.127.133)、ens37(192.168.100.1),ens33可以上外网,ens37仅仅是内部网络,B机器只有ens37(192.168.100.100),和A机器ens37可以通信互联。
 需求1:可以让B机器连接外网
 A机器上打开路由转发 echo "1">/proc/sys/net/ipv4/ip_forward
 A上执行 iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
 B上设置网关为192.168.100.1
 需求2:C机器只能和A通信,让C机器可以直接连通B机器的22端口
 A上打开路由转发echo "1">/ proc/sys/net/ipv4/ip_forward
  A上执行iptables -t nat -A PREROUTING -d 192.168.133.130 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
 A上执行iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.133.130
 B上设置网关为192.168.100.1

以下为上面两个问题的具体操作

首先,在两个机器各增加一个网卡,链接方式都选LAN区段,然后将其中一台机器的原来的网卡禁用

自己随便添加一个,我这里叫China

,这时候A机器有两个网卡,一个可以连外网,一个是刚加的china网段(内网),B机器只有China网段的内网网卡

这时候A机器的ens37还没有ip

ifconfig ens37 192.168.100.1/24  //快速设置ip

B机器由于 禁用了可以连外网的网卡,现在无法远程登陆,只能去主机操作,同样给ens37设置ip

ifconfig ens37 192.168.100.100/24

设置完之后可以互相ping一下测试

A机器(A/B两个机器最好先 iptables -F (iptables -t nat -F)一下,我在最后遇到了主机B可以ping主机A 的两个我网卡ip,但是ping不通外网与192.168.127.1,最后是执行iptables -F 然后重新添加下面的规则才解决问题

echo "1">/proc/sys/net/ipv4/ip_forward  //此文件默认为0,改为1就是打开路由转发

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE  //让192.168.100.0/24 可以以ens33联网

B机器设置网关

route -n   //查看网关
route add  default gw 192.168.100.1   //设置网关为192.168.100.1
ping 192.168.127.133  //ping A机器的外网ip  测试可以ping通

这时候还不能连外网,需要设置下dns,

vi   /etc/resolv.conf

添加

nameserver 119.29.29.,29

再测试是否可以ping通外网

问题二:

首先清理A机器nat规则

iptables -t nat -F 
iptables -t nat -A PREROUTING -d 192.168.127.133 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22   //将192.168.127.133的1122端口的数据转发192.168.100.100:22端口
iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.127.133   //将192.168.100.100返回的数据转发到192.168.127.133

给B机器增加网关(之前已经做过,这里省略)

route add  default gw 192.168.100.1   //设置网关为192.168.100.1

这时候在xshell中登陆192.168.127.133的1122端口,成功登陆了B主机

扩展:

针对网段

iptables -I INPUT -m iprange --src-range 61.4.176.0-61.4.191.255 -j DROP

iptables限制syn速度

  1. iptables -A INPUT -s ! 192.168.0.0/255.255.255.0 -d 192.168.0.101 -p tcp -m tcp --dport 80 -m state --state NEW -m recent --set --name httpuser --rsource
  2. iptables -A INPUT -m recent --update --seconds 5 --hitcount 20 --name httpuser --rsource -j DROP

原理,每5s内tcp三次握手大于20次的属于不正常访问

其中192.168.0.0/255.255.255.0 为不受限制的网段, 192.168.0.101  为本机IP。
该iptables策略,可有效预防syn攻击,也可以有效防止机器人发垃圾帖。

原文地址:http://blog.51cto.com/13569831/2090043

时间: 2024-11-14 16:21:54

Linux学习笔记(三十二)iptables filter表案例、 iptables nat表应用的相关文章

马哥学习笔记三十二——计算机及操作系统原理

缓存方式: 直接映射 N路关联 缓存策略: write through:通写 write back:回写 进程类别: 交互式进程(IO密集型) 批处理进程(CPU密集型) 实时进程(Real-time) CPU: 时间片长,优先级低IO:时间片短,优先级高 Linux优先级:priority 实时优先级: 1-99,数字越小,优先级越低 静态优先级:100-139,数据越小,优先级越高 实时优先级比静态优先级高 nice值:调整静态优先级   -20,19:100,139   0:120 ps

【Unity 3D】学习笔记三十二:游戏元素——游戏光源

游戏光源 在3D游戏中,光源是一个非常具有特色的游戏组件.用来提升游戏画面质感的.如果没有加入光源,游戏场景可能就会显得很昏暗.在unity中提供了三种不同的光源类型:点光源,聚光灯,平行光. 点光源 顾名思义,点光源是从一个点向周围散发出光的光源,就像电灯一样.创建点光源在hierarchy视图中点击create--point light: 创建完以后,点击点光源对象,在右侧inspector视图中可以看到点光源的所有信息: type:光源的类型.有point(点光源),directional

linux学习笔记-第二十二课-LNMP环境搭建(一)

一.LNMP环境搭建前的准备 LNMP就是Linux系统下Nginx+MySQL+PHP这种网站服务器架构,所以需要下载mysql,php,与nginx这三套软件. MySQL : 32位 :http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-i686-icc-glibc23.tar.gz 64位 :http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-x86

linux学习笔记-第十二课-Shell脚本之正则表达式(一)

一.grep,egrep,fgrep 1)grep 格式:grep [选项] [模式] [文件名] 常用选项:-n:显示行号和匹配的行 -v:反向匹配 -c:不显示匹配的行,只显示匹配的行数 -i:忽略大小写 -r:递归搜索 -E:支持扩展正则表达式 -P:支持Perl正则表达式 -F:不支持正则表达式,将模式按字面意义匹配 示例: grep示例 说明 grep '\<Tom>\' file 显示包含单词Tom的行 grep 'Tom Jerry' file 显示包含'Tom Jerry'的行

Linux学习笔记(十二)--命令学习(用户创建、删除等)

通过上面的几章学习,我们对linux有了一些了解,现在我们再继续进行下去.... 我们习惯的windows 界面系统中,只要在界面里去下鼠标,填写等这些就可以完成了一个用户创建.删除.添加所属组等,那我们在linux里又是怎么操作的呢??? 下面在学习如何使用命令进行一系列的操作时,我们要先了解一些别的: 在linux系统里除了我们要新建的用户外,还有一些特定的用户,我们称呼它为:伪用户. -----------------------------------------------------

JAVA学习笔记(三十二)- 字符流 FileReader &amp; FileWriter

标题 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream;

Linux学习笔记(十二)usermod、passwd、mkpasswd

一.usermod修改用户信息 usermod -u   111   username   #修改用户 usermod -g   grp2 username      #修改用户组 usermod -d  /home/chinantfy2     username  #修改用户家目录 usermod -s  /sbin/nologin   username  #修改用户shell 一个用户可以属于多个组,但是gid只有一个 id  username可以查看用户uid与gid和所属组 usermo

Linux学习笔记&lt;三十&gt;——httpd配置

ASF:Apache Software Foundation       www.apache.org 开源项目 web:httpd           http://httpd.apache.org tomcat:应用程序服务器 hadoop:并行处理 httpd版本: 2.0稳定版本 2.2流行版本 2.4最新版本 httpd特性: 事先创建进程 按需维持适当的进程 模块化设计,核心比较小,各种功能都通过模块添加(包括php) 支持运行时配置,支持单独编译模块 支持多种方式的虚拟主机配置 虚

PHP学习笔记三十二【Exception】

<?php // $fp=fopen("a.txt","r"); // echo "ok"; if(!file_exists("a.txt")) { exit();//退出 } //使用die处理异常 if(!file_exists("a.txt")) { die("文件不存在");//打印提示再退出,不会再继续执行 // exit(); }else { } //用法2 file_

学习笔记三十二:音频流

奋斗之心人皆有之.--李叔同 本讲内容:播放音频 import java.io.*; import javax.sound.sampled.*; public class Text{ public static void main(String[] args) { //播放开战声音 AePlayWave apw=new AePlayWave("e:/tank.wav"); apw.start(); } } //播放声音的类 class AePlayWave extends Thread