52AV手機A片王|52AV.ONE
標題:
防火牆強化套件fail2ban之安裝與設定
[打印本頁]
作者:
IT_man
時間:
2016-4-9 12:53
標題:
防火牆強化套件fail2ban之安裝與設定
本帖最後由 IT_man 於 2016-4-9 22:36 編輯
0 ~' Q( @7 J, E) \6 C4 g
* b' ?' E! ]& t' Y$ S- d
我的環境:
7 P7 }/ F* M s# i N, _
CentOS 6.7 這是RedHat系列的發行版本,與Fedora同系。(發行版本的資料會記錄在 /etc/redhat-release)
$ c* O" f$ s$ g
1.用yum安裝fail2ban
0 z, b/ E. w2 r: r* I
yum -y install fail2ban (yum安裝的歷程會記錄在 /var/log/yum 中。如有需要確認已安裝的套件,可以回頭查詢這個記錄檔。)
z* T) [2 J ]) M" E @) \7 h5 K
" j- O, D5 }: U6 [" p9 X3 b6 ?5 E
如果上述步驟不能安裝fail2ban,那麼yum會顯示找不到該套件的時候,你需要進入這個步驟。
9 s- a5 [& }6 J! h) p
/ }: r8 s. W. `1 d* c2 @: [0 p7 w
yum會掃描套件庫來決定要如何安裝套件。然而由於fail2ban並不在預設的套件庫中,所以我們必須手動加入含有fail2ban的套件庫atrpms。
& v3 K, A) U5 i+ _
5 Y7 _6 t% [6 V( z$ q& C" |" D
請編輯 /etc/yum.repos.d/CentOS-Base.repo :
4 u+ H/ }* w& i: R5 w6 \ ~: x
9 [' s; x" |4 O( y
vi /etc/yum.repos.d/CentOS-Base.repo
, i, x- y6 w# u$ c5 N
在最後加入以下設定:
: c5 Q* d- ^: l5 }/ G/ v( ~# U
0 B) f- b9 v3 C& y
[atrpms]
% I3 t: N0 T' D/ A9 `
name=Red Hat Enterprise Linux $releasever - $basearch - ATrpms
2 W0 s5 e. p5 D6 t, E
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
) ^ k1 `) a3 {/ P5 ?! D
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
% J( F8 ], Y) T- G; O
gpgcheck=1
3 q/ r6 Q0 Y' `% q" S" H
enabled=1
4 Y6 \& d$ f( M, H9 _* A6 ~
+ y9 c, G; d0 K! K4 k! F9 @
2. 設定fail2ban
( h# L- Q' k1 U0 `& w# A$ @
主要有兩個設定檔:/etc/fail2ban/fail2ban.conf 跟
/etc/fail2ban/
jail.conf
3 @. Z" m5 z0 i5 S V$ w
vi
/etc/fail2ban/fail2ban.conf
) S% g0 A# l- ^" Y3 S: N1 f
修改 logtarget 的參數:
- }* H. Q4 D4 i+ q' E/ I
#預設的參數
+ |& m! T4 o# u4 x* j
#logtarget = SYSLOG
5 J, |8 H% B. c$ E
#調整後的參數
% e- m4 c. E' t! h; p' H% r
logtarget = /var/log/fail2ban.log
複製代碼
vi
/etc/fail2ban/jail.conf (fail2ban主要的設定檔)
7 y% o9 i7 X t+ m2 U
#預設的參數
5 E/ ?4 m- X$ G, ~% m- g" u9 ?( F- W
#backend = auto
% C9 F" Q* N9 X4 g2 g# ~5 q2 {6 C# g
#調整後的參數
# u4 _) q4 F [2 z5 U
backend = gamin
複製代碼
gamin是Linux的套件之一。如果缺少你可以用yum來安裝它
1 I" F' U. Z0 d9 d ]; s
[ssh-iptables]
+ f$ W( D# g+ K* j& n/ o
#是否啟用
( {4 O. V$ k& E @. ~# j
enabled = true
2 N! Y! o2 j; @
#過濾名稱,使用預設的即可
9 ^( s- h1 P; d) x; O
filter = sshd
, a/ ^- w/ [7 p8 n% p
#iptables設定
: P, |) S9 S% ~6 K
action = iptables[name=SSH, port=22022, protocol=tcp]
( f' j) C& \* Z' Q
#發生阻擋時的寄信設定
9 y0 z, |) v* u" ?8 z
sendmail-whois[name=SSH,
[email protected]
,
[email protected]
]
: R2 j# @2 d6 B/ z
% H) Z( M9 y! k4 @
#需要掃描的記錄檔
" o. L$ O( A' m* @2 U6 B4 d
logpath = /var/log/secure
5 t" Z' O4 N: s b) v
#最高嘗試錯誤次數
$ o2 q: p3 L. e
maxretry = 2
% @! g# y5 R- l
#阻擋的時間,-1表示永久阻擋
) C6 i; }3 h5 i9 G" F0 m0 x
bantime = -1
複製代碼
讓fail2ban重新啟動時不會重設阻擋IP規則
4 p9 }' A! g: C6 P$ K
在預設的設定中,fail2ban每次重新啟動時都會遺忘被阻擋的IP設定。舉例來說,如果我的電腦因為登入失敗被fail2ban擋掉,那麼只要fail2ban重新啟動,那麼我的電腦又可以繼續嘗試登入server。
" {0 y: v* B4 }! @ g8 c
如果要讓fail2ban重新啟動時,不會重設阻擋的IP規則,則修改 /etc/init.d/fail2ban 的內容。
. Q. Q' d2 T$ L' T
vi /etc/init.d/fail2ban
; Y, p: E% O* `' i0 X/ s& h% [0 |
找到start()的區塊,加入以下有#註解的設定:
8 }% @% ~) w# B4 Y3 C
start() {
& H5 E3 c, R/ o7 Q2 C0 W' K
echo -n [ DISCUZ_CODE_3 ]quot;Starting fail2ban: "
4 i4 G- n5 c C) C, n0 ~0 w# i" q A
getpid
( ]" X6 s9 A) r, H0 t" [& M& N
if [ -z "$pid" ]; then
/ F1 O9 k0 s* o1 G
rm -rf /var/run/fail2ban/fail2ban.sock # unclean in case of restart fal2ban
3 I4 [' F" c ?2 S" W! P( V
$FAIL2BAN -x start > /dev/null
5 E! u/ I; U, N3 C. f6 j
RETVAL=$?
5 y5 Y5 }1 Y( A, e8 S% y
fi
7 j( M. [2 c* ~; d, b1 S
if [ $RETVAL -eq 0 ]; then
: s/ a) Y, E9 {* T
touch /var/lock/subsys/fail2ban
% E; n$ |! X8 I; k* J
echo_success
* E4 ^' E: b" N1 [* Z% l" a* z
/sbin/service iptables restart # reloads previously banned ip's
& z1 F/ I1 q' w# |5 y# u
else
" @3 P; d% v; J p
echo_failure
7 Q' C5 x3 u) Y1 h
fi
( I7 S1 K' E- ?$ y+ @
0 {- C7 l" u7 R% A4 h. d
echo
4 D5 G/ I4 ~' n0 O" U
return $RETVAL
' p/ m# \4 P) C+ W
}
複製代碼
再找到stop()區塊,加入以下
有#註解
的設定:
+ O& E- [$ c) y
stop() {
/ a1 z* c# K5 R/ ^3 F. M
echo -n [ DISCUZ_CODE_4 ]quot;Stopping fail2ban: "
& {- L& H$ d2 ^5 u1 i
getpid
+ { j# i, p* o; Y; `9 e: F& J' g8 ~4 Y
RETVAL=$?
7 {# r" E2 O; N5 J! z0 B) F* I8 M. _( w
if [ -n "$pid" ]; then
$ I ]$ }3 l- B9 h
/sbin/service iptables save # saves banned ip's
2 X9 @$ a& Q) H
$FAIL2BAN stop > /dev/null
# W: w V& ?- E& B) O: g, h$ W
sleep 1
1 b# c2 e9 J2 d, r
getpid
* A! c- B: l Z4 @/ X! r4 `, d
if [ -z "$pid" ]; then
& I2 j$ H" B, R) n, W; K
rm -f /var/lock/subsys/fail2ban
/ M+ K2 K9 R4 D+ x+ [2 W: F1 w8 Y/ X
echo_success
, I; b/ d/ e y( Z! Y; @: M
else
# a m0 ^/ W& N6 G+ Z% r6 w% R- \" `
echo_failure
1 Y# E$ H- t9 f4 ]' }+ R$ [
fi
& U6 A! w0 t6 U# M/ ^
else
: E" l( h4 e, @; r# f
echo_failure
2 P7 [/ j& H% \6 a3 K
fi
$ ^; ?9 Y) G' p. {' t, A
echo
# M9 }0 o* l2 p; u& p' V) Y
return $RETVAL
複製代碼
3. 設定fail2ban開機順序
) a8 A& `( w5 C" G9 W
/ h3 n `6 i. p
chkconfig --add fail2ban
' }1 l! [$ w9 e' }2 [% D
$ F6 s3 }! \/ q- w' t
4 R/ E5 ?" t0 B% k6 w
p.s
' X1 a) q) a; F/ k3 [5 e! n A
以上參考 :
. ^3 |' L+ D" q4 g* T* G
http://blog.pulipuli.info/2011/07/centosfail2ban.html
) S) y# y. V4 F, Z
http://www.vixual.net/blog/archives/252
3 O/ m* Y2 h: W5 Y* X3 _
歡迎光臨 52AV手機A片王|52AV.ONE (https://www.itech.casa/)
Powered by Discuz! X3.2