52AV手機A片王|52AV.ONE
標題:
防火牆強化套件fail2ban之安裝與設定
[打印本頁]
作者:
IT_man
時間:
2016-4-9 12:53
標題:
防火牆強化套件fail2ban之安裝與設定
本帖最後由 IT_man 於 2016-4-9 22:36 編輯
$ \6 e. i# \$ ~! d5 h7 j5 I+ e
! c! M) Y# u3 g6 @( l9 J, S6 D
我的環境:
7 ~* G; v+ r0 Q* B" ?$ F- T$ H: b
CentOS 6.7 這是RedHat系列的發行版本,與Fedora同系。(發行版本的資料會記錄在 /etc/redhat-release)
- X, a2 z3 f, c
1.用yum安裝fail2ban
3 b( t7 B7 z& s& H, u5 j
yum -y install fail2ban (yum安裝的歷程會記錄在 /var/log/yum 中。如有需要確認已安裝的套件,可以回頭查詢這個記錄檔。)
( g! M6 e) b9 W# C _! k
# q$ G; k e" v! Z( z
如果上述步驟不能安裝fail2ban,那麼yum會顯示找不到該套件的時候,你需要進入這個步驟。
* P: d' m4 V! l5 L5 [9 a
$ Q# ?6 v$ T- w0 j& L
yum會掃描套件庫來決定要如何安裝套件。然而由於fail2ban並不在預設的套件庫中,所以我們必須手動加入含有fail2ban的套件庫atrpms。
, d7 W. u9 c' {: o# U$ J: \
% l9 ^/ Z, q6 X& o" X5 m$ u6 b
請編輯 /etc/yum.repos.d/CentOS-Base.repo :
/ U: u' A! g k: x' O% |
, ?/ J7 B- ~3 ]* A
vi /etc/yum.repos.d/CentOS-Base.repo
/ `% R4 e* x: K g. f" e$ R
在最後加入以下設定:
% i h+ w; \. x: P8 Q
6 v/ W, ~' W; h' i0 t6 L* E$ C
[atrpms]
3 ~8 c8 ?4 C: y7 l0 }2 P
name=Red Hat Enterprise Linux $releasever - $basearch - ATrpms
# R) ?# {/ t. }: q8 g# H9 f
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
" H7 z' h3 f" q% e6 n3 Q2 w
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
( W, ?! z; }6 ]7 H6 J9 @6 O9 x! ?
gpgcheck=1
: i5 s2 G% B# G6 A( J' Y
enabled=1
6 \5 n. M- F# _0 h! j! x
. \% M. L+ e" k# i+ V
2. 設定fail2ban
. \! D1 n$ [# I# v' p- W
主要有兩個設定檔:/etc/fail2ban/fail2ban.conf 跟
/etc/fail2ban/
jail.conf
2 [* z* p% |4 H1 V) t
vi
/etc/fail2ban/fail2ban.conf
6 Z) P9 o6 ]# i0 D
修改 logtarget 的參數:
5 I; c; A- p+ i/ @% H) o, d8 u
#預設的參數
! _( ?! {# ?, \9 m
#logtarget = SYSLOG
4 Y; r& u, g: G# R/ o
#調整後的參數
. T( z+ _# i W7 V' o/ z: \
logtarget = /var/log/fail2ban.log
複製代碼
vi
/etc/fail2ban/jail.conf (fail2ban主要的設定檔)
* D( g2 ?$ D4 {2 L& \' H6 C7 c8 i
#預設的參數
7 T/ C: s5 `% ]. L1 K! v- L4 T
#backend = auto
# {4 e5 n$ x/ W& w) s e
#調整後的參數
, n0 I# v( Y0 W; m& H
backend = gamin
複製代碼
gamin是Linux的套件之一。如果缺少你可以用yum來安裝它
% ^# \% c+ d0 N+ n6 n2 g
[ssh-iptables]
4 p% w9 X, N2 F: K+ D
#是否啟用
; e5 r3 A6 E3 I _5 M9 b
enabled = true
( R8 i/ h. f1 A5 u4 ?
#過濾名稱,使用預設的即可
/ ^1 X" C$ G4 s k1 J& s. p
filter = sshd
9 Y# F7 N8 K3 K ~+ N" u
#iptables設定
+ p, @* n6 F& h3 w! ?. } a
action = iptables[name=SSH, port=22022, protocol=tcp]
) b- [+ d P7 k2 s5 E% {
#發生阻擋時的寄信設定
- D. J5 p7 s+ X& @5 m& C
sendmail-whois[name=SSH, dest=xxxx@gmail.com, sender=root@xxxx.com]
, z" F) V. {# b4 M7 v) ~( T
! h8 r3 b& N8 A" X' h
#需要掃描的記錄檔
/ d3 M9 ^6 I+ n5 p" d& t
logpath = /var/log/secure
3 | F' [. \8 r
#最高嘗試錯誤次數
. [, f; a8 h! l e
maxretry = 2
" \! B# q. W2 j$ _5 ?
#阻擋的時間,-1表示永久阻擋
7 d+ p5 O& v1 f- p' @' E3 E8 G
bantime = -1
複製代碼
讓fail2ban重新啟動時不會重設阻擋IP規則
3 u% T; p3 B; i/ G; h
在預設的設定中,fail2ban每次重新啟動時都會遺忘被阻擋的IP設定。舉例來說,如果我的電腦因為登入失敗被fail2ban擋掉,那麼只要fail2ban重新啟動,那麼我的電腦又可以繼續嘗試登入server。
- j1 D* `) o- Q
如果要讓fail2ban重新啟動時,不會重設阻擋的IP規則,則修改 /etc/init.d/fail2ban 的內容。
4 F4 R" n# E: w3 d
vi /etc/init.d/fail2ban
- S6 u, o2 S# H
找到start()的區塊,加入以下有#註解的設定:
* ^0 i+ p+ G4 K
start() {
) {6 X* q Y" S3 f8 a2 [
echo -n [ DISCUZ_CODE_3 ]quot;Starting fail2ban: "
6 V% u# y# w" c7 J: \5 e7 H3 f2 Q e
getpid
* Q+ h3 G/ n4 L) s
if [ -z "$pid" ]; then
& p9 @# f) a$ _: k
rm -rf /var/run/fail2ban/fail2ban.sock # unclean in case of restart fal2ban
. o+ E7 |9 v, Q9 g* y) W$ S
$FAIL2BAN -x start > /dev/null
+ ^* h1 Y/ r) G
RETVAL=$?
9 v$ _$ ~. f. Q) a! n
fi
) h" G' c* G+ e; l9 ]5 A( `8 Y8 l" y
if [ $RETVAL -eq 0 ]; then
' I/ W A$ z2 @4 K7 N1 n5 ]
touch /var/lock/subsys/fail2ban
6 X" O- [% s. y. h, d% w
echo_success
% ]3 k! Y+ j9 D" d) D
/sbin/service iptables restart # reloads previously banned ip's
6 E0 s6 N& T/ `! }9 q1 Q+ j
else
: R8 g7 z7 ?, q5 W) A& I. `$ Y
echo_failure
, y6 z9 L- e- `. ~, n' o
fi
+ E# X0 W5 ^; _6 t" y7 S* s6 l
$ K6 ~, u/ J ~- Q! V% G2 D
echo
% w7 o1 ?; O0 e% p v
return $RETVAL
t' A3 W3 H# l
}
複製代碼
再找到stop()區塊,加入以下
有#註解
的設定:
) t: w! _5 U9 }- O* E4 m9 ^
stop() {
4 ~% q5 p' E+ L8 J
echo -n [ DISCUZ_CODE_4 ]quot;Stopping fail2ban: "
9 r# C o$ f2 }% |+ i" [! y7 R5 N
getpid
4 O/ J) }4 v/ ]; v
RETVAL=$?
% z* j# H/ X- n0 ?; l# t
if [ -n "$pid" ]; then
, L, z: w6 [, F
/sbin/service iptables save # saves banned ip's
& X8 d8 X3 @4 n. W; \' U
$FAIL2BAN stop > /dev/null
2 b* \4 w+ k, K
sleep 1
! v; s, b; Z7 ?6 a& d* W: R4 D
getpid
+ e J$ [0 v6 p. Z7 l% B
if [ -z "$pid" ]; then
! L( E: F1 B- Q" U9 K# h
rm -f /var/lock/subsys/fail2ban
3 a; m' C; V" ^, Y- m' a/ P
echo_success
# z: Q! F" L3 g& }2 f6 }
else
) e* K4 o" E Q! e
echo_failure
/ x$ r1 k7 L4 M7 D3 u# H
fi
0 O5 g9 O5 @1 f0 @3 E# [/ Q
else
8 B& c# N+ f1 d1 R3 @
echo_failure
9 g, u5 y' ~. Z2 c
fi
% F# u/ }, |3 W f
echo
4 A4 z% O$ }2 ~* m
return $RETVAL
複製代碼
3. 設定fail2ban開機順序
q8 s$ \& Z" D8 }
6 L/ W( [& Z# t) [: c7 D0 V7 j
chkconfig --add fail2ban
! m. M- E6 K2 i3 V2 ~7 x; i
2 r* `/ g( c3 z' }! ~4 n
; \5 v' d! {+ ?! R. a; n
p.s
" U8 _( c6 P9 }. L* E5 s6 Q- Q5 p
以上參考 :
7 S# D: j7 ~: H+ Q% \( q
http://blog.pulipuli.info/2011/07/centosfail2ban.html
$ K9 L: _ I; @( O2 v
http://www.vixual.net/blog/archives/252
% ^, I, d s g. k
歡迎光臨 52AV手機A片王|52AV.ONE (https://www.52av.one/)
Powered by Discuz! X3.2