iptables备忘

默认的5种规则链
1) INPUT:处理入站数据包
2) OUTPUT:处理出站数据包
3) FORWARD:处理转发数据包
4) POSTROUTING:在进行路由选择后处理数据包
5) PREROUTING:在进行路由选择前处理数据包

根据数据流的方向,规则链间的匹配顺序
1) 入站数据:PREROUTING、INPUT
2) 出站数据:OUTPUT、POSTROUTING
3) 转发数据:PREROUTING、FORWARD、POSTROUTING

表(tables)提供特定的功能,iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理。规则表间的优先顺序依次为:raw、mangle、nat、filter。
1) filter表:一般的过滤功能。
2) nat表:用于nat功能(端口映射,地址映射等)。
3) mangle表:用于对特定数据包的修改。
4) raw表:优先级最高,主要用于决定数据包是否被状态跟踪机制处理,提高性能。

常见的目标动作
1) ACCEPT:放行数据包
2) DROP:丢弃数据包
3) REJECT:拒绝数据包,并返回一个错误提示
4) LOG:将符合规则的数据包的信息记录在日志中,并传递给下一条规则处理
5) 用户自定义链名:传递给自定义链内的规则进行处理
6) SNAT:修改数据包的源地址
7) DNAT:修改数据包的目标地址
8) MASQUERADE:修改数据包的源地址为外网动态获取的IP
9) REDIRECT:重定向数据包

iptables命令的语法
iptables的命令语法格式比较复杂,命令选项非常多,而且大小写严格区分。表名使用小写,链名使用大写,目标动作使用大写。
  

     iptables [-t 表名] 管理选项 [链名] [条件匹配] [-j 目标动作或跳转]

注意事项
1) 不指定表名时,默认表示filter表
2) 不指定链名时,默认表示该表内所有链
3) 除非设置规则链的缺省策略,否则需要指定匹配条件

举几个小例子:

iptables -t raw -nL
iptables -t mangle -nL   

iptables -t nat -nL      

iptables -t filter -nL   

iptables -nL

iptables -t filter -nL --line-number

iptables -t filter -A INPUT -s 192.168.10.111 -p icmp -j DROP

iptables -t filter -D INPUT 1        

iptables -t filter -I INPUT -s 192.168.10.111 -p icmp -j REJECT      //iptables规则是自上而下的顺序处理的!

iptables -t nat -A POSTROUTING -s 10.10.24.0/24 -p udp --dport 53 -o eth0 -j SNAT --to-source 192.168.10.112

iptables -t nat -I PREROUTING -p udp -s 10.10.24 .0/24 --dport 53 -j DNAT --to-destination 192.168.10.112

iptables -t nat -A POSTROUTING -s 10.10.24.0/24 -p tcp --dport 80 -j SNAT --to-source 192.168.10.112

iptables -t nat -nL --line-number -v

iptables -t filter -A INPUT -s 192.168.10.112 -p tcp --dport 22 -j LOG 

iptables -t filter -A INPUT -p icmp -j REJECT --reject-with icmp-host-unreachable

iptables -I INPUT 2 -s 10.1.1.0/24 -p tcp -m state --state NEW,ESTABLISHED,RELATED  -j  ACCEPT

iptables -s 10.1.1.10 -p icmp -m limit 10/minute --limit-burst 15 -j ACCEPT

iptables -A INPUT -p tcp --tcp-flags SYN,FIN,ACK  SYN -m limit --limit 2/minute --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --tcp-flags SYN,FIN,ACK  SYN  -j DROP

//实现每分钟允许2个新连接,最多不超过3个的方法有: ( Did it! )

iptables -I INPUT 1 -p tcp --tcp-flags SYN,FIN,ACK  SYN -m limit --limit 2/minute --limit-burst 3 -j ACCEPT
iptables -I INPUT 2 -p tcp --tcp-flags SYN,FIN,ACK  SYN  -j DROP

//另外一种写法
iptables -A INPUT  -p tcp --syn --dport 80 -m connlimit --connlimit-above 3 -j DROP

iptables -A INPUT -m -time --timestart 9:00 --timestop 18:00 --weekdays Fr --monthdays 22,23,24,25

//防洪水攻击
iptables -I FORWARD 1 -p tcp --syn -m limit --limit 1/s -j ACCEPT

//客户机访问 web服务器,如果需要记录日志的话,当然需要在web服务器上面进行日志记录
iptables -I INPUT -p tcp --dport 80 -j LOG --log-tcp-options --log-tcp-sequence
//如果需要在NAT 转发上面设置 IPTABLES日志,需要在 FORWARD链上面添加日志记录的规则!
。。。。。。

。。。还有很多~~

想更好滴研究 iptables! 可以看linux防火墙 这本书喔!

时间: 2024-09-13 23:02:25

iptables备忘的相关文章

redhat9安装jdk5、ruby和Erlang备忘

   今天费了一个下午安装了redhat9,并且安装了需要使用的jdk5.netbean.ruby和Erlang.做个备忘. 一.安装jdk5 1.到sun的网站上下载jdk5与netbean5.5的捆绑版本,注意要linux平台的 2.比如下载到/root/目录下,执行 chmod 755 jdk-1_5_0_12-nb-5_5_1-linux-ml.bin 然后执行: ./jdk-1_5_0_12-nb-5_5_1-linux-ml.bin 就会自动启动安装向导,一路选择确定下去就OK了.

在Eclipse中构建备忘单

Eclipse提供了一种用于显示迷你型指南的内置机制,称为备忘单(cheat sheet).备忘单可以快速而有效地指导您如何在Eclipse中执行包含多个步骤的过程,它显示在工作台的边角处,您可以容易且快速地查看它们. 本教程演示了如何为Eclipse构造备忘单.构造完毕之后,它们还可以运行在BEA Workshop Studio.BEA Workshop for WebLogic和其他任何Eclipse系统之上,或许能对您现有的工具和插件进行补充.示例下载中提供了3个准备好的备忘单,其中一个备

Oracle数据库如何手动恢复备忘日志

最近因为升级了Mac os x 10.10 Yosemite,突然前几天的一个晚上,开机发现就停留在开机界面了,看来BETA果然是不靠谱,然后想到自己这不前几天刚备份完吗,没事,TimeMachine是何等神器,二话不说直接恢复.但是恢复完,我后悔了,一来是忘了昨天晚上还加班呢,加班的成功保留成果所剩无几,关键我这才发现TimeMachine既然不备份虚拟机文件(虚拟机文件30G,估计直接给略过了吧),难怪每次都觉得备份那么快. 不过后悔也没用,重新搭开发环境吧.操作系统WIN7->开发工具VS

JDBC事务编程模型备忘

在Spring一统天下的情况下,JDBC快没有生存余地了.不过JDBC还是Java操作数据库的基础,现在Java项目中JDBC的应用快绝迹了,有必要对JDBC的事务编程模型做个象征性的总结. 下面是示例,保证代码可以编译,但不保证能运行,呵呵. import java.sql.*; /** * JDBC编程事务控制模型备忘 * * @author : leizhimin,2008-8-21 14:48:42.<p> */ public class JdbcTxText { public sta

服务器迁移之debian重新配置Web服务的一些细节备忘

这次服务系统采用的是最新的Debian 7.0,但是有几个细节的忽略导致我折腾了一番,我再这里再做个记录吧   之前配置Linux服务器时采用的是Debian系统一直很稳定,这次准备迁移到新的服务器环境上,好在以前的配置我在博客都做了备忘,所以很容易就搞定了,这次服务系统采用的是最新的Debian 7.0,但是有几个细节的忽略导致我折腾了一番,我再这里再做个记录吧: 首先要安装编译环境,虽然我们通过apt-get可以方便的绕过手动编译的环节,但是一些程序包可能内置编译命令,可以编译一些扩展程序,

win8.1系统怎么使用便签记录备忘信息

  1.打开win8.1系统的开始菜单,找到便签,如果没有可以在程序里面找到,并固定在开始页面,以方便使用; 2.点击便签,就会自动创建一个新便签到桌面,我们可以在里面输入自己备忘的事情或者一些重要知识等; 3.如果一个便签不够用,可以点击便签左上角的加号再新建便签使用; 4.如果便签使用完了,不需要了,想要删除,可以点击便签右上角的"×",提示点击确定后就删除了; 5.便签上面没有最小化的按钮,只有从任务栏里点击便签才能使它最小化; 6.便签还有多种颜色可供选择,对于颜色控,选择自己

mysql一些操作个人备忘(持续更新)

安装mysql数据库目录 1./usr/local/mysql/bin/mysql_install_db --user=mysql --datadir=/home/mysql/var ##指定安装后的数据目录 mysql 启动/关闭 1./usr/local/mysql/bin/mysqld_safe --defaults-file=/home/mysql/.my.cnf --user=mysql & #启动 2./usr/local/mysql/bin/mysqladmin --default

mysql 数据库导入\导出(总结备忘)

 数据库的基本导入\导出的命令 是 mysqldump 和 source  在linux下直接用命令行操作就可以 在windows下 一般情况下有两种方法一个也是用命令行 另一个是用phpmyadmin   先来说说phpmyadmin 这个工具导出和导入很简单 而且导入时无需建库 直接还原成原来的数据库   用source  也可以还原 但他导入文件时有大小限制不能超过2M 再来说说  mysqldump 和 source  用命令操作很快 但是想把导出的文件再导入时必须先建立一个数据库(这个

Selenium中使用chromedriver备忘

chromedriver是chrome浏览器的webdriver的一个实现.ChromeDriver是由Chrome开发团队来完成的因而ChromeDriver不包含在selenium包中,需要从ChromeDriver网页上下载下来. 下载地址: https://code.google.com/p/chromedriver/downloads/list 当然你需要安装chrome浏览器,浏览器中有支持WebDriver的API,你才可以使用ChromeDriver. 使用ChromeDrive