iptables常用命令
iptables -nv -L //查看iptables列表
iptables -F //清空iptables规则
iptables -save > /etc/sysconfig/iptables //保存iptables规则到文件
service iptables restart 重启iptables
下面是某台服务器的iptables配置
# Generated by iptables-save v1.4.7 on Tue Jul 5 12:06:29 2016 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [4:4940] -A INPUT -i lo -j ACCEPT #允许本地回环 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #允许服务器访问外网,例如curl,wget -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT #允许所有IP访问网站 -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT #允许ping请求 -A INPUT -s 61.149.47.34/32 -p tcp -m tcp --dport 3306 -j ACCEPT #允许公司IP访问MySQL -A INPUT -s 61.149.47.34/32 -p tcp -m tcp --dport 6379 -j ACCEPT #允许公司IP访问Redis -A INPUT -p tcp -m multiport --dports 8081,10050,65008 -j ACCEPT #允许所有IP访问8081,10050,65008端口,ps:65008是我的ssh端口 -A INPUT -j REJECT --reject-with icmp-port-unreachable #拒绝所有的IP访问所有的端口 COMMIT # Completed on Tue Jul 5 12:06:29 2016
防止攻击
防范DDOS攻击脚本 #防止DOS太多连接进来,可以允许外网网卡每个IP最多15个初始连接,超过的丢弃 iptables -A INPUT -i eth0 -p tcp --syn -m connlimit --connlimit-above 15 -j DROP iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT 防范CC攻击 (1)控制单个IP的最大并发连接数 iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 30 (2)控制单个IP的某段时间的连接数 iptables -A INPUT -p icmp -m limit --limit 1/m --limit-burst 10 -j REJECT iptables -A INPUT -p icmp -j DROP
以下是iptables的详情:
一:前言
防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。
目前市面上比较常见的有3、4层的防火墙,叫网络层的防火墙,还有7层的防火墙,其实是代理层的网关。
对于TCP/IP的七层模型来讲,我们知道第三层是网络层,三层的防火墙会在这层对源地址和目标地址进行检测。但是对于七层的防火墙,不管你源端口或者目标端口,源地址或者目标地址是什么,都将对你所有的东西进行检查。所以,对于设计原理来讲,七层防火墙更加安全,但是这却带来了效率更低。所以市面上通常的防火墙方案,都是两者结合的。而又由于我们都需要从防火墙所控制的这个口来访问,所以防火墙的工作效率就成了用户能够访问数据多少的一个最重要的控制,配置的不好甚至有可能成为流量的瓶颈。
二:iptables 的历史以及工作原理
1.iptables的发展:
iptables的前身叫ipfirewall (内核1.x时代),这是一个作者从freeBSD上移植过来的,能够工作在内核当中的,对数据包进行检测的一款简易访问控制工具。但是ipfirewall工作功能极其有限(它需要将所有的规则都放进内核当中,这样规则才能够运行起来,而放进内核,这个做法一般是极其困难的)。当内核发展到2.x系列的时候,软件更名为ipchains,它可以定义多条规则,将他们串起来,共同发挥作用,而现在,它叫做iptables,可以将规则组成一个列表,实现绝对详细的访问控制功能。
他们都是工作在用户空间中,定义规则的工具,本身并不算是防火墙。它们定义的规则,可以让在内核空间当中的netfilter来读取,并且实现让防火墙工作。而放入内核的地方必须要是特定的位置,必须是tcp/ip的协议栈经过的地方。而这个tcp/ip协议栈必须经过的地方,可以实现读取规则的地方就叫做 netfilter.(网络过滤器)