1. 关于iptables做网关过滤数据包的一些问题
为了能采用远程SSH登陆,我们要开启22端口.
[root@tp ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
只允许.168.0.3的机器进行SSH连接
[root@tp ~]# iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT
如果要允许,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.
24表示子网掩码数.但要记得把 /etc/sysconfig/iptables 里的这一行删了.
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 因为它表示所有地址都可以登陆.
写 !192.168.0.3 表示除了192.168.0.3的ip地址
其他的规则连接也一样这么设置.
虚拟通道我没明白你什么意思,如果是指特定端口,上面就是,如果是指特定设备,举个网卡的例子给你
开启转发功能,(在做NAT时,FORWARD默认规则是DROP时,必须做)
[root@tp ~]# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@tp ~]# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT
丢弃坏的TCP包
[root@tp ~]#iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP
处理IP碎片数量,防止攻击,允许每秒100个
[root@tp ~]#iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包.
[root@tp ~]#iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
上面的操作做完之后别忘了
[root@tp ~]# /etc/rc.d/init.d/iptables save
这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.
[root@tp ~]# service iptables restart
2. 在linux 下如何设置iptables 防火墙
Linux系统内核内建了netfilter防火墙机制。Netfilter(数据包过滤机制),所谓的数据包过滤,就是分析进入主机的网络数据包,将数据包的头部数据提取出来进行分析,以决该连接为放行或阻挡的机制。Netfilter提供了iptables这个程序来作为防火墙数据包过滤的命令。Netfilter是内建的,效率非常高。
我们可以通过iptables命令来设置netfilter的过滤机制。
iptables里有3张表:
> Filter(过滤器),进入Linux本机的数据包有关,是默认的表。
> NAT(地址转换),与Linux本机无关,主要与Linux主机后的局域网内计算机相关。
> Mangle(破坏者),这个表格主要是与特殊的数据包的路由标志有关(通常不用涉及到这个表的修改,对这个表的修改破坏性很大,慎改之)。
每张表里都还有多条链:
Filter:INPUT, OUTPUT, FORWARD
NAT:PREROUTING, POSTROUTING, OUTPUT
Mangle:PREROUTING, OUTPUT, INPUT, FORWARD
iptables命令的使用
基本格式:iptables [-t table] -CMD chain CRETIRIA -j ACTION
-t table:3张表中的其中一种filter, nat, mangle,如果没有指定,默认是filter。
CMD:操作命令。查看、添加、替换、删除等。
chain:链。指定是对表中的哪条链进行操作,如filter表中的INPUT链。
CRETIRIA:匹配模式。对要过滤的数据包进行描述
ACTION:操作。接受、拒绝、丢弃等。
查看
格式:iptables [-t table] -L [-nv]
修改
添加
格式:iptables [-t table] -A chain CRETIRIA -j ACTION
将新规则加入到表table(默认filter)的chain链的最后位置
插入
格式:iptables [-t table] -I chain pos CRETIRIA -j ACTION
将新规则插入到table表(默认filter)chain链的pos位置。原来之后的规则都往后推一位。pos的有效范围为:1 ~ num+1
替换
格式:iptables [-t table] -R chain pos CRETIRIA -j ACTION
用新规则替换table表(默认filter)chain链的pos位置的规则。pos的有效范围为:1 ~ num
删除
格式:iptables [-t table] -D chain pos
删除table表(默认filter)chain链的pos位置的规则。pos的有效范围为:1 ~ num
包匹配(CRETIRIA)
上面没有介绍CRETIRIA的规则,在这小节里详细介绍。包匹配就是用于描述需要过滤的数据包包头特殊的字段。
指定网口:
-i :数据包所进入的那个网络接口,例如 eth0、lo等,需与INPUT链配合
-o: 数据包所传出的那么网络接口,需与OUTPUT链配合
指定协议:
-p:tcp, udp, icmp或all
指定IP网络:
-s:来源网络。可以是IP或网络
IP: 192.168.0.100
网络: 192.168.0.0/24 或 192.168.0.0/255.255.255.0 均可
可以在前加 ! 表示取反
-d:目标网格。同 -s
指定端口:
--sport:指定来源端口。可以是单个端口,还可以是连续的端口,例如:1024:65535。
--dport:指定目标端口。同--sport
注意:要指定了tcp或udp协议才会有效。
指定MAC地址:
-m mac --mac-source aa:bb:cc:dd:ee:ff
指定状态:
-m state --state STATUS
STATUS可以是:
> INVALID,无效包
> ESTABLISHED,已经连接成功的连接状态
> NEW,想要新立连接的数据包
> RELATED,这个数据包与主机发送出去的数据包有关,(最常用)
例如:只要已建立连接或与已发出请求相关的数据包就予以通过,不合法数据包就丢弃
-m state --state RELATED,ESTABLISHED
ICMP数据比对
ping操作发送的是ICMP包,如果不想被ping到,就可以拒绝。
--icmp-type TYPE
TYPE如下:
8 echo-request(请求)
0 echo-reply(响应)
注意:需要与 -p icmp 配合使用。
操作(ACTION)
DROP,丢弃
ACCEPT,接受
REJECT,拒绝
LOG,跟踪记录,将访问记录写入 /var/log/messages
保存配置
将新设置的规则保存到文件
格式:iptables-save [-t table]
将当前的配置保存到 /etc/sysconfig/iptables
其它
格式:iptables [-t table] [-FXZ]
-F :请除所有的已制订的规则
-X :除掉所有用户“自定义”的chain
-Z :将所有的统计值清0
3. 配置iptables防火墙的方法(十万火急)跪求
Linux系统里配置iptables代理防火墙视频全过程
http://www.fzcpu.com/news_view.asp?newsid=1418
http://www.turbolinux.com.cn/turbo/wiki/doku.php?id=%E9%98%B2%E7%81%AB%E5%A2%99%E9%85%8D%E7%BD%AE%E5%9F%BA%E7%A1%80:iptables
配置iptables静态防火墙
1、初始化防火墙
在shell提示符#下键入:
iptables -F
iptables -X
iptables -Z
利用iptables配置您自己的防火墙之前,首先要清除任何以前配置的规则。
2、配置规则:
2.1、配置默认策略
iptables -P INPUT DROP
这一条命令将阻止任何从网络进入电脑的数据包丢弃(drop)。此时,假如您ping 127.0.0.1,您就会发现屏幕一直停在那里,因为ping收不到任何应答数据包。
2.2、创建用户自定义的链
iptables -N MYINPUT
iptables -N MYDROPLOG
2.3 、添加规则
iptables -A INPUT -j MYINPUT
这条规则将任何进入电脑的包转发到自定义的链进行过滤。
iptables -A MYINPUT -p icmp -j ACCEPT
此时再输入命令 ping 127.0.0.1,结果还会和刚才相同吗?
假如要访问www服务
iptables -A MYINPUT -p tcp --sport 80 -j ACCEPT
这条规则允许来自网络并且源端口是80的数据进入电脑。80端口正是www服务所使用的端口。现在能够看网页了。但是,假如您在浏览器的地址中输入www..com,能看到网页吗?您得到的结果一定是:很难找到主机www..com。假如您再输入211.94.144.100,您仍然能够访问的网页。为什么?因为假如访问www..com,电脑需要先进行域名解析获取www..com对应的ip地址211.94.144.100才能正常访问。我们还需要打开DNS。
iptables -A MYINPUT -p udp --sport 53 -j ACCEPT
这条规则接受任何UDP协议53端口的数据。53正是DNS服务所用的端口。此时测试一下,您能通过域名访问www吗?您能通过ip访问www吗?当然,都能够!
丢弃其他的任何网络数据包
iptables -A MYINPUT -j MYDROPLOG
iptables -A MYDROPLOG -j DROP
2.4、记录日志
iptables -I MYDROPLOG 1 -j LOG --log-prefix '〔IPTABLES DROP LOGS〕:' --log-level debug
这样任何被丢弃的网络数据包都被记录下来了,访问网络的周详信息能够查看日志。至此,一个安全的个人静态防火墙已构建,能够根据访问网络的具体需求再次配置防火墙,满足各种需求。
3、查看防火墙
此时能够查看防火墙了
iptables -L --line-number
能够将上面的实验内容总结一下,写成一个脚本。
#!/bin/bash
# This is a script of
# a personal static firewall
iptables -F
iptables -X
iptables -Z
iptables -P INPUT DROP
iptables -N MYINPUT
iptables -N MYDROPLOG
iptables -A INPUT -j MYINPUT
iptables -A MYINPUT -p icmp -j ACCEPT
iptables -A MYINPUT -p tcp --sport 80 -j ACCEPT
iptables -A MYINPUT -p udp --sport 53 -j ACCEPT
iptables -A MYINPUT -j MYDROPLOG
iptables -A MYDROPLOG -j DROP
iptables -I MYDROPLOG 1 -j LOG --log-prefix '〔IPTABLES DROP LOGS〕:' --log-level debug
iptables -L --line-number
运行脚本快速实现自己的防火墙。
4. linux出现syn是什么进程
Linux syn攻击是一种黑客攻击,如何处理和减少这种攻击是系统管理员比较重要的工作,怎么才能出色的完成这项工作,希望通过本文能给你一启发,让你在以后工作中能轻松完成抵御Linux syn攻击的任务。
虚拟主机服务商在运营过程中可能会受到黑客攻击,常见的攻击方式有SYN,DDOS等。通过更换IP,查找被攻击的站点可能避开攻击,但是中断服务的时间比较长。比较彻底的解决方法是添置硬件防火墙。不过,硬件防火墙价格比较昂贵。可以考虑利用Linux 系统本身提供的防火墙功能来防御。
抵御SYN SYN攻击是利用TCP/IP协议3次握手的原理,发送大量的建立连接的网络包,但不实际建立连接,最终导致被攻击服务器的网络队列被占满,无法被正常用户访问。
Linux内核提供了若干SYN相关的配置,用命令: sysctl -a | grep syn 看到:
net.ipv4.tcp_max_syn_backlog = 1024 net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_synack_retries = 5 net.ipv4.tcp_syn_retries = 5
tcp_max_syn_backlog是SYN队列的长度,tcp_syncookies是一个开关,是否打开SYN Cookie 功能,该功能可以防止部分SYN攻击。tcp_synack_retries和tcp_syn_retries定义SYN 的重试次数。加大SYN队列长度可以容纳更多等待连接的网络连接数,打开SYN Cookie功能可以阻止部分 SYN攻击,降低重试次数也有一定效果。
调整上述设置的方法是:
增加SYN队列长度到2048:
sysctl -w net.ipv4.tcp_max_syn_backlog=2048
打开SYN COOKIE功能:
sysctl -w net.ipv4.tcp_syncookies=1
降低重试次数:
sysctl -w net.ipv4.tcp_synack_retries=3 sysctl -w net.ipv4.tcp_syn_retries=3
为了系统重启动时保持上述配置,可将上述命令加入到/etc/rc.d/rc.local文件中。
防止同步包洪水(Sync Flood)
# iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
也有人写作
#iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
--limit 1/s 限制syn并发数每秒1次,可以根据自己的需要修改
防止各种端口扫描
# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
Ping洪水攻击(Ping of Death)
# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
到这里Linux syn攻击问题的处理就可以解决了。
5. 急!!!利用 iptables 实现 linux 防火墙功能有关问题的3条命令的解释.
自己看:
什么是Iptables?
iptables 是建立在 netfilter 架构基础上的一个包过滤管理工具,最主要的作用是用来做防火墙或透明代理。Iptables 从 ipchains 发展而来,它的功能更为强大。Iptables 提供以下三种功能:包过滤、NAT(网络地址转换)和通用的 pre-route packet mangling。包过滤:用来过滤包,但是不修改包的内容。Iptables 在包过滤方面相对于 ipchians 的主要优点是速度更快,使用更方便。NAT:NAT 可以分为源地址 NAT 和目的地址 NAT。
Iptables 可以追加、插入或删除包过滤规则。实际上真正执行这些过虑规则的是 netfilter 及其相关模块(如 iptables 模块和 nat 模块)。Netfilter 是 Linux 核心中一个通用架构,它提供了一系列的 “表”(tables),每个表由若干 “链”(chains)组成,而每条链中可以有一条或数条 “规则”(rule)组成。
系统缺省的表为 “filter”,该表中包含了 INPUT、FORWARD 和 OUTPUT 3 个链。
每一条链中可以有一条或数条规则,每一条规则都是这样定义的:如果数据包头符合这样的条件,就这样处理这个数据包。当一个数据包到达一个链时,系统就会从第一条规则开始检查,看是否符合该规则所定义的条件: 如果满足,系统将根据该条规则所定义的方法处理该数据包;如果不满足则继续检查下一条规则。最后,如果该数据包不符合该链中任一条规则的话,系统就会根据该链预先定义的策略来处理该数据包。
? table,chain,rule
iptables 可以操纵3 个表:filter 表,nat 表,mangle 表。
NAT 和一般的 mangle 用 -t 参数指定要操作哪个表。filter 是默认的表,如果没有 -t 参数,就默认对 filter 表操作。
Rule 规则:过滤规则,端口转发规则等,例如:禁止任何机器 ping 我们的服务器,可以在服务器上设置一条规则:
iptables -A INPUT -s ! 127.0.0.1 -p icmp -j DROP
从 –s 开始即是一条规则,-j 前面是规则的条件,-j 开始是规则的行为(目的)。整条命令解释为,在filter 表中的 INPUT 规则链中插入一条规则,所有源地址不为 127.0.0.1 的 icmp 包都被抛弃。
Chain 规则链:由一系列规则组成,每个包顺序经过 chain 中的每一条规则。chain 又分为系统 chain和用户创建的 chain。下面先叙述系统 chain。
filter 表的系统 chain: INPUT,FORWAD,OUTPUT
nat 表的系统 chain: PREROUTING,POSTROUTING,OUTPUT
mangle 表的系统 chain: PREROUTING,OUTPUT
每条系统 chain 在确定的位置被检查。比如在包过滤中,所有的目的地址为本地的包,则会进入INPUT 规则链,而从本地出去的包会进入 OUTPUT 规则链。
所有的 table 和 chain 开机时都为空,设置 iptables 的方法就是在合适的 table 和系统 chain 中添相应的规则。
--------------------------------------------------------------
IPTABLES 语法:
表: iptables从其使用的三个表(filter、nat、mangle)而得名, 对包过滤只使用 filter 表, filter还是默认表,无需显示说明.
操作命令: 即添加、删除、更新等。
链:对于包过滤可以针对filter表中的INPUT、OUTPUT、FORWARD链,也可以操作用户自定义的链。
规则匹配器:可以指定各种规则匹配,如IP地址、端口、包类型等。
目标动作:当规则匹配一个包时,真正要执行的任务,常用的有:
ACCEPT 允许包通过
DROP 丢弃包
一些扩展的目标还有:
REJECT 拒绝包,丢弃包同时给发送者发送没有接受的通知
LOG 包有关信息记录到日志
TOS 改写包的TOS值
为使FORWARD规则能够生效,可使用下面2种方法的某种:
[root@rhlinux root]# vi /proc/sys/net/ipv4/ip_forward
[root@rhlinux root]# echo "1" > /proc/sys/net/ipv4/ip_forward
[root@rhlinux root]# vi /etc/sysconfig/network
[root@rhlinux root]# echo "FORWARD_IPV4=true" > /etc/sysconfig/network
--------------------------------------------------------
iptables语法可以简化为下面的形式:
iptables [-t table] CMD [chain] [rule-matcher] [-j target]
--------------------------------------------------------
常用操作命令:
-A 或 -append 在所选链尾加入一条或多条规则
-D 或 -delete 在所选链尾部删除一条或者多条规则
-R 或 -replace 在所选链中替换一条匹配规则
-I 或 -insert 以给出的规则号在所选链中插入一条或者多条规则. 如果规则号为1,即在链头部.
-L 或 -list 列出指定链中的所有规则,如果没有指定链,将列出链中的所有规则.
-F 或 -flush 清除指定链和表中的所由规则, 假如不指定链,那么所有链都将被清空.
-N 或 -new-chain 以指定名创建一条新的用户自定义链,不能与已有链名相同.
-X 或 -delete-chain 删除指定的用户定义帘,必需保证链中的规则都不在使用时才能删除,若没有指定链,则删除所有用户链.
-P 或 -policy 为永久帘指定默认规则(内置链策略),用户定义帘没有缺省规则,缺省规则也使规则链中的最后一条规则,用-L显示时它在第一行显示.
-C 或 -check 检查给定的包是否与指定链的规则相匹配.
-Z 或 -zero 将指定帘中所由的规则包字节(BYTE)计数器清零.
-h 显示帮助信息.
-------------------------------------------------------------
常用匹配规则器:
-p , [!] protocol 指出要匹配的协议,可以是tcp, udp, icmp, all, 前缀!为逻辑非,表示除该协议外的所有协议.
-s [!] address[/mask] 指定源地址或者地址范围.
-sport [!] port[:port] 指定源端口号或范围,可以用端口号也可以用/ETC/SERVICES文件中的名子.
-d [!] address[/mask] 指定目的地址或者地址范围.
-dport [!] port[:port] 指定目的端口号或范围,可以用端口号也可以用/ETC/SERVICES文件中的名子.
-icmp-type [!] typename 指定匹配规则的ICMP信息类型(可以使用 iptables -p icmp -h 查看有效的ICMP类型名)
-i [!] interface name[+] 匹配单独或某种类型的接口,此参数忽略时,默认符合所有接口,接口可以使用"!"来匹配捕食指定接口来的包.参数interface是接口名,如 eth0, eht1, ppp0等,指定一个目前不存在的接口是完全合法的,规则直到接口工作时才起作用,折中指定对于PPP等类似连接是非常有用的."+"表示匹配所有此类型接口.该选项只针对于INPUT,FORWARD和PREROUTING链是合法的.
-o [!] interface name[+] 匹配规则的对外网络接口,该选项只针对于OUTPUT,FORWARD,POSTROUTING链是合法的.
[!] --syn 仅仅匹配设置了SYN位, 清除了ACK, FIN位的TCP包. 这些包表示请求初始化的TCP连接.阻止从接口来的这样的包将会阻止外来的TCP连接请求.但输出的TCP连接请求将不受影响.这个参数仅仅当协议类型设置为了TCP才能使用. 此参数可以使用"!"标志匹配已存在的返回包,一般用于限制网络流量,即只允许已有的,向外发送的连接所返回的包.
----------------------------------------------------------
如何制定永久规则集:
/etc/sysconfig/iptables 文件是 iptables 守护进程调用的默认规则集文件.
可以使用以下命令保存执行过的IPTABLES命令:
/sbin/iptables-save > /etc/sysconfig/iptables
要恢复原来的规则库,可以使用:
/sbin/iptables-restore < /etc/sysconfig/iptables
iptables命令和route等命令一样,重启之后就会恢复,所以:
[root@rhlinux root]# service iptables save
将当前规则储存到 /etc/sysconfig/iptables: [ 确定 ]
令一种方法是 /etc/rc.d/init.d/iptables 是IPTABLES的启动脚本,所以:
[root@rhlinux root]# /etc/rc.d/init.d/iptables save
将当前规则储存到 /etc/sysconfig/iptables: [ 确定 ]
以上几种方法只使用某种即可.
若要自定义脚本,可直接使用iptables命令编写一个规则脚本,并在启动时执行:
例如若规则使用脚本文件名/etc/fw/rule, 则可以在/etc/rc.d/rc.local中加入以下代码:
if [-x /etc/fw/rule]; then /etc/fw/sule; fi;
这样每次启动都执行该规则脚本,如果用这种方法,建议NTSYSV中停止IPTABLES.
----------------------------------------------------------
实例:
链基本操作:
[root@rh34 root]# iptables -L -n
(列出表/链中的所有规则,包过滤防火墙默认使用的是filter表,因此使用此命令将列出filter表中所有内容,-n参数可加快显示速度,也可不加-n参数。)
[root@rh34 root]# iptables -F
(清除预设表filter中所有规则链中的规则)
[root@rh34 root]# iptables -X
(清除预设表filter中使用者自定义链中的规则)
[root@rh34 root]# iptables -Z
(将指定链规则中的所有包字节计数器清零)
------------------------------------------------------------
设置链的默认策略,默认允许所有,或者丢弃所有:
[root@rh34 root]# iptables -P INPUT ACCEPT
[root@rh34 root]# iptables -P OUTPUT ACCEPT
[root@rh34 root]# iptables -P FORWARD ACCEPT
(以上我们在不同方向设置默认允许策略,若丢弃则应是DROP,严格意义上防火墙应该是DROP然后再允许特定)
---------------------------------------------------------------
向链中添加规则,下面的例子是开放指定网络接口(信任接口时比较实用):
[root@rh34 root]# iptables -A INPUT -i eth1 -j ACCEPT
[root@rh34 root]# iptables -A OUTPUT -o eth1 -j ACCEPT
[root@rh34 root]# iptables -A FORWARD -i eth1 -j ACCEPT
[root@rh34 root]# iptables -A FORWARD -o eth1 -j ACCEPT
--------------------------------------------------------------
使用用户自定义链:
[root@rh34 root]# iptables -N brus
(创建一个用户自定义名叫brus的链)
[root@rh34 root]# iptables -A brus -s 0/0 -d 0/0 -p icmp -j DROP
(在此链中设置了一条规则)
[root@rh34 root]# iptables -A INPUT -s 0/0 -d 0/0 -j brus
(向默认的INPUT链添加一条规则,使所有包都由brus自定义链处理)
----------------------------------------------------------------
基本匹配规则实例:
匹配协议:
iptables -A INPUT -p tcp
(指定匹配协议为TCP)
iptables -A INPUT -p ! tcp
(指定匹配TCP以外的协议)
匹配地址:
iptables -A INPUT -s 192.168.1.1
(匹配主机)
iptables -A INPUT -s 192.168.1.0/24
(匹配网络)
iptables -A FORWARD -s ! 192.168.1.1
(匹配以外的主机)
iptables -A FORWARD -s ! 192.168.1.0/24
(匹配以外的网络)
匹配接口:
iptables -A INPUT -i eth0
iptables -A FORWARD -o eth0
(匹配某个指定的接口)
iptables -A FORWARD -o ppp+
(匹配所有类型为ppp的接口)
匹配端口:
iptables -A INPUT -p tcp --sport www
iptables -A INPUT -p tcp --sport 80
(匹配单一指定源端口)
iptables -A INPUT -p ucp --dport 53
(匹配单一指定目的端口)
iptables -A INPUT -p ucp --dport ! 53
(指定端口以外)
iptables -A INPUT -p tcp --dport 22:80
(指定端口范围,这里我们实现的是22到80端口)
---------------------------------------------------------------------------------
指定IP碎片的处理:
[root@rh34 root]# iptables -A FORWARD -p tcp -s 192.168.1.0/24 -d 192.168.1.234 --dport 80 -j ACCEPT
[root@rh34 root]# iptables -A FORWARD -f -p tcp -s 192.168.1.0/24 -d 192.168.1.234 --dport 80 -j ACCEPT
[root@rh34 root]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 192.168.1.0/24 192.168.1.234 tcp dpt:http
ACCEPT tcp -f 192.168.1.0/24 192.168.1.234 tcp dpt:http
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
----------------------------------------------------------------------------------
设置扩展的规测匹配:
(希望获得匹配的简要说明,可使用: iptables -m name_of_match --help)
多端口匹配扩展:
iptables -A INPUT -p tcp -m multiport --source-port 22,53,80
(匹配多个源端口)
iptables -A INPUT -p tcp -m multiport --destination-port 22,53,80
(匹配多个目的端口)
iptables -A INPUT -p tcp -m multiport --port 22,53,80
(匹配多个端口,无论是源还是目的端口)
-----------------------------------------------------------------------------
TCP匹配扩展:
iptables -A INPUT -p tcp --tcp-flags SYN,FIN,ACK SYN
(表示SYN、ACK、FIN的标志都要被检查,但是只有设置了SYN的才匹配)
iptables -A INPUT -p tcp --tcp-flags ALL SYN,ACK
(表示ALL:SYN、ACK、FIN、RST、URG、PSH的标志都被检查,但是只有设置了SYN和ACK的才匹配)
iptables -p tcp --syn
(选项--syn是以上的一种特殊情况,相当于“--tcp-flags SYN,RST,ACK SYN”的简写)
--------------------------------------------------------------------------------
limit速率匹配扩展:
[root@redhatlinux9 root]# iptables -A FORWARD -m limit --limit 300/hour
(表示限制每小时允许通过300个数据包)
[root@redhatlinux9 root]# iptables -A INPUT -m limit --limit-burst 10
(--limit-burst指定触发时间的值(默认为5),用来比对瞬间大量数据包的数量。)
(上面的例子用来比对一次同时涌入的数据包是否超过十个,超过此上限的包将直接被丢弃)
[root@redhatlinux9 root]# iptables -A FORWARD -p icmp -m limit --limit 3/m --limit-burst 3
(假设均匀通过,平均每分钟3个,那么触发值burst保持为3。如果每分钟通过的包的数目小于3,那么触发值busrt将在每个周期(若每分钟允许通过3个,则周期数为20秒)后加1,但最大值为3。每分钟要通过的包数量如果超过3,那么触发值busrt将减掉超出的数值,例如第二分钟有4个包,那么触发值变为2,同时4个包都可以通过,第三分钟有6个包,则只能通过5个,触发值busrt变为0。之后,每分钟如果包数量小于等于3个,则触发值busrt将加1,如果每分钟包数大于3,触发值busrt将逐渐减少,最终维持为0)
(即每分钟允许的最大包数量等于限制速率(本例中为3)加上当前的触发值busrt数。任何情况下,都可以保证3个包通过,触发值busrt相当于是允许额外的包数量)
---------------------------------------------------------------------------------
基于状态的匹配扩展(连接跟踪):
每个网络连接包括以下信息:源和目的地址、源和目的端口号,称为套接字对(cocket pairs);协议类型、连接状态(TCP协议)和超时时间等。防火墙把这些叫做状态(stateful)。能够监测每个连接状态的防火墙叫做状态宝过滤防火墙,除了能完成普通包过滤防火墙的功能外,还在自己的内存中维护一个跟踪连接状态的表,所以拥有更大的安全性。
其命令格式如下:
iptables -m state --state [!] state [,state,state,state]
state表示一个用逗号隔开的的列表,用来指定的连接状态可以有以下4种:
NEW:该包想要开始一个连接(重新连接或将连接重定向)。
RELATED:该包属于某个已经建立的连接所建立的新连接。例如FTP的数据传输连接和控制连接之间就是RELATED关系。
ESTABLISHED:该包属于某个已经建立的连接。
INVALID:该包不匹配于任何连接,通常这些包会被DROP。
例如:
[root@redhatlinux9 root]# iptables -A INPUT -m state --state RELATED,ESTABLISHED
(匹配已经建立的连接或由已经建立的连接所建立的新连接。即匹配所有的TCP回应包)
[root@redhatlinux9 root]# iptables -A INPUT -m state --state NEW -i ! eth0
(匹配所有从非eth0接口来的连接请求包)
下面是一个被动(Passive)FTP连接模式的典型连接跟踪
[root@redhatlinux9 root]# iptables -A INPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT
[root@redhatlinux9 root]# iptables -A OUTPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT
下面是一个主动(Active)FTP连接模式的典型连接跟踪
[root@redhatlinux9 root]# iptables -A INPUT -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@redhatlinux9 root]# iptables -A INPUT -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
--------------------------------------------------------------------------------------
日志记录:
格式为: -j LOG --log-level 7 --log-prefix "......"
[root@redhatlinux9 root]# iptables -A FORWARD -m tcp -p tcp -j LOG
[root@redhatlinux9 root]# iptables -A FORWARD -m icmp -p icmp -f -j LOG
[root@redhatlinux9 root]# iptables -A FORWARD -s 192.168.1.0/24 -d 10.10.10.0/24 -p tcp --sport 80 -j LOG
[root@redhatlinux9 root]# iptables -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-prefix "INPUT packet died:"
[root@redhatlinux9 root]# iptables -A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New net syn:"
------------------------------------------------
回答你的问题:
1:设置为DROP默认不允许,然后你再开启,这样比门户大开再阻止某些服务来的安全(避免遗漏)
2:前面阻止了后面就无效了,有先后顺序的.
3:你了解了服务和端口号等即可用规则限制.
6. 怎么阻止syn-flood攻击高手请进
用iptables对付syn-flood攻击:
使用说明:
1、 下图为打开SYNKFW.EXE的界面形状,其中包括了新建攻击、激活线程和退出选项。
在此我们要说一下为什么要发布这个SYNKFW的终结者的DDOS类工具,原因是正版的KFW也就是傲盾防火墙被所谓的中国黑客联盟破解,并且正
在向网友进行销售,并且对外宣传是他们自己开发的产品,对于这种卑鄙的行为,我们感到可耻!不过我们劝告大家,使用抗DDOS类产品的防
火墙最好使用正版授权,不要贪图便宜而去购买被破解后的版本,如果使用被破解后的KFW防火墙给自己带来任何的损失那后果将是惨重的,
发布这个版本就是打击使用破解后的KFW防火墙,如果正在使用破解后的KFW防火墙,在收到此工具发来的攻击包或许会导致你的硬盘损坏,请
正在使用盗版KFW防火墙的用户立即停止使用,否则给自己带来的损失将是惨重的!(同样黑盟也将会为此事付出代价的)
2、 下图是SYNKFW攻击属性设置的界面,我们简单介绍一下各个功能。攻击目标:你要攻击的机器,比如 192.168.0.1或者域名。
连接:选中连接选项后,攻击过去的SYN数据包全部是ESTABLISHED状态,但此选种此选项后攻击过去后,在被攻击机器上可以查到真实的攻
击IP地址,所以不建议选中此选项。
转移:只有在攻击目标那里输入的是被攻击的域名此功能才起作用,比如在攻击目标里输入的是www.syn.com 那么会自动攻击解析的IP地址
,如果域名更换IP后,攻击工具会自动刷新攻击新的IP地址,此功能只对部分的DNS服务器有效,例如万网,新网的DNS。如果攻击目标那里输
入的是IP地址,请不要选中转移选项。
伪造源地址:这里也可以不做任何设置,可以使用默认的,那么攻击过去的包是随机的,如果你想指定某一段或者某多段IP地址攻击,请设
置。例如我想伪造61段攻击目标,那么在那里改为 61.0.0.0到61.255.255.255 那么攻击过去数据包都是为 61.x.x.x开头的攻击包。
伪造源端口:这里同样也可以不设置,那么攻击所伪造的端口也是随机的,如果你想伪造某一个或者某一个范围的端口,请自己设置,例如
80-8000 然后选添加就可以了。建议使用默认的。
默认的攻击是不需要采用任何设置的,直接在攻击目标那里写如你要攻击的域名或者IP地址,然后按确定SYNKFW就开始攻击。一般3个线程可
以挂掉国内比较好的硬件防火墙。
3、开始实战了。我们去查一个开区着的私服吧。如下图,就拿第一行的私服来演习。IP地址:218.66.104.138,攻击端口:7000.
选择7000端口作为目标端口,原因跟上一篇xdos攻击文章一样,只要传奇私服开放着,它的7000端口就开放并且服务着。除非他要人为去修改
这个端口。要是服务器修改掉7000端口,他一定会公布出来,不然玩家都不能连接上服务器,因为登陆器连接服务器的端口默认为7000。
另外,攻击7000端口效果更为明显,直观,服务器失去抵抗能力的时候,我们从登陆器上检测它的连接状态是否良好,连接速度是否减慢。
就能立即知道服务器现在的防御状态。
4、反复建立攻击线程,建议使用我们站内提供的流量检测软件检测你的机器打出的攻击流量。可以一直建立攻击线程,直到机器流量打到峰值。
如果你要停止掉攻击,点"退出"就可以了。或者选中线程,点"激活线程"就可以执行攻击或则暂停的操作。
图片传不上来,你到这看:http://3000sf.com/synkfw.html
被syn-flood攻击和局域网里面的电脑中毒无直接关系,但是会感染导致你的防火墙无效~~呵呵,希望你得到解决~~~
7. 查看linux的iptables配置,都是什么意思各个参数
-L 比较慢,要用-vnL
8. iptables conntrack有什么用
我们先来看看怎样阅读/proc/net/ip_conntrack里的conntrack记录。这些记录表示的是当前被跟踪的连接。如果安装了ip_conntrack模块,cat /proc/net/ip_conntrack 的显示类似:
tcp 6 117 syn_sent src=192.168.1.6 dst=192.168.1.9 sport=32775 dport=22 [unreplied] src=192.168.1.9 dst=192.168.1.6 sport=22 dport=32775 use=2
conntrack模块维护的所有信息都包含在这个例子中了,通过它们就可以知道某个特定的连接处于什么状态。首先显示的是协议,这里是tcp,接着是十进制的6(译者注:tcp的协议类型代码是6)。之后的117是这条conntrack记录的生存时间,它会有规律地被消耗,直到收到这个连接的更多的包。那时,这个值就会被设为当时那个状态的缺省值。接下来的是这个连接在当前时间点的状态。上面的例子说明这个包处在状态 syn_sent,这个值是iptables显示的,以便我们好理解,而内部用的值稍有不同。syn_sent说明我们正在观察的这个连接只在一个方向发送了一tcp syn包。再下面是源地址、目的地址、源端口和目的端口。其中有个特殊的词unreplied,说明这个连接还没有收到任何回应。最后,是希望接收的应答包的信息,他们的地址和端口和前面是相反的。
连接跟踪记录的信息依据ip所包含的协议不同而不同,所有相应的值都是在头文件linux/include/netfilter-ipv4/ip_conntrack*.h中定义的。ip、tcp、udp、icmp协议的缺省值是在linux/include/netfilter-ipv4/ip_conntrack.h里定义的。具体的值可以查看相应的协议,但我们这里用不到它们,因为它们大都只在conntrack内部使用。随着状态的改变,生存时间也会改变。
9. iptables如何同时限制同网段和不同网段的连接
只有三块网卡实现两台xp共享adsl上网的方法
(说明:需要三块网卡,我们把安装有adsl设备的主机命名为"主机a”,把需要通过主机a上网的机器命名为"主机b”)
主机a上安装有两块网卡,第一块用于连接adsl设备,它在"网络连接”中会显示为"本地连接”,第二块网卡可以通过一条双机互联网线连接主机a和主机b,它在"网络连接”
中会显示为"本地连接2”,我们假定所需设备已经准备好,并且已经连接好.
1.
在主机a上安装好adsl设备,并建立好拨号连接(建立方法参见adsl上网的设置)
2.
鼠标右键点击建立好的adsl拨号连接,点击"属性”,
点击"高级”选项卡,在"允许其他网络用户通过此计算机的
internet连接来连接”前打勾,在"家庭网络连接”中选择"本地连接2”,点击"确定”。
3.
然后我们需要在主机a上建立"家庭或小型办公网络设置”,步骤是:鼠标右键点击"网上邻居”,左键点属性,打开"网络连接”.点击"左侧网络任务”下的"设置家庭或小型办公网络”,会弹出"网络安装向导”的窗口,点击第一项"这台计算机直接连接到internet.我的网络上的其他计算机通过这台计算机连接到internet.”选择adsl,点击"下一步”,完成网络安装向导.
之后在网上邻居属性中,有“宽带”,“网络桥”,本地连接,本地连接2。如果是,继续下一步。在“网络桥”的属性中,设置ip地址:192.168.0.2”,网关192.168.1.1,dns随意。
4.
我们需要在主机b上同样设置网络安装向导,步骤如下:鼠标右键点击"网上邻居”,左键点属性,打开"网络连接”.点击"左侧网络任务”下的"设置家庭或小型办公网络”,会弹出"网络安装向导”的窗口,点击第二项"这台计算机通过我的网络上的另一台计算机或住宅网关连接到internet.”选择"使用windows
xp
cd”,点击"下一步”,完成"网络安装向导”.向导安装完成,会在"网络连接”中产生一个新的类似于本地连接的图标,叫做"网关”,至此所有需要设置的部分都已完成.
5.
b主机的网上邻居的属性中,有“本地连接3”,adsl电信上网连接,在本地连接3中,设置ip地址:192.168.0.1(自动设置的),网关、dns随意。在adsl电信的上网连接属性中,不要设置ip地址,选择“自动选择ip地址”。b主机需要在连接电信的adsl连接中,左键点属性,在“高级”选项卡中选中全部选项,如"许其他网络用户通过此计算机的internet连接来连接“及其它选项,全部打勾。完成。
6.
在主机a中进行adsl拨号,输入用户名,密码.拨通后,主机a可以上网,主机b也可同时上网,打开ie便可以同时浏览网页了。
如果a关机,b电脑直接把网线接到猫上就可以上网了。更容易的。
10. 什么是iptables规则链
什么是Iptables? iptables 是建立在 netfilter 架构基础上的一个包过滤管理工具,最主要的作用是用来做防火墙或透明代理。Iptables 从 ipchains 发展而来,它的功能更为强大。Iptables 提供以下三种功能:包过滤、NAT(网络地址转换)和通用的 pre-route packet mangling。包过滤:用来过滤包,但是不修改包的内容。Iptables 在包过滤方面相对于 ipchians 的主要优点是速度更快,使用更方便。NAT:NAT 可以分为源地址 NAT 和目的地址 NAT。 Iptables 可以追加、插入或删除包过滤规则。实际上真正执行这些过虑规则的是 netfilter 及其相关模块(如 iptables 模块和 nat 模块)。Netfilter 是 Linux 核心中一个通用架构,它提供了一系列的 “表”(tables),每个表由若干 “链”(chains)组成,而每条链中可以有一条或数条 “规则”(rule)组成。 系统缺省的表为 “filter”,该表中包含了 INPUT、FORWARD 和 OUTPUT 3 个链。 每一条链中可以有一条或数条规则,每一条规则都是这样定义的:如果数据包头符合这样的条件,就这样处理这个数据包。当一个数据包到达一个链时,系统就会从第一条规则开始检查,看是否符合该规则所定义的条件: 如果满足,系统将根据该条规则所定义的方法处理该数据包;如果不满足则继续检查下一条规则。最后,如果该数据包不符合该链中任一条规则的话,系统就会根据该链预先定义的策略来处理该数据包。 ? table,chain,rule iptables 可以操纵3 个表:filter 表,nat 表,mangle 表。 NAT 和一般的 mangle 用 -t 参数指定要操作哪个表。filter 是默认的表,如果没有 -t 参数,就默认对 filter 表操作。 Rule 规则:过滤规则,端口转发规则等,例如:禁止任何机器 ping 我们的服务器,可以在服务器上设置一条规则: iptables -A INPUT -s ! 127.0.0.1 -p icmp -j DROP 从–s 开始即是一条规则,-j 前面是规则的条件,-j 开始是规则的行为(目的)。整条命令解释为,在filter 表中的 INPUT 规则链中插入一条规则,所有源地址不为 127.0.0.1 的 icmp 包都被抛弃。 Chain 规则链:由一系列规则组成,每个包顺序经过 chain 中的每一条规则。chain 又分为系统 chain和用户创建的 chain。下面先叙述系统 chain。 filter 表的系统 chain: INPUT,FORWAD,OUTPUT nat 表的系统 chain: PREROUTING,POSTROUTING,OUTPUT mangle 表的系统 chain: PREROUTING,OUTPUT 每条系统 chain 在确定的位置被检查。比如在包过滤中,所有的目的地址为本地的包,则会进入INPUT 规则链,而从本地出去的包会进入 OUTPUT 规则链。 所有的 table 和 chain 开机时都为空,设置 iptables 的方法就是在合适的 table 和系统 chain 中添相应的规则。 -------------------------------------------------------------- IPTABLES 语法: 表: iptables从其使用的三个表(filter、nat、mangle)而得名, 对包过滤只使用 filter 表, filter还是默认表,无需显示说明. 操作命令: 即添加、删除、更新等。 链:对于包过滤可以针对filter表中的INPUT、OUTPUT、FORWARD链,也可以操作用户自定义的链。 规则匹配器:可以指定各种规则匹配,如IP地址、端口、包类型等。 目标动作:当规则匹配一个包时,真正要执行的任务,常用的有: ACCEPT 允许包通过 DROP 丢弃包 一些扩展的目标还有: REJECT 拒绝包,丢弃包同时给发送者发送没有接受的通知 LOG 包有关信息记录到日志 TOS 改写包的TOS值 为使FORWARD规则能够生效,可使用下面2种方法的某种: [root@rhlinux root]# vi /proc/sys/net/ipv4/ip_forward [root@rhlinux root]# echo "1" > /proc/sys/net/ipv4/ip_forward [root@rhlinux root]# vi /etc/sysconfig/network [root@rhlinux root]# echo "FORWARD_IPV4=true" > /etc/sysconfig/network -------------------------------------------------------- iptables语法可以简化为下面的形式: iptables [-t table] CMD [chain] [rule-matcher] [-j target] -------------------------------------------------------- 常用操作命令: -A 或 -append 在所选链尾加入一条或多条规则 -D 或 -delete 在所选链尾部删除一条或者多条规则 -R 或 -replace 在所选链中替换一条匹配规则 -I 或 -insert 以给出的规则号在所选链中插入一条或者多条规则. 如果规则号为1,即在链头部. -L 或 -list 列出指定链中的所有规则,如果没有指定链,将列出链中的所有规则. -F 或 -flush 清除指定链和表中的所由规则, 假如不指定链,那么所有链都将被清空. -N 或 -new-chain 以指定名创建一条新的用户自定义链,不能与已有链名相同. -X 或 -delete-chain 删除指定的用户定义帘,必需保证链中的规则都不在使用时才能删除,若没有指定链,则删除所有用户链. -P 或 -policy 为永久帘指定默认规则(内置链策略),用户定义帘没有缺省规则,缺省规则也使规则链中的最后一条规则,用-L显示时它在第一行显示. -C 或 -check 检查给定的包是否与指定链的规则相匹配. -Z 或 -zero 将指定帘中所由的规则包字节(BYTE)计数器清零. -h 显示帮助信息. ------------------------------------------------------------- 常用匹配规则器: -p , [!] protocol 指出要匹配的协议,可以是tcp, udp, icmp, all, 前缀!为逻辑非,表示除该协议外的所有协议. -s [!] address[/mask] 指定源地址或者地址范围. -sport [!] port[:port] 指定源端口号或范围,可以用端口号也可以用/ETC/SERVICES文件中的名子. -d [!] address[/mask] 指定目的地址或者地址范围. -dport [!] port[:port] 指定目的端口号或范围,可以用端口号也可以用/ETC/SERVICES文件中的名子. -icmp-type [!] typename 指定匹配规则的ICMP信息类型(可以使用 iptables -p icmp -h 查看有效的ICMP类型名) -i [!] interface name[+] 匹配单独或某种类型的接口,此参数忽略时,默认符合所有接口,接口可以使用"!"来匹配捕食指定接口来的包.参数interface是接口名,如 eth0, eht1, ppp0等,指定一个目前不存在的接口是完全合法的,规则直到接口工作时才起作用,折中指定对于PPP等类似连接是非常有用的."+"表示匹配所有此类型接口.该选项只针对于INPUT,FORWARD和PREROUTING链是合法的. -o [!] interface name[+] 匹配规则的对外网络接口,该选项只针对于OUTPUT,FORWARD,POSTROUTING链是合法的. [!] --syn 仅仅匹配设置了SYN位, 清除了ACK, FIN位的TCP包. 这些包表示请求初始化的TCP连接.阻止从接口来的这样的包将会阻止外来的TCP连接请求.但输出的TCP连接请求将不受影响.这个参数仅仅当协议类型设置为了TCP才能使用. 此参数可以使用"!"标志匹配已存在的返回包,一般用于限制网络流量,即只允许已有的,向外发送的连接所返回的包. ---------------------------------------------------------- 如何制定永久规则集: /etc/sysconfig/iptables 文件是 iptables 守护进程调用的默认规则集文件. 可以使用以下命令保存执行过的IPTABLES命令: /sbin/iptables-save > /etc/sysconfig/iptables 要恢复原来的规则库,可以使用: /sbin/iptables-restore < /etc/sysconfig/iptables iptables命令和route等命令一样,重启之后就会恢复,所以: [root@rhlinux root]# service iptables save 将当前规则储存到 /etc/sysconfig/iptables: [ 确定 ] 令一种方法是 /etc/rc.d/init.d/iptables 是IPTABLES的启动脚本,所以: [root@rhlinux root]# /etc/rc.d/init.d/iptables save 将当前规则储存到 /etc/sysconfig/iptables: [ 确定 ] 以上几种方法只使用某种即可. 若要自定义脚本,可直接使用iptables命令编写一个规则脚本,并在启动时执行: 例如若规则使用脚本文件名/etc/fw/rule, 则可以在/etc/rc.d/rc.local中加入以下代码: if [-x /etc/fw/rule]; then /etc/fw/sule; fi; 这样每次启动都执行该规则脚本,如果用这种方法,建议NTSYSV中停止IPTABLES. ---------------------------------------------------------- 实例: 链基本操作: [root@rh34 root]# iptables -L -n (列出表/链中的所有规则,包过滤防火墙默认使用的是filter表,因此使用此命令将列出filter表中所有内容,-n参数可加快显示速度,也可不加-n参数。) [root@rh34 root]# iptables -F (清除预设表filter中所有规则链中的规则) [root@rh34 root]# iptables -X (清除预设表filter中使用者自定义链中的规则) [root@rh34 root]# iptables -Z (将指定链规则中的所有包字节计数器清零) ------------------------------------------------------------ 设置链的默认策略,默认允许所有,或者丢弃所有: [root@rh34 root]# iptables -P INPUT ACCEPT [root@rh34 root]# iptables -P OUTPUT ACCEPT [root@rh34 root]# iptables -P FORWARD ACCEPT (以上我们在不同方向设置默认允许策略,若丢弃则应是DROP,严格意义上防火墙应该是DROP然后再允许特定) --------------------------------------------------------------- 向链中添加规则,下面的例子是开放指定网络接口(信任接口时比较实用): [root@rh34 root]# iptables -A INPUT -i eth1 -j ACCEPT [root@rh34 root]# iptables -A OUTPUT -o eth1 -j ACCEPT [root@rh34 root]# iptables -A FORWARD -i eth1 -j ACCEPT [root@rh34 root]# iptables -A FORWARD -o eth1 -j ACCEPT -------------------------------------------------------------- 使用用户自定义链: [root@rh34 root]# iptables -N brus (创建一个用户自定义名叫brus的链) [root@rh34 root]# iptables -A brus -s 0/0 -d 0/0 -p icmp -j DROP (在此链中设置了一条规则) [root@rh34 root]# iptables -A INPUT -s 0/0 -d 0/0 -j brus (向默认的INPUT链添加一条规则,使所有包都由brus自定义链处理) ---------------------------------------------------------------- 基本匹配规则实例: 匹配协议: iptables -A INPUT -p tcp (指定匹配协议为TCP) iptables -A INPUT -p ! tcp (指定匹配TCP以外的协议) 匹配地址: iptables -A INPUT -s 192.168.1.1 (匹配主机)