时间:2023-06-02 16:16:41 来源: 人气:
可以通过下面这个命令来统计当前连接数, netstat -n | awk /^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}, 这条语句返回结果如下, 1.TIME_WAIT 346, 2.FIN_WAIT1 85, 3.FIN_WAIT2 6, 4.ESTABLISHED 1620, 5.SYN_RECV 169, 6.LAST_ACK 8, SYN_RECV表示正在等待处理的请求数;ESTABLISHED表示正常数据传输状态;TIME_WAIT表示处理完毕,等待超时结束的请求数。, 状态:描述, CLOSED:无连接是活动的或正在进行, LISTEN:服务器在等待进入呼叫, SYN_RECV:一个连接请求已经到达,等待确认, SYN_SENT:应用已经开始,打开一个连接, ESTABLISHED:正常数据传输状态, FIN_WAIT1:应用说它已经完成, FIN_WAIT2:另一边已同意释放, ITMED_WAIT:等待所有分组死掉, CLOSING:两边同时尝试关闭, TIME_WAIT:另一边已初始化一个释放, LAST_ACK:等待所有分组死掉, 另外很多人会用到TCP SYN Flood透过网路底层对服务器Server进行攻击的,我可以用Iptables防范下:, 防止同步包洪水(Sync Flood), 1.iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT, 也有人写作, 1.iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT, --limit 1/s 限制syn并发数每秒1次,可以根据自己的需要修改, 防止各种端口扫描, 1.iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT, Ping洪水攻击(Ping of Death), 1.iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT, 同时,在初始化系统过程中,可以对服务器的数据连接做设置,下面简单的设置下,如果有关于这方面的设置,欢迎大家分享下,先谢过了..., vim /etc/sysctl.conf, net.ipv4.tcp_tw_reuse = 1, 该文件表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接。, net.ipv4.tcp_tw_recycle = 1, recyse是加速TIME-WAIT sockets回收, 对tcp_tw_reuse和tcp_tw_recycle的修改,可能会出现.warning, got duplicate tcp line warning, got BOGUS tcp line.上面这二个参数指的是存在这两个完全一样的TCP连接,这会发生在一个连接被迅速的断开并且重新连接的情况,而且使用的端口和地址相同。但基本 上这样的事情不会发生,无论如何,使能上述设置会增加重现机会。这个提示不会有人和危害,而且也不会降低系统性能,目前正在进行工作, net.ipv4.tcp_syncookies = 1, 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;, net.ipv4.tcp_synack_retries = 1, net.ipv4.tcp_keepalive_time = 1200, 表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时, net.ipv4.tcp_fin_timeout = 30, fin_wait1状态是在发起端主动要求关闭tcp连接,并且主动发送fin以后,等待接收端回复ack时候的状态。对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。, net.ipv4.ip_local_port_range = 1024 65000, net.ipv4.tcp_max_syn_backlog = 8192, 该文件指定了,在接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。, net.ipv4.tcp_max_tw_buckets = 5000, 使设置生效, sysctl -p,