2010.6--Juniper防火墙丢失ScreenOS的灾难恢复
2010-06-30 02:50
375 查看
之所以想写这篇文章,是因为在工作中,经常被MySQL的用户授权问题折腾一下.日积月累....忍不住吐槽一下.
MySQL的安全包括很多方面,主要分为内部安全,外部安全及数据传输安全.
内部安全指MySQL的启动和安装目录权限,避免其他用户进入目录,随意访问数据.
外部安全指网络访问,其中用户授权是重点,也是接下来我要吐槽的.
加密传输,这个不多说,大部分数据库处于内网,很少有人使用.
mysql库的user表,是最常用来查看权限的,例如用下面的SQL查看当前实例有多少个授权用户和某一个用户的权限
SELECTuser,host,passwordFROM mysql.user;
SHOW GRANTS FOR 'username'@'hostname';
在MySQL中没有用户组的概念,它认为即使相同的用户名而从不同的主机连过来,也是不同的授权.比如我创建一个用户u01,分别授权从192.168.0.1和192.168.0.2连接,那么MySQL认为是两个不同的用户.说到这里,也许有人就能想到,为了安全,不能让其他人随意连接数据,每个授权最好精确到IP地址,而不用范围(%)匹配.这样固然于安全有好处,但是也有如下维护的"困难":
1.权限表条目增多.如果有20台主机需要连数据库,那么需要根据20台主机分别授权.
2.权限混乱,很难保证相同的用户名具有相同的权限.
3.追加授权操作成本太高.经常遇到这样的情况1,开发人员提交权限申请,密码处注明,"与原来一样".dba去MySQL查密码,结果同样的用户名,从不同IP连过来的密码不一致,分别查出权限后,再与开发确认后,进行授权.情况2,应用添加新机器,已经发布上线,突然发现没有权限,急忙催促dba添加.
4."脏授权"无法清理,很多因服务器更换,导致的旧IP授权留在数据库中,没人去清理.
因此,建议在内网的数据库,并且做了合理的网段隔离,应该把数据库授权的工作尽量简化,对网段授权.这虽然增加的连接MySQL的范围.但是如果有人要窃取数据的话,仍然要满足下面的条件:
1.登录到内网并有权限登录到任意一台服务器
2.知道MySQL的连接地址和帐号/密码
与精确到IP地址唯一不同的地方,便是"登录到任意一台,还是指定一台",这其中的安全与效率问题,需要大家根据自己的环境,折中考虑授权策略.
自动化脚本
grant.py.txt
1. 脚本运行在python2.7环境中.
2. 如果grant.ini配置文件不存在,则会自动生成.
配置文件说明如下:
[proposer]
#申请人邮件地址
to_email =
# 抄送地址
cc_email =
[server]
# 登录目标数据库主机的用户名
srv_user =
# 数据库主机名
srv_host = db1
# 服务器的密码(禁止填写)
#srv_pwd =
[db]
# 登录数据库的用户名
db_user = xxxx
# 通过IP和端口连接
db_host = 127.0.0.1
db_port = 3306
# 对程序提供的ip(vip)地址
db_ip_writer = 192.168.250.1
#db_ip_reader =
# 登录数据库的密码(禁止填写)
#db_pwd = xxx
[grants]
# 添加的权限
permission = UPDATE,DELETE,INSERT,SELECT
# 库范围
database = *
# 表范围
table = *
# 添加的用户名
user = test1
# 允许连接的主机
host = 127.0.0.1,192.168.250.1,192.168.250.2
# 连接的密码(不需要填写,脚本会自动生成16位的密码,由Aa-Zz,0-9组成),追加用户授权时,可修改为加密的密文.
#password =
# 其他
#others =
脚本逻辑:
1.读取配置文件
2.拼接sql
3.显示/确认
4.确认后,写入用户目录的tempfile.sql文件中
5.将tempfile.sql文件传到目标服务器
6.在目标服务执行mysql ... -e 'source tempfile.sql'
7.删除本地和目标服务器的tempfile.sql文件
8.发送邮件通知申请人
MySQL的安全包括很多方面,主要分为内部安全,外部安全及数据传输安全.
内部安全指MySQL的启动和安装目录权限,避免其他用户进入目录,随意访问数据.
外部安全指网络访问,其中用户授权是重点,也是接下来我要吐槽的.
加密传输,这个不多说,大部分数据库处于内网,很少有人使用.
mysql库的user表,是最常用来查看权限的,例如用下面的SQL查看当前实例有多少个授权用户和某一个用户的权限
SELECTuser,host,passwordFROM mysql.user;
SHOW GRANTS FOR 'username'@'hostname';
在MySQL中没有用户组的概念,它认为即使相同的用户名而从不同的主机连过来,也是不同的授权.比如我创建一个用户u01,分别授权从192.168.0.1和192.168.0.2连接,那么MySQL认为是两个不同的用户.说到这里,也许有人就能想到,为了安全,不能让其他人随意连接数据,每个授权最好精确到IP地址,而不用范围(%)匹配.这样固然于安全有好处,但是也有如下维护的"困难":
1.权限表条目增多.如果有20台主机需要连数据库,那么需要根据20台主机分别授权.
2.权限混乱,很难保证相同的用户名具有相同的权限.
3.追加授权操作成本太高.经常遇到这样的情况1,开发人员提交权限申请,密码处注明,"与原来一样".dba去MySQL查密码,结果同样的用户名,从不同IP连过来的密码不一致,分别查出权限后,再与开发确认后,进行授权.情况2,应用添加新机器,已经发布上线,突然发现没有权限,急忙催促dba添加.
4."脏授权"无法清理,很多因服务器更换,导致的旧IP授权留在数据库中,没人去清理.
因此,建议在内网的数据库,并且做了合理的网段隔离,应该把数据库授权的工作尽量简化,对网段授权.这虽然增加的连接MySQL的范围.但是如果有人要窃取数据的话,仍然要满足下面的条件:
1.登录到内网并有权限登录到任意一台服务器
2.知道MySQL的连接地址和帐号/密码
与精确到IP地址唯一不同的地方,便是"登录到任意一台,还是指定一台",这其中的安全与效率问题,需要大家根据自己的环境,折中考虑授权策略.
自动化脚本
grant.py.txt
1. 脚本运行在python2.7环境中.
2. 如果grant.ini配置文件不存在,则会自动生成.
配置文件说明如下:
[proposer]
#申请人邮件地址
to_email =
# 抄送地址
cc_email =
[server]
# 登录目标数据库主机的用户名
srv_user =
# 数据库主机名
srv_host = db1
# 服务器的密码(禁止填写)
#srv_pwd =
[db]
# 登录数据库的用户名
db_user = xxxx
# 通过IP和端口连接
db_host = 127.0.0.1
db_port = 3306
# 对程序提供的ip(vip)地址
db_ip_writer = 192.168.250.1
#db_ip_reader =
# 登录数据库的密码(禁止填写)
#db_pwd = xxx
[grants]
# 添加的权限
permission = UPDATE,DELETE,INSERT,SELECT
# 库范围
database = *
# 表范围
table = *
# 添加的用户名
user = test1
# 允许连接的主机
host = 127.0.0.1,192.168.250.1,192.168.250.2
# 连接的密码(不需要填写,脚本会自动生成16位的密码,由Aa-Zz,0-9组成),追加用户授权时,可修改为加密的密文.
#password =
# 其他
#others =
脚本逻辑:
1.读取配置文件
2.拼接sql
3.显示/确认
4.确认后,写入用户目录的tempfile.sql文件中
5.将tempfile.sql文件传到目标服务器
6.在目标服务执行mysql ... -e 'source tempfile.sql'
7.删除本地和目标服务器的tempfile.sql文件
8.发送邮件通知申请人
相关文章推荐
- Juniper防火墙丢失ScreenOS的灾难恢复
- Juniper防火墙丢失ScreenOS的灾难恢复
- Juniper防火墙丢失ScreenOS重新安装ScreenOS
- 教你验证 Juniper ScreenOS防火墙的策略顺序是否有效?
- Juniper SRX防火墙与Juniper ScreenOS防火墙配置不同点之一
- Juniper SRX防火墙与Juniper ScreenOS防火墙配置不同点之二
- Juniper NetScreenOS 后门简易批量扫描
- 解决灾难恢复后活动目录之SYSVOL和NELOGON共享丢失
- 解决灾难恢复后域共享目录SYSVOL与NELOGON共享丢失
- 关于Juniper ScreenOS MIP/VIP地址说明
- 解决不对称流量经过JUNIPER防火墙,tcp连接重置丢失问题
- J-01. 恢复出厂设置 ❀ 瞻博 (Juniper) 防火墙
- EDB PPAS/PostgreSQL异地容灾,并实现“0数据丢失”的灾难恢复
- 灾难恢复:当SQL Server 2005的sa密码丢失后
- 解决灾难恢复后域共享目录SYSVOL与NELOGON共享丢失
- 生产机的OS宕机,rman灾难恢复