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

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

作者: IT_man    時間: 2016-4-9 12:53
標題: 防火牆強化套件fail2ban之安裝與設定
本帖最後由 IT_man 於 2016-4-9 22:36 編輯
. T6 V' \8 o) K$ m6 g8 |2 n( x
0 Z! o" Z0 @1 A" K8 h7 C$ N! v我的環境:3 L! V& C& Z+ G8 A$ `+ m
CentOS 6.7    這是RedHat系列的發行版本,與Fedora同系。(發行版本的資料會記錄在 /etc/redhat-release): \( ^& u8 F" a8 J. Q6 P
1.用yum安裝fail2ban
  |4 e8 f/ Z9 |8 g% K' V9 r( Dyum -y install fail2ban   (yum安裝的歷程會記錄在 /var/log/yum 中。如有需要確認已安裝的套件,可以回頭查詢這個記錄檔。)
7 f$ Q1 }) S& r; c4 S2 ]2 Y$ |; d$ c* C5 j3 S
如果上述步驟不能安裝fail2ban,那麼yum會顯示找不到該套件的時候,你需要進入這個步驟。, O8 Y4 F( X8 O

+ e, f9 i% ]% d) a0 l/ A: Jyum會掃描套件庫來決定要如何安裝套件。然而由於fail2ban並不在預設的套件庫中,所以我們必須手動加入含有fail2ban的套件庫atrpms。8 |6 c5 \6 P0 F7 s. w8 y
1 S) x  c8 R1 L! H6 Z- N
請編輯 /etc/yum.repos.d/CentOS-Base.repo :" y( @: N/ L  N) A
( T0 [6 z; e( y5 ?: S9 w! e6 }
vi /etc/yum.repos.d/CentOS-Base.repo  F1 x8 z  f" M$ y. P0 _
在最後加入以下設定:
5 v# W" x8 X7 d+ c1 c# R1 B( n; v& p% `) f0 G6 e
[atrpms]/ L7 o' j) x; ~( u5 e* c
name=Red Hat Enterprise Linux $releasever - $basearch - ATrpms( V9 U8 @7 a0 D# G, q6 U
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable0 j; F  l; o; ]* Q
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms8 P! s  R8 u+ h1 x% k
gpgcheck=13 C3 [' W; W: {3 `! x# q; b( h0 u
enabled=1
0 k0 K3 v- x' R7 S! o" m; I9 _* I/ a, J; Y% p
2. 設定fail2ban  v- k8 C& v& |  o" Y3 U# s2 c
主要有兩個設定檔:/etc/fail2ban/fail2ban.conf 跟 /etc/fail2ban/jail.conf4 c2 s6 Z# i7 ?; q6 y7 Q0 r
vi /etc/fail2ban/fail2ban.conf" m# t0 W2 c, @' M) `& Z
修改 logtarget 的參數:2 ~, w% `7 q4 p3 p. L
  1. #預設的參數+ W8 g* [) G  A. ^% I2 y# ]
  2. #logtarget = SYSLOG
    1 }9 ^5 \  K7 L) V; G
  3. #調整後的參數
    9 \5 h2 e& Z& u0 I, N+ w
  4. logtarget = /var/log/fail2ban.log
複製代碼
vi /etc/fail2ban/jail.conf (fail2ban主要的設定檔)$ U2 Y. q2 D- \% U8 \# V
  1. #預設的參數3 z; R  p8 @: |1 ?
  2. #backend = auto
    4 n. b3 a8 w8 G0 b1 B9 a& G- f( N
  3. #調整後的參數" {8 U$ {& Z& Z; U9 D1 {- x; O9 I* ]
  4. backend = gamin
複製代碼
gamin是Linux的套件之一。如果缺少你可以用yum來安裝它- }6 u! @5 V( J; o
  1. [ssh-iptables]
    & Y, m1 X* C% p( l9 \
  2. #是否啟用0 q# O) ^2 d7 ^  l' T
  3. enabled  = true
    3 T* _, {; u. g. L/ L
  4. #過濾名稱,使用預設的即可0 V; D( a1 `# ]5 p2 }( f
  5. filter   = sshd& I' X$ k( K- [2 {9 v, Z. A
  6. #iptables設定; H# E9 a  i  \. x: i' j
  7. action   = iptables[name=SSH, port=22022, protocol=tcp]$ }; c- ?8 Z5 f6 m" Q, b
  8.            #發生阻擋時的寄信設定
    0 I+ d$ L2 c1 j& [/ j- ^, H( b
  9.            sendmail-whois[name=SSH, dest=xxxx@gmail.com, sender=root@xxxx.com]
    8 J; \; x) Q' U/ R& Y

  10. - c" g9 A# ~0 O$ h' m
  11. #需要掃描的記錄檔  f/ [) l) I% C3 t  z
  12. logpath  = /var/log/secure) v# b* B- S3 B
  13. #最高嘗試錯誤次數" u' J7 o$ M2 I5 B, [4 r6 P; w% d
  14. maxretry = 2
    7 f4 p+ d0 f6 x
  15. #阻擋的時間,-1表示永久阻擋
    ; [9 n: k( m- H/ Q
  16. bantime  = -1
複製代碼
讓fail2ban重新啟動時不會重設阻擋IP規則
" a) n4 I. e$ O9 a在預設的設定中,fail2ban每次重新啟動時都會遺忘被阻擋的IP設定。舉例來說,如果我的電腦因為登入失敗被fail2ban擋掉,那麼只要fail2ban重新啟動,那麼我的電腦又可以繼續嘗試登入server。: H( c7 h) K& Y7 I7 }
如果要讓fail2ban重新啟動時,不會重設阻擋的IP規則,則修改 /etc/init.d/fail2ban 的內容。
6 @, r3 V& I- L# b% M: w- N2 ? vi /etc/init.d/fail2ban# B+ P* d" h5 v4 T+ ^
找到start()的區塊,加入以下有#註解的設定:
6 W" i+ [7 W3 [2 p# |
  1. start() {
    # B. v0 G. c: ~
  2.     echo -n [        DISCUZ_CODE_3        ]quot;Starting fail2ban: "& P  C  ], Q" m7 l2 N2 d1 Y0 Z- ~" Y
  3.     getpid, {3 D* Z1 c+ H* v% N/ ]) q& H; Y& q/ h
  4.     if [ -z "$pid" ]; then7 A* ^& [: a3 g  \, J3 E6 |
  5.         rm -rf /var/run/fail2ban/fail2ban.sock # unclean in case of restart fal2ban6 _' v- H" P( A* B: O; C
  6.         $FAIL2BAN -x start > /dev/null- T, }3 W* l# i# Y' ]
  7.         RETVAL=$?
    3 C- S; l8 c6 B: o" S$ c+ n# ]. R0 {
  8.     fi
    " E+ L  ?% P, K9 r
  9.     if [ $RETVAL -eq 0 ]; then! B' h* ?8 l2 m7 F/ w3 ]6 y9 Z
  10.         touch /var/lock/subsys/fail2ban
    - S9 T& r- n+ ~% r/ h
  11.         echo_success
    2 y. y. x. k: ]: V  \
  12.         /sbin/service iptables restart # reloads previously banned ip's
    ! b/ ]7 y  H% B" f
  13.     else
    . v: W9 p) ?% s; W
  14.         echo_failure# m1 U+ m& \; x: s2 {3 L" p; D
  15.     fi3 ]0 {* u9 g, D3 `

  16. 7 r3 }9 Q* Y/ Z
  17.     echo
    6 E8 \: V9 d' g5 y
  18.     return $RETVAL5 ?5 `$ o2 q) w# m' g
  19. }
複製代碼
再找到stop()區塊,加入以下
有#註解的設定:
- z' ?: S- k% z6 [6 _
  1. stop() {
    6 _& E, l/ T7 T' E3 L; K
  2.     echo -n [        DISCUZ_CODE_4        ]quot;Stopping fail2ban: "
    7 _# f$ K2 ^5 S3 s. S
  3.     getpid% b$ x+ S) c1 I+ }8 U
  4.     RETVAL=$?
    * {" h8 s- n  w$ h% y) {5 e
  5.     if [ -n "$pid" ]; then
    % D( ]3 ]) z  A9 b
  6.        /sbin/service iptables save # saves banned ip's8 \2 ~& `3 u8 C
  7.         $FAIL2BAN stop > /dev/null- G! G0 p4 Y) Q5 t
  8.     sleep 1
    4 _7 J* A5 V  i" ]& o( O
  9.     getpid
    3 B0 `4 ]+ P: \% n
  10.     if [ -z "$pid" ]; then
      j; _, o7 |# V; w
  11.         rm -f /var/lock/subsys/fail2ban6 |/ w# g$ T/ z  V: Q, e+ E, K
  12.         echo_success
    ( E2 ?7 C3 y9 `+ G) B8 t
  13.     else
    & K2 E8 t: W7 [7 i1 r  O2 O( b
  14.         echo_failure) H+ c+ q1 I  W! L# y: H' H* N# t
  15.     fi
    ! w3 n$ x3 U/ X0 E7 c3 C( c
  16.     else
    . T& @8 Z/ T: i: W
  17.         echo_failure
    8 t$ V- H( U; X9 ]$ J( I/ j+ _
  18.     fi
    3 s) s. T# r) @2 ^( R: N: q, Q; A2 p
  19.     echo
    ) t5 [% `( T8 d# c# e  O" n0 a
  20.     return $RETVAL
複製代碼
3. 設定fail2ban開機順序
5 ?* G: u( _- q' q! J+ p& i
% F! s% G% t( ?: Zchkconfig --add fail2ban
6 I! \( U, s4 l, X  C
# q" L$ u( z6 l+ I1 X

1 W5 _+ d% l. i  [$ E7 {p.s
3 u2 m* l6 ~$ e- O/ F' [% f( Y以上參考 :8 X) n2 a* r8 v4 W* G
http://blog.pulipuli.info/2011/07/centosfail2ban.html  
/ e0 i% `5 f- x1 ?) Rhttp://www.vixual.net/blog/archives/252
; y, I! t: s: e6 \




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