db_backup

#/bin/bash
mysqldump –user=root –databases blog_sundp_me| gzip > /home/sundp/mysql/blog_sundp_me-`date +%Y%m%d%H%M`.sql.gz
mysqldump –user=root –databases mediawiki| gzip > /home/sundp/mysql/mediawiki-`date +%Y%m%d%H%M`.sql.gz
mysqldump –user=root –databases yourls| gzip > /home/sundp/mysql/yourls-`date +%Y%m%d%H%M`.sql.gz
find /home/sundp/mysql/ -name “*.gz” -mtime +14 -exec /bin/rm {} ;

iptables学习心得

Iptables进程服务命令:

service iptables save 保存iptables设置,对iptables规则编辑后一定要保存。

service iptables restart 保存设置以后不重启则设置不生效,要设置生生效请重启。

service iptables status 检查iptables的设置。类似于iptable –L命令。

Iptables基本的链操作命令:

-L 列出某个链或者表中的规则: service iptables status 把这个命令和-L比较下

iptables –L:显示filter表中的规则等同于iptables –t filter -L

iptables –t nat –L :显示nat表的中的设置:

-F 删除某个链或者表中的规则:

iptables –F (iptables –t filter –F) 删除filter表中的所有规则;

iptables –t nat –F 删除nat表中的所有规则;

iptables –t nat –F POSTROUTING 删除nat表中POSTROUTING链的所有规则;

-A添加一条规则(在当前的规则后添加,也就是排在所有规则后):

iptables -A INPUT –s 192.168.0.1 –j DROP

和实例图中的功能相同,丢弃来自192.168.0.1的数据包,这里省略了-t filter。

添加该语句后,保存设置并重新启动iptalbes 服务,并通过-L的命令查看,就会发现刚添加的这条规则排列在所有规则后。

———–iptables的匹配规则是按顺序排列的。

-I在制定位置插入一条规则:

(如果有回环规则(iptables –A INPUT –I lo –j ACCEPT,则回环永远是第一条)

iptables –I 作为第一条规则插入。

iptables X 作为第X条规则插入,X这里代表规则顺序号。

iptables –A INPUT –p tcp –s 192.168.0.1 –dport 22 –j ACCEPT

允许192.168.0.1 通过22端口访问该主机,把它作为第一条规则插入iptables规则列表。

———–iptables的匹配规则是按顺序排列的。

-P 分配连接策略。

iptables –P INPUT DROP 禁止任何输入的数据包。这句慎用。

iptables –P OUTPUT ACCEPT 允许所有输出的数据包。

-D删除某一条规则:

Iptables –D X 删除某个链的第几条规则

iptables –D INPUT 3 删除INPUT链上的第3条规则。

iptables –P INPUT DROP 这个不能使用删除语句删除,只能到本机输入iptables –P INPUT ACCEPT

Iptables中的匹配:

iptables –A INPUT –p tcp –s 192.168.0.1 –dport 22 –j ACCEPT

这个命令我们在上面已经看过了,我们来看下其他的一些匹配参数。

-p protocol 匹配网络协议,例子中匹配tcp协议。

-s IP地址或者网段 匹配源IP地址或者网段

例子中师匹配一个IP的,如果要匹配一个网段则如下

-s 192.168.0.1/24

如果是除这个网段之外的所有则为:! -s 192.168.0.1/24

如果是除这个IP之外的所有则为:! -s 192.168.0.1

-d IP地址或者网段 匹配目的IP地址或者网段

–dport X 匹配目的端口号,X代表具体端口号。

–sport X 匹配源端口号,X代表具体端口号。

Iptables中的目的:

我们已经在前面看到过-j 后面跟的就是目的。

ACCEPT:允许数据包通过。

DROP:直接丢弃数据包。

REJECT:丢弃数据包,同时发送响应报文通知发送方。

设置Iptables预设规则(本地机防火墙):

1、清除iptables设置:iptables –F

2、设置回环规则,没有这个规则好多服务不能启动:

iptables –A INPUT –i lo –j ACCETP

3、连接跟踪设置:作用允许连线出去后对方主机回应进来的封包。

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

NEW:想要新建连接的数据包

INVALID:无效的数据包,例如损坏或者不完整的数据包

ESTABLISHED:已经建立连接的数据包

RELATED:与已经发送的数据包有关的数据包

4、iptables -p INPUT DROP 允许进入数据包—-慎用该句。

5、iptables -p FORWARD DROP 禁止转发数据包

6、iptables -P OUTPUT ACCEPT 允许外发数据包

7、设置好以后就可以根据情况开放相应的端口了

iptables –A INPUT –p tcp –dport 20:21 –j ACCEPT 开放FTP的20、21端口。

iptables –A INPUT –P tcp –dport 80 –j ACCEPT 开放http的80端口。

iptables –I INPUT –p tcp –dport 22 –j ACCEPT 开放SSH服务的22端口。

设置Iptables FORWORD规则:

一般情况FORWORD链式DROP的,但是当用来做NAT的时候我们就需要设置他了。

首先要开启转发功能:编辑/etc/sysctl.conf文件

Iptables转发功能(在做NAT时,FORWARD默认规则是DROP时,必须做)

# iptables -A FORWARD -i eth0 -o eth1 -m state –state RELATED,ESTABLISHED -j ACCEPT

# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT

丢弃坏的TCP包。

#iptables -A FORWARD -p TCP ! –syn -m state –state NEW -j DROP

处理IP碎片数量,防止攻击,允许每秒100个。

#iptables -A FORWARD -f -m limit –limit 100/s –limit-burst 100 -j ACCEPT

设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包。

#iptables -A FORWARD -p icmp -m limit –limit 1/s –limit-burst 10 -j ACCEPT

我在前面只所以允许ICMP包通过,就是因为我在这里有限制。

连接跟踪:提供对数据包“状态”的检查

可以识别的状态:

NEW:想要新建连接的数据包

INVALID:无效的数据包,例如损坏或者不完整的数据包

ESTABLISHED:已经建立连接的数据包

RELATED:与已经发送的数据包有关的数据包

连接跟踪的模块

ip_conntrack_ftp:自动跟踪FTP连接,并自动打开它需要通过防火墙的高端端口。

Ip_conntrack_tftp:和上面功能类似不过是TFTP服务。

Ip_nat_ftp:修改NAT保护的计算机的FTP数据包。

Ip_nat_tftp:和上面类似不是TFTP数据包。

可以通过修改/etc/sysconfig/iptables-config 文件

修改IPTABLES_MODULES=”ip_conntrack_tftp ip_nat_ftp”

也可以通过modprobe ip_conntrack_tftp 不过重启以后将失效。

连接跟踪实例:

允许建立连接:

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

跟踪规则:

iptables -A INPUT -m state –state NEW -p tcp –dport 25 -j ACCEPT

阻止所有其他进入的链接:

iptables -A INPUT -m state –state NEW -j DROP

NAT网络地址转换:将一个IP转换成另一个 IP(输入和输出)

网络地址转换类型:

目的地 NAT(DNAT):DNAT修改包的目的地位址的时机,必须在包即将被送到本机行程之前,或是要被转送其它电脑之前;所以,使用DNAT为目标的规则,必须设置于nat表格的PREROUTING链结。

源 NAT(SNAT,MASQUERADE):SNAT必须在封包即将离开核心的前一刻,即时修改其来源位址(或通讯端口),所以SNAT规则的设置地点必须是在nat表格的POSTROUTING链结。

NAT实例:

iptables -t nat -A PREROUTING -i ethl -p tcp – -dport 80 -j DNAT – – to -destination 192.168.1.3:8080

把要进入eth1(eth1连接外网)80端口的数据包,重新定向到192.168.1.3的8080端口。

iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 80 -j DNAT

–to-dest 192.168.1.3 –to-dest 192.168.1.4 –to-dest 192.168.1.5

上面这句第一个请求被发到192.168.1.3,第二个发到192.168.1.4如此循环,实现载量平衡。

上面的语句可以使外网的访问内网开通8080端口的WEB 服务器,那么内网的WEB服务器如何将数据传出去呢?这个时候要通过SNAT来实现了。

iptables -t nat -A POSTROUTING -j SNAT

iptables -t nat -A POSTROUTING -j SNAT –to-source 192.168.1.3-192.168.1.9

iptables -t nat -A POSTROUTING -j SNAT –to-source 192.168.1.3:123

iptables -t nat -A POSTROUTING -j SNAT –to-source 192.168.1.3:123-234

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

第一种方法是直接使用SNAT为目标,这种方法适合用在具有固定IP地址的网关器,另一种方法是使用是使用MASQUERADE为目标,适合用于只有动态IP地址的网关器(例如,使用PPPoE协定的ADSL连线)。由于由于MASQUERADE能够应付网络界面忽然离线,然后以另一个地址恢复上线的情况,所以它转换逻辑比较复杂些,需要耗损比较多的CPU运算能力,因此,如果你有固定的IP地址,就应该尽量使用SNAT来代替MASQUERADE。

ubuntu12.04教育网更新源

现在是已经发布到ubuntu 12.04,不过我用的还是11.10,电子科大的源今天挂了,写个文章存个档

更新源方法
1.备份:$sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
2.编辑:$sudo gedit /etc/apt/sources.list
删除文件里的所有,然后复制其中以下一个更新源到文件中,保存!
3.更新:$sudo apt-get update
4.升级:$sudo apt-get upgrade

ubuntu版本—版本号
Ubuntu 10.04 Lucid Lynx—lucid
Ubuntu 10.10 Maverick Meerkat—maverick
Ubuntu 11.04 Natty Narwhal—natty
Ubuntu 11.10 Oneiric Ocelot—oneiric
Ubuntu 12.04 Precise Pangolin—precise

教育网更新源:
ubuntu源的格式为 “deb url 版本号 main restricted universe multiverse”
一般来讲,url是不变的,所以只要修改版本号,就可以得到最新的源了

中国科技大学

deb http://debian.ustc.edu.cn/ubuntu/ precise main restricted universe multiverse
deb http://debian.ustc.edu.cn/ubuntu/ precise-backports restricted universe multiverse
deb http://debian.ustc.edu.cn/ubuntu/ precise-proposed main restricted universe multiverse
deb http://debian.ustc.edu.cn/ubuntu/ precise-security main restricted universe multiverse
deb http://debian.ustc.edu.cn/ubuntu/ precise-updates main restricted universe multiverse
deb-src http://debian.ustc.edu.cn/ubuntu/ precise main restricted universe multiverse
deb-src http://debian.ustc.edu.cn/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://debian.ustc.edu.cn/ubuntu/ precise-proposed main restricted universe multiverse
deb-src http://debian.ustc.edu.cn/ubuntu/ precise-security main restricted universe multiverse
deb-src http://debian.ustc.edu.cn/ubuntu/ precise-updates main restricted universe multiverse

上海交通大学

deb http://ftp.sjtu.edu.cn/ubuntu/ precise main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ precise-backports main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ precise-proposed main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ precise-security main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ precise-updates main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu-cn/ precise main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ precise main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ precise-backports main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ precise-proposed main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ precise-security main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ precise-updates main multiverse restricted universe

厦门大学的:

deb ftp://ubuntu.realss.cn/ubuntu/ precise main restricted universe multiverse
deb ftp://ubuntu.realss.cn/ubuntu/ precise-backports restricted universe multiverse
deb ftp://ubuntu.realss.cn/ubuntu/ precise-proposed main restricted universe multiverse
deb ftp://ubuntu.realss.cn/ubuntu/ precise-security main restricted universe multiverse
deb ftp://ubuntu.realss.cn/ubuntu/ precise-updates main restricted universe multiverse
deb-src ftp://ubuntu.realss.cn/ubuntu/ precise main restricted universe multiverse
deb-src ftp://ubuntu.realss.cn/ubuntu/ precise-backports main restricted universe multiverse
deb-src ftp://ubuntu.realss.cn/ubuntu/ precise-proposed main restricted universe multiverse
deb-src ftp://ubuntu.realss.cn/ubuntu/ precise-security main restricted universe multiverse
deb-src ftp://ubuntu.realss.cn/ubuntu/ precise-updates main restricted universe multiverse

成都市 电子科技大学更新服务器:

deb http://ubuntu.uestc.edu.cn/ubuntu/ precise main multiverse restricted universe
deb http://ubuntu.uestc.edu.cn/ubuntu/ precise-backports main multiverse restricted universe
deb http://ubuntu.uestc.edu.cn/ubuntu/ precise-proposed main multiverse restricted universe
deb http://ubuntu.uestc.edu.cn/ubuntu/ precise-security main multiverse restricted universe
deb http://ubuntu.uestc.edu.cn/ubuntu/ precise-updates main multiverse restricted universe
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ precise main multiverse restricted universe
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ precise-backports main multiverse restricted universe
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ precise-proposed main multiverse restricted universe
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ precise-security main multiverse restricted universe
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ precise-updates main multiverse restricted universe

ssh-keygen的使用方法

一、概述

1、就是为了让两个linux机器之间使用ssh不需要用户名和密码。采用了数字签名RSA或者DSA来完成这个操作

2、模型分析

假设 A (192.168.20.59)为客户机器,B(192.168.20.60)为目标机;

要达到的目的:
A机器ssh登录B机器无需输入密码;
加密方式选 rsa|dsa均可以,默认dsa

二、具体操作流程

单向登陆的操作过程(能满足上边的目的):
1、登录A机器
2、ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub
3、将 .pub 文件复制到B机器的 .ssh 目录, 并 cat id_dsa.pub >> ~/.ssh/authorized_keys
4、大功告成,从A机器登录B机器的目标账户,不再需要密码了;(直接运行 #ssh 192.168.20.60 )

双向登陆的操作过程:

1、ssh-keygen做密码验证可以使在向对方机器上ssh ,scp不用使用密码.具体方法如下:
2、两个节点都执行操作:#ssh-keygen -t rsa
然后全部回车,采用默认值.

3、这样生成了一对密钥,存放在用户目录的~/.ssh下。
将公钥考到对方机器的用户目录下 ,并将其复制到~/.ssh/authorized_keys中(操作命令:#cat id_dsa.pub >> ~/.ssh/authorized_keys )。

4、设置文件和目录权限:

设置authorized_keys权限
$ chmod 600 authorized_keys
设置.ssh目录权限
$ chmod 700 -R .ssh

5、要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。(今天就是遇到这个问题,找了好久问题所在),其实仔细想想,这样做是为了不会出现系统漏洞。

我从20.60去访问20.59的时候会提示如下错误:

[java] view plaincopy

The authenticity of host ‘192.168.20.59 (192.168.20.59)’ can’t be established.
RSA key fingerprint is 6a:37:c0:e1:09:a4:29:8d:68:d0:ca:21:20:94:be:18.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.20.59’ (RSA) to the list of known hosts.
root@192.168.20.59’s password:
Permission denied, please try again.
root@192.168.20.59’s password:
Permission denied, please try again.
root@192.168.20.59’s password:
Permission denied (publickey,gssapi-with-mic,password).

三、总结注意事项

1、文件和目录的权限千万别设置成chmod 777.这个权限太大了,不安全,数字签名也不支持。我开始图省事就这么干了

2、生成的rsa/dsa签名的公钥是给对方机器使用的。这个公钥内容还要拷贝到authorized_keys

3、linux之间的访问直接 ssh 机器ip

4、某个机器生成自己的RSA或者DSA的数字签名,将公钥给目标机器,然后目标机器接收后设定相关权限(公钥和authorized_keys权限),这个目标机就能被生成数字签名的机器无密码访问了

chkconfig小bug解决

背景:

ubuntu 11.04

3天前刚执行了一次自动更新

Bug:

不知道是不是更新的原因,每当运行chkconfig –add或者–del命令时,就出现如下错误提示:

/sbin/insserv: 没有那个文件或目录

已尝试但无效的方法:

重新安装insserv,无效

重新安装chkconfig,无效

解决方案/过程:

(1) 查找insserv安装位置

whereis insserv

结果如下:

insserv: /etc/insserv /etc/insserv.conf /usr/lib/insserv /usr/share/insserv /usr/share/man/man8/insserv.8.gz

可以发现insserv根本不在/sbin/目录下,而是在/usr/lib/insserv/目录下。

(2) 查找chkconfig安装位置

whereis chkconfig

结果如下:

chkconfig: /sbin/chkconfig /usr/share/man/man8/chkconfig.8.gz

(3) 编辑chkconfig文件

sudo gedit /sbin/chkconfig

找到第176行:# my @i = (“/sbin/insserv”);

将引号内的内容改为“/usr/lib/insserv/insserv”.

保存即可。