52AV手機A片王|52AV.ONE

標題: 防火牆強化套件fail2ban之安裝與設定 [打印本頁]

作者: IT_man    時間: 2016-4-9 12:53
標題: 防火牆強化套件fail2ban之安裝與設定
本帖最後由 IT_man 於 2016-4-9 22:36 編輯 " C$ P0 X0 i5 J, D" R0 Q- b

8 ~5 e& W7 N, V我的環境:% ?+ V  P7 U! B
CentOS 6.7    這是RedHat系列的發行版本,與Fedora同系。(發行版本的資料會記錄在 /etc/redhat-release)
; I0 V/ L8 f0 T: P1.用yum安裝fail2ban
  }' \% q( w7 p0 z/ ^; h6 [2 Vyum -y install fail2ban   (yum安裝的歷程會記錄在 /var/log/yum 中。如有需要確認已安裝的套件,可以回頭查詢這個記錄檔。)
) u2 W' w. Q0 g
6 f& {& b1 P2 e如果上述步驟不能安裝fail2ban,那麼yum會顯示找不到該套件的時候,你需要進入這個步驟。/ i8 S1 X7 k/ I1 \$ y; u9 ?) H. i  X
+ B! f* ~8 r6 f! J0 A" t
yum會掃描套件庫來決定要如何安裝套件。然而由於fail2ban並不在預設的套件庫中,所以我們必須手動加入含有fail2ban的套件庫atrpms。8 O4 l& l, ?5 c0 g: k3 o
) g- z, {' [6 W' G
請編輯 /etc/yum.repos.d/CentOS-Base.repo :2 [. E" z% ?- s* a0 r

6 P8 {/ E" [" A8 evi /etc/yum.repos.d/CentOS-Base.repo" Z2 [0 q9 |6 \
在最後加入以下設定:
2 S/ d' }9 |4 _; s$ [9 V
8 K' Y( p# A) w" ~* x0 q% y) R[atrpms]
7 m/ p0 e  c' [. bname=Red Hat Enterprise Linux $releasever - $basearch - ATrpms
3 E$ }- t* [% v) P) M7 ~: vbaseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable: P4 z' w2 |% l, e
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms+ f1 g# {* J- I; g  F: }
gpgcheck=1
4 N% D! B* w) V' o4 M8 Venabled=1
3 \" R8 t' A( P0 _  S) z, D
9 M  o: o% {' l: M2. 設定fail2ban2 g* |( p0 _6 C- D
主要有兩個設定檔:/etc/fail2ban/fail2ban.conf 跟 /etc/fail2ban/jail.conf1 ?5 q2 ^& U2 ?8 p$ A; X
vi /etc/fail2ban/fail2ban.conf
7 ?; a: p8 ?) ]/ h/ d) S7 }& e修改 logtarget 的參數:$ m! ?( ~: W  V! V5 ?  d8 R9 S
  1. #預設的參數
    8 e* X# b0 W: l% o; Y/ g+ c, v& |
  2. #logtarget = SYSLOG
    1 G6 H9 I4 T; o! Z+ J3 K- L
  3. #調整後的參數' h  S% \6 a/ \% X/ Z+ e
  4. logtarget = /var/log/fail2ban.log
複製代碼
vi /etc/fail2ban/jail.conf (fail2ban主要的設定檔)
; Z0 y+ h7 ]* ~! L1 m1 t* q! R/ M
  1. #預設的參數( U/ Y  _* L5 f7 q; Y- H4 \, i
  2. #backend = auto ( Y+ y6 D! c. s8 l
  3. #調整後的參數1 y* t6 e4 X( s7 E
  4. backend = gamin
複製代碼
gamin是Linux的套件之一。如果缺少你可以用yum來安裝它
9 K- @; Y0 K2 S/ J' I: Q4 J7 b( l
  1. [ssh-iptables]6 J" J- D0 ~1 I+ S% l' J
  2. #是否啟用9 d- a. m! M8 _1 P' L) T
  3. enabled  = true
    % j1 K: F4 C# W4 `
  4. #過濾名稱,使用預設的即可
    ! \: C( [' o. {1 U
  5. filter   = sshd
    ; s% j) r" W9 G, F0 g5 z% g
  6. #iptables設定  g0 ]8 O5 }5 @0 J, S
  7. action   = iptables[name=SSH, port=22022, protocol=tcp]
    8 _+ Y  H' U  J6 h
  8.            #發生阻擋時的寄信設定
    % z+ D/ s+ r, F# F; c
  9.            sendmail-whois[name=SSH, [email protected], [email protected]]* S. G5 F& ^0 p- \

  10. 9 r. @4 J$ ^2 d& S5 F
  11. #需要掃描的記錄檔" _0 X4 V3 L3 ^$ w2 W
  12. logpath  = /var/log/secure% @+ J/ t9 C" N0 O, ]8 p# H
  13. #最高嘗試錯誤次數5 r, U# V2 z/ F# ~1 `
  14. maxretry = 2
    ; O8 l! j1 }$ s# E- v) k- y+ d5 d/ z
  15. #阻擋的時間,-1表示永久阻擋
    - i9 _% e2 h$ L
  16. bantime  = -1
複製代碼
讓fail2ban重新啟動時不會重設阻擋IP規則
: Y( X% n; o/ g9 Z在預設的設定中,fail2ban每次重新啟動時都會遺忘被阻擋的IP設定。舉例來說,如果我的電腦因為登入失敗被fail2ban擋掉,那麼只要fail2ban重新啟動,那麼我的電腦又可以繼續嘗試登入server。
" t" `9 A2 G% [0 V2 S/ D如果要讓fail2ban重新啟動時,不會重設阻擋的IP規則,則修改 /etc/init.d/fail2ban 的內容。
* O3 N) Y: O3 s5 N& U vi /etc/init.d/fail2ban9 N+ r9 E9 M  e
找到start()的區塊,加入以下有#註解的設定:
# c2 M5 f* ]  I
  1. start() {
    4 F6 x# B8 x- `0 `! I* H
  2.     echo -n [        DISCUZ_CODE_3        ]quot;Starting fail2ban: "6 z. _4 u8 m! U- S5 ~7 S. k. v
  3.     getpid
    # Z6 ~1 l8 p) A- J# r
  4.     if [ -z "$pid" ]; then
    ! \. w2 K3 ]' n7 n
  5.         rm -rf /var/run/fail2ban/fail2ban.sock # unclean in case of restart fal2ban
    3 g9 |3 N$ H6 m9 M  R- |
  6.         $FAIL2BAN -x start > /dev/null% t5 Y& M( J  E
  7.         RETVAL=$?3 z* s& X- n& o, y
  8.     fi
    " J/ X& z% m6 c  Q
  9.     if [ $RETVAL -eq 0 ]; then
    3 U( q  v, a3 _8 A9 J  i- u$ [
  10.         touch /var/lock/subsys/fail2ban
    ! V  n' ?! b, h. j
  11.         echo_success  {$ V. w0 C9 W5 v% j0 T8 {2 W
  12.         /sbin/service iptables restart # reloads previously banned ip's
    6 B9 X. L9 g5 G; d! ^
  13.     else
    / f/ ?2 c$ a$ n3 }$ I
  14.         echo_failure
    $ V+ N# i, W" Z' z4 _. i5 S
  15.     fi
    & O, h. b7 B  h9 H

  16. ' c2 [, s9 V: Q! _
  17.     echo
    2 l+ G0 A3 O/ C& J0 e! k# C2 M
  18.     return $RETVAL; b; p% A. m; j7 `
  19. }
複製代碼
再找到stop()區塊,加入以下
有#註解的設定:0 _; w, ^! @+ }, o& H7 z4 `- y& q
  1. stop() {
    ! |- i# A6 j; g0 L7 B1 Z8 b/ A
  2.     echo -n [        DISCUZ_CODE_4        ]quot;Stopping fail2ban: "* e$ n, d% R) u! P# w0 L' S
  3.     getpid
    9 Q1 G2 x  z, u4 U" i
  4.     RETVAL=$?! B) j( T( P; o! z# S
  5.     if [ -n "$pid" ]; then
    8 [+ R0 b  E6 j
  6.        /sbin/service iptables save # saves banned ip's
    0 D5 _6 c1 J: n5 c7 ]1 O$ u
  7.         $FAIL2BAN stop > /dev/null3 X( c* L! t2 K2 M3 o
  8.     sleep 14 h" s: L5 c$ Y! `1 T1 k8 Q# G
  9.     getpid/ }& P: M% @5 p9 @
  10.     if [ -z "$pid" ]; then8 y: I4 A' N: `6 H1 \
  11.         rm -f /var/lock/subsys/fail2ban
    - t2 j6 S3 I: ^0 ~
  12.         echo_success
    7 m1 Y  @4 N0 @" _
  13.     else" y2 H- e$ Q8 x, |- u6 p
  14.         echo_failure
    3 {5 Z+ M. w9 Q+ z
  15.     fi. s. y( O( Q* p+ G( c- p
  16.     else3 V" ]; k/ P( G/ O! z1 k  P7 V& f
  17.         echo_failure
    8 N- `% {5 A/ o6 {8 E4 N. U
  18.     fi
    ! F/ i5 O1 t5 O" r
  19.     echo
    $ `. Z- o- x. D- O* d4 ~
  20.     return $RETVAL
複製代碼
3. 設定fail2ban開機順序
* h1 ]# W9 P2 B2 o7 t7 [" O" |. d3 N  d  N9 K) \3 g) P: z
chkconfig --add fail2ban" ]* X5 P( j4 n

, x3 B+ t/ _  \0 O* c
4 T0 E  v' `" c) {" h
p.s ; H3 M2 s4 R* {* V. n# |! ]' d  o& L
以上參考 :
4 N2 ?0 S" }5 t2 jhttp://blog.pulipuli.info/2011/07/centosfail2ban.html  
: T! x7 P7 V* q6 ihttp://www.vixual.net/blog/archives/252* b; Q3 i, s: [- m2 W





歡迎光臨 52AV手機A片王|52AV.ONE (https://www.itech.casa/) Powered by Discuz! X3.2