缓解DDOS攻击

防止SYN攻击,轻量级预防
iptables -N syn-flood
iptables -A INPUT -p tcp –syn -j syn-flood
iptables -I syn-flood -p tcp -m limit –limit 3/s –limit-burst 6 -j RETURN
iptables -A syn-flood -j REJECT
防止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
用Iptables缓解DDOS (参数与上相同)
iptables -A INPUT  -p tcp --syn -m limit --limit 12/s --limit-burst 24 -j ACCEPT
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

缓解CC攻击

当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,自动屏蔽攻击IP。

1.系统要求
(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。
(2)iptables版本:1.3.7

安装
安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit

配置相应的iptables规则

示例如下:

(1)控制单个IP的最大并发连接数

iptables -I INPUT -p tcp --dport 80 -m connlimit  --connlimit-above 25 -j REJECT #允许单个IP的最大连接数为25个

早期iptables模块不包含connlimit,需要自己单独编译加载,请参考该地址http://sookk8.blog.51cto.com/455855/280372 不编译内核加载connlimit模块

(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数

iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --update --seconds 60 --hitcount 30 -j REJECT
iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --set -j ACCEPT

单个IP在60秒内只允许最多新建30个连接

实时查看模拟攻击客户机建立起来的连接数
watch 'netstat -an | grep:21 | grep <攻击IP> | wc -l
查看模拟攻击客户机被 DROP 的数据包数
watch 'iptables -L -n -v | grep <攻击IP>

原文链接

为什么要性能调优?

大部分的linux发行版是为了完全兼容市场中大部分计算机而设计的。这是一个相当混杂的硬件集合(硬盘,显卡,网卡,等等)。所以Red Hat, Suse,Mandriva和其他的一些发行版厂商选择了一些保守的设置来确保安装成功。
简单地说:你的发行版运行的很好,但是它可以运行地更好!
比如,可能有一个具体一些特殊特性的高级硬盘,而这些特性在标准配置的情况下可能就没被启用。

磁盘子系统的调优

对于Linux的Ext3/4来说,几乎在所有情况下都有所帮助的一个参数是关闭文件系统访问时间,在/etc/fstab下看看你的文件系统 有没有noatime参数.atime 是最近访问文件的时间,每当访问文件时,底层文件系统必须记录这个时间戳。因为系统管理员很少使用 atime,禁用它可以减少磁盘访问时间。禁用这个特性的方法是,在 /etc/fstab 的第四列中添加 noatime 选项。

网络调优

tcp连接保持管理:

如果在该参数指定时间内某条连接处于空闲状态,则内核向远程主机发起探测
[bash]net.ipv4.tcp_keepalive_time = 7200[/bash]

内核向远程主机发送的保活探测的时间间隔
[bash]net.ipv4.tcp_keepalive_intvl = 75[/bash]

内核发送保活探测的最大次数,如果探测次数大于这个数,则断定远程主机不可达,则关闭该连接并释放本地资源
一个连接7200s空闲后,内核会每隔75秒去重试,若连续9次则放弃。这样就导致一个连接经过2h11min的时间才能被丢弃,降低该值能够尽量减小失效连接所占用的资源,而被新的连接所使用。
[bash]net.ipv4.tcp_keepalive_probes = 9[/bash]

- 阅读剩余部分 -

一、文件形式的邮件

#!/usr/bin/env python3
#coding: utf-8
import smtplib
from email.mime.text import MIMEText
from email.header import Header
sender = '***'
receiver = '***'
subject = 'python email test'
smtpserver = 'smtp.163.com'
username = '***'
password = '***'
msg = MIMEText('你好','text','utf-8')#中文需参数'utf-8',单字节字符不需要
msg['Subject'] = Header(subject, 'utf-8')
smtp = smtplib.SMTP()
smtp.connect('smtp.163.com')
smtp.login(username, password)
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()

- 阅读剩余部分 -

1. 设置localhost的访问密码
$ mysqladmim -uroot -hlocalhost -p password '123456'
2. 设置已存在的用户的密码
mysql> set password for 'USERNAME'@'HOST'=password('password');
3. 设置已存在的用户的密码
mysql> update user set Password=password(password') where User='USERNAME' and Host='HOST';
4. 给远程用户设置密码
mysql> grant all privileges on *.* to 'root'@'192.168.31.%' identified by '123456';

mysql> flush privileges;

基于密钥的认证

一台主机为客户端(基于某个用户实现)
1. 生成一对密钥
ssh-keygen -t {rsa|dsa}

扩展 —— ssh-keygen基本用法

  • -t type : 指定加密算法
  • -f filename : 指定密钥文件保存路径
  • -N new_passphrase:指定密钥密码

- 阅读剩余部分 -