查看Apache的并发请求数及其TCP连接状态

查看httpd进程数(即prefork模式下Apache能够处理的并发请求数):


Linux命令:


ps -ef | grep httpd | wc -l


返回结果示例:


1388


表示Apache能够处理1388个并发请求,这个值Apache可根据负载情况自动调整,我这组服务器中每台的峰值曾达到过2002。


查看Apache的并发请求数及其TCP连接状态:


Linux命令:


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




返回结果示例:


LAST_ACK 5


SYN_RECV 30


ESTABLISHED 1597


FIN_WAIT1 51


FIN_WAIT2 504


TIME_WAIT 1057


其中的SYN_RECV表示正在等待处理的请求数;ESTABLISHED表示正常数据传输状态;TIME_WAIT表示处理完毕,等待超时结束的请求数。


关于TCP状态的变迁,可以从下图形象地看出:


状态:描述


CLOSED:无连接是活动的或正在进行


LISTEN:服务器在等待进入呼叫


SYN_RECV:一个连接请求已经到达,等待确认


SYN_SENT:应用已经开始,打开一个连接


ESTABLISHED:正常数据传输状态


FIN_WAIT1:应用说它已经完成


FIN_WAIT2:另一边已同意释放


ITMED_WAIT:等待所有分组死掉


CLOSING:两边同时尝试关闭


TIME_WAIT:另一边已初始化一个释放


LAST_ACK:等待所有分组死掉
 
 netstat 工具来检测SYN攻击
  # netstat -n -p -t
  tcp0 0 10.11.11.11:23124.173.152.8:25882 SYN_RECV-
  tcp0 0 10.11.11.11:23236.15.133.204:2577 SYN_RECV-
  tcp0 0 10.11.11.11:23127.160.6.129:51748 SYN_RECV-
  ...
  LINUX系统中看到的,很多连接处于SYN_RECV状态(在WINDOWS系统中是SYN_RECEIVED状态),
  源IP地址都是随机的,表明这是一种带有IP欺骗的SYN攻击。
  # netstat -n -p -t | grep SYN_RECV | grep :80 | wc -l
  324
  查看在LINUX环境下某个端囗的未连接队列的条目数,显示TCP端囗22的未连接数有324个,
  虽然还远达不到系统极限,但应该引起管理员的注意。
  [root@pub wxjsr]# netstat -na | grep SYN_RECV
  tcp 0 0 58.193.192.20:80 221.0.108.162:32383 SYN_RECV
  tcp 0 0 58.193.192.20:80 125.85.118.231:2601 SYN_RECV
  tcp 0 0 58.193.192.20:80 222.242.171.215:2696 SYN_RECV
  tcp 0 0 58.193.192.20:80 116.52.10.51:2629 SYN_RECV
  tcp 0 0 58.193.192.20:80 218.171.175.157:1117
  [root@pub wxjsr]# netstat -na | grep SYN_RECV |wc
   11 66 979
  查看系统SYN相关的配置
  Linux内核提供了若干SYN相关的配置,用命令: sysctl -a | grep syn
  [root@metc apache2]# /sbin/sysctl -a | grep syn
  net.ipv6.conf.default.max_desync_factor = 600
  net.ipv6.conf.all.max_desync_factor = 600
  net.ipv6.conf.eth0.max_desync_factor = 600
  net.ipv6.conf.lo.max_desync_factor = 600
  net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 60
  net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 120
  net.ipv4.tcp_max_syn_backlog = 1280
  net.ipv4.tcp_syncookies = 1
  net.ipv4.tcp_synack_retries = 2
  net.ipv4.tcp_syn_retries = 5
  fs.quota.syncs = 18
  防范SYN攻击设置
  #缩短SYN- Timeout时间:
  iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
  iptables -A INPUT -i eth0 -m limit --limit 1/sec --limit-burst 5 -j ACCEPT
  #每秒 最多3个 syn 封包 进入 表达为 :
  iptables -N syn-flood
  iptables -A INPUT -p tcp --syn -j syn-flood
  iptables -A syn-flood -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j RETURN
  iptables -A syn-flood -j REJECT
  #设置syncookies:
  sysctl -w net.ipv4.tcp_syncookies=1
  /sbin/sysctl -w net.ipv4.tcp_max_syn_backlog=3000
  /sbin/sysctl -w net.ipv4.tcp_synack_retries=1
  /sbin/sysctl -w net.ipv4.tcp_syn_retries=1
  sysctl -w net.ipv4.conf.all.send_redirects=0
  sysctl -w net.ipv4.conf.all.accept_redirects=0
  sysctl -w net.ipv4.conf.all.forwarding=0
  /sbin/sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
  /sbin/sysctl -w net.ipv4.conf.default.accept_source_route=0 # 禁用icmp源路由选项
  /sbin/sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 # 忽略icmp ping广播包,应开启
  /sbin/sysctl -w net.ipv4.icmp_echo_ignore_all=1 # 忽略所有icmp ping数据,覆盖上一项


[转自] http://hi.baidu.com/moneyxml/blog/item/98a805fa34a4b79f59ee9082.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值