阿里云centos环境之被dos,syn攻击策略和排查方法,持续更新<九>

阿里云centos环境之被dos,syn攻击策略和排查方法,持续更新<九>

1.查看cpu使用情况

top

结果如下:

2.查看网络连接情况

antstat -atnp

解释:显示所以tcp协议的连接,同时进程PID和进程名。
antstat在显示各种网络相关信息,如网络连接,路由表,连接状态地方很有用。

这里写图片描述

netstat参数:

常见参数
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态

-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。

3.检查端口及对应进程,关闭没用的端口

netstat -ntlp

这里写图片描述

4.检查网上发送的TCP包

网卡eth0上接收和发送的TCP包情况

tcpdump -nn -i eth0

这里写图片描述
解释:抓到包的时间 IP 发包的主机和端口 > 接收的主机和端口 数据包内容


监听tcp协议

$ tcpdump -i eth0 -nn 'tcp'

监听指定的主机接收发和发送的包,172.16.78.165这台主机接收到的包和发送的包都会被抓取

$ tcpdump -i eth0 -nn 'host 172.16.78.165'

监听指定的主机接收的包

$ tcpdump -i eth0 -nn 'dst host 172.16.78.165'

监听指定的主机发送的包

$ tcpdump -i eth0 -nn 'src host 172.16.78.165'

监听指定端口

$ tcpdump -i eth0 -nnA 'port 80'

监听指定主机和端口,多个条件可以用and,or连接。

$ tcpdump -i eth0 -nnA 'port 80 and src host 172.16.78.165'

监听除某个端口外的其它端口

$ tcpdump -i eth0 -nnA '!port 22'

统计系统TCP连接资源命令

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

这里写图片描述

5.查看某个进程的启动位置

找到进程的pid,如木马”Tomcat”为例

ps aux|grep tomcat

这里写图片描述
进程pid是:1457.然后进入进程工作空间目录”/proc”下

cd /proc/1457
ls -all

结果如下:
这里写图片描述
其中
cwd:是启动进程的位置,链接到进程当前工作目录
exe:是进程执行命令,链接到进程的执行命令文件
root:是 链接到进程的根目录

6.查看系统的登录日志

more /var/log/secure |grep Accepted

7.syn攻击补救措施

syn是以TCP协议的三次握次协议缺陷为基础发出的Dos攻击。注意是TCP协议。
1.查看某个端口的TCP协议未连接的队列数据,比如8188端口

netstat -ntp| grep SYN_RECV |grep 8188 | wc -l

说明,上面的命令是可以自由组合的
1)netstat是查看网络连接情况的linux命令
-n:拒绝显示别名,能显示数字的全部转化成数字
-t:(tcp)仅显示tcp相关选项
-p:显示建立相关链接的程序名
2)grep是管道命令
3)TCP端口状态说明:
1、LISTENING状态
FTP服务启动后首先处于侦听(LISTENING)状态。
2、ESTABLISHED状态
ESTABLISHED的意思是建立连接。表示两台机器正在通信。
3、CLOSE_WAIT
对方主动关闭连接或者网络异常导致连接中断,这时我方的状态会变成CLOSE_WAIT 此时我方要调用close()来使得连接正确关闭
4、TIME_WAIT
我方主动调用close()断开连接,收到对方确认后状态变为TIME_WAIT。TCP协议规定TIME_WAIT状态会一直持续2MSL(即两倍的分 段最大生存期),以此来确保旧的连接状态不会对新连接产生影响。处于TIME_WAIT状态的连接占用的资源不会被内核释放,所以作为服务器,在可能的情 况下,尽量不要主动断开连接,以减少TIME_WAIT状态造成的资源浪费。
目前有一种避免TIME_WAIT资源浪费的方法,就是关闭socket的LINGER选项。但这种做法是TCP协议不推荐使用的,在某些情况下这个操作可能会带来错误。
5、SYN_SENT状态
   SYN_SENT状态表示请求连接,当你要访问其它的计算机的服务时首先要发个同步信号给该端口,此时状态为SYN_SENT,如果连接成功了就变为 ESTABLISHED,此时SYN_SENT状态非常短暂。但如果发现SYN_SENT非常多且在向不同的机器发出,那你的机器可能中了冲击波或震荡波 之类的病毒了。这类病毒为了感染别的计算机,它就要扫描别的计算机,在扫描的过程中对每个要扫描的计算机都要发出了同步请求,这也是出现许多 SYN_SENT的原因。
6.SYN_RECV状态,表示当前处于半连接状态,等待客户端发送确认包,一但收到确认包即建立连接

措施
打开sysctl.conf文件

vi /etc/sysctl.conf

这里写图片描述

修改如下:

//增大队列SYN最大半连接数
net.ipv4.tcp_max_syn_backlog = 2048
//开启重用
net.ipv4.tcp_tw_reuse = 1
//开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_tw_recycle = 1
//修改系統默认的 TIMEOUT 时间
net.ipv4.tcp_fin_timeout = 30

然后执行 /sbin/sysctl -p让参数生效
查看修改后增大队列SYN最大半连接数sysctl -a|grep net.ipv4.tcp_max_syn_backlog

8.使用tcpdump抓包

Wireshark和 TcpDump抓包分析心得 讲的比较好。特别是BPF过滤语言。
1.协议+port:抓端口8080的包
tcpdump tcp port 8080 -n
tcpdump tcp port 8080 -w /tmp/xxxx.cap
其中:tcpdump 的抓包保存到文件的命令参数是-w xxx.cap

2.ip+协议+port:抓119.29.121.116的80端口的包
tcpdump tcp port 8080 and host 10.104.102.228

3.网卡:抓eth0的包
tcpdump -i eth0 -w /tmp/xxx.cap

4.网卡+ip:抓 119.29.121.116的包
tcpdump -i eth0 host 119.29.121.116 -w /tmp/xxx.cap

5.网卡+ip+端口:抓119.29.121.116的80端口的包
tcpdump -i eth0 host 119.29.121.116 and port 80 -w /tmp/xxx.cap

抓119.29.121.116的80端口和110和25以外的其他端口的包
tcpdump -i eth0 host 119.29.121.116 and ! port 80 and ! port 25 and ! port 110 -w /tmp/xxx.cap

6.以100m大小分割保存文件, 超过100m另开一个文件 -C 100m
抓10000个包后退出 -c 10000
tcpdump tcp port 8080 -n -C100 -c 1000
列出简单的抓包操作,更新复杂要需要专门学习tcpdump命令了

9、帐户管理

Linux系统中所有的账户都存放在/etc/passwd文件中。系统管理员可以定期监控/etc/passwd文件,验证系统中活动账户的合法性,及时删除或禁用系统中不必要或不再使用的账户。此类账户主要分为以下两种情况。

 某些服务安装时默认创建的执行账户,比如ftp、news、postfix、apache、squid等。
 无人使用或者无业务需求的账户。

这里写图片描述
使用cat /etc/passwd显示结果如上图。
解释一下/sbin/nologin/bin/bash 的区别?
决定帐户是否可ssh登录。
/sbin/nologin一般设置这样的帐号是给启动服务的账号所用的,这只是让服务启动起来,但是不能通过SSH登录系统。


9.1 禁止用户登陆最简单方式将帐户对应的权限由/bin/bash变为/sbin/nologin


9.2 锁定帐户,以mysql帐户为例

passwd -l mysql

结果如下,说明锁定帐户成功,这个帐户就不能登陆:

Locking password for user mysql.
passwd: Success

解锁命令:

passwd -uf mysql

结果如下:

Unlocking password for user mysql.
passwd: Success

9.3 禁止所有用户登录。 touch /etc/nologin 除root以外的用户不能登录了。


9.4 删除或新增用户
useradd 与 adduser的区别
添加用户
1.1. 命令useradd
在root权限下,useradd只是创建了一个用户名,如 (useradd +用户名 ),它并没有在/home目录下创建同名文件夹,也没有创建密码,因此利用这个用户登录系统,是登录不了的,为了避免这样的情况出现,可以用 (useradd -m +用户名)的方式创建,它会在/home目录下创建同名文件夹,然后利用( passwd + 用户名)为指定的用户名设置密码。
添加用户:useradd -m 用户名 然后设置密码 passwd 用户名

2.1. 命令adduser
可以直接利用adduser创建新用户(adduser +用户名)这样在/home目录下会自动创建同名文件夹(创建用户的家目录),会建立同名组,建立新用户密码,还会从/etc/SKEL目录下拷贝文件到家目录,完成初始化。是否加密主目录等等。
添加用户:adduser + 用户名


删除用户
删除用户,“userdel 用户名”即可。最好将它留在系统上的文件也删除掉,可以使用“userdel -r 用户名”来实现。
删除用户:userdel -r 用户名

更具体参考Linux的用户和用户组管理文章


9.5 使用finger用来显示用户的相关信息
若没安装则yum install finger命令finger。以mysql为例

finger mysql

结果如下:
这里写图片描述


查看登录本地系统的用户的详情报告

finger -l

如下:这里写图片描述


查看登录本地系统的用户的短报告

finger -s

如下:这里写图片描述

9.6 id命令
这个命令则可以查询某人或自己的相关 UID/GID 等等的信息
这里写图片描述

10、使用who命令查看(登录)用户名称及所启动的进程

结果如下:

root     tty1         2018-01-03 11:33
root     pts/0        2018-01-03 12:16 (122.245.121.209)
chenyuan pts/1        2018-01-03 13:39 (122.245.121.209)

查看当前登陆用户名

whoami

11、查找包含指定字符串的文件

在当前目录下遍历所以文件,查找包括“hello,world!”字符串的文件。

grep -rn "hello,world!" *
  • : 表示当前目录所有文件,也可以是某个文件名

-r 是递归查找

-n 是显示行号

-R 查找所有文件包含子目录

-i 忽略大小写

与find命令结合使用,先用find命令找相应的文件,再从文件里查找包括指定字符的文件。

 find /usr/ -name *.sh |xargs grep -ir "mydata.war"

先查找/use目录下所以以“sh”后缀结尾的文件,再从文件里找包含“mydata.war”的文件

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值