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

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

作者: IT_man    時間: 2016-4-9 12:53
標題: 防火牆強化套件fail2ban之安裝與設定
本帖最後由 IT_man 於 2016-4-9 22:36 編輯
5 B* p! p7 D" f- n6 D6 K
. R! I) @& q0 K0 e; O我的環境:3 F3 _: C& q8 V" {, _0 V# t8 g
CentOS 6.7    這是RedHat系列的發行版本,與Fedora同系。(發行版本的資料會記錄在 /etc/redhat-release)
2 N; Y$ m( ^( ]0 Q  S% c& |9 @1.用yum安裝fail2ban1 t/ z8 S" |4 o, |% _* t$ w( |0 s
yum -y install fail2ban   (yum安裝的歷程會記錄在 /var/log/yum 中。如有需要確認已安裝的套件,可以回頭查詢這個記錄檔。)( T& [% P0 I8 ?& O. Q+ \4 y4 N$ T

% ^0 I" n! I8 @7 F/ I如果上述步驟不能安裝fail2ban,那麼yum會顯示找不到該套件的時候,你需要進入這個步驟。: D0 c7 M6 O- I# }# k6 Q
! R9 E7 X, `0 y1 x" O
yum會掃描套件庫來決定要如何安裝套件。然而由於fail2ban並不在預設的套件庫中,所以我們必須手動加入含有fail2ban的套件庫atrpms。
8 E/ C# V( O: k$ O1 n) O, r" F* O( S) p& R4 @( C- A  g7 P4 g
請編輯 /etc/yum.repos.d/CentOS-Base.repo :
5 W* p* m3 \- q7 o: l1 T' p7 G
+ Y' J+ ^2 q8 x& fvi /etc/yum.repos.d/CentOS-Base.repo
. Y: |% W* F" o7 g; K在最後加入以下設定:4 n; F8 Z0 F9 ~# ~1 D
! \' R8 E- {* b6 X3 I. l( B
[atrpms]
5 g- t5 l$ j: [name=Red Hat Enterprise Linux $releasever - $basearch - ATrpms5 l1 u; d& \. f0 @
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable- U- d: l" L. v# ~( D- q
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
4 [0 b. P/ d5 U, ?$ r& n* @gpgcheck=1
2 K; g- Q; {$ [9 e- c: _2 G1 z& genabled=1% F/ p9 t! K2 q$ x4 Y- x) s* J1 c+ e

/ N4 F7 ?8 H+ x2. 設定fail2ban  X& I9 j& H7 ^7 r
主要有兩個設定檔:/etc/fail2ban/fail2ban.conf 跟 /etc/fail2ban/jail.conf+ e5 R0 y8 K* p1 X' _
vi /etc/fail2ban/fail2ban.conf
& ^1 k; \* N* L- Y修改 logtarget 的參數:
! E- }$ L, W$ W6 I7 N2 V
  1. #預設的參數
    - V1 t6 ?! Z% m% J
  2. #logtarget = SYSLOG( F* E  R) K" D' H' t6 F% C! f2 R
  3. #調整後的參數
      O8 l6 }. }/ u) B
  4. logtarget = /var/log/fail2ban.log
複製代碼
vi /etc/fail2ban/jail.conf (fail2ban主要的設定檔)5 [  o) F: n, e) B3 ~2 o
  1. #預設的參數
    ) p6 l/ l9 `) v! m$ y* ^3 o
  2. #backend = auto
    9 O- s, _5 @! v, ~  U  e6 z
  3. #調整後的參數3 K# I8 ~% x' R
  4. backend = gamin
複製代碼
gamin是Linux的套件之一。如果缺少你可以用yum來安裝它2 s+ R% j) U' W+ O
  1. [ssh-iptables]. n/ @: j( [6 N+ c) p2 c& D
  2. #是否啟用
    7 k. E; y  P+ ?. ?  x# j6 _, K) T  y
  3. enabled  = true  C  b" w) o$ m$ d% A+ X/ [2 ^/ M
  4. #過濾名稱,使用預設的即可
    0 ^+ L  z1 g9 ?* }+ R, y, Q
  5. filter   = sshd+ x& C/ j- D" P8 P' A
  6. #iptables設定
    2 s* J# u/ D2 Y: O  y
  7. action   = iptables[name=SSH, port=22022, protocol=tcp]
    + y6 T! g% q6 `
  8.            #發生阻擋時的寄信設定
    3 H* ?- ?3 o# Q7 \/ a& x. |( G
  9.            sendmail-whois[name=SSH, dest=xxxx@gmail.com, sender=root@xxxx.com]
    & Q# e5 }  K; w7 q# ]( v- d  e

  10. . F5 s4 ?# j7 D, o1 q+ S5 l
  11. #需要掃描的記錄檔
    - A% q! t) L) n4 X6 A
  12. logpath  = /var/log/secure: V, p' T1 n# D9 a0 N( Y9 `0 w0 [
  13. #最高嘗試錯誤次數
    $ h. ~0 ^1 ~, c+ p3 |1 a3 f5 G
  14. maxretry = 2$ O6 r& T1 }! L" L# k0 A" \
  15. #阻擋的時間,-1表示永久阻擋4 M7 W0 j& `& s! v, l  t  @
  16. bantime  = -1
複製代碼
讓fail2ban重新啟動時不會重設阻擋IP規則8 s4 X3 m6 H) |' ?$ v& u6 V
在預設的設定中,fail2ban每次重新啟動時都會遺忘被阻擋的IP設定。舉例來說,如果我的電腦因為登入失敗被fail2ban擋掉,那麼只要fail2ban重新啟動,那麼我的電腦又可以繼續嘗試登入server。
* D$ G1 N! [7 j如果要讓fail2ban重新啟動時,不會重設阻擋的IP規則,則修改 /etc/init.d/fail2ban 的內容。
3 O, s4 v3 o3 \8 _& ` vi /etc/init.d/fail2ban+ P% ]* F+ r4 c" k; {; I) M9 @: q
找到start()的區塊,加入以下有#註解的設定:
6 o8 B: F3 r2 H, s
  1. start() {/ g) b( c) K5 t
  2.     echo -n [        DISCUZ_CODE_3        ]quot;Starting fail2ban: "
    ; y- N& W2 T+ T+ b
  3.     getpid
      I, p% F) v) j6 N( }$ D
  4.     if [ -z "$pid" ]; then
    ) q7 c  J- V0 ?% G$ D* J
  5.         rm -rf /var/run/fail2ban/fail2ban.sock # unclean in case of restart fal2ban
    ' C  q  U* V! H5 }  G4 Q" G" W
  6.         $FAIL2BAN -x start > /dev/null
    6 Q$ V+ g% g, Y3 V3 J+ F0 m
  7.         RETVAL=$?
    , R, a* T. ?2 F2 O6 s
  8.     fi
    - b' X# b4 v" v4 v
  9.     if [ $RETVAL -eq 0 ]; then7 z- i% }9 e9 o. J* p9 {
  10.         touch /var/lock/subsys/fail2ban. o7 O% O( V- E* V  X$ a! e
  11.         echo_success! [+ u9 Q# ~+ ?1 F# W
  12.         /sbin/service iptables restart # reloads previously banned ip's- i9 }' L. v- `
  13.     else! N) \" ]" c8 i
  14.         echo_failure
    5 m  w5 s) r+ G4 S8 P* A
  15.     fi! b6 C8 x* m; ?+ L

  16. * v7 a9 e4 D9 {+ Q
  17.     echo
    7 Q0 O3 d5 W' ?4 K
  18.     return $RETVAL
    * X! l9 r. r! }' T+ ~% F
  19. }
複製代碼
再找到stop()區塊,加入以下
有#註解的設定:
) Q5 }2 x' N, V- J. `: B% J
  1. stop() {
    " ]# Y6 p1 A& }* w& O1 m
  2.     echo -n [        DISCUZ_CODE_4        ]quot;Stopping fail2ban: "
    & G7 M/ F2 ?( w- ^
  3.     getpid1 A+ ~! b% D- p1 \5 _
  4.     RETVAL=$?
    1 \( ~3 |  Z. _" z
  5.     if [ -n "$pid" ]; then
    8 T  W: W) h, S: Z; `- w
  6.        /sbin/service iptables save # saves banned ip's' g1 r. h9 F' m0 y
  7.         $FAIL2BAN stop > /dev/null
    0 _: V7 }" |& o$ s+ Q
  8.     sleep 1
      B  L$ o4 a4 w( q
  9.     getpid6 i! [6 J7 b$ O/ w2 z
  10.     if [ -z "$pid" ]; then
    $ T: d! `9 i8 K
  11.         rm -f /var/lock/subsys/fail2ban( E9 m5 S, m" q3 k9 A$ s; q4 ]
  12.         echo_success& u3 ?% U9 S) a. b5 C9 l* J
  13.     else1 [) ~) c9 k% o; t+ a1 u' U/ N
  14.         echo_failure
    " q  e! K- g- n) K: c0 ]
  15.     fi
    9 _0 K& w& j$ ?' E2 R
  16.     else6 {+ c7 E, c- ]2 U3 j# @& k8 w
  17.         echo_failure7 ^0 v1 `9 E. ~8 [1 r) p: _
  18.     fi
    1 a) Q, ?$ j& `/ o
  19.     echo2 R, e' g- d7 I) f
  20.     return $RETVAL
複製代碼
3. 設定fail2ban開機順序
- q8 _) P: \. L/ b  O
8 q  j- t& ]* g+ W! u$ Ichkconfig --add fail2ban- p4 ?* ?: |- ^! d& q
6 V9 k" q" M& h8 T2 Z/ {7 z7 O0 n) }$ E

2 {' W$ N; e; A4 p3 y5 v, np.s 9 a, X( H9 [! q) I
以上參考 :: T9 u' c( c9 \+ }/ G
http://blog.pulipuli.info/2011/07/centosfail2ban.html  
3 c& Y. S1 c# Z2 ~. B0 |" @http://www.vixual.net/blog/archives/2520 b# k' T) j! B) x





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