1. 如何查看谁在尝试破解你的SSH
cat /var/log/auth.log | grep "pam_unix(sshd:auth): authentication failure;" | cut -f14 -d\ | cut -d'=' -f2 | sort | uniq -c | sort -nr
2. 查看当前网络连接数的方法
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
TCP连接状态详细说明
LISTEN: 正在侦听来自远方的TCP端口连接请求
SYN-SENT: 已发送连接请求,正在等待匹配的应答
SYN-RECEIVED: 已收到并发送连接请求,等待对方确认
ESTABLISHED: 表示一个已建立的连接,处于正常通信状态
FIN-WAIT-1: 等待远程TCP连接中断请求,或等待先前中断请求的确认
FIN-WAIT-2: 从远程TCP等待连接中断请求
CLOSE-WAIT: 等待从本地用户发来的连接中断请求
CLOSING: 等待远程TCP对连接中断的确认
LAST-ACK: 等待原来发向远程TCP的连接中断请求的确认
TIME-WAIT: 等待足够时间以确保远程TCP收到连接中断请求的确认
CLOSED: 没有任何连接状态
3. 统计80端口连接数
netstat -nat|grep -i "80"|wc -l
4. 统计httpd协议连接数
ps -ef|grep httpd|wc -l
5. 统计已建立的连接(状态为ESTABLISHED)
netstat -na|grep ESTABLISHED|wc -l
6. 查出哪个IP地址连接最多,并将其封禁
netstat -na|grep ESTABLISHED|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -r +0n
netstat -na|grep SYN|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -r +0n
7. 防止SYN洪水攻击的配置
# added by liang SYN protect
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_max_syn_backlog=8192
sysctl -w net.ipv4.tcp_fin_timeout=30
sysctl -w net.ipv4.tcp_keepalive_time=200
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.tcp_tw_recycle=1
sysctl -w net.ipv4.ip_local_port_range="1024 65000"
sysctl -w net.ipv4.tcp_max_tw_buckets=5000
sysctl -w net.ipv4.tcp_synack_retries=2
sysctl -w net.ipv4.tcp_syn_retries=2
8. 脚本自动防御SSH和VSFTP暴力破解
#! /bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /root/black.txt
DEFINE="100"
for i in `cat /root/black.txt`
do
IP=`echo $i |awk -F= '{print $1}'`
NUM=`echo $i|awk -F= '{print $2}'`
if [ $NUM -gt $DEFINE ];
then
grep $IP /etc/hosts.deny > /dev/null
if [ $? -gt 0 ];
then
echo "sshd:$IP" >> /etc/hosts.deny
echo "vsftpd:$IP" >> /etc/hosts.deny
fi
fi
done
在/etc/crontab文件最后一行为
* */1 * * * root sh /root/hosts_deny.sh
9. 显示每个IP的连接数
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
