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

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

作者: IT_man    時間: 2016-4-9 12:53
標題: 防火牆強化套件fail2ban之安裝與設定
本帖最後由 IT_man 於 2016-4-9 22:36 編輯 6 i% y- \: M. ?2 D

7 @2 y8 K- w  v. Q我的環境:+ h6 V- r/ @  {% t' d
CentOS 6.7    這是RedHat系列的發行版本,與Fedora同系。(發行版本的資料會記錄在 /etc/redhat-release)
" B0 V& C5 r: b" A  y3 X1.用yum安裝fail2ban
7 K- _/ B. n/ V: I- Byum -y install fail2ban   (yum安裝的歷程會記錄在 /var/log/yum 中。如有需要確認已安裝的套件,可以回頭查詢這個記錄檔。): h0 j* ^, a2 S9 U3 U" b* J

; J" j2 c' I; ^. d2 m2 S如果上述步驟不能安裝fail2ban,那麼yum會顯示找不到該套件的時候,你需要進入這個步驟。
% F" s- a! _& s
, C% ]* C1 A' X5 k: ^  q- f$ W) }  Ryum會掃描套件庫來決定要如何安裝套件。然而由於fail2ban並不在預設的套件庫中,所以我們必須手動加入含有fail2ban的套件庫atrpms。8 {, ~2 ~: L3 G& @  _

/ p1 u% \1 Q( c. q6 n% N請編輯 /etc/yum.repos.d/CentOS-Base.repo :
5 i5 \( J: l& U" }3 U
  x# F" ^" E0 p3 C$ Yvi /etc/yum.repos.d/CentOS-Base.repo5 d3 j& p! _6 h9 ^4 W# s3 [
在最後加入以下設定:+ M* ?7 v- [- f  i- Y' r- z1 I- k

  F+ V7 {  s# N* o, `( Z[atrpms]# r+ [  V, K5 r; a. C
name=Red Hat Enterprise Linux $releasever - $basearch - ATrpms: Q+ l. z( t6 w8 J; R, i
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable- s' X& G' [7 |2 v
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms# P. m3 l% @% I- j! o" ~- O
gpgcheck=1: \0 Z# {+ m+ l( N! S0 F4 p
enabled=1
4 ^2 b% y) g$ A+ f. U7 b4 q6 Q  G) {% [
2. 設定fail2ban7 t. B0 T; h# o- f, H
主要有兩個設定檔:/etc/fail2ban/fail2ban.conf 跟 /etc/fail2ban/jail.conf
, g7 `( j9 E5 `2 \( yvi /etc/fail2ban/fail2ban.conf2 T* g3 z+ B+ A1 |1 {; r
修改 logtarget 的參數:& ?! u; K: b( w& E, a$ d
  1. #預設的參數
    3 R) i+ w# p. i  u9 O0 @, z7 x( |
  2. #logtarget = SYSLOG' K' ~7 ~. |' e  q& g8 v
  3. #調整後的參數
    ; m; j5 f; i6 M. S* L( y, v
  4. logtarget = /var/log/fail2ban.log
複製代碼
vi /etc/fail2ban/jail.conf (fail2ban主要的設定檔)! U* A; l' f* ]# ?. Z# H, q& \
  1. #預設的參數, W1 u# O" d" P6 I" ?* F! g0 ]
  2. #backend = auto ) f0 h' Q- B& l
  3. #調整後的參數
    & s% d2 m( N0 w& {. a) ~0 S$ p% k
  4. backend = gamin
複製代碼
gamin是Linux的套件之一。如果缺少你可以用yum來安裝它0 S. P# F5 ?  ~3 R/ D3 d
  1. [ssh-iptables], B/ ?% w/ @3 V- H8 V
  2. #是否啟用
    # Z: t7 G0 Y* S; g) }
  3. enabled  = true
    - a3 T4 v7 v: O1 A4 o7 V# N
  4. #過濾名稱,使用預設的即可/ l; s7 t4 M8 m) ]8 Q: E/ i
  5. filter   = sshd
    5 K/ r3 q. E+ G9 h) [4 |* e
  6. #iptables設定
    2 _4 l0 T* V! f/ f7 L! ^
  7. action   = iptables[name=SSH, port=22022, protocol=tcp]  M" K5 `0 L: h0 n; D' F7 h* @
  8.            #發生阻擋時的寄信設定6 I9 G2 h+ M+ ~7 @5 |
  9.            sendmail-whois[name=SSH, dest=xxxx@gmail.com, sender=root@xxxx.com]
    : Y5 w; M9 V$ C, S5 G# c4 V
  10. + ~) X  l' o: z) F
  11. #需要掃描的記錄檔% I5 U6 I# x5 B1 h1 @$ ^' v
  12. logpath  = /var/log/secure5 f* q  X; `: k' |0 |4 ?0 b
  13. #最高嘗試錯誤次數
    ( k0 W1 M, `! j, q9 {1 n4 X! H) O
  14. maxretry = 2
    ( L5 w0 D" q5 o" [4 D8 _
  15. #阻擋的時間,-1表示永久阻擋! Y# O! W( {! l$ T8 A
  16. bantime  = -1
複製代碼
讓fail2ban重新啟動時不會重設阻擋IP規則
$ Z' \  G7 [5 w在預設的設定中,fail2ban每次重新啟動時都會遺忘被阻擋的IP設定。舉例來說,如果我的電腦因為登入失敗被fail2ban擋掉,那麼只要fail2ban重新啟動,那麼我的電腦又可以繼續嘗試登入server。8 U9 g. @* d2 V2 k7 H$ T0 k
如果要讓fail2ban重新啟動時,不會重設阻擋的IP規則,則修改 /etc/init.d/fail2ban 的內容。/ y, _1 X" I  H' {
vi /etc/init.d/fail2ban$ l" n0 }* G4 }; y3 |8 ^
找到start()的區塊,加入以下有#註解的設定:
! N1 X  p/ `4 v- S, l9 e
  1. start() {' n* C1 G! U( v' q
  2.     echo -n [        DISCUZ_CODE_3        ]quot;Starting fail2ban: "1 H. t' P0 v6 H7 E& [; p: H
  3.     getpid$ @, @! w9 p9 ]% D+ I! t
  4.     if [ -z "$pid" ]; then
    / C' a+ P9 i- ^3 @  f! `5 `2 y
  5.         rm -rf /var/run/fail2ban/fail2ban.sock # unclean in case of restart fal2ban
    $ ?$ J3 k+ F9 E% a% l. c0 u
  6.         $FAIL2BAN -x start > /dev/null2 c2 U. ~; J. V! Z  N8 p
  7.         RETVAL=$?# k3 m0 T# q& Y' a
  8.     fi) \, k. B5 {7 F( _$ f3 e
  9.     if [ $RETVAL -eq 0 ]; then
    $ q% s, V! w; y, s: k' O; k4 f
  10.         touch /var/lock/subsys/fail2ban  b+ V. ?: a6 Z( ^. z+ o
  11.         echo_success8 P5 l- f/ [6 t! P
  12.         /sbin/service iptables restart # reloads previously banned ip's
    + p2 }6 V. B  r7 P* S+ i4 J
  13.     else& q1 M* B) X  X: e/ D
  14.         echo_failure
    8 ~4 |( b! I$ @/ A) D
  15.     fi
    & P9 q8 b; n! J9 @! ?5 x
  16. ) B  Q9 E! _# U2 r& M
  17.     echo3 h! \% t/ U1 ^: Y
  18.     return $RETVAL
    1 X+ B0 P* I, V
  19. }
複製代碼
再找到stop()區塊,加入以下
有#註解的設定:7 m6 A8 h" }0 h7 U) t6 i( N
  1. stop() {5 |$ U% Y3 p* b) f4 t
  2.     echo -n [        DISCUZ_CODE_4        ]quot;Stopping fail2ban: "6 b* u# H2 ^3 W" p# ]. V( Y+ y
  3.     getpid
    . b8 ~: T# v" L
  4.     RETVAL=$?
    , x4 m5 B! H9 J* r
  5.     if [ -n "$pid" ]; then
    : b8 s( f( _& p  m1 b0 U/ ^0 n
  6.        /sbin/service iptables save # saves banned ip's
    % j, L1 `  k/ L. G6 I/ U8 m9 s
  7.         $FAIL2BAN stop > /dev/null
    " M& c0 l; J, R/ c* E8 C& b! c" j! u
  8.     sleep 1
    2 D+ {2 W0 ^) k9 n" ]
  9.     getpid
    / b1 [4 Y* s# p6 g) O. v
  10.     if [ -z "$pid" ]; then/ v: F1 W% `  W8 A- f
  11.         rm -f /var/lock/subsys/fail2ban
    $ v$ h: E. B) d$ j; `2 A8 }$ M
  12.         echo_success
    9 r* ~+ a/ S6 e  B' X
  13.     else
    $ c/ e1 f2 X! C8 c
  14.         echo_failure7 \) @+ Z5 e1 m: F' \9 R
  15.     fi
    - C9 w/ G; L; d  U) q% c) H, N
  16.     else$ M; _, d, m1 [- @0 ?
  17.         echo_failure
    ; R+ U; q( `% p! L% T: Y4 z+ g
  18.     fi
    $ y: @% B* A; E2 O( e, z- ^
  19.     echo
    & [: c7 @' [6 U! F8 a
  20.     return $RETVAL
複製代碼
3. 設定fail2ban開機順序
/ l# n( ^1 I9 H' l! y4 l
! d( X2 m, h4 j! rchkconfig --add fail2ban5 S( Y: U" b4 u. V3 k+ }

/ p- e7 y$ ]4 v. a  L1 X

% W2 ?  O7 \2 o& F4 Hp.s
4 y3 g8 |: w, o( K以上參考 :
6 l5 M$ h4 I  s4 q2 E3 W3 K: b, D- R1 Rhttp://blog.pulipuli.info/2011/07/centosfail2ban.html  . z/ M6 D8 f# j5 K
http://www.vixual.net/blog/archives/252
. H. f, R- L  @+ O+ H7 [) ]




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