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

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

作者: IT_man    時間: 2016-4-9 12:53
標題: 防火牆強化套件fail2ban之安裝與設定
本帖最後由 IT_man 於 2016-4-9 22:36 編輯 : z  O9 [* N" _) w6 C

, p. ]  O! E! G# |我的環境:
1 U" H" S) d/ e. pCentOS 6.7    這是RedHat系列的發行版本,與Fedora同系。(發行版本的資料會記錄在 /etc/redhat-release)
7 L2 c3 u& a+ C* Q1.用yum安裝fail2ban. Y  x% u; N" {! L. v& ~8 {0 o* ~/ V1 R
yum -y install fail2ban   (yum安裝的歷程會記錄在 /var/log/yum 中。如有需要確認已安裝的套件,可以回頭查詢這個記錄檔。)  s( t: S( b5 l$ v/ n; G

' q" H: e: f; K* C如果上述步驟不能安裝fail2ban,那麼yum會顯示找不到該套件的時候,你需要進入這個步驟。
7 D, V8 N' U0 z/ j) h3 D& {- P* w- H
yum會掃描套件庫來決定要如何安裝套件。然而由於fail2ban並不在預設的套件庫中,所以我們必須手動加入含有fail2ban的套件庫atrpms。& {) a! |: x. ?! i

# [4 N  r$ A' \: X! j7 P請編輯 /etc/yum.repos.d/CentOS-Base.repo :
- ?6 C; J( g1 N7 ]9 w
7 M: J1 p- t! ~: J& Wvi /etc/yum.repos.d/CentOS-Base.repo) J/ t+ n1 R+ n, U; _  t
在最後加入以下設定:
1 J6 `# _) {* k% v" {0 v
& q: B$ E1 s+ }0 ]- ?7 t[atrpms]
6 d1 Q& Y( T9 e* bname=Red Hat Enterprise Linux $releasever - $basearch - ATrpms
2 g2 y4 `9 y# _8 Y, A$ W, jbaseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable* |$ p5 }/ w* ]6 i% p6 W* Y" B
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
0 Q9 s# W" }% q$ kgpgcheck=1
  o+ G& E: p) {' B$ L0 Zenabled=1
% l- d  w. q- U1 C- N
$ J: U8 a' S: S6 m0 |. @2. 設定fail2ban! Y$ E0 ?7 S6 G
主要有兩個設定檔:/etc/fail2ban/fail2ban.conf 跟 /etc/fail2ban/jail.conf" S0 U+ i4 P& ]( r1 c# ]
vi /etc/fail2ban/fail2ban.conf: i6 M6 |2 e3 o8 @2 `* X
修改 logtarget 的參數:
" a) [# d- v$ X# p, Q1 O
  1. #預設的參數( L0 }+ E4 y: N. v
  2. #logtarget = SYSLOG
    ) N+ g/ i2 S6 {0 I2 F. e- v8 R! M
  3. #調整後的參數
    2 z9 n8 {3 ]- L9 a7 P
  4. logtarget = /var/log/fail2ban.log
複製代碼
vi /etc/fail2ban/jail.conf (fail2ban主要的設定檔)4 N, l% j+ K7 n
  1. #預設的參數& [* j5 x! M, i5 Z
  2. #backend = auto 6 j. F! g/ A, r; q9 Q
  3. #調整後的參數' u1 M, z4 y; D  w& g6 {0 ~% B
  4. backend = gamin
複製代碼
gamin是Linux的套件之一。如果缺少你可以用yum來安裝它4 `8 H& t6 W: y7 V0 \* d+ a) E  A
  1. [ssh-iptables]1 u2 ^) M; P0 f
  2. #是否啟用
    & H  d! [7 x4 F
  3. enabled  = true% h% ~6 [/ K! l( a5 ~- I, z! q
  4. #過濾名稱,使用預設的即可
    + U' x2 z/ F9 }- p% q1 j
  5. filter   = sshd
    0 {3 F* d6 }9 A) T( p
  6. #iptables設定
    ; e- f& D, w& B6 s5 \9 u7 Y
  7. action   = iptables[name=SSH, port=22022, protocol=tcp]. s& _% G% f* ?' B( k3 w0 d
  8.            #發生阻擋時的寄信設定5 d" S8 g  [  {& K" U
  9.            sendmail-whois[name=SSH, dest=xxxx@gmail.com, sender=root@xxxx.com]# X/ [1 |, @0 h! E: P

  10. % P/ w# R2 k$ G" y' L  {. H* E
  11. #需要掃描的記錄檔2 B$ \$ k+ s5 i  m, o
  12. logpath  = /var/log/secure
    $ j3 ~! t0 B1 e( X' G* i! Q* f, ~
  13. #最高嘗試錯誤次數5 [: E: x6 r8 H' s5 w: x) `' E
  14. maxretry = 2+ o: c+ L5 R! k5 @( S; `; J
  15. #阻擋的時間,-1表示永久阻擋
    ' Y( W+ y: g9 T& A) a& f
  16. bantime  = -1
複製代碼
讓fail2ban重新啟動時不會重設阻擋IP規則0 W3 n6 u6 F" f2 Z
在預設的設定中,fail2ban每次重新啟動時都會遺忘被阻擋的IP設定。舉例來說,如果我的電腦因為登入失敗被fail2ban擋掉,那麼只要fail2ban重新啟動,那麼我的電腦又可以繼續嘗試登入server。
' X. r6 K2 v4 Y6 f% A如果要讓fail2ban重新啟動時,不會重設阻擋的IP規則,則修改 /etc/init.d/fail2ban 的內容。5 P" c, l* S7 l; y9 H
vi /etc/init.d/fail2ban
3 n' l, w$ k( L( e找到start()的區塊,加入以下有#註解的設定:6 X7 v) ^/ R3 S1 s6 ~# H( ?
  1. start() {! r! C. H6 q& J& Q# J- A
  2.     echo -n [        DISCUZ_CODE_3        ]quot;Starting fail2ban: "
    / Q% G  @" q& D
  3.     getpid+ F/ B! v8 N* v2 N& Z+ D' p
  4.     if [ -z "$pid" ]; then
    8 b" X9 P" k( Z
  5.         rm -rf /var/run/fail2ban/fail2ban.sock # unclean in case of restart fal2ban3 c$ f$ B9 f: X7 l. @
  6.         $FAIL2BAN -x start > /dev/null
    7 d. t; j# d! ^2 \  A
  7.         RETVAL=$?
    ( \( R; `$ E, [
  8.     fi
    5 _+ M. \. [7 f9 V8 ^
  9.     if [ $RETVAL -eq 0 ]; then6 J/ x' j4 \5 O- g* `9 t- G3 \6 Z
  10.         touch /var/lock/subsys/fail2ban# n$ T- c8 S' v/ a% }' G; t% c7 T. [
  11.         echo_success
    4 Q# ^3 R5 T/ F9 b. W( W4 c5 X3 Z
  12.         /sbin/service iptables restart # reloads previously banned ip's
    " K2 F" W; \4 x+ E" N9 l3 o/ v7 q2 Y0 u
  13.     else2 e: b! N' `8 X* O( D2 j+ e! v
  14.         echo_failure' ~# m% L) ~1 ^! g! x
  15.     fi
    * K1 x, j( q4 @

  16. ! e: Y! ]" ?* ~. u
  17.     echo5 ~- _! N- N# x8 n5 o  ~. @
  18.     return $RETVAL
    9 n5 g0 E2 q' K. s8 o3 d* t$ |
  19. }
複製代碼
再找到stop()區塊,加入以下
有#註解的設定:
  V* @, _7 M# f+ C, {1 t
  1. stop() {, }+ x2 Y; O; X) g: j6 W
  2.     echo -n [        DISCUZ_CODE_4        ]quot;Stopping fail2ban: "0 X  S! T& M& |  \' N0 n
  3.     getpid$ F) N/ j* Z' w5 c% r# P* F% t3 P+ ~
  4.     RETVAL=$?0 Z! p2 m4 c9 j
  5.     if [ -n "$pid" ]; then5 U  R) m3 E( y: t
  6.        /sbin/service iptables save # saves banned ip's% ~5 T0 @" M- w
  7.         $FAIL2BAN stop > /dev/null( A/ T* n  ~( @1 Z
  8.     sleep 1
    * d& n; w% \5 o/ U" P+ p
  9.     getpid8 b* C1 L, F5 M
  10.     if [ -z "$pid" ]; then
    $ {' q9 u8 w2 K& S
  11.         rm -f /var/lock/subsys/fail2ban" X3 s8 C0 o9 O
  12.         echo_success
    7 R( I: E8 m: J: F* h+ m
  13.     else. P* x( |% ]$ P- f  f; H: N# M
  14.         echo_failure
    7 B. {9 a; P# {1 T
  15.     fi! V: k4 w2 v7 z6 L; u: P5 h3 G
  16.     else
    9 E: q1 U. c1 S- g0 i
  17.         echo_failure/ C" p; L, Q: N& [6 I) r
  18.     fi  L) |$ h# B, k, a
  19.     echo' r+ E. X3 q0 `7 v+ W8 f6 n
  20.     return $RETVAL
複製代碼
3. 設定fail2ban開機順序, c2 d3 a% s% z5 F* J& J( t6 Z8 N
3 L4 l2 k, U0 h9 ]8 r
chkconfig --add fail2ban
0 C, G1 d* G0 G
; H  E9 r3 b5 t
& j* |! Z# L. S4 p  c' E
p.s
8 }2 w: L3 P# G以上參考 :& u8 P. ~  W8 p' M$ g, _# p" o
http://blog.pulipuli.info/2011/07/centosfail2ban.html  
. ]+ D- b* k5 X+ \" L4 F( e. ehttp://www.vixual.net/blog/archives/252
7 x2 l* L. |$ D1 m




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