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 X
1.用yum安裝fail2ban
7 K- _/ B. n/ V: I- B
yum -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) } R
yum會掃描套件庫來決定要如何安裝套件。然而由於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$ Y
vi /etc/yum.repos.d/CentOS-Base.repo
5 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. U
7 b4 q6 Q G) {% [
2. 設定fail2ban
7 t. B0 T; h# o- f, H
主要有兩個設定檔:/etc/fail2ban/fail2ban.conf 跟
/etc/fail2ban/
jail.conf
, g7 `( j9 E5 `2 \( y
vi
/etc/fail2ban/fail2ban.conf
2 T* g3 z+ B+ A1 |1 {; r
修改 logtarget 的參數:
& ?! u; K: b( w& E, a$ d
#預設的參數
3 R) i+ w# p. i u9 O0 @, z7 x( |
#logtarget = SYSLOG
' K' ~7 ~. |' e q& g8 v
#調整後的參數
; m; j5 f; i6 M. S* L( y, v
logtarget = /var/log/fail2ban.log
複製代碼
vi
/etc/fail2ban/jail.conf (fail2ban主要的設定檔)
! U* A; l' f* ]# ?. Z# H, q& \
#預設的參數
, W1 u# O" d" P6 I" ?* F! g0 ]
#backend = auto
) f0 h' Q- B& l
#調整後的參數
& s% d2 m( N0 w& {. a) ~0 S$ p% k
backend = gamin
複製代碼
gamin是Linux的套件之一。如果缺少你可以用yum來安裝它
0 S. P# F5 ? ~3 R/ D3 d
[ssh-iptables]
, B/ ?% w/ @3 V- H8 V
#是否啟用
# Z: t7 G0 Y* S; g) }
enabled = true
- a3 T4 v7 v: O1 A4 o7 V# N
#過濾名稱,使用預設的即可
/ l; s7 t4 M8 m) ]8 Q: E/ i
filter = sshd
5 K/ r3 q. E+ G9 h) [4 |* e
#iptables設定
2 _4 l0 T* V! f/ f7 L! ^
action = iptables[name=SSH, port=22022, protocol=tcp]
M" K5 `0 L: h0 n; D' F7 h* @
#發生阻擋時的寄信設定
6 I9 G2 h+ M+ ~7 @5 |
sendmail-whois[name=SSH, dest=xxxx@gmail.com, sender=root@xxxx.com]
: Y5 w; M9 V$ C, S5 G# c4 V
+ ~) X l' o: z) F
#需要掃描的記錄檔
% I5 U6 I# x5 B1 h1 @$ ^' v
logpath = /var/log/secure
5 f* q X; `: k' |0 |4 ?0 b
#最高嘗試錯誤次數
( k0 W1 M, `! j, q9 {1 n4 X! H) O
maxretry = 2
( L5 w0 D" q5 o" [4 D8 _
#阻擋的時間,-1表示永久阻擋
! Y# O! W( {! l$ T8 A
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
start() {
' n* C1 G! U( v' q
echo -n [ DISCUZ_CODE_3 ]quot;Starting fail2ban: "
1 H. t' P0 v6 H7 E& [; p: H
getpid
$ @, @! w9 p9 ]% D+ I! t
if [ -z "$pid" ]; then
/ C' a+ P9 i- ^3 @ f! `5 `2 y
rm -rf /var/run/fail2ban/fail2ban.sock # unclean in case of restart fal2ban
$ ?$ J3 k+ F9 E% a% l. c0 u
$FAIL2BAN -x start > /dev/null
2 c2 U. ~; J. V! Z N8 p
RETVAL=$?
# k3 m0 T# q& Y' a
fi
) \, k. B5 {7 F( _$ f3 e
if [ $RETVAL -eq 0 ]; then
$ q% s, V! w; y, s: k' O; k4 f
touch /var/lock/subsys/fail2ban
b+ V. ?: a6 Z( ^. z+ o
echo_success
8 P5 l- f/ [6 t! P
/sbin/service iptables restart # reloads previously banned ip's
+ p2 }6 V. B r7 P* S+ i4 J
else
& q1 M* B) X X: e/ D
echo_failure
8 ~4 |( b! I$ @/ A) D
fi
& P9 q8 b; n! J9 @! ?5 x
) B Q9 E! _# U2 r& M
echo
3 h! \% t/ U1 ^: Y
return $RETVAL
1 X+ B0 P* I, V
}
複製代碼
再找到stop()區塊,加入以下
有#註解
的設定:
7 m6 A8 h" }0 h7 U) t6 i( N
stop() {
5 |$ U% Y3 p* b) f4 t
echo -n [ DISCUZ_CODE_4 ]quot;Stopping fail2ban: "
6 b* u# H2 ^3 W" p# ]. V( Y+ y
getpid
. b8 ~: T# v" L
RETVAL=$?
, x4 m5 B! H9 J* r
if [ -n "$pid" ]; then
: b8 s( f( _& p m1 b0 U/ ^0 n
/sbin/service iptables save # saves banned ip's
% j, L1 ` k/ L. G6 I/ U8 m9 s
$FAIL2BAN stop > /dev/null
" M& c0 l; J, R/ c* E8 C& b! c" j! u
sleep 1
2 D+ {2 W0 ^) k9 n" ]
getpid
/ b1 [4 Y* s# p6 g) O. v
if [ -z "$pid" ]; then
/ v: F1 W% ` W8 A- f
rm -f /var/lock/subsys/fail2ban
$ v$ h: E. B) d$ j; `2 A8 }$ M
echo_success
9 r* ~+ a/ S6 e B' X
else
$ c/ e1 f2 X! C8 c
echo_failure
7 \) @+ Z5 e1 m: F' \9 R
fi
- C9 w/ G; L; d U) q% c) H, N
else
$ M; _, d, m1 [- @0 ?
echo_failure
; R+ U; q( `% p! L% T: Y4 z+ g
fi
$ y: @% B* A; E2 O( e, z- ^
echo
& [: c7 @' [6 U! F8 a
return $RETVAL
複製代碼
3. 設定fail2ban開機順序
/ l# n( ^1 I9 H' l! y4 l
! d( X2 m, h4 j! r
chkconfig --add fail2ban
5 S( Y: U" b4 u. V3 k+ }
/ p- e7 y$ ]4 v. a L1 X
% W2 ? O7 \2 o& F4 H
p.s
4 y3 g8 |: w, o( K
以上參考 :
6 l5 M$ h4 I s4 q2 E3 W3 K: b, D- R1 R
http://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