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

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

作者: IT_man    時間: 2016-4-9 12:53
標題: 防火牆強化套件fail2ban之安裝與設定
本帖最後由 IT_man 於 2016-4-9 22:36 編輯 4 r5 s5 Y) I/ e4 p
3 j1 Q, N2 k9 c3 R3 Q
我的環境:
$ L( X" `1 ?" G& Z' UCentOS 6.7    這是RedHat系列的發行版本,與Fedora同系。(發行版本的資料會記錄在 /etc/redhat-release). }2 g5 Y' b6 `+ T% B8 q3 p5 b
1.用yum安裝fail2ban1 z7 q. _- o* L. ?
yum -y install fail2ban   (yum安裝的歷程會記錄在 /var/log/yum 中。如有需要確認已安裝的套件,可以回頭查詢這個記錄檔。)
# A- i$ P3 d! q4 O+ w
: Y; D( q8 Z( b$ S7 i. {( u& O如果上述步驟不能安裝fail2ban,那麼yum會顯示找不到該套件的時候,你需要進入這個步驟。
+ X1 ]% C1 P6 }. H
4 F3 `3 Q' x/ u1 M7 q* Iyum會掃描套件庫來決定要如何安裝套件。然而由於fail2ban並不在預設的套件庫中,所以我們必須手動加入含有fail2ban的套件庫atrpms。1 Y  h, Q0 e$ n

' S& }4 K0 E# W% w- j( o/ r請編輯 /etc/yum.repos.d/CentOS-Base.repo :
; B# e9 a' z% r0 T2 Z" y" w5 n; f1 D. V9 p1 e: l
vi /etc/yum.repos.d/CentOS-Base.repo) |1 c7 d( b# W% `* B% \  [, t6 {
在最後加入以下設定:
- b& d1 ?2 R" S; A$ s
" M) l9 f; ]4 l3 G2 m; S[atrpms]
0 @( D: a* {+ D4 E3 dname=Red Hat Enterprise Linux $releasever - $basearch - ATrpms- P7 E' a* k3 ^0 @7 T. w0 ^$ R! d
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable1 \) r+ M( S; P: g) B0 t( v
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms. i8 {9 j/ g% O* c6 T9 e; C
gpgcheck=1' u. F0 t6 F8 y' R) _5 B
enabled=1& _# w6 g6 U; \; @" |. o
+ Y1 j0 J: `# i
2. 設定fail2ban
/ x3 }3 K- U" q0 i) h  c主要有兩個設定檔:/etc/fail2ban/fail2ban.conf 跟 /etc/fail2ban/jail.conf* ?0 ~4 G  l8 U5 x/ W1 E2 j9 U+ L
vi /etc/fail2ban/fail2ban.conf2 ]3 W4 [7 C3 r. v8 J! m; R
修改 logtarget 的參數:
0 @# R  Z; T! ?* B$ V* _
  1. #預設的參數
    ; n4 |, |  D2 W/ R& J; V
  2. #logtarget = SYSLOG% K/ _. n" m( N! y) z
  3. #調整後的參數
    9 w& _* W, ^+ ^8 U
  4. logtarget = /var/log/fail2ban.log
複製代碼
vi /etc/fail2ban/jail.conf (fail2ban主要的設定檔)
# [9 }' _) \* K; i' K6 |% ]& A0 |
  1. #預設的參數
    4 ~/ E0 T6 h4 e5 O. ^
  2. #backend = auto # d2 K& Z  w- J+ l' k
  3. #調整後的參數( t+ _6 W+ q; Q3 J4 d4 E* Q  T
  4. backend = gamin
複製代碼
gamin是Linux的套件之一。如果缺少你可以用yum來安裝它
3 {6 i1 N! B4 d' s9 o- g
  1. [ssh-iptables]
    ; N  ~4 y4 l& B1 D* q0 m3 U5 m
  2. #是否啟用+ r, k5 U" Z% R; B0 ]3 R/ T8 b* p
  3. enabled  = true
    / f+ l5 G  U+ |! @& i( D2 z+ r/ Q
  4. #過濾名稱,使用預設的即可7 Y7 W: e3 t: N3 ~& P8 N+ Z9 F
  5. filter   = sshd* X* F' y7 V. ~8 }* Y1 O
  6. #iptables設定8 V1 D. @3 `% @4 W  d) H
  7. action   = iptables[name=SSH, port=22022, protocol=tcp]  w" `0 z  n0 y8 a7 C+ N
  8.            #發生阻擋時的寄信設定' |; Q. D1 K6 t$ `* n# U
  9.            sendmail-whois[name=SSH, dest=xxxx@gmail.com, sender=root@xxxx.com]
    8 a- S, q4 Y) c# U% e7 ~1 p
  10. 6 w+ V9 \% G9 |6 M: |) g
  11. #需要掃描的記錄檔8 `6 ^. i2 P) S$ I0 g4 {5 G! N+ y. H, h
  12. logpath  = /var/log/secure
    9 J7 B5 X3 W) t, ~' e' F7 [
  13. #最高嘗試錯誤次數. u+ K, r* T' a7 j
  14. maxretry = 2
    ; c4 h$ y$ X: g7 |# y$ M
  15. #阻擋的時間,-1表示永久阻擋- y* w4 h4 q  @5 p
  16. bantime  = -1
複製代碼
讓fail2ban重新啟動時不會重設阻擋IP規則
, j7 b: C: A$ {) f5 Y. e9 g在預設的設定中,fail2ban每次重新啟動時都會遺忘被阻擋的IP設定。舉例來說,如果我的電腦因為登入失敗被fail2ban擋掉,那麼只要fail2ban重新啟動,那麼我的電腦又可以繼續嘗試登入server。
# E8 h' X, o. ~- g& |  ~5 D如果要讓fail2ban重新啟動時,不會重設阻擋的IP規則,則修改 /etc/init.d/fail2ban 的內容。
4 C+ T" k# [4 X3 k vi /etc/init.d/fail2ban' i4 q7 H8 c6 c! R
找到start()的區塊,加入以下有#註解的設定:* p  h. r5 \$ L* J: C5 d& i
  1. start() {
    + S, H/ G8 c8 j7 d
  2.     echo -n [        DISCUZ_CODE_3        ]quot;Starting fail2ban: "
    . U* T6 |4 j3 c4 Q6 ^& }
  3.     getpid" q. |1 }2 R) C# i2 u) Z
  4.     if [ -z "$pid" ]; then6 Z* N* t- K  L! \; W# `5 L' Z
  5.         rm -rf /var/run/fail2ban/fail2ban.sock # unclean in case of restart fal2ban
    8 u( \8 r6 y2 [
  6.         $FAIL2BAN -x start > /dev/null0 [1 p' }6 H* W# |
  7.         RETVAL=$?. x% O2 t) z8 T
  8.     fi. E- O) A$ o- {0 ?6 M& m, L
  9.     if [ $RETVAL -eq 0 ]; then
    : t# I' x& X! ?* ?2 q- {5 m! m
  10.         touch /var/lock/subsys/fail2ban
    # c) F" F! P; z- H( O* n  r! v
  11.         echo_success+ E, `+ |% I$ M, Z0 I& Z, B
  12.         /sbin/service iptables restart # reloads previously banned ip's% T5 l0 E+ o/ q7 [( }
  13.     else
    5 H5 F+ H" N  ~& P0 ^2 t7 {* F5 v
  14.         echo_failure7 P) U$ E% |6 G0 d
  15.     fi' V; W! i& i* G' a* U

  16. * _  q/ W+ r' d2 G( F
  17.     echo
    * j* A+ O2 C$ ]7 o# X+ F0 F/ `
  18.     return $RETVAL
      b/ T, H/ `7 m5 T( T3 p
  19. }
複製代碼
再找到stop()區塊,加入以下
有#註解的設定:
9 A" S( H# L* y7 F
  1. stop() {
    - Y, P7 Z8 e. m0 z" m9 Y, A) i
  2.     echo -n [        DISCUZ_CODE_4        ]quot;Stopping fail2ban: "
    $ p2 ^8 U. K9 V1 `  G
  3.     getpid4 P  C+ d5 R- q& G9 C/ |4 }6 x
  4.     RETVAL=$?
    ' @& {& o; y% C: z9 G. F$ w+ n1 ^
  5.     if [ -n "$pid" ]; then
    ( y1 T) P# g  U* X+ u2 a1 G
  6.        /sbin/service iptables save # saves banned ip's
    + s) h# _  D  M8 a5 V* ^6 v
  7.         $FAIL2BAN stop > /dev/null" G4 D, g9 D+ E8 g. o
  8.     sleep 19 {/ f) X, q, v
  9.     getpid1 a+ \% i/ _# w- Z
  10.     if [ -z "$pid" ]; then) e- o2 U. m, }6 t; i; N
  11.         rm -f /var/lock/subsys/fail2ban( _8 p3 {/ s, c& x
  12.         echo_success; Z) p! f9 m0 [( e6 E2 G5 I
  13.     else( ]" F4 _3 X: \6 E5 S' \' r
  14.         echo_failure
    ( u) T" I8 [$ d  m- N
  15.     fi  r2 y4 O& l, L/ Y
  16.     else3 o+ M0 K2 p: v4 l  z& r- L
  17.         echo_failure
    ( X+ K& P7 B) m# d: p, e* x
  18.     fi
    4 Y, V- O7 q8 \2 q* u8 ?
  19.     echo% B# Y- ~5 N; {" q* ]$ Q* x
  20.     return $RETVAL
複製代碼
3. 設定fail2ban開機順序# }5 K& o4 D! `  p3 n* k
" n# \/ c1 Q8 y  f5 D
chkconfig --add fail2ban
  F7 x* \6 }& m7 W/ y% Q3 E. c# V; P2 ~
: Z( q$ s! [. @% n4 u  o
p.s
! t# m1 a% A  y$ ~2 x$ q以上參考 :
5 I2 z8 I) U( |! H8 }1 W  t1 T* Jhttp://blog.pulipuli.info/2011/07/centosfail2ban.html  4 J4 |2 ?: R+ W
http://www.vixual.net/blog/archives/252
7 t6 L2 g5 g7 `4 Y




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