1 避免系统管理弱口令
服务器、FTP、CmsTop后台、数据库等所有密码,请设置强有力密码,简单有效降低整体风险的安全漏洞,以下是关于一些强密码的建议:
§ 包括数字,符号,大小写字母组合
§ 密码长度应在12至14个字符,如果允许,可以更长。
§ 任何避免重复的密码,避免基于个人资料信息密码,如生日,姓名等。
§ 定时更换密码的习惯
尽管我们一再强调密码复杂度的重要性,还依然有许多弱密码的存在。
所以伟大的webmaster一定要在日常工作中给网站工作人员加强与灌输安全管理意识。
2 服务器SSH安全配置
互联网上无时不刻都有一些人四处开着扫描器进行弱密码扫描试探,SSH的22端口也不例外,在服务器上执行两条指令可查看所有登录成功与失败的日志:
# 查看成功登录的日志,空格翻页,q退出
shell> last | less
# 查看登录失败的日志
shell> lastb | less
看下图血淋淋的例子,所以在安装操作系统系统并设置好密码后,最好修改SSH默认端口
(1) 修改SSH服务端口
修改SSH配置文件,将其监听端口更改为大于10000的值,发挥您的想象力:
shell> vi /etc/ssh/sshd_config
# 指定端口号
Port 22345
修改iptables软件防火墙把默认的22端口改为刚才指定的端口:
# 也可以使用 setup来进行配置iptables软件防火墙
shell> vi /etc/sysconfig/iptables
# 重启iptables,或者使用 service iptables restart
shell> /etc/init.d/iptables restart
注意:关于SSH, FTP这些端口的修改,一定要在修改后立即进行连接测试,以防由于误操作,断开了当前连接而无法再次连接主机。
(2) 禁止root账户远程登录
通过修改默认端口基本上可以阻挡99%恶意扫描信息(根据个人观察),紧接着要做的就是禁止root远程直接登录。因为通过分析扫描日志,你会发现root账户试探的次数一直是永居榜首:
shell> vi /etc/ssh/sshd_config
# 禁止root账户登录
PermitRootLogin no
然后创建个普通账户,当我们需要远程连接的时候,先通过普通账户登录,再su -到root。普通账户的用户名需要你费心思创造个奇葩的,想到admin这样的用户名请先去反思:
shell> useradd yaoniming3000
shell> passwd yaoniming3000
使用普通账户登录服务器后执行su –切换
# 注意su后面有个减号,是同时切换环境变量的意思
shell> su –
同样,修改完毕,还是立即进行连接测试,以防无法连接主机
(3) 限制服务器IP或VPN登入
如果有条件,强烈建议配置服务器的远程登录权限只能通过特定IP段或VPN方可登入。
3 MySQL安全配置
(1) 数据目录和数据文件的安全性
设置MySQL数据目录为700,即只有启动数据库的用户可以读写数据库文件,保证了本地数据文件的安全。
shell> chmod 700 /www/mysql
设置MySQL日志目录为770,即只有数据库用户和组成员可以查看
shell> chmod 770 /var/log/mysql
(2) 本地日志文件安全性
有些用户在本地登陆或备份数据库的时候为了图方便,有时会在命令行参数里直接带了数据库的密码,如:
shell> mysql -uroot –ptest
shell> mysqldump -uroot -ptest test > test.sql
这些命令会被shell记录在历史文件里,比如bash会写入用户目录的.bash_history文件,如果这些文件不慎被读,那么数据库的密码就会泄漏。所以我们在shell登陆及备份的时候不要在-p后直接加密码,而是在提示后再输入数据库密码。
另外用户本地登陆数据库后执行的SQL命令也会被MySQL记录在用户目录的.mysql_history文件里。如果数据库用户用SQL语句修改了数据库密码,也会因.mysql_history文件而泄漏。所以必要时我们可以这样做:
shell>rm ~/.bash_history ~/.mysql_history
shell>ln -s /dev/null ~/.bash_history
shell>ln -s /dev/null ~/.mysql_history
(3) 数据库账户的配置
请不要直接使用数据库root账户来进行CmsTop数据库的管理,并配置数据库root账户只允许本地连接数据库。
针对每个数据库设置不同的用户、密码、连接限制权限,如果您不熟悉SQL可借助phpMyAdmin图形化web界面来进行配置。
mysql> select user,host from mysql.user;
+--------------+------------------+
| user | host |
+--------------+------------------+
| cmstop | 192.168% |
| cmstop | localhost |
| root | localhost |
(4) 数据库的外网访问
数据库一般不需要通过外网访问,所以也不需要配置外网IP,开放外网端口,当数据库与应用分开时,应该通过内网IP来进行连接。
(5) phpMyAdmin的访问控制
使用phpMyAdmin来进行数据库管理,不要为了图方便,将该目录放置到CmsTop的系统目录中运行。
可以单独配置一个域名来进行访问,并且不要进行公网DNS解析,让外网直接访问。
本文转自:有道云笔记