iptables归纳总结

先简单介绍下iptables

IPTABLES的几点概念

 1、容器:包含或者说属于的关系

 2、Netfilter/iptables是表的容器,iptables包含的各个表

filter,NAT,MANGLE,RAW)

 3、iptables的表tables又是链的容器

chains:INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING

 4、链chains是规则容器:

 5、规则Policy:一条条过滤的语句。


示例:

(1)禁止掉当前SSH端口,这里是52113。

[root@ipt ~]# iptables -t filter -A INPUT -p tcp –dport 52113 -j DROP

语法:

Usage:

iptables -t [table] -[AD] chain rule-specification [options]

具体命令:

iptables           -A INPUT -p tcp –dport 52113 -j DROP

iptables -t filter -A INPUT -p tcp –dport 52113 -j DROP

注:

1.iptables默认用的就是filter表,因此,以上两条命令等价。

2. 其中的INPUT DROP要大写。

3. –jump        -j target

   target for rule (may load target extension)

基本的处理行为:ACCEPT(接受)、DROP(丢弃)、REJECT(拒绝)

比较:DROP好于REJECT

(2)禁ping

iptables -t filter  -I INPUT -p icmp –icmp-type 8 -i eth0 -s 10.0.0.0/24 -j DROP 

iptables -t filter  -I INPUT -p icmp –icmp-type 8  -j DROP   

    本机地址:172.16.14.1,允许172.16.0.0/16网络ping本机,但限制每分钟请求不能超过20,每次并发不能超过6个

iptables -A INPUT -s 172.16.0.0/16 -d 172.16.14.1 -p icmp –icmp-type 8 -m limit –limit 20/min –limit-burst 6 -j ACCEPT

iptables -A OUTPUT -s 172.16.14.1 -d 172.16.0.0/16 -p icmp –icmp-type 0 -j ACCEPT

(3)!使用简介

封掉3306端口

iptables -A INPUT -p tcp  –dport 3306 -j DROP

匹配指定协议外的所有协议

iptables -A INPUT -p ! tcp

匹配主机源IP

iptables -A INPUT -s 10.0.0.14

iptables -A INPUT -s ! 10.0.0.14

 匹配网段

iptables -A INPUT -s 10.0.0.0/24

iptables -A INPUT -s ! 10.0.0.0/24

匹配单一端口

iptables -A INPUT -p tcp –sport 53

iptables -A INPUT -p udp –dport 53

 匹配指定端口之外的端口

iptables -A INPUT -p tcp –dport ! 22

iptables -I INPUT -p tcp ! –dport 22  -s 10.0.0.123 -j DROP

匹配单一端口

iptables -A INPUT -p tcp –sport 53

iptables -A INPUT -p udp –dport 53

 匹配指定端口之外的端口

iptables -A INPUT -p tcp –dport ! 22

iptables -I INPUT -p tcp ! –dport 22  -s 10.0.0.123 -j DROP

iptables -I INPUT -p tcp –dport 52000:53000 -j DROP

匹配端口范围:

iptables -A INPUT -p tcp –sport 22:80

iptables -I INPUT -p tcp –dport 21,22,23,24 -j ACCEPT===》错误语法

iptables -I INPUT -p tcp -m multiport –dport 21,22,23,24 -j ACCEPT

iptables -I INPUT -p tcp –dport 3306:8809 -j ACCEPT

iptables -I INPUT -p tcp –dport 18:80 -j DROP

匹配ICMP类型

iptables -A INPUT -p icmp –icmp-type 8

例:iptables -A INPUT -p icmp –icmp-type 8 -j DROP

iptables -A INPUT -p icmp -m icmp –icmp-type any -j ACCEPT

匹配指定的网络接口

iptables -A INPUT -i eth0

iptables -A FORWARD -o eth0

匹配网络状态

-m state –state

    NEW:已经或将启动新的连接

    ESTABLISHED:已建立的连接

    RELATED:正在启动新连接

INVALID:非法或无法识别的

FTP服务是特殊的,需要配状态连接。

企业iptables面试题:自定义链处理syn攻击

iptables -N syn-flood

iptables -A INPUT -i eth0 -syn -j syn-flood

iptables -A syn-flood -m limit -limit 5000/s -limit-burst 200 -j RETURN

iptables -A syn-flood -j DROP

 

 将设置保存为文件(永久生效)

iptables-save >/etc/sysconfig/iptables

局域网共享的两条命令方法:

方法1:适合于有固定外网地址的:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT –to-source 10.0.0.7

(1)-s 192.168.1.0/24 办公室或IDC内网网段。

(2)-o eth0 为网关的外网卡接口。

(3)-j SNAT –to-source 10.0.0.19 是网关外网卡IP地址。

方法2:适合变化外网地址(ADSL):

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE ç伪装。

原创文章,作者:cnc,如若转载,请注明出处:http://www.178linux.com/74595

(0)
cnccnc
上一篇 2017-05-02 11:08
下一篇 2017-05-02 14:13

相关推荐

  • 逻辑卷管理

    1.相关命令:lsblk、fdisk、gdisk、parted、mkfs、mke2fs、blkid、e2label、findfs、tune2fs、dumpe2fs、fsck、e2fsck、mount、swapon、swapoff、mkisofs、wodim、free、df、du、dd。 2.列出块设备:lsblk    &nbs…

    Linux干货 2016-09-01
  • 常见RAID级别

    什么是RAID?     独立磁盘冗余阵列(RAID,Redundant Arrary of Independent Disks),旧称廉价磁盘冗余阵列(Redundant Arrary of Inexpensive Disks),简称磁盘阵列。基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、…

    Linux干货 2016-05-29
  • 相识–Varnish

    Varnish与一般服务器软件类似,分为master(management)进程和child(worker,主要做cache的工作)进程。master进程读入命令,进行一些初始化,然后fork并监控child进程。child进程分配若干线程进行工作,主要包括一些管理线程和很多woker线程。 VCL: ”域“专有类型的配置语言 VCL有多个状态引擎,状态之间…

    Linux干货 2017-11-13
  • Shell——Linux基本命令(2)

    1.Shell Shell是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行. shell也被称为LINUX的命令解释器(commandinterpreter). vshell是一种高级程序设计语言. 2.bash shell GNUBourne-AgainShell(bash)是GNU计划中重要的工…

    2017-07-13
  • 恐怖的C++语言

    Linus曾经(2007年9月)在新闻组gmane.comp.version-control.git里和一个微软的工程师(Dmitry Kakurin)争执过用C还是用C++,当时的那个微软的工程师主要是在做Git的Windows版,但他却发现Git的源码居然是C语言写的,而不是C++,于是他(Dmitry Kakurin)在Linux社区里发贴表示对Lin…

    Linux干货 2015-04-03
  • N22-第5周博客作业

    1、显示当前系统上root、fedora或user1用户的默认shell; grep -E "^(root|fedora|user1)\>" /etc/passwd | cut -d: -f7 2、找出/etc/rc.d/init.d/functions文件中某单…

    Linux干货 2016-12-05