52AV手機A片王|52AV.ONE
標題:
防火牆強化套件fail2ban之安裝與設定
[打印本頁]
作者:
IT_man
時間:
2016-4-9 12:53
標題:
防火牆強化套件fail2ban之安裝與設定
本帖最後由 IT_man 於 2016-4-9 22:36 編輯
" D( t0 g6 R, p; O/ f
0 @; b/ v3 x" T2 w
我的環境:
/ w6 \. e3 y) g1 g; x
CentOS 6.7 這是RedHat系列的發行版本,與Fedora同系。(發行版本的資料會記錄在 /etc/redhat-release)
, j/ V. }( ?. q0 P: K5 @7 ]
1.用yum安裝fail2ban
l0 k8 H5 G. n$ Q- `; u
yum -y install fail2ban (yum安裝的歷程會記錄在 /var/log/yum 中。如有需要確認已安裝的套件,可以回頭查詢這個記錄檔。)
) Z; A$ Z+ a8 z# H J
" X; I/ T/ y+ R5 H
如果上述步驟不能安裝fail2ban,那麼yum會顯示找不到該套件的時候,你需要進入這個步驟。
. X( J5 ?/ [7 t* [5 i
3 I( j4 {! V' x4 k) n
yum會掃描套件庫來決定要如何安裝套件。然而由於fail2ban並不在預設的套件庫中,所以我們必須手動加入含有fail2ban的套件庫atrpms。
; b, k' ]1 D" O, _3 F
" k% o( _' ]8 C
請編輯 /etc/yum.repos.d/CentOS-Base.repo :
) |; O. J' S# T+ y; V
+ ^+ `/ y T# D' M' Q) [$ _
vi /etc/yum.repos.d/CentOS-Base.repo
' y# ~& z3 \& T' k( P
在最後加入以下設定:
$ d7 d6 f6 c! N4 O7 t
5 A. B1 H+ [' V
[atrpms]
- b9 D$ u7 c# d" s, U
name=Red Hat Enterprise Linux $releasever - $basearch - ATrpms
4 T- [' u# V# T: W+ V( e# d3 Q( y! J( ?
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
6 ]6 d+ x; N6 i4 ?; `
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
2 f1 I% m+ [7 Q; z
gpgcheck=1
: I8 L6 K, \: o6 |, x9 |" p' x* |# j
enabled=1
6 v" u: Y" o: K0 D0 R8 u9 {
T* S. g/ t. ?' v6 Y$ k7 B6 p
2. 設定fail2ban
6 B/ {7 a' h5 ?7 U6 {3 n$ n, [
主要有兩個設定檔:/etc/fail2ban/fail2ban.conf 跟
/etc/fail2ban/
jail.conf
" V: s S" e/ I! p
vi
/etc/fail2ban/fail2ban.conf
% F( U6 U" a7 H9 t' i
修改 logtarget 的參數:
# C- T7 Z' s, A; r
#預設的參數
, J' ~/ B7 j+ J, u1 Y
#logtarget = SYSLOG
: ^ |* ?: ]$ h' Z
#調整後的參數
! i$ \. x( x, Z
logtarget = /var/log/fail2ban.log
複製代碼
vi
/etc/fail2ban/jail.conf (fail2ban主要的設定檔)
/ H9 H0 I; x4 p! t2 M+ g
#預設的參數
- Q( r6 X- g# b3 N8 u
#backend = auto
; g! x) ]3 W5 ~5 X3 E
#調整後的參數
2 ?: d! c. d, T5 I8 A9 H
backend = gamin
複製代碼
gamin是Linux的套件之一。如果缺少你可以用yum來安裝它
! m( ]9 i$ X- q' Z# `" v$ _% r" e
[ssh-iptables]
& K% ?1 |% ?$ A& V$ p0 r
#是否啟用
4 N4 x' a) |$ X. r' V& z) |
enabled = true
5 }! n: X0 Y; Z# |
#過濾名稱,使用預設的即可
+ Y" J5 X2 z" y, }/ k2 E' A
filter = sshd
/ m8 w, t( Y8 C# r T
#iptables設定
2 \2 [$ n) K) s) E. d
action = iptables[name=SSH, port=22022, protocol=tcp]
7 x& Q+ v" S3 z% L; ~& R
#發生阻擋時的寄信設定
6 F9 Y' J' g; |
sendmail-whois[name=SSH,
[email protected]
,
[email protected]
]
# v# o4 D/ g \1 s
# w/ z7 G' J# C& C( B
#需要掃描的記錄檔
" m0 l0 R# K$ L0 U
logpath = /var/log/secure
" ~ l2 l1 M0 q4 Q2 h
#最高嘗試錯誤次數
, u1 o, x, {. D+ m3 F; C
maxretry = 2
- Q5 C/ \! _, `' k+ A4 ?
#阻擋的時間,-1表示永久阻擋
: g- n0 E! ?7 i* f
bantime = -1
複製代碼
讓fail2ban重新啟動時不會重設阻擋IP規則
5 r& R% B6 j( Z/ U [# }) D2 T/ V
在預設的設定中,fail2ban每次重新啟動時都會遺忘被阻擋的IP設定。舉例來說,如果我的電腦因為登入失敗被fail2ban擋掉,那麼只要fail2ban重新啟動,那麼我的電腦又可以繼續嘗試登入server。
* d3 Y/ ~5 ]( ]( C* a3 X* H9 V
如果要讓fail2ban重新啟動時,不會重設阻擋的IP規則,則修改 /etc/init.d/fail2ban 的內容。
2 Z" r1 A1 f8 K) C1 m% M7 h' o
vi /etc/init.d/fail2ban
: G5 w1 c0 n9 l
找到start()的區塊,加入以下有#註解的設定:
# v8 v6 _2 @6 f+ j
start() {
& R4 |9 l' g9 C" S% w2 m
echo -n [ DISCUZ_CODE_3 ]quot;Starting fail2ban: "
, B* J1 \+ Y1 u* n4 r, O* J' Y; ~
getpid
; ~1 a; t" E. T+ W7 T, h4 J* W+ R& f$ ?
if [ -z "$pid" ]; then
4 ?/ A: |. z" \. x T
rm -rf /var/run/fail2ban/fail2ban.sock # unclean in case of restart fal2ban
% ?" ~! p* _" c3 P z' ]& B1 d4 x
$FAIL2BAN -x start > /dev/null
1 V! l$ c' @6 u5 s; b6 g
RETVAL=$?
$ y6 U; ~7 n% j' P
fi
# e1 x& w5 y2 g9 _ z
if [ $RETVAL -eq 0 ]; then
6 ^* \7 F% `% H
touch /var/lock/subsys/fail2ban
( u. {4 H! ~8 `, t# F
echo_success
8 ]& | }4 [9 ]
/sbin/service iptables restart # reloads previously banned ip's
# S1 N0 c3 O; J7 C# C
else
/ f3 ^, M/ f9 e
echo_failure
' S7 e5 K X! ^; T( |2 p
fi
! s7 \. u* m) L: b2 ~4 }
0 s6 u8 u% p1 c7 r8 Y2 C% B: ^
echo
+ J+ C% ]" |, @8 h3 W+ `
return $RETVAL
, W* k l4 u+ y- G
}
複製代碼
再找到stop()區塊,加入以下
有#註解
的設定:
& `: i1 X0 n: s. q7 U7 w$ s) b
stop() {
# q* e- N2 j7 K( k$ w$ Y
echo -n [ DISCUZ_CODE_4 ]quot;Stopping fail2ban: "
3 o: g2 E$ m* L6 X- Q8 [4 j
getpid
, t7 p& a& V6 n- U+ Z9 A; R6 K
RETVAL=$?
! [* C+ E$ M0 r' d' w6 p
if [ -n "$pid" ]; then
* u" e( Y. u; b: g9 H0 u
/sbin/service iptables save # saves banned ip's
' @& y. `3 k2 r
$FAIL2BAN stop > /dev/null
# d- s8 J& q3 C) `, O
sleep 1
, F# d, Z* T) H# b5 b8 g! j
getpid
% Z5 D6 D8 i6 J1 B1 K9 D4 V
if [ -z "$pid" ]; then
( M! h6 I" W& v9 |- h3 {+ t
rm -f /var/lock/subsys/fail2ban
) D( \1 P5 ]' J% J
echo_success
% j+ u C1 I8 D$ d( s- O
else
! }6 ~) p8 e M* Y. p
echo_failure
7 B6 j3 F2 p& m
fi
9 B2 K3 k* M# L9 L$ }. N+ N
else
/ H( @- v) g1 a2 N! k; F5 l4 f
echo_failure
8 a6 y4 m) A4 X% M/ O" P
fi
5 Y, W2 T# }- B" ]1 F: I0 t4 y
echo
3 Q) R/ G6 \7 }8 J( d9 }
return $RETVAL
複製代碼
3. 設定fail2ban開機順序
9 O+ u0 j9 e8 U6 W1 n; m, I. h
" t8 X- X+ k5 p5 E6 G b
chkconfig --add fail2ban
% \2 {% I, i a& l+ j( x/ [# W2 ?
+ G1 t0 S! n$ i& F
5 G1 G& i" z( o9 A! n- |# I
p.s
3 A7 V U+ z: C y
以上參考 :
- c* c! R1 P7 `" m" C7 ]' J0 }
http://blog.pulipuli.info/2011/07/centosfail2ban.html
" o8 Z! p3 P, t( c9 ]
http://www.vixual.net/blog/archives/252
0 M0 y) K, m8 ?* p [4 o/ z- H
歡迎光臨 52AV手機A片王|52AV.ONE (https://www.itech.casa/)
Powered by Discuz! X3.2