一.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. CSS样式选择

    1:#a,b{…………}一个id叫a和一个标签是b的样式 2:#a b{…………}一个id叫a下面的一个标签是b的样式3:#a:b{…………}一个id叫a的伪类b的样式4:#a.b{…………}一个id ...

  2. java 用PDFBox 删除 PDF文件中的某一页

    依赖: <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox-app ...

  3. sql审核工具

    https://github.com/Meituan-Dianping/SQLAdvisor/blob/master/doc/QUICK_START.md

  4. NSScanner类的基本用法

    NSScanner是一个类,用于在字符串中扫描指定的字符,尤其是把它们翻译/转换为数字和别的字符串.可以在创建NSScaner时指定它的string属性,然后scanner会按照你的要求从头到尾地扫描 ...

  5. 【LeetCode】108. Convert Sorted Array to Binary Search Tree

    Problem: Given an array where elements are sorted in ascending order, convert it to a height balance ...

  6. 【省时的 IDEA 配置 】 JRebel Mybatis Problems Spring Auto-Scan

    在 Java Web 开发中, 一般更新了 Java 文件后要手动重启 Tomcat 服务器, 才能生效, 浪费不少生命啊, 自从有了 JRebel 这神器的出现, 不论是更新 class 类还是更新 ...

  7. springboot04-mongodb

    1.搭建mongodb服务 在https://www.mongodb.com/下载mongodb安装包,解压到本地 cmd中执行命令,启动本地mongodb: cd D:\Program Files\ ...

  8. python 学习 argparse

    1. argparse python 中用于解析命令行参数和选项的标准模块 创建一个解析器对象,解析器类ArgumentParser add_argument() 方法用来指定程序接受那些命令行参数, ...

  9. class按传递时分析

    class FEF{ public: int a; FEF(int a,int b){ this->a = a*b; } }; void mam(FEF a){ printf("%d ...

  10. 在vscode上 运行typescript 文件

    安装nodejs 安装链接: https://nodejs.org/zh-cn/ 安装测试: node -v npm -v 安装typescript sudo npm install typescri ...