Linux常用安全设置
精选
原创
©著作权归作者所有:来自51CTO博客作者51奔跑在路上的原创作品,谢绝转载,否则将追究法律责任
使用DDos deflate简单防落CC和DDOS
使用netstat命令
1、查看VPS当前链接确认是否受到***:
# netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
IP前面的数字,即为连接数,如果说正常网站,几十到一百都属于正常连接,但出现几百,或上千的就可以垦定这个IP与你的VPS之间可能存在可疑连接现象。
2、可以使用iptables直接BAN了这个IP的永久访问:
# iptables -A INPUT -s 12.34.56.78 -j DROP
使用软件DDos deflate自动检测并直接BAN掉
1、首先我们要确认一下iptables服务状态,默认CENTOS就安装的,不看也行。
2、安装DDos deflat:
# wget http://www.inetbase.com/scripts/ddos/install.sh
# chmod +x install.sh && ./install.sh
安装后需要修改/usr/local/ddos/ddos.conf,主要是APF_BAN=1要设置成0,因为要使用iptables来封某些可疑连接,注意EMAIL_TO="root",这样BAN哪个IP会有邮件提示:
##### Paths of the script and other files
PROGDIR="/usr/local/ddos"
PROG="/usr/local/ddos/ddos.sh"
IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list" #IP地址白名单
CRON="/etc/cron.d/ddos.cron" #定时执行程序
APF="/etc/apf/apf"
IPT="/sbin/iptables"
FREQ=1 /#检查时间间隔,默认1分钟
NO_OF_CONNECTIONS=150 #最大连接数,超过这个数IP就会被屏蔽,一般默认即可
APF_BAN=1 #使用APF还是iptables。推荐使用iptables,将APF_BAN的值改为0即可。
##### KILL=0 (Bad IPs are'nt banned, good for interactive execution of script)
##### KILL=1 (Recommended setting)
KILL=1 #是否屏蔽IP,默认即可
EMAIL_TO="root" #当IP被屏蔽时给指定邮箱发送邮件,推荐使用,换成自己的邮箱即可
BAN_PERIOD=600 #禁用IP时间,默认600秒,可根据情况调整
使用iftop查看详细网络状况
1、安装iftop软件:
yum -y install flex byacc libpcap ncurses ncurses-devel libpcap-devel
wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz
tar zxvf iftop-0.17.tar.gz
cd iftop-0.17
./configure
make && make install
安装后,使用iftop运行,查看网络情况。
- TX,发送流量;RX,接收流量;TOTAL,总流量;Cumm,运行iftop期间流量;peak,流量峰值;rates,分别代表2秒、10秒、40秒的平均流量。
- 快捷键:h帮助,n切换显示IP主机名,s是否显示本机信息,d是否显示远端信息,N切换端口服务名称,b切换是否时数流量图形条。
实例:
- 默认是监控第一块网卡的流量: iftop
- 监控eth1: iftop -i eth1
- 直接显示IP, 不进行DNS反解析 : iftop -n
- 直接显示连接埠编号, 不显示服务名称: iftop -N
- 显示某个网段进出封包流量: iftop -F 192.168.1.0/24 or 192.168.1.0/255.255.255.0
iftop界面含义
- 第一行:带宽显示
- 中间部分:外部连接列表,即记录了哪些ip正在和本机的网络连接
- 中间部分右边:实时参数分别是该访问ip连接到本机2秒,10秒和40秒的平均流量
- =>代表发送数据,<= 代表接收数据
- 底部三行:表示发送,接收和全部的流量
- 底部三行第二列:为你运行iftop到目前流量
- 底部三行第三列:为高峰值
- 底部三行第四列:为平均值
常用netstat命令:
1.查看所有80端口的连接数
netstat -nat|grep -i "80"|wc -l
2.对连接的IP按连接数量进行排序
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
3.查看TCP连接状态
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
netstat -n | awk '/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}'
netstat -n | awk '/^tcp/ {++state[$NF]}; END {for(key in state) print key,"\t",state[key]}'
netstat -n | awk '/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"\t",arr[k]}'
netstat -n |awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn
netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c
4.查看80端口连接数最多的20个IP
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}' |sort -rn|head -n20
5.用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20
6.查找较多time_wait连接
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
7.找查较多的SYN连接
netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more
Nginx简单的一些防CC的办法
观看生成的.log日志文件,判断来路,直接301百度:
if ($http_referer ~* mi5.gov ) {
rewrite ^(.*)$ http://www.baidu.com/ permanent;
}
观看生成的.log日志文件,判断浏览器特征码,直接301百度:
if ($http_user_agent ~* firefox4.0 ) {
rewrite ^(.*)$ http://www.baidu.com/ permanent;
}
根据特征码,直接查找.log文件,并iptables封死相应IP:
cat com.log | grep 'Mozilla/5.0' | awk '{print "iptables -I INPUT -p tcp --dport 80 -s ", $1, "-j DROP"}'| sort -n | uniq | sh
nginx处理静态的能力是无与伦比的,如果只是简单的判断分发,就可以解决掉很多***。
禁用 rpcbind 111端口
腾讯云上centos7装好以后,除了监听22端口(sshd的服务)外,还监听了111端口,而且监听的是0.0.0.0,担心存在安全风险,于是想禁用掉。
起111端口的进程是systemd,在网上查了下,实际用的是rpcbind。大部分服务是不依赖于rpcbind的,只有NFS需要用到这个服务,所以可以禁掉。
以下是禁掉该rpcbind服务的命令:
# 停止进程
$ systemctl stop rpcbind.socket
$ systemctl stop rpcbind
# 禁止随开机启动
$ systemctl disable rpcbind.socket
$ systemctl disable rpcbind
附:rpcbind的说明from man rpcbind
- rpcbind工具可以将RPC程序号码和通用地址互相转换。要让某主机能向远程主机的服务发起RPC调用,
则该主机上的rpcbind必须处于已运行状态。 - 当RPC服务启动后,它会告诉rpcbind它监听在哪个地址上,还会告诉它为服务准备好提供的PRC程序
号码。当客户端要向某个给定的程序号码发起RPC调用时,它首先会联系服务端的rpcbind以确定RPC
请求应该发送到哪个地址上。 - rpcbind工具应该在所有RPC管理的服务(rpc service)启动之前启动。一般来说,标准的rpc服务由端
口监视器来启动,因此rpcbind必须在端口监视器被调用之前已经启动完成。 - 当rpcbind工具已经启动后,它会检查特定的name-to-address的转换调用功能是否正确执行。如果失
败,则网络配置数据库会被认为过期,由于RPC管理的服务在这种情况下无法正确运行,rpcbind会输
出这些信息并终止。 - rpcbind工具只能由super-user启动。