存档在 2017年4月

怎样开启Dedecms的小说模块

2017年4月26日

1. 介绍

演示:http://v57.demo.dedecms.com/book

2. 启用

演示:http://v57.demo.dedecms.com/book

修改权限为777:

/templets/plus

» 阅读更多: 怎样开启Dedecms的小说模块

工具:MySQLConverterTool

2017年4月25日

官网:https://github.com/philip/MySQLConverterTool

讨论:http://stackoverflow.com/questions/1390607/how-could-i-change-this-mysql-to-mysqli

参考:https://lists.mysql.com/announce/400

The MySQL ext/mysqli Converter Tool is a collection of PHP scripts that help you upgrade PHP applications using the old PHP mysql extensions to using the newer PHP mysqli extension.

Linux From Scratch 中文翻译

2017年4月25日

LFS 手册(7.7,systemd 版本)

官网:http://lctt.github.io/
介绍:https://linux.cn/article-5797-1.html

Linux From Scratch 6.4 中文手册及 zhdoc-lfs 项目

下载:https://code.google.com/archive/p/zhdoc-lfs/downloads

怎样部署fail2ban

2017年4月21日

参考:http://amon.org/firewalld

【介绍】

官网:http://www.fail2ban.org/

fail2ban是可以监视你的系统日志,利用做filter和actor对匹配条件的错误信息(正则式匹配)执行相应的屏蔽动作。
CentOS 7已经自带Firewalld,并且使用Firewalld作为网络防火墙更加简单方便,以下是fail2ban + Firewalld使用方法。

建议:不要用封ip条目的方式,iptables列表长度是 65535 时就会封满,服务器也就会死机。

【环境】

检查Firewalld是否启用。

如果已经安装iptables建议先关闭:

service iptables stop

输出:

Redirecting to /bin/systemctl stop iptables.service
Failed to stop iptables.service: Unit iptables.service not loaded.

查看Firewalld状态:

firewall-cmd --state

输出:

running

启动firewalld:

systemctl start firewalld

设置firewalld开机启动:

systemctl enable firewalld.service

设置firewalld端口:

启用Firewalld后会禁止所有端口连接,因此请务必放行常用的端口,以免被阻挡在外。

firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent

重载配置使之生效:

firewall-cmd --reload

查看已放行端口:

firewall-cmd --zone=public --list-ports

【安装】

yum -y install fail2ban

输出:

...
Installed:
 fail2ban.noarch 0:0.9.7-1.el7
Dependency Installed:
 fail2ban-firewalld.noarch 0:0.9.7-1.el7
 fail2ban-sendmail.noarch 0:0.9.7-1.el7
 fail2ban-server.noarch 0:0.9.7-1.el7
 systemd-python.x86_64 0:219-57.el7_5.1
Complete!

安装完成。

如果报错:

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.ash.fastserv.com
 * extras: mirror.ash.fastserv.com
 * updates: mirror.ash.fastserv.com
No package fail2ban available.
Error: Nothing to do

参考:https://www.yeely.cn/fix-nopackage-available-on-linux.html

方法:用yum命令直接从企业版Linux库配置包中安装扩展包。一直等待,直到出现 Complete 就完成了epel的安装。

yum install -y epel-release

查看版本:

fail2ban-client -V

输出:

Fail2Ban v0.9.7
Copyright (c) 2004-2008 Cyril Jaquier, 2008- Fail2Ban Contributors
Copyright of modifications held by their respective authors.
Licensed under the GNU General Public License v2 (GPL).
Written by Cyril Jaquier <cyril.jaquier@fail2ban.org>.
Many contributions by Yaroslav O. Halchenko <debian@onerussian.com>.

设为开机自启:

systemctl enable fail2ban

输出:

Created symlink from /etc/systemd/system/multi-user.target.wants/fail2ban.service to /usr/lib/systemd/system/fail2ban.service.

启动fail2ban:

systemctl start fail2ban

重启fail2ban:

systemctl restart fail2ban

查看状态:

systemctl status fail2ban

查看被ban IP,其中sshd为名称,比如[wordpress]:

fail2ban-client status sshd

删除被ban IP:

fail2ban-client set sshd delignoreip 192.168.111.111

查看日志:

tail /var/log/fail2ban.log

【配置】

安装成功后fail2ban配置文件位于/etc/fail2ban,其中jail.conf为主配置文件,相关的匹配规则位于filter.d目录,其它目录/文件一般很少用到。

fail2ban已经内置很多匹配规则,位于filter.d目录下,包含了常见的SSH/FTP/Nginx/Apache等日志匹配。

设置 jail.local :

新建 /etc/fail2ban/jail.local ,jail.local 将覆盖 jail.conf 的所有默认规则:

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

参考:https://www.xiaoz.me/archives/9831
参考:https://qiita.com/kskiwmt/items/f871f940fa9b64b4f396

默认配置:

[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 86400
findtime = 600
maxretry = 5
banaction = firewallcmd-ipset
action = %(action_mwl)s

参数解释:
ignoreip:IP白名单,白名单中的IP不会屏蔽,可填写多个以(,)分隔
bantime:屏蔽时间,单位为秒(s)
findtime:时间范围
maxretry:最大次数
banaction:屏蔽IP所使用的方法,上面使用firewalld屏蔽端口。必须用firewallcmd-ipset,这是fiewalll支持的关键,如果是用Iptables请不要这样填写。

防止SSH爆破:

如果您还在使用默认SSH端口(22),可能每天都会被扫描,强烈建议先参考《Linux服务器之登录安全》加强服务器防护,或者可以使用fail2ban将恶意IP屏蔽。

参考:https://www.xiaoz.me/archives/8223

继续修改jail.local这个配置文件,在后面追加如下内容:

[sshd]
enabled = true
filter = sshd
port = 22
action = %(action_mwl)s
logpath = /var/log/secure

参数解释:
[sshd]:自己定义。
filter:规则名称,必须填写位于filter.d目录里面的规则,sshd是fail2ban内置规则
port:对应的端口
action:采取的行动
logpath:需要监视的日志路径

上面的配置意思是如果同一个IP,在10分钟内,如果连续超过5次错误,则使用Firewalld将他IP ban了。

保存 jail.local 后,重新启用fail2ban:

systemctl restart fail2ban

测试效果:

使用另一台服务器不断尝试连接SSH,并且不断的将密码输入错误,会发现连续超过5次后直接连不上,说明IP被ban了,可以查看被ban的IP:

fail2ban-client status sshd

输出:

Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- Journal matches:
`- Actions
 |- Currently banned: 0
 |- Total banned: 0
 `- Banned IP list:

【WordPress防护】

分析日志会发现有大量机器人在扫描wordpress登录页面wp-login.php,虽然对方可能没成功,但是为了避免万一还是将他IP干掉为好。

新建一个日志匹配规则,/etc/fail2ban/filter.d/wordpress.conf

注意:所有新的规则都放置于 /etc/fail2ban/filter.d/ ,文件名与 jail.local 中的 [wordpress] 相对。

填写如下内容:

[Definition]
failregex = ^</host><host> -.* /wp-login.php.* HTTP/1\.."
ignoreregex =

修改 jail.local ,追加如下内容:

[wordpress]
enabled = true
port = http,https
filter = wordpress
action = %(action_mwl)s
maxretry = 20
findtime = 60
bantime = 3600
logpath = /usr/local/nginx/logs/access.log

【排错】

报错: WARNING Wrong value for ‘findtime’ in ‘sshd’.

文件:jail.local

一般是因为时间格式引起的,统一用秒表示即可。

报错:WARNING Wrong value for ‘dbpurgeage’ in ‘Definition’

文件:fail2ban.conf

一般是因为时间格式引起的,统一用秒表示即可。

参考:https://www.cnblogs.com/miketwais/articles/fail2ban.html

# dbpurgeage = 1d
dbpurgeage = 86400

报错: fail2ban ERROR NOK: (“No ‘host’

参考:https://github.com/fail2ban/fail2ban/issues/1723

参考:https://www.centos.org/forums/viewtopic.php?t=49819

【源码安装】

源码:https://github.com/fail2ban/fail2ban

git clone https://github.com/fail2ban/fail2ban.git && cd fail2ban && python setup.py install

Fail2ban将安装到Python的库目录下,可执行脚本位于/usr/bin,配置文件位于/etc/fail2ban。

启动脚本:复制源码路径files下相应的操作系统的启动脚本到/etc/init.d/下 :

cp files/redhat-initd /etc/init.d/fail2ban

开机启动:

systemctl enable fail2ban

如果需要对IPv6地址进行匹配,Fail2ban的版本需要大于0.10。

【应用】

参考:https://stackoverflow.com/questions/32652703/fail2ban-filter-error-no-host-found-in

failregex looks like this:

failregex = ^.*?<HOST> https?://.*?[Aa]dmin.*? ((301)|(404)).*$

参考:https://my.oschina.net/CandyMi/blog/500767
参考:https://my.oschina.net/yiyuanxi/blog/810988

【参考】

参考:https://www.cnblogs.com/miketwais/articles/fail2ban.html
参考:http://www.tutorials.makkugasho.com/2014/02/21/asterisk-11-5-fail2ban/
参考:http://blog.csdn.net/clebeg/article/details/37960425
参考:https://www.xiaoz.me/archives/9831
参考:https://www.ifshow.com/centos-7-install-fail2ban-with-firewalld-to-defend-brute-force-password/
参考:http://baike.baidu.com/item/Fail2ban
参考:http://www.cnblogs.com/canxuexiecheng/articles/3315021.html
参考:https://my.oschina.net/monkeyzhu/blog/418592
参考:https://calvinpeak.herokuapp.com/2014/12/15/install-centos-7-in-linode/

怎样设置DeDeCMS的文章动态发布或生成静态

2017年4月20日

【设置发布时动态发布】

修改以下模板就可以达到发布文章和采集时仅动态发布。

dede/templets/article_add.htm 发表普通模板
dede/templets/album_add.htm 发表图集模板
dede/templets/archives_add.htm 发表通用文档模板
dede/templets/archives_sg_add.htm 发表特殊类文章模板

修改575行:

          <td width="90">发布选项:</td>
          <td width="379"><input name="ishtml" type="radio" class="np" value="1" checked="1" />
生成HTML
  <input type="radio" name="ishtml" class="np" value="0"/>
仅动态浏览 </td>

为:

          <td width="90">发布选项:</td>
          <td width="379">
				<input name="ishtml" type="radio" class="np" value="1" />生成HTML  
				<input name="ishtml" type="radio" class="np" value="0"  checked="1" />仅动态浏览
		  </td>

【批量修改动态发布为静态生成,或者反过来修改】

如果发布时设置为动态发布,那么在批量生成时是否生成静态?如果不,可以批量修改动态发布为静态生成,或者反过来修改。

打开dede_dede_archives 这个表,ismake 字段是要修改的对象。

UPDATE `dede_archives` SET `ismake` = '1' #修改所有文档为静态发布
UPDATE `dede_archives` SET `ismake` = '-1' #修改所有文档为动态浏览

如果针对栏目进行设置:

update dede_arctype set isdefault=-1 #将所有栏目设置为“使用动态页”
update dede_arctype set isdefault=1 #将所有栏目设置为“使用静态页”