分类 Linux笔记 下的文章

修改Linux的SSH端口,解决一些安全问题.

今天有朋友问到我这方面的问题,我就在这里写出来提供给大家参考参考.
之前提到一些 扫描SSH密码 的行为,还有最近暴出的汉化版软件后门的事件,那么我们处理完一系列工作后,应该做什么来保障我们的系统安全呢?
这里我讲到的是修改系统默认的SSH端口:
首先修改配置文件:
vi /etc/ssh/sshd_config
找到#Port 22,这里是标识默认使用22端口,然后修改成为:
Port 22 Port 999
即去掉#Port 22前面的#,添加一些新的端口999.
这样22和999都成为SSH的登录端口了,然后保存退出.
执行:
/etc/init.d/sshd restart
如果开启了防火墙的,请编辑一下防火墙的配置:
vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 999 -j ACCEPT
这样就启动了999端口了,然后:
/etc/init.d/iptables restart

下面我们来看看能不能用新的端口999登录,如果可以的话,我们再次重复以上步骤:
vi /etc/ssh/sshd_config
在Port 22前面加上#,禁止SSH的默认端口22.
最后:/etc/init.d/sshd restart

为什么要这么麻烦这么做呢,因为一般大家都用root账户,在编辑的时候总是有一些笔误或者自己忘记自己添加的新端口是什么了,导致SSH不能登录,一方面我们可以看新端口是否生效,一方面也可以避免一些失误造成的麻烦!

好了,修改成自己知道的端口,以后就不怕那么做坏事的朋友天天扫描了,那些汉化软件后门窃取你的以前的数据也玩完了.

打印哪些ip破解你ssh密码以及多少次

在互联网中,每天充斥着破解,攻击,盗号,病毒,木马!
总有一些无聊的人,每天不断的猜解别人服务器的密码!
下面给出一条查看打印出哪些IP破解你SSH密码的次数:
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}'

上面图片就是扫描本站SSH密码的IP以及扫描次数!

这里还是建议大家修改一下服务器的远程连接端口,以免被真的扫描到你的密码影响服务器的安全!

配置HTTPS(SSL),以及取消其密码,方便启动nginx等!

直接进入正题,首先要生成获得证书所需的密钥等文件:
openssl genrsa -des3 -out whhack.com.key 1024 openssl req -new -key whhack.com.key -out whhack.com.csr openssl rsa -in whhack.com.key -out whhack.com.key
这样生成的证书必须是输入密码的,那么不输入密码怎么做呢:
mv whhack.com.key newwhhack.com.key openssl rsa -in newwhhack.com.key -out whhack.com.key rm newwhhack.com.key
然后根据这个key文件生成证书请求文件:
openssl req -new -key whhack.com.key -out whhack.com.csr

把上面生成的文件内容提交给CA,即可换取证书,这样的证书才能得到浏览器信任,但是一般需要一点费用,本站whhack.com就是;若自行生成(浏览器不信任,一般有提示)则:
openssl x509 -req -days 365 -in whhack.com.csr -signkey whhack.com.key -out whhack.com.crt
这里面的365是有效期,也就是一年,大家可以随意,弄个3650天都行的,呵呵...

那么我们现在有如下文件了:
whhack.com.crt whhack.com.csr whhack.com.key

好了,证书已经完成了,这里用nginx来说说实例使用,本站的Litespeed直接在控制面板中弄弄就OK了,大家下载访问https://www.whhack.com即为Litespeed面板中弄的,有面板就不多说了,来说nginx吧...
把文件假如都放在/usr/local/ssl/下面:
我们先安装nginx的ssl模块,因为http_ssl_module不属于nginx的基本模块(已经安装过的跳过此步).
./configure --user=username --group=groupname --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module make && make install
给出一个完整的nginx配置的实例:
server { listen 443; server_name whhack.com www.whhack.com; root /home/wwwroot/whhack.com; index index.html index.htm index.php; ssl on; ssl_certificate /usr/local/ssl/whhack.com.crt; ssl_certificate_key /usr/local/ssl/whhack.com.key; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; ..... }

mysql忘记密码,简单重置.

今天给大家带来的是linux mysql密码忘记如何重置的办法:

1,停止mysql服务
/etc/init.d/mysql stop
2,加入--skip-grant-tables启动mysql服务,就是跳过权限表认证,启动后,连接到mysql的root不需要口令,空密码即可链接.
/etc/init.d/mysql start --skip-grant-tables
3,进入mysql的安装目录,进入mysql
cd /usr/local/mysql/bin
./mysql -u root -p

此时会提示你输入密码,但是直接回车即可,

然后出现mysql > 的提示符

之后输入:
use mysql; UPDATE user SET password=PASSWORD('root') WHERE user='root'; exit;

此时mysql的root密码就被改为:root,但是这里要注意的是,你是否有root用户,我曾经遇到一个客户的机器删除了root了用户,结果白做了,其他用户自己根据上述sql语句替换即可!

记得重新启动mysql:
/etc/init.d/mysql restart

好有很多办法,我觉得这个是最简单直观的,希望能给大家带来一点帮助!

系统负载达到某值自动重启mysql脚本

记得以前VPS压力很大,每天某些时间段负载很高,而且会卡很久,有可能是某些程序/插件造成(网站多,服务器复杂),也很难排除,当然也很难舍弃当前的一些东西,根据我的观察有时候重启一下mysql一会就恢复,不重启mysql会持续很久,那么就想到一个想法,根据系统负载来重启mysqll服务,当然也可以重启任何服务,比如php等,自己修改!
今天记起来,收拾一下顺手记录一下,分享给大家:
系统:centos 5,其他系统均未测试!
#!/bin/sh TOP_SYS_LOAD_NUM=20 #系统负载的值 SYS_LOAD_NUM=`uptime | awk '{print $(NF-2)}' | sed 's/,//'` echo $(date +"%y-%m-%d") `uptime` if [ `echo "$TOP_SYS_LOAD_NUM < $SYS_LOAD_NUM"|bc` -eq 1 ] then echo "#0#" $(date +"%y-%m-%d %H:%M:%S") "pkill mysql" `ps -ef | grep mysql | wc -l` /etc/init.d/mysql restart sleep 60 for i in 1 2 3 do if [ `pgrep mysql | wc -l` -le 0 ] then echo "#1#" $(date +"%y-%m-%d %H:%M:%S") "start mysql" `ps -ef | grep mysql | wc -l` /etc/init.d/mysql start sleep 30 fi done else if [ `pgrep mysql | wc -l` -le 0 ] then echo "#2#" $(date +"%y-%m-%d %H:%M:%S") "start mysql" `ps -ef | grep mysql | wc -l` /etc/init.d/mysql start sleep 30 fi fi

下面就是加入系统计划任务了:
crontab -e
#下面两个任选,或者自己定义,一般是在某段时间5分钟左右执行一次比较合适,也解决了我很多烦恼! */1 * * * * /root/kmysql.sh >>/root/kmysql.log #每分钟都执行,全部时间 */2 13-14 * * * /root/kmysql.sh >>/root/kmysql.log #没两分钟执行一次,仅限于13点到14点
因为nginx+php-fpm,可能php-fpm挂掉了引起502或者php-fpm进程不够引起的502,那么这里可以稍微修改一下重启php-fpm!
记录php-cgi进程数
netstat -anpo | grep "php-cgi" | wc -l
重启php命令,根据自己实际情况处理
/usr/local/php/sbin/php-fpm restart

脚本执行如果报错
bc: command not found
表示没有bc命令,centos可以用 yum -y install bc 安装它.

好了,不多说了,灵活用吧!