selinux下踩phpcms和mysql的坑

最近在弄一个小网站。上次弄网站差不多是10年前了,那时还是jsp。现在新增一个现有网站的英文版本,要部署到其他人的机器上,用的是phpcms v9。

年前提前放了3天假,在家折腾了2天多,基本上在测试机器上弄得差不多了。上班后又整理了下,准备弄到已有公网IP的机器上,它上面已经安装了lampp,别人在用mysql,没有用httpd。用系统的mysql,用lampp的httpd。

坑1: 由于是公网机器,我记得最初帮助配置的时候,没把selinux关掉。在mysql更换端口,更换datadir后,服务起不起来。 报错permission deny。一开始没有想到是selinux,把datadir的文件属主,权限弄了个遍,还是不行。最后想起来是selinux的坑。参考https://my.oschina.net/jathon/blog/1613896 的内容,在selinux下开启了mysql。 主要是设置有:

   chcon -Rv -u system_u -t mysqld_db_t /public/website/mysql

   semanage fcontext -a -t mysqld_db_t "/public/website/mysql(/.*)?"

   semanage port -a -t mysqld_port_t -p tcp 3307 

坑2: 解压phpcms后,开始安装,在第5部,设置数据库的时候,一直显示无法连接数据库。一下子就开始怀疑selinux捣鬼。至少奋斗了4个小时,设置了很多selinux相关的httpd的配置,仍然搞不定。最后看看用默认的3306,连接其他人的mysql,到时可以,只是账号密码不知道。最后在度娘上,很不起眼的一句提醒了我,就是在“数据库库主机:localhost ”哪里,如果你修改了mysql端口,就要使用localhost:port,使用我的3307,结果一下子连上了,瞬间开朗了。 我只想说,phpcms 有点不太严谨吧,谁能想到你下面已经指定了3307端口,还要在localhost后面加。也许还是我不太熟悉php和mysql。还有就是,冤枉死selinux了。

坑3: 顺利安装完后,在mysql的datadir下没有对应的表。应该是没有权限,有了selinux的mysql坑,和冤枉selinux的坑后,不太立刻就怀疑selinux了。最后查明,应该是我对mysql设置不熟悉:使用了phpcms数据库后,还把所有权限给了phpcms数据库下的表phpcms,应该是给*权限。一开始错误的设置,导致了phpcms无法建立表,也没报错,就是查找数据库的时候找不到报一堆的错误。

   mysql> use phpcms;

   Database changed

   mysql> grant select,insert,update,delete,create,drop on * to XXXXX@localhdentified by 'XXXXPASSWD';

坑4:在前面几个坑期间,也一直在看selinux的日志,一直有218.65.30.124 这种臭不要脸的暴力测试root的ssh登录。我设置了ssh禁止root登录,没有破解成功,但是打了很多log。想设置iptable给这个地址的所有访问都丢掉,结果发现iptable服务也没开启。开启后,允许22和80宽口,并丢掉这个地址的所有访问。 哎,对于不全懂系统的人来配置公网地址机器,全是坑啊。 其实对于安全方便,我也有很多不懂。其实这种情况,应该是单位的网管来弄,他至少比单位其他人懂得多一些,应该尽量吧公网地址都设置在防火墙上,nat到内网地址,需要哪个端口开启,防火墙上来设置。结果,网管怕担责任,吧公网地址直接给下面机器,风险全转给使用人了,使用人再不懂,就等着被黑吧。我真遇到,公网地址机器,密码特别简单,没被黑算是万幸了。单位的网管,对不起了,我真是一直瞧不上你。

   iptables -I INPUT -s 218.65.30.124 -j DROP

你可能感兴趣的:(selinux下踩phpcms和mysql的坑)