52AV手機A片王|52AV.ONE
標題:
防火牆強化套件fail2ban之安裝與設定
[打印本頁]
作者:
IT_man
時間:
2016-4-9 12:53
標題:
防火牆強化套件fail2ban之安裝與設定
本帖最後由 IT_man 於 2016-4-9 22:36 編輯
4 r5 s5 Y) I/ e4 p
3 j1 Q, N2 k9 c3 R3 Q
我的環境:
$ L( X" `1 ?" G& Z' U
CentOS 6.7 這是RedHat系列的發行版本,與Fedora同系。(發行版本的資料會記錄在 /etc/redhat-release)
. }2 g5 Y' b6 `+ T% B8 q3 p5 b
1.用yum安裝fail2ban
1 z7 q. _- o* L. ?
yum -y install fail2ban (yum安裝的歷程會記錄在 /var/log/yum 中。如有需要確認已安裝的套件,可以回頭查詢這個記錄檔。)
# A- i$ P3 d! q4 O+ w
: Y; D( q8 Z( b$ S7 i. {( u& O
如果上述步驟不能安裝fail2ban,那麼yum會顯示找不到該套件的時候,你需要進入這個步驟。
+ X1 ]% C1 P6 }. H
4 F3 `3 Q' x/ u1 M7 q* I
yum會掃描套件庫來決定要如何安裝套件。然而由於fail2ban並不在預設的套件庫中,所以我們必須手動加入含有fail2ban的套件庫atrpms。
1 Y h, Q0 e$ n
' S& }4 K0 E# W% w- j( o/ r
請編輯 /etc/yum.repos.d/CentOS-Base.repo :
; B# e9 a' z% r
0 T2 Z" y" w5 n; f1 D. V9 p1 e: l
vi /etc/yum.repos.d/CentOS-Base.repo
) |1 c7 d( b# W% `* B% \ [, t6 {
在最後加入以下設定:
- b& d1 ?2 R" S; A$ s
" M) l9 f; ]4 l3 G2 m; S
[atrpms]
0 @( D: a* {+ D4 E3 d
name=Red Hat Enterprise Linux $releasever - $basearch - ATrpms
- P7 E' a* k3 ^0 @7 T. w0 ^$ R! d
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
1 \) r+ M( S; P: g) B0 t( v
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
. i8 {9 j/ g% O* c6 T9 e; C
gpgcheck=1
' u. F0 t6 F8 y' R) _5 B
enabled=1
& _# w6 g6 U; \; @" |. o
+ Y1 j0 J: `# i
2. 設定fail2ban
/ x3 }3 K- U" q0 i) h c
主要有兩個設定檔:/etc/fail2ban/fail2ban.conf 跟
/etc/fail2ban/
jail.conf
* ?0 ~4 G l8 U5 x/ W1 E2 j9 U+ L
vi
/etc/fail2ban/fail2ban.conf
2 ]3 W4 [7 C3 r. v8 J! m; R
修改 logtarget 的參數:
0 @# R Z; T! ?* B$ V* _
#預設的參數
; n4 |, | D2 W/ R& J; V
#logtarget = SYSLOG
% K/ _. n" m( N! y) z
#調整後的參數
9 w& _* W, ^+ ^8 U
logtarget = /var/log/fail2ban.log
複製代碼
vi
/etc/fail2ban/jail.conf (fail2ban主要的設定檔)
# [9 }' _) \* K; i' K6 |% ]& A0 |
#預設的參數
4 ~/ E0 T6 h4 e5 O. ^
#backend = auto
# d2 K& Z w- J+ l' k
#調整後的參數
( t+ _6 W+ q; Q3 J4 d4 E* Q T
backend = gamin
複製代碼
gamin是Linux的套件之一。如果缺少你可以用yum來安裝它
3 {6 i1 N! B4 d' s9 o- g
[ssh-iptables]
; N ~4 y4 l& B1 D* q0 m3 U5 m
#是否啟用
+ r, k5 U" Z% R; B0 ]3 R/ T8 b* p
enabled = true
/ f+ l5 G U+ |! @& i( D2 z+ r/ Q
#過濾名稱,使用預設的即可
7 Y7 W: e3 t: N3 ~& P8 N+ Z9 F
filter = sshd
* X* F' y7 V. ~8 }* Y1 O
#iptables設定
8 V1 D. @3 `% @4 W d) H
action = iptables[name=SSH, port=22022, protocol=tcp]
w" `0 z n0 y8 a7 C+ N
#發生阻擋時的寄信設定
' |; Q. D1 K6 t$ `* n# U
sendmail-whois[name=SSH, dest=xxxx@gmail.com, sender=root@xxxx.com]
8 a- S, q4 Y) c# U% e7 ~1 p
6 w+ V9 \% G9 |6 M: |) g
#需要掃描的記錄檔
8 `6 ^. i2 P) S$ I0 g4 {5 G! N+ y. H, h
logpath = /var/log/secure
9 J7 B5 X3 W) t, ~' e' F7 [
#最高嘗試錯誤次數
. u+ K, r* T' a7 j
maxretry = 2
; c4 h$ y$ X: g7 |# y$ M
#阻擋的時間,-1表示永久阻擋
- y* w4 h4 q @5 p
bantime = -1
複製代碼
讓fail2ban重新啟動時不會重設阻擋IP規則
, j7 b: C: A$ {) f5 Y. e9 g
在預設的設定中,fail2ban每次重新啟動時都會遺忘被阻擋的IP設定。舉例來說,如果我的電腦因為登入失敗被fail2ban擋掉,那麼只要fail2ban重新啟動,那麼我的電腦又可以繼續嘗試登入server。
# E8 h' X, o. ~- g& | ~5 D
如果要讓fail2ban重新啟動時,不會重設阻擋的IP規則,則修改 /etc/init.d/fail2ban 的內容。
4 C+ T" k# [4 X3 k
vi /etc/init.d/fail2ban
' i4 q7 H8 c6 c! R
找到start()的區塊,加入以下有#註解的設定:
* p h. r5 \$ L* J: C5 d& i
start() {
+ S, H/ G8 c8 j7 d
echo -n [ DISCUZ_CODE_3 ]quot;Starting fail2ban: "
. U* T6 |4 j3 c4 Q6 ^& }
getpid
" q. |1 }2 R) C# i2 u) Z
if [ -z "$pid" ]; then
6 Z* N* t- K L! \; W# `5 L' Z
rm -rf /var/run/fail2ban/fail2ban.sock # unclean in case of restart fal2ban
8 u( \8 r6 y2 [
$FAIL2BAN -x start > /dev/null
0 [1 p' }6 H* W# |
RETVAL=$?
. x% O2 t) z8 T
fi
. E- O) A$ o- {0 ?6 M& m, L
if [ $RETVAL -eq 0 ]; then
: t# I' x& X! ?* ?2 q- {5 m! m
touch /var/lock/subsys/fail2ban
# c) F" F! P; z- H( O* n r! v
echo_success
+ E, `+ |% I$ M, Z0 I& Z, B
/sbin/service iptables restart # reloads previously banned ip's
% T5 l0 E+ o/ q7 [( }
else
5 H5 F+ H" N ~& P0 ^2 t7 {* F5 v
echo_failure
7 P) U$ E% |6 G0 d
fi
' V; W! i& i* G' a* U
* _ q/ W+ r' d2 G( F
echo
* j* A+ O2 C$ ]7 o# X+ F0 F/ `
return $RETVAL
b/ T, H/ `7 m5 T( T3 p
}
複製代碼
再找到stop()區塊,加入以下
有#註解
的設定:
9 A" S( H# L* y7 F
stop() {
- Y, P7 Z8 e. m0 z" m9 Y, A) i
echo -n [ DISCUZ_CODE_4 ]quot;Stopping fail2ban: "
$ p2 ^8 U. K9 V1 ` G
getpid
4 P C+ d5 R- q& G9 C/ |4 }6 x
RETVAL=$?
' @& {& o; y% C: z9 G. F$ w+ n1 ^
if [ -n "$pid" ]; then
( y1 T) P# g U* X+ u2 a1 G
/sbin/service iptables save # saves banned ip's
+ s) h# _ D M8 a5 V* ^6 v
$FAIL2BAN stop > /dev/null
" G4 D, g9 D+ E8 g. o
sleep 1
9 {/ f) X, q, v
getpid
1 a+ \% i/ _# w- Z
if [ -z "$pid" ]; then
) e- o2 U. m, }6 t; i; N
rm -f /var/lock/subsys/fail2ban
( _8 p3 {/ s, c& x
echo_success
; Z) p! f9 m0 [( e6 E2 G5 I
else
( ]" F4 _3 X: \6 E5 S' \' r
echo_failure
( u) T" I8 [$ d m- N
fi
r2 y4 O& l, L/ Y
else
3 o+ M0 K2 p: v4 l z& r- L
echo_failure
( X+ K& P7 B) m# d: p, e* x
fi
4 Y, V- O7 q8 \2 q* u8 ?
echo
% B# Y- ~5 N; {" q* ]$ Q* x
return $RETVAL
複製代碼
3. 設定fail2ban開機順序
# }5 K& o4 D! ` p3 n* k
" n# \/ c1 Q8 y f5 D
chkconfig --add fail2ban
F7 x* \6 }& m7 W/ y
% Q3 E. c# V; P2 ~
: Z( q$ s! [. @% n4 u o
p.s
! t# m1 a% A y$ ~2 x$ q
以上參考 :
5 I2 z8 I) U( |! H8 }1 W t1 T* J
http://blog.pulipuli.info/2011/07/centosfail2ban.html
4 J4 |2 ?: R+ W
http://www.vixual.net/blog/archives/252
7 t6 L2 g5 g7 `4 Y
歡迎光臨 52AV手機A片王|52AV.ONE (https://www.52av23.xyz/)
Powered by Discuz! X3.2