一.iptables优化脚本案例

#!/bin/bash

#脚本下载地址:#wget www.mrliangqi.com/pack/shell/iptables.sh

#脚本使用:#bash iptables.sh

# 适用于Web等服务的Linux iptables防火墙脚本。

# 注意1:该脚本需要根据实际情况修改后才能使用。

# 注意2:如果需要开发ftp服务,仅仅开发TCP20,21端口是不够的,必须要加载ip_conntrack_ftp以及ip_nat_ftp。

#     修改/etc/sysconfig/iptables-config, 增加/修改为以下一行内容:

#     IPTABLES_MODULES="ip_conntrack_ftp ip_nat_ftp"

##############

# 可信任的主机或者网段

##############

TRUSTHOSTS=( "0.0.0.0/0" )

##############

# 只开放给可信任主机的管理用端口

##############

ADMIN_TCP_PORTS="22,3306"

##############

# 对公网开放的服务端口

##############

SERVICE_TCP_PORTS="22,25,80,3306,1980,65531"

SERVICE_UDP_PORTS="53"

##############

# 清空原来的iptables设置

##############

iptables -F

iptables -X

##############

# 设置默认规则

# 通常INPUT及FORWARD设为DROP,OUTPUT设置为ACCEPT就足够了

# 极端情况下,可以将OUTPUT也设置成默认DROP。然后针对OUTPUT逐条增加过滤规则

##############

iptables -P INPUT DROP

iptables -P FORWARD DROP

iptables -P OUTPUT ACCEPT

##############

# 允许lo, PING, 以及所有内部发起的访问

##############

iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -p icmp -j ACCEPT

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -p icmp -j ACCEPT

iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT

##############

# 允许可信任主机访问管理端口

##############

for TRUSTHOST in ${TRUSTHOSTS[@]}

do

iptables -A INPUT  -p tcp -j ACCEPT -m multiport --dport $ADMIN_TCP_PORTS -s $TRUSTHOST

done

##############

# 放开TCP及UDP服务端口

##############

iptables -A INPUT  -p tcp -j ACCEPT -m multiport --dport $SERVICE_TCP_PORTS

iptables -A INPUT  -p udp -j ACCEPT -m multiport --dport $SERVICE_UDP_PORTS

#######################

# 防止DDOS攻击:Ping of Death

#######################

iptables -N PING_OF_DEATH

iptables -A PING_OF_DEATH -p icmp --icmp-type echo-request \

-m hashlimit \

--hashlimit 10/s \

--hashlimit-burst 10 \

--hashlimit-htable-expire 300000 \

--hashlimit-mode srcip \

--hashlimit-name t_PING_OF_DEATH \

-j RETURN

iptables -A PING_OF_DEATH -j LOG --log-prefix "ping_of_death_attack: "

iptables -A PING_OF_DEATH -j DROP

iptables -A INPUT -p icmp --icmp-type echo-request -j PING_OF_DEATH

#######################

# 防止DDOS攻击:SYN FLOOD

#######################

iptables -N SYN_FLOOD

iptables -A SYN_FLOOD -p tcp --syn \

-m hashlimit \

--hashlimit 200/s \

--hashlimit-burst 10 \

--hashlimit-htable-expire 300000 \

--hashlimit-mode srcip \

--hashlimit-name t_SYN_FLOOD \

-j RETURN

iptables -A SYN_FLOOD -j LOG --log-prefix "syn_flood_attack: "

iptables -A SYN_FLOOD -j DROP

iptables -A INPUT -p tcp --syn -j SYN_FLOOD

#######################

# 防止DDOS攻击:stealth scan

#######################

iptables -N STEALTH_SCAN

iptables -A STEALTH_SCAN -j LOG --log-prefix "stealth_scan_attack: "

iptables -A STEALTH_SCAN -j DROP

iptables -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j STEALTH_SCAN

iptables -A INPUT -p tcp --tcp-flags ALL NONE -j STEALTH_SCAN

iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN         -j STEALTH_SCAN

iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST         -j STEALTH_SCAN

iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j STEALTH_SCAN

iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j STEALTH_SCAN

iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN     -j STEALTH_SCAN

iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH     -j STEALTH_SCAN

iptables -A INPUT -p tcp --tcp-flags ACK,URG URG     -j STEALTH_SCAN

service iptables save

二.通过加载ip_nat_pptp模块使iptables支持PPTP穿透

的通过上面的脚本添加完整的iptables之后,发现无论如何都连接不到之前搭建的vpn,开始以为过滤策略有问题,后来发现清楚之后还一样,最后查看log,发现一下错误

localhost kernel: conntrack: generic helper won't handle protocol 47. Please consider loading the specific helper module.

需要加载某些模块,最后网上找到一条加载命令:

# modprobe ip_nat_pptp

加载即可~正常连接vpn.

长期有效的的办法当然不是手动加载,而是让每次启动之后都自动加载该模块。这时候就需要在/etc/sysconfig/iptables 中加入:

IPTABLES_MODULES="ip_conntrack_netbios_ns ip_conntrack_ftp ip_nat_pptp"

iptables防护CC和DDos和PPTP穿透脚本的更多相关文章

  1. 网站遭遇CC及DDOS攻击紧急处理方案

    检测访问是否是CC攻击的命令: 80口为网站的访问端口,可以根据实际情况进行修改 # netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: ' ...

  2. 宝塔linux面板防护CC设置

    使用宝塔linux面板很多用户受到CC攻击不知如何防范. 下面讲下如何利用宝塔自带的功能来进行基本的CC防护. 首先是在nginx上有个waf安全模块,里面有CC防护设置.(要求nginx为1.12版 ...

  3. f5 ddos cc——Mitigating DDoS Attacks with F5 Technology

    摘自:https://f5.com/resources/white-papers/mitigating-ddos-attacks-with-f5-technology Mitigating Appli ...

  4. Linux iptables 安全配置(防Ddos)

    *filter:INPUT ACCEPT [0:0]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [0:0]-N whitelist-A whitelist -s 58.60 ...

  5. CentOS 6.x 一键安装PPTP VPN脚本

    环境 CentOS 6.x 32位/64位XEN/KVM/OpenVZ 步骤 依次运行下列命令 #wget http://www.hi-vps.com/shell/vpn_centos6.sh #ch ...

  6. Iptables DDOS/CC 自动屏蔽脚本

    Iptables DDOS/CC 自动屏蔽脚本 May 20, 2013 最近不停地被 CC (DDOS的一种)频繁干扰,分享一个 iptables 屏蔽 DDOS 的脚本.让 crond 每分钟运行 ...

  7. iptables防DDOS攻击和CC攻击设置

    防范DDOS攻击脚本 #防止SYN攻击 轻量级预防 iptables -N syn-flood iptables -A INPUT -p tcp --syn -j syn-flood iptables ...

  8. iptables防DDOS攻击和CC攻击配置

    防范DDOS攻击脚本 #防止SYN攻击 轻量级预防 iptables -N syn-flood iptables -A INPUT -p tcp –syn -j syn-flood iptables ...

  9. DDOS防护原理

    1.常见DDoS攻击分类 DDoS粗略分类为流量型攻击和CC攻击.流量型攻击主要是通过发送报文侵占正常业务带宽,甚至堵塞整个数据中心的出口,导致正常用户访问无法达到业务服务器.CC攻击主要是针对某些业 ...

随机推荐

  1. MyBatis简单使用和入门理解

    本文记录第一次使用Mybatis时碰到的一些错误和简单理解,采用的示例是Eclipse中的JAVA工程,采用XML文件定义数据库连接. 可以使用Java JDBC API直接操作数据库,但使用框架会更 ...

  2. Retrofit的通讯方式示例

    Retrofit有两种通讯方式,同步和异步 异步方式: APIService req; req = RetrofitManager.getInstance().createReq(APIService ...

  3. UIBezierPath基本使用

    UIBezierPath * aPath = [UIBezierPath bezierPathWithArcCenter:point radius:5 startAngle:0 endAngle:2 ...

  4. Debian Security Advisory(Debian安全报告) DSA-4412-1 drupal7 security update

    Debian Security Advisory(Debian安全报告) DSA-4412-1 drupal7 security update Package:drupal7 CVE ID:暂无 Dr ...

  5. PHP取微信access_token并全局存储与更新

    来源:http://www.zcphp.com/html/weixinkaifa-show-20.html 官方的说明: access_token是公众号的全局唯一票据,公众号调用各接口时都需使用ac ...

  6. char,wchar_t 长度

    (测试环境:VC++6.0) char类型 wchar_t类型 类型大小(32位系统) 8位 16位 常量字符表示法 'A' L'A' 或 'A' 常量字符串表示法 'hello' L'hello' ...

  7. python后端从数据库请求数据给到前端的具体实现

    先来贴一窜代码让大家理解前端/后端/数据库的工作原理, 首先简要说明:前端向后端请求数据,后端根据前端请求数据的类别分析其需求,并连接到数据库获取相应数据: 来一段简单的实例代码模拟淘宝商城: 前端代 ...

  8. 20165234 《Java程序设计》第二周课下作业

    1. 教材代码完成情况测试P14 把100改为自己的后四位学号,编译运行Kernighan.java 代码的功能是从给定一个数字,实现从1依次加到此数的和. 如下是我用命令行实现代码的编译与运行. 2 ...

  9. exsi5.5以上版本支持虚拟机的二次虚拟化

    从存储里找到虚拟机的位置 下载并修改虚拟机的.vmx配置文件(记得做好备份) 打开<虚拟机名>.vmx文件,在末尾追加如下字段,保存退出. nce.enable = TRUE hyperv ...

  10. spring-session+Redis实现Session共享

    关于session共享的方式有多种: (1)通过nginx的ip_hash,根据ip将请求分配到对应的服务器 (2)基于关系型数据库存储 (3)基于cookie存储 (4)服务器内置的session复 ...