Linux 相关安全设置

1.如何设置 Linux 上 SSH 登录的 Email 提醒
使用root用户登录到你的服务器;

在全局源定义处配置警告(/etc/bashrc),这样就会对 root 用户以及普通用户都生效:

[root@vps ~]# vi /etc/bashrc

将下面的内容加入到上述文件的尾部。

echo ‘ALERT – Root Shell Access (vps.ehowstuff.com) on:’ `date` `who` | mail -s “Alert: Root Access from `who | cut -d’(‘ -f2 | cut -d’)’ -f1`” recipient@gmail.com

你也可以选择性地让警告只对 root 用户生效:
将上面的内容添加到/root/.bashrc的尾部

2.Linux被DDOS及CC攻击解决方案
现在DDOS攻击越来越频繁,无需什么技术即可就行DDOS拒绝服务经常一些站长反映自己的网站经常出现mysql 1040错误,他的在线用户才不到一千,mysql配置也没问题。一般遇到这站情况就需注意了,你的网站可能被CC攻击了。
解决方案及思路
CC攻击防御措施,鉴于系统是centos,运行了下面的这两行命令。

netstat -anlp|grep 80|grep tcp|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -nr|head -n20 | netstat -ant |awk ‘/:80/{split($5,ip,”:”);++A[ip[1]]}END{for(i in A) print A[i],i}’ |sort -rn|head -n20

把请求过多的IP记录下来。
222.127.94.*
247.27.128.*
145.27.133.*
开始封禁IP,具体可以看我下面运行的命令。本文主要是采用iptables进行封禁
iptables -I INPUT -s 222.127.94.0/16 -j DROP
iptables -I INPUT -s 247.27.128.0/16 -j DROP
iptables -I INPUT -s 145.27.133.0/16 -j DROP
iptables -I INPUT -s 193.1.0.0/8 -j DROP 【慎用封禁整个段】
运行上面这些命令之后我们已经完成封禁操作了,不过还得保存一下,如果不保存的话重启系统之后上面设定的规则会消失。
service iptables save
运行下面这行命令,来查看谁的访问量最高(需要服务器安装tcpdump)

tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F”.” ‘{print $1″.”$2″.”$3″.”$4}’ | sort | uniq -c | sort -nr |head -20
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
1000 packets captured
1000 packets received by filter
0 packets dropped by kernel
1420 IP 174.7.7.*
然后将packets过多的IP记录下来,用上面的方法封禁。
运行
service iptables save
保存然后重启
iptables service iptables restart
这一步建议多进行几次,发现异常IP用上面的办法封禁。如果出现误封可以参考下面这行解封命令进行解封
iptables -D INPUT -s 222.142.2.0/16 -j DROP
常用命令
封单个IP的命令是:
iptables -I INPUT -s 211.1.0.0 -j DROP
封IP段的命令是:

iptables -I INPUT -s 211.1.0.0/16 -j DROP
iptables -I INPUT -s 211.2.0.0/16 -j DROP
iptables -I INPUT -s 211.3.0.0/16 -j DROP
封整个B段的命令是:

iptables -I INPUT -s 211.0.0.0/8 -j DROP
后续
进行了上面的操作之后,客户的网站正常了,几乎秒开,当然这和他的vps给力也有一定的关系。top了一下,服务器资源也正常了。

3.SSH暴力破解检测方法

# cat /var/log/secure | awk ‘/Failed/{print $(NF-3)}’ | sort | uniq -c | awk ‘{print $2″ = “$1;}’
通过上面的命令可以查看有哪些IP尝试过连接和破解次数,如下所示:
109.74.209.197 = 9
113.195.145.70 = 740
113.195.145.85 = 1038
115.197.42.232 = 3
115.239.212.132 = 19
115.239.212.133 = 14

4.DenyHosts安装与配置演示:

1、下载DenyHosts 并解压

# wget http://soft.vpser.net/security/denyhosts/DenyHosts-2.6.tar.gz
# tar zxvf DenyHosts-2.6.tar.gz
# cd DenyHosts-2.6
2、安装、配置和启动

安装前建议执行:

echo “” > /var/log/secure && service rsyslog restart # 清空以前的日志并重启一下rsyslog
# python setup.py install
因为DenyHosts是基于python的,所以要已安装python,大部分Linux发行版一般都有。默认是安装到/usr/share/denyhosts/目录的,进入相应的目录修改配置文件

# cd /usr/share/denyhosts/
# cp denyhosts.cfg-dist denyhosts.cfg
# cp daemon-control-dist daemon-control
默认的设置已经可以适合centos系统环境,你们可以使用vi命令查看一下denyhosts.cfg和daemon-control,里面有详细的解释

接着使用下面命令启动denyhosts程序

# chown root daemon-control
# chmod 700 daemon-control
# ./daemon-control start
如果要使DenyHosts每次重起后自动启动还需做如下设置:

# ln -sf /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts
# chkconfig –add denyhosts
# chkconfig –level 2345 denyhosts on
或者执行下面的命令加入开机启动,将会修改/etc/rc.local文件:

SECURE_LOG = /var/log/secure
#sshd日志文件,它是根据这个文件来判断的,不同的操作系统,文件名稍有不同。

HOSTS_DENY = /etc/hosts.deny
#控制用户登陆的文件

PURGE_DENY = 5m
DAEMON_PURGE = 5m
#过多久后清除已经禁止的IP,如5m(5分钟)、5h(5小时)、5d(5天)、5w(5周)、1y(一年)

BLOCK_SERVICE = sshd
#禁止的服务名,可以只限制不允许访问ssh服务,也可以选择ALL

DENY_THRESHOLD_INVALID = 5
#允许无效用户失败的次数

DENY_THRESHOLD_VALID = 10
#允许普通用户登陆失败的次数

DENY_THRESHOLD_ROOT = 5
#允许root登陆失败的次数

HOSTNAME_LOOKUP=NO
#是否做域名反解

DAEMON_LOG = /var/log/denyhosts
为防止自己的IP被屏蔽,可以:echo “你的IP” >> /usr/share/denyhosts/allowed-hosts 将你的IP加入白名单,再重启DenyHosts:/etc/init.d/denyhosts ,如果已经被封,需要先按下面的命令删除被封IP后再加白名单。

如有IP被误封,可以执行下面的命令解封:wget http://soft.vpser.net/security/denyhosts/denyhosts_removeip.sh && bash denyhost_removeip.sh 要解封的IP

查看攻击ip 记录

# cat /etc/hosts.deny

分享到:

发表评论

沙发空缺中,还不快抢~