52AV手機A片王|52AV.ONE
標題:
防火牆強化套件fail2ban之安裝與設定
[打印本頁]
作者:
IT_man
時間:
2016-4-9 12:53
標題:
防火牆強化套件fail2ban之安裝與設定
本帖最後由 IT_man 於 2016-4-9 22:36 編輯
8 |$ Q( m) s4 b- K! u9 u2 @+ B( L
/ Z7 v0 i4 L! s, U! x* l
我的環境:
9 y" e/ a* _: Z) x) N, q q) s
CentOS 6.7 這是RedHat系列的發行版本,與Fedora同系。(發行版本的資料會記錄在 /etc/redhat-release)
" o; X* L0 G! v. u4 W+ e
1.用yum安裝fail2ban
) \' o K' Z8 ~9 U0 G1 v
yum -y install fail2ban (yum安裝的歷程會記錄在 /var/log/yum 中。如有需要確認已安裝的套件,可以回頭查詢這個記錄檔。)
# V9 f3 y2 [7 o
, C8 t: ]5 T8 {8 E4 m
如果上述步驟不能安裝fail2ban,那麼yum會顯示找不到該套件的時候,你需要進入這個步驟。
; |, b: {1 b6 B, D" J* Y, k4 m
) z: S' A& i1 }6 ]
yum會掃描套件庫來決定要如何安裝套件。然而由於fail2ban並不在預設的套件庫中,所以我們必須手動加入含有fail2ban的套件庫atrpms。
- a V& U0 S! @5 m; c" V9 P, U
% I. b2 s$ }8 A& h1 J
請編輯 /etc/yum.repos.d/CentOS-Base.repo :
7 _; u1 \5 Z6 U2 X: M* w
* Y4 x8 N, |8 `3 u, B' _0 t
vi /etc/yum.repos.d/CentOS-Base.repo
1 x" v6 M; x% P. r7 |' ^5 v1 n
在最後加入以下設定:
* V+ X$ }. e' C& w; O( A7 `
3 o* s2 ^3 T, O
[atrpms]
- D. z0 {3 y% M( D# q: Z' d4 }
name=Red Hat Enterprise Linux $releasever - $basearch - ATrpms
& K" b& a9 p; O) X5 `
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
; R2 S6 G! B3 f: o7 m8 V2 d
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
, N- B2 w! O" s x
gpgcheck=1
% M+ m- O: i( t ]8 X; d
enabled=1
! Y& I0 R( }/ R! e! ~, ~1 u( {. z1 M* I
7 A' g# `8 K! t1 \) O1 S! O7 D! V& R+ ~
2. 設定fail2ban
7 k' M# c- w: Q; l9 ?+ k# N0 C
主要有兩個設定檔:/etc/fail2ban/fail2ban.conf 跟
/etc/fail2ban/
jail.conf
4 d# u; r3 Q8 c$ ^
vi
/etc/fail2ban/fail2ban.conf
# P0 P) x9 p5 ?- y+ V0 p
修改 logtarget 的參數:
' o- y9 W$ ]: V% X z# h
#預設的參數
6 p+ p3 r1 X& n
#logtarget = SYSLOG
% J1 i3 k' ~$ `% x( J
#調整後的參數
0 j0 s: M$ e: Q4 t9 u3 q
logtarget = /var/log/fail2ban.log
複製代碼
vi
/etc/fail2ban/jail.conf (fail2ban主要的設定檔)
7 ]3 [9 f# u( Y5 l9 g
#預設的參數
5 n# q* L8 X4 |) o; Z* z
#backend = auto
( e) `0 Q! y3 d6 b V
#調整後的參數
7 q5 p' X3 z8 M; j" z2 ] ~
backend = gamin
複製代碼
gamin是Linux的套件之一。如果缺少你可以用yum來安裝它
& J7 Z, s% d! [: p6 R" y d3 d) s
[ssh-iptables]
& f4 ~/ }1 c# f
#是否啟用
" W* {& C& m6 ~. Z9 y
enabled = true
) F9 F, _$ ^, M$ u3 F3 R$ F
#過濾名稱,使用預設的即可
# o) q! a5 V0 |% }5 X6 m) h
filter = sshd
/ M; T# ?% }1 Z* H( g" N) x$ \( e
#iptables設定
6 F3 T% m# \" ?0 @4 V& `2 J
action = iptables[name=SSH, port=22022, protocol=tcp]
0 F2 `9 \( g3 ^1 \
#發生阻擋時的寄信設定
% _' O& r0 O1 G7 L; o2 u
sendmail-whois[name=SSH,
[email protected]
,
[email protected]
]
/ {! Z3 C3 w% ?& e: K) Q2 ?" ^: q2 v
1 {1 E8 t+ @, H( ^1 T6 M8 g
#需要掃描的記錄檔
) U% m/ B0 l# D, i O% m
logpath = /var/log/secure
2 D; t" r3 _5 Q3 _. Y
#最高嘗試錯誤次數
! u. W$ t# R3 k! ^
maxretry = 2
' U, E4 p$ H+ i- ?1 m
#阻擋的時間,-1表示永久阻擋
/ Q7 Q# c! t- R, `; s
bantime = -1
複製代碼
讓fail2ban重新啟動時不會重設阻擋IP規則
; ?. {# z" R" p. r- @1 {( f- h
在預設的設定中,fail2ban每次重新啟動時都會遺忘被阻擋的IP設定。舉例來說,如果我的電腦因為登入失敗被fail2ban擋掉,那麼只要fail2ban重新啟動,那麼我的電腦又可以繼續嘗試登入server。
' K7 p+ |0 V# V+ i- i
如果要讓fail2ban重新啟動時,不會重設阻擋的IP規則,則修改 /etc/init.d/fail2ban 的內容。
d x4 i7 ?! n# H
vi /etc/init.d/fail2ban
5 w1 P5 I. b/ h4 ?; C$ q! M
找到start()的區塊,加入以下有#註解的設定:
; @5 P- t2 s4 r/ N, T+ D" S/ y
start() {
& n1 i' {; p! E) V& p, \
echo -n [ DISCUZ_CODE_3 ]quot;Starting fail2ban: "
) `4 J, \% i T9 \3 N8 q
getpid
- G$ x( X+ S' S* @& s
if [ -z "$pid" ]; then
5 O5 f4 `- _ t5 O
rm -rf /var/run/fail2ban/fail2ban.sock # unclean in case of restart fal2ban
+ y0 f9 u8 R6 p9 C; G
$FAIL2BAN -x start > /dev/null
9 H' ] c; a5 O6 v# S5 E4 m# `
RETVAL=$?
. w8 L; D; N" n
fi
+ O/ N7 d4 t2 A5 @5 w
if [ $RETVAL -eq 0 ]; then
: U; v) M4 k1 h; _
touch /var/lock/subsys/fail2ban
1 M& g3 A5 H: m
echo_success
) z7 ^; R6 n. K' N* V% d* }% h
/sbin/service iptables restart # reloads previously banned ip's
1 u' f" a4 \* D6 R2 ?
else
" g6 [6 q+ v4 O
echo_failure
) b. _ \$ u7 s; b/ ~$ Y
fi
: H. F7 s/ U) A& R
0 l# {% Q8 A$ D& n
echo
# u T$ E! v B8 r6 }, P
return $RETVAL
9 ?* r. ?2 F( T9 r* o3 R
}
複製代碼
再找到stop()區塊,加入以下
有#註解
的設定:
* c& s; H6 R0 N6 d* m- _3 z; Z
stop() {
# ^7 Z0 R" ^7 _+ |
echo -n [ DISCUZ_CODE_4 ]quot;Stopping fail2ban: "
( Q# H5 c) J7 E+ E! w% A! m
getpid
* g0 R) o; e! ~- X. b/ w+ _
RETVAL=$?
" X6 C% m' s% o
if [ -n "$pid" ]; then
2 T- p+ W/ p' [
/sbin/service iptables save # saves banned ip's
) @" g+ F9 m' f( N) q) C3 _1 O! I
$FAIL2BAN stop > /dev/null
) Q2 `/ D% V6 Y L: ?; t- [6 I
sleep 1
1 N1 C/ K! N* \1 F
getpid
5 N1 M8 M" L* I5 Z; }6 m
if [ -z "$pid" ]; then
4 N% t& K4 P. E8 B
rm -f /var/lock/subsys/fail2ban
* w. j* l% U% U* o' p5 p0 ?
echo_success
! @+ m& B8 F$ o8 k8 D
else
0 Q% `/ ` } f8 E3 |( J! x
echo_failure
/ O- ~- [6 |/ a1 r" v h
fi
/ @1 A2 O* `1 F
else
/ S; ?" X) l) F7 D, b$ i. v
echo_failure
3 M, D+ Q2 c! q
fi
( W4 d5 Y1 n: n6 B& Q
echo
: }4 N/ n; X0 t0 C3 y
return $RETVAL
複製代碼
3. 設定fail2ban開機順序
. X3 U; }3 v" D- r
0 H' O9 O4 L0 j, {
chkconfig --add fail2ban
' i8 e( a- [& e* G: M) j6 l7 \. H
: |( x9 d& o2 u
, H9 p" t$ T" S2 M4 z2 N7 O
p.s
2 ]$ V: C. M9 S# o6 i$ o
以上參考 :
7 G+ f5 y( U W w1 D: q' s
http://blog.pulipuli.info/2011/07/centosfail2ban.html
( O2 ]- Q& s1 ?/ ]3 {0 i
http://www.vixual.net/blog/archives/252
! ~% T/ j6 S( `! N
歡迎光臨 52AV手機A片王|52AV.ONE (https://www.itech.casa/)
Powered by Discuz! X3.2