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

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

作者: IT_man    時間: 2016-4-9 12:53
標題: 防火牆強化套件fail2ban之安裝與設定
本帖最後由 IT_man 於 2016-4-9 22:36 編輯 " D( t0 g6 R, p; O/ f

0 @; b/ v3 x" T2 w我的環境:
/ w6 \. e3 y) g1 g; xCentOS 6.7    這是RedHat系列的發行版本,與Fedora同系。(發行版本的資料會記錄在 /etc/redhat-release), j/ V. }( ?. q0 P: K5 @7 ]
1.用yum安裝fail2ban  l0 k8 H5 G. n$ Q- `; u
yum -y install fail2ban   (yum安裝的歷程會記錄在 /var/log/yum 中。如有需要確認已安裝的套件,可以回頭查詢這個記錄檔。)
) Z; A$ Z+ a8 z# H  J
" X; I/ T/ y+ R5 H如果上述步驟不能安裝fail2ban,那麼yum會顯示找不到該套件的時候,你需要進入這個步驟。
. X( J5 ?/ [7 t* [5 i
3 I( j4 {! V' x4 k) nyum會掃描套件庫來決定要如何安裝套件。然而由於fail2ban並不在預設的套件庫中,所以我們必須手動加入含有fail2ban的套件庫atrpms。
; b, k' ]1 D" O, _3 F
" k% o( _' ]8 C請編輯 /etc/yum.repos.d/CentOS-Base.repo :
) |; O. J' S# T+ y; V
+ ^+ `/ y  T# D' M' Q) [$ _vi /etc/yum.repos.d/CentOS-Base.repo
' y# ~& z3 \& T' k( P在最後加入以下設定:$ d7 d6 f6 c! N4 O7 t

5 A. B1 H+ [' V[atrpms]
- b9 D$ u7 c# d" s, Uname=Red Hat Enterprise Linux $releasever - $basearch - ATrpms4 T- [' u# V# T: W+ V( e# d3 Q( y! J( ?
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
6 ]6 d+ x; N6 i4 ?; `gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
2 f1 I% m+ [7 Q; zgpgcheck=1
: I8 L6 K, \: o6 |, x9 |" p' x* |# jenabled=16 v" u: Y" o: K0 D0 R8 u9 {

  T* S. g/ t. ?' v6 Y$ k7 B6 p2. 設定fail2ban
6 B/ {7 a' h5 ?7 U6 {3 n$ n, [主要有兩個設定檔:/etc/fail2ban/fail2ban.conf 跟 /etc/fail2ban/jail.conf" V: s  S" e/ I! p
vi /etc/fail2ban/fail2ban.conf
% F( U6 U" a7 H9 t' i修改 logtarget 的參數:# C- T7 Z' s, A; r
  1. #預設的參數
    , J' ~/ B7 j+ J, u1 Y
  2. #logtarget = SYSLOG
    : ^  |* ?: ]$ h' Z
  3. #調整後的參數
    ! i$ \. x( x, Z
  4. logtarget = /var/log/fail2ban.log
複製代碼
vi /etc/fail2ban/jail.conf (fail2ban主要的設定檔)
/ H9 H0 I; x4 p! t2 M+ g
  1. #預設的參數- Q( r6 X- g# b3 N8 u
  2. #backend = auto
    ; g! x) ]3 W5 ~5 X3 E
  3. #調整後的參數2 ?: d! c. d, T5 I8 A9 H
  4. backend = gamin
複製代碼
gamin是Linux的套件之一。如果缺少你可以用yum來安裝它
! m( ]9 i$ X- q' Z# `" v$ _% r" e
  1. [ssh-iptables]& K% ?1 |% ?$ A& V$ p0 r
  2. #是否啟用
    4 N4 x' a) |$ X. r' V& z) |
  3. enabled  = true5 }! n: X0 Y; Z# |
  4. #過濾名稱,使用預設的即可+ Y" J5 X2 z" y, }/ k2 E' A
  5. filter   = sshd/ m8 w, t( Y8 C# r  T
  6. #iptables設定
    2 \2 [$ n) K) s) E. d
  7. action   = iptables[name=SSH, port=22022, protocol=tcp]
    7 x& Q+ v" S3 z% L; ~& R
  8.            #發生阻擋時的寄信設定6 F9 Y' J' g; |
  9.            sendmail-whois[name=SSH, [email protected], [email protected]]# v# o4 D/ g  \1 s

  10. # w/ z7 G' J# C& C( B
  11. #需要掃描的記錄檔
    " m0 l0 R# K$ L0 U
  12. logpath  = /var/log/secure" ~  l2 l1 M0 q4 Q2 h
  13. #最高嘗試錯誤次數
    , u1 o, x, {. D+ m3 F; C
  14. maxretry = 2
    - Q5 C/ \! _, `' k+ A4 ?
  15. #阻擋的時間,-1表示永久阻擋: g- n0 E! ?7 i* f
  16. bantime  = -1
複製代碼
讓fail2ban重新啟動時不會重設阻擋IP規則5 r& R% B6 j( Z/ U  [# }) D2 T/ V
在預設的設定中,fail2ban每次重新啟動時都會遺忘被阻擋的IP設定。舉例來說,如果我的電腦因為登入失敗被fail2ban擋掉,那麼只要fail2ban重新啟動,那麼我的電腦又可以繼續嘗試登入server。
* d3 Y/ ~5 ]( ]( C* a3 X* H9 V如果要讓fail2ban重新啟動時,不會重設阻擋的IP規則,則修改 /etc/init.d/fail2ban 的內容。2 Z" r1 A1 f8 K) C1 m% M7 h' o
vi /etc/init.d/fail2ban
: G5 w1 c0 n9 l找到start()的區塊,加入以下有#註解的設定:
# v8 v6 _2 @6 f+ j
  1. start() {& R4 |9 l' g9 C" S% w2 m
  2.     echo -n [        DISCUZ_CODE_3        ]quot;Starting fail2ban: ", B* J1 \+ Y1 u* n4 r, O* J' Y; ~
  3.     getpid; ~1 a; t" E. T+ W7 T, h4 J* W+ R& f$ ?
  4.     if [ -z "$pid" ]; then4 ?/ A: |. z" \. x  T
  5.         rm -rf /var/run/fail2ban/fail2ban.sock # unclean in case of restart fal2ban
    % ?" ~! p* _" c3 P  z' ]& B1 d4 x
  6.         $FAIL2BAN -x start > /dev/null1 V! l$ c' @6 u5 s; b6 g
  7.         RETVAL=$?
    $ y6 U; ~7 n% j' P
  8.     fi
    # e1 x& w5 y2 g9 _  z
  9.     if [ $RETVAL -eq 0 ]; then6 ^* \7 F% `% H
  10.         touch /var/lock/subsys/fail2ban
    ( u. {4 H! ~8 `, t# F
  11.         echo_success
    8 ]& |  }4 [9 ]
  12.         /sbin/service iptables restart # reloads previously banned ip's# S1 N0 c3 O; J7 C# C
  13.     else/ f3 ^, M/ f9 e
  14.         echo_failure
    ' S7 e5 K  X! ^; T( |2 p
  15.     fi
    ! s7 \. u* m) L: b2 ~4 }
  16. 0 s6 u8 u% p1 c7 r8 Y2 C% B: ^
  17.     echo
    + J+ C% ]" |, @8 h3 W+ `
  18.     return $RETVAL
    , W* k  l4 u+ y- G
  19. }
複製代碼
再找到stop()區塊,加入以下
有#註解的設定:
& `: i1 X0 n: s. q7 U7 w$ s) b
  1. stop() {
    # q* e- N2 j7 K( k$ w$ Y
  2.     echo -n [        DISCUZ_CODE_4        ]quot;Stopping fail2ban: "3 o: g2 E$ m* L6 X- Q8 [4 j
  3.     getpid, t7 p& a& V6 n- U+ Z9 A; R6 K
  4.     RETVAL=$?
    ! [* C+ E$ M0 r' d' w6 p
  5.     if [ -n "$pid" ]; then
    * u" e( Y. u; b: g9 H0 u
  6.        /sbin/service iptables save # saves banned ip's
    ' @& y. `3 k2 r
  7.         $FAIL2BAN stop > /dev/null
    # d- s8 J& q3 C) `, O
  8.     sleep 1, F# d, Z* T) H# b5 b8 g! j
  9.     getpid% Z5 D6 D8 i6 J1 B1 K9 D4 V
  10.     if [ -z "$pid" ]; then
    ( M! h6 I" W& v9 |- h3 {+ t
  11.         rm -f /var/lock/subsys/fail2ban
    ) D( \1 P5 ]' J% J
  12.         echo_success% j+ u  C1 I8 D$ d( s- O
  13.     else! }6 ~) p8 e  M* Y. p
  14.         echo_failure
    7 B6 j3 F2 p& m
  15.     fi9 B2 K3 k* M# L9 L$ }. N+ N
  16.     else/ H( @- v) g1 a2 N! k; F5 l4 f
  17.         echo_failure8 a6 y4 m) A4 X% M/ O" P
  18.     fi5 Y, W2 T# }- B" ]1 F: I0 t4 y
  19.     echo
    3 Q) R/ G6 \7 }8 J( d9 }
  20.     return $RETVAL
複製代碼
3. 設定fail2ban開機順序9 O+ u0 j9 e8 U6 W1 n; m, I. h
" t8 X- X+ k5 p5 E6 G  b
chkconfig --add fail2ban% \2 {% I, i  a& l+ j( x/ [# W2 ?
+ G1 t0 S! n$ i& F

5 G1 G& i" z( o9 A! n- |# Ip.s
3 A7 V  U+ z: C  y以上參考 :- c* c! R1 P7 `" m" C7 ]' J0 }
http://blog.pulipuli.info/2011/07/centosfail2ban.html  " o8 Z! p3 P, t( c9 ]
http://www.vixual.net/blog/archives/2520 M0 y) K, m8 ?* p  [4 o/ z- H





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