你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

linux中两种简单的方法限制ip访问

[复制链接]
gaosmile 发布时间:2020-9-24 22:58
生产环境中经常会遇到某个ip地址频繁异常的访问nginx网站,此时我们需要通过安全措施保护我们的服务器,接下来为大家介绍几种方式。
* m. V% ]( g+ f- H/ g( k- H  Q  \
实验环境
3 @5 K& ]# j6 [$ {6 b" k

版本:redhat6.5
) t: n' D' f" ]ip:172.16.1.100,172.16.10
" G5 A, i3 x" ?6 J1 ?软件:nginx" G$ q. E. L4 @" t: _


. T* r7 S! e: ?" O8 R' u1 M
172.16.1.10部署nginx

5 C2 @) \2 u: h6 g. e
[root@localhost tools]# ls. O6 V; y5 @5 o( L* ]8 _: ^. Y
nginx-1.11.2.tar.gz3 N# k7 n, b1 E
[root@localhost tools]# yum  install gcc gcc-c++ make automake autoconf libtool pcre* zlib openssl openssl-devel) b2 M* S( s/ C6 f3 |
[root@localhost tools]# tar xf nginx-1.11.2.tar.gz * O% h; H7 u6 d$ o, i2 b
[root@localhost tools]# ls$ C; [+ l8 @6 y0 t
nginx-1.11.2  nginx-1.11.2.tar.gz; Y, s8 e: a2 g% r
[root@localhost tools]# cd nginx-1.11.25 R$ T1 L2 @+ T6 S# g) t( r
[root@localhost nginx-1.11.2]# ls; T& ?8 \; D7 U% a7 M3 J2 V9 S
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
& s1 v  u6 r- h- I' a$ f8 e[root@localhost nginx-1.11.2]# ./configure
4 Z' C( {* g1 B, b' y[root@localhost nginx-1.11.2]# make
& B! [9 c: }. @2 L; [" F0 H1 S# B[root@localhost nginx-1.11.2]# make install$ e, F" o/ U2 l1 g* n

9 B& S: W' P; U; m: t% K) p
3 e5 E& U# i% L# w' Q

, ]4 ?, o/ e" W9 |& ]0 j
测试nginx服务

! @7 x. O6 j& M$ Z
[root@localhost ~]# curl -I 172.16.1.100
+ Z1 [2 o: T! h/ Q# n, S6 DHTTP/1.1 200 OK" @$ C4 k) z' D7 Q
Server: nginx/1.11.2: D5 `9 U6 I: Q; c6 p( H) W
Date: Mon, 17 Aug 2020 09:36:29 GMT
: O7 \) k  d6 F. o0 C/ MContent-Type: text/html
' {/ h8 b9 S* j1 hContent-Length: 15
/ P- O6 E% G+ e; n0 a  \8 [  J9 `Last-Modified: Mon, 17 Aug 2020 09:36:19 GMT
9 ?  \$ p# k( _% PConnection: keep-alive
1 S  W7 V5 z1 M' LETag: "5f3a4f93-f"  |4 n- X$ ]" f2 ]2 s
Accept-Ranges: bytes
9 L- A$ o1 t4 F  m, x, K
3 [5 p/ P4 _  `4 A1 a
4 M) U  t6 i' X7 W$ ^6 s

nginx 可以正常访问。
9 N; m3 p) p; E6 a. e2 `. P接下来,假设172.16.1.100是黑客主机,频繁访问nginx服务

& m6 u* H4 V/ E6 k# w& }
模拟172.16.1.100访问10次172.16.1.10

! ^, D9 V; v# s

172.16.1.100

6 T; }4 _2 r/ l* A4 o
[root@localhost ~]# ab -c 1 -n 10 http://172.16.1.10/
3 ^3 X# v, [. FThis is ApacheBench, Version 2.3 <$Revision: 1430300 $>
7 p% o/ f$ a6 d! T" T6 dCopyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
; x$ O/ t- V  t$ ~Licensed to The Apache Software Foundation, http://www.apache.org/0 [$ ~1 n8 f, O0 w
! f. R+ T. G8 Z4 Z$ o# L' \
Benchmarking 172.16.1.10 (be patient).....done
# l' v0 K# _& h9 l( b8 \
1 B* B4 Z& M# W. u  G4 D0 ~' p
6 e9 {$ _) P: n7 m# D6 N  U) u; qServer Software:        nginx/1.11.2
9 S) n2 z, n( H; s2 I2 UServer Hostname:        172.16.1.10) F8 h7 E/ m" [. b; j; P) r
Server Port:            80! w$ K+ m* L6 W* T* Q

: t* r7 N' Y! v' @5 P8 iDocument Path:          /1 @- B% ]5 V' q# d
Document Length:        612 bytes
$ f& m+ b, P/ `1 p
+ b) b& N9 u2 G% c; B" T2 {8 V( ~$ P/ |Concurrency Level:      1
6 [1 i" p" y7 M: bTime taken for tests:   0.016 seconds
" o9 l  g8 k% Z9 W/ P! Z% cComplete requests:      10( m4 K1 v; m+ N
Failed requests:        0
3 q) f7 R/ v: p8 @  cWrite errors:           07 W. @* N' X! X( R
Total transferred:      8450 bytes' c1 t- d* q! C0 P8 Q4 a7 B( v
HTML transferred:       6120 bytes8 S/ n' |* p6 [% n  [! h
Requests per second:    617.02 [#/sec] (mean)" C! I: p2 s+ ]% T
Time per request:       1.621 [ms] (mean)8 r% n1 O9 w2 v! q% s' |0 R
Time per request:       1.621 [ms] (mean, across all concurrent requests)
  s+ w5 d! T' G2 L3 I6 mTransfer rate:          509.16 [Kbytes/sec] received
" k& Y( o# w4 C5 G) X% e, u/ ]1 s# e. B) t
Connection Times (ms)
% c: p: T$ Z% g  W5 U3 Y: `              min  mean[+/-sd] median   max, Y# |0 W0 K: H4 K- k) V1 b
Connect:        0    1   0.3      0       1
- p0 ?" B4 N9 r1 A$ a' EProcessing:     1    1   0.3      1       2
. J0 i  U6 e1 t) TWaiting:        0    1   0.3      1       1
8 @! @' u' u* P" q; i2 W5 uTotal:          1    1   0.5      1       2
2 Z; c/ `; C9 x8 t) H, s% E4 P6 NERROR: The median and mean for the initial connection time are more than twice the standard8 ]+ L( K8 R. f0 k  Q: q2 l
       deviation apart. These results are NOT reliable.
0 q/ C- e5 d, g' O
9 j2 |7 W8 r/ g; Y5 r4 z2 L. zPercentage of the requests served within a certain time (ms)
/ K" |7 |& w- S% Q( ~# x+ A! `  50%      16 v2 D$ t: D. u/ M- l5 _
  66%      1
; T3 i! }8 `  Q  k+ S4 k4 e  75%      17 U' ^4 Y* a  W9 J; I
  80%      2
- h4 v, @& F6 z% i+ a  90%      22 [$ d( w7 R8 h2 t) E7 y; z
  95%      29 w/ F3 H* g& N/ \1 u
  98%      2
' l  }) ~7 X7 w4 P  99%      2. l0 J/ i5 O( a0 l" y) I
100%      2 (longest request)
1 w" X) `6 F8 u( }' i% N
* s2 f4 ~' W. ?2 B) s5 x
查看nginx日志
8 S5 Z: K5 D$ \

172.16.1.10

! g" E5 _4 g/ R; C
[root@localhost ~]# tail /usr/local/nginx/logs/access.log
7 ?" r) l) w/ k; g0 j172.16.1.100 - - [26/Jul/2020:05:58:24 +0800] "GET / HTTP/1.0" 200 612 "-" "ApacheBench/2.3"
; I" m" k, H2 L0 ]172.16.1.100 - - [26/Jul/2020:05:58:24 +0800] "GET / HTTP/1.0" 200 612 "-" "ApacheBench/2.3"
7 u! _3 l' V1 z- M; z0 G+ d172.16.1.100 - - [26/Jul/2020:05:58:24 +0800] "GET / HTTP/1.0" 200 612 "-" "ApacheBench/2.3"+ X9 ]4 v) e5 _
172.16.1.100 - - [26/Jul/2020:05:58:24 +0800] "GET / HTTP/1.0" 200 612 "-" "ApacheBench/2.3"9 {2 n& D6 _6 A6 X3 N; J! T& w
172.16.1.100 - - [26/Jul/2020:05:58:24 +0800] "GET / HTTP/1.0" 200 612 "-" "ApacheBench/2.3"0 x6 m: v1 E) P  k0 T; b! a4 y
172.16.1.100 - - [26/Jul/2020:05:58:24 +0800] "GET / HTTP/1.0" 200 612 "-" "ApacheBench/2.3"% `# E6 W( `- B
172.16.1.100 - - [26/Jul/2020:05:58:24 +0800] "GET / HTTP/1.0" 200 612 "-" "ApacheBench/2.3"& f5 L7 o3 l1 U! j$ @3 @/ K0 y% H
172.16.1.100 - - [26/Jul/2020:05:58:24 +0800] "GET / HTTP/1.0" 200 612 "-" "ApacheBench/2.3", `8 `+ w/ z* U4 `1 E: f( o
172.16.1.100 - - [26/Jul/2020:05:58:24 +0800] "GET / HTTP/1.0" 200 612 "-" "ApacheBench/2.3"
7 `) x: ^" I* J& _6 i3 Z% T172.16.1.100 - - [26/Jul/2020:05:58:24 +0800] "GET / HTTP/1.0" 200 612 "-" "ApacheBench/2.3"# K; |1 A  }& ^0 Q) J' q
# K" q2 y8 M5 [: m- L3 s/ @  M7 n
1 {: j2 T& N2 h$ Q

由此可见,一秒钟之内172.16.1.100访问了nginx10次,接下来禁止掉这个问题ip


2 L5 @. P' g- m5 ?3 `4 ^
通过iptables限制ip访问
# j) i) U7 G: A! }5 f, b& m# b

172.16.1.10

9 T3 J$ J9 j3 p5 p4 A. P) g7 p' P
[root@localhost ~]# iptables -I INPUT -s 172.16.1.100 -ptcp --dport 80 -j DROP6 W7 l  e1 I" b: ~5 I' N; l
. Y4 p7 Y+ m8 @( u" n1 v

172.16.1.100

! y% V6 r1 h4 G+ M5 H
[root@localhost ~]# curl 172.16.1.10
4 E1 ?  S: ^7 Ncurl: (7) Failed connect to 172.16.1.10:80; 连接超时
! ^# X+ R# n. m1 a1 u! {; d
  W: N) Y5 U+ |: t. q8 _
! t, c1 f% o% M( N' A" V

此时172.16.1.100再也不能访问nginx


" E: H3 ~, b' h, d+ p7 F$ J% J
nginx配置文件限制

' D0 t' V$ m, |* ^  V" q5 X

172.16.1.10

微信图片_20200924225638.png
' K3 \1 |* o3 M8 r$ C9 J
172.16.1.100
( \) h: p. n7 |3 y2 Z  `
[root@localhost ~]# curl -I 172.16.1.10& S) [7 B( r  l7 u# x9 h/ Q, ?
HTTP/1.1 403 Forbidden4 N5 t" Z& q0 F* a9 {1 R& H% f( ?2 I
Server: nginx/1.11.2- I& \# [6 D+ O! S
Date: Sat, 25 Jul 2020 23:12:06 GMT
  u( x* c" e+ ^, t- R. ~( TContent-Type: text/html4 a' C7 A0 m0 W# M1 Y# P3 u1 p
Content-Length: 169
0 `. U9 A" r( f) W# k8 pConnection: keep-alive$ _7 M4 k0 }; B* ?) _; F

% m& X* ~. b6 ?* w: m) u

8 i2 P. T0 Y+ n& ~
# h% Q5 p3 G( E# D# j4 Z

/ v' q( [7 O, W) e9 l- ~# G% R" C6 E
总    结

1 w0 d, P# v8 y9 I

以上就是两种简单的方法限制ip访问,还有许多方法可以利用工具进行ip限制。


; F7 `5 X) i& e$ P0 @/ I6 J
赞 收藏 1 评论0 发布时间:2020-9-24 22:58

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版