52AV手機A片王|52AV.ONE
標題:
防火牆強化套件fail2ban之安裝與設定
[打印本頁]
作者:
IT_man
時間:
2016-4-9 12:53
標題:
防火牆強化套件fail2ban之安裝與設定
本帖最後由 IT_man 於 2016-4-9 22:36 編輯
$ w; k& q1 \) @6 n) Q+ w
# X \4 t. R# I
我的環境:
1 U6 f$ Z. H/ L) ]' U
CentOS 6.7 這是RedHat系列的發行版本,與Fedora同系。(發行版本的資料會記錄在 /etc/redhat-release)
. ?9 |) @( J; D+ C# H2 w( n# t
1.用yum安裝fail2ban
e( s' {0 ~8 n
yum -y install fail2ban (yum安裝的歷程會記錄在 /var/log/yum 中。如有需要確認已安裝的套件,可以回頭查詢這個記錄檔。)
3 o' U& l" j' ?8 B0 ?
' }1 Z4 U9 {3 D
如果上述步驟不能安裝fail2ban,那麼yum會顯示找不到該套件的時候,你需要進入這個步驟。
7 V0 a4 _. m5 M% \; U- ?# p& B- p- A
6 W, @" L. X; P& p3 s
yum會掃描套件庫來決定要如何安裝套件。然而由於fail2ban並不在預設的套件庫中,所以我們必須手動加入含有fail2ban的套件庫atrpms。
/ Y4 T0 T2 I0 v9 w2 O) L7 u
- M3 ~# N. \8 f- c+ S* b
請編輯 /etc/yum.repos.d/CentOS-Base.repo :
; {+ a/ m0 N2 ~* m
: T+ t3 ?; ?6 l
vi /etc/yum.repos.d/CentOS-Base.repo
! V1 y" Q6 c" j- ?. F& g
在最後加入以下設定:
" O" P$ q/ t) m" q
% Z6 T Q7 K1 G. N4 x3 d p
[atrpms]
2 K1 r: s, z! j0 G' i8 h
name=Red Hat Enterprise Linux $releasever - $basearch - ATrpms
0 R4 H" x" K" R
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
- O0 t/ G, T. V2 n$ [% \
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
: b4 y" g# w6 o, h& X* o
gpgcheck=1
% f( [9 M7 L! I* p
enabled=1
5 a" E' K4 U7 }1 n; e! u2 p0 ^
) C* K9 P- z: w" F4 S
2. 設定fail2ban
0 P) A: T( U* ]: Q: i4 q2 G+ c0 D; N
主要有兩個設定檔:/etc/fail2ban/fail2ban.conf 跟
/etc/fail2ban/
jail.conf
7 l6 C9 x9 _, U. ~$ m
vi
/etc/fail2ban/fail2ban.conf
: l) g& j% A s* I+ m
修改 logtarget 的參數:
0 B) [0 A0 A9 n X$ ]
#預設的參數
4 Y+ y4 c A/ w
#logtarget = SYSLOG
9 j. H4 m6 i" ^/ l2 W
#調整後的參數
- a. M7 m5 j. p
logtarget = /var/log/fail2ban.log
複製代碼
vi
/etc/fail2ban/jail.conf (fail2ban主要的設定檔)
$ w9 z, r" u( `' S$ a3 K5 x" H
#預設的參數
$ x. w" W7 H# y% G5 R2 O
#backend = auto
) }+ h, x2 p9 z! w( `4 j7 R
#調整後的參數
' E9 U$ e h0 F. |4 E) p& a
backend = gamin
複製代碼
gamin是Linux的套件之一。如果缺少你可以用yum來安裝它
' t; ] z# y* N$ ]1 p4 w( @1 N
[ssh-iptables]
. @: }' N; {% T" t! |! e% w
#是否啟用
* c2 x% x# W' w; h
enabled = true
z7 [8 `9 B( S: M
#過濾名稱,使用預設的即可
4 i3 C& n: f {- z. _* w
filter = sshd
# j8 }; q7 q# x K& d5 s+ M
#iptables設定
- ?9 ^5 p% @5 k5 T2 T- t
action = iptables[name=SSH, port=22022, protocol=tcp]
5 i! k+ g6 T* G; m) H+ C
#發生阻擋時的寄信設定
: F+ P5 q' o7 I7 l3 k6 e+ W* k
sendmail-whois[name=SSH, dest=xxxx@gmail.com, sender=root@xxxx.com]
, }, ] v1 c! i4 z
# o- S: c0 j" j8 k% l
#需要掃描的記錄檔
, u, Q# I0 y# S$ Q0 @8 w
logpath = /var/log/secure
* |% N |' f: |) V9 h& z
#最高嘗試錯誤次數
" I7 a9 Z6 h1 A1 b2 k
maxretry = 2
8 Q: H: h, ~; c6 B
#阻擋的時間,-1表示永久阻擋
. r. r; h$ E$ q2 ?$ P2 J/ _
bantime = -1
複製代碼
讓fail2ban重新啟動時不會重設阻擋IP規則
2 a ?4 O* B5 h5 Q$ D
在預設的設定中,fail2ban每次重新啟動時都會遺忘被阻擋的IP設定。舉例來說,如果我的電腦因為登入失敗被fail2ban擋掉,那麼只要fail2ban重新啟動,那麼我的電腦又可以繼續嘗試登入server。
0 O; A! E, w. n6 R4 e1 Q1 y( P B
如果要讓fail2ban重新啟動時,不會重設阻擋的IP規則,則修改 /etc/init.d/fail2ban 的內容。
" N. b0 M6 D8 _
vi /etc/init.d/fail2ban
+ n( v: g9 H5 [- K; U( m
找到start()的區塊,加入以下有#註解的設定:
* D) V& d8 d5 x! h' l$ x/ ]
start() {
+ Q" e" u0 r8 t0 d
echo -n [ DISCUZ_CODE_3 ]quot;Starting fail2ban: "
% ^- S+ ?$ k. O- d4 x9 U
getpid
G3 r# T/ F$ p k5 y' m- n
if [ -z "$pid" ]; then
0 z, @+ I# _2 W& W
rm -rf /var/run/fail2ban/fail2ban.sock # unclean in case of restart fal2ban
' f1 M7 ]5 s* f0 T
$FAIL2BAN -x start > /dev/null
% |8 d) ^# i j) d6 R4 V7 g8 k1 ^9 q. R
RETVAL=$?
' o" r, ]1 d$ K: Y1 b
fi
}3 u/ t2 | l) @
if [ $RETVAL -eq 0 ]; then
- j7 c0 U5 p- E* S
touch /var/lock/subsys/fail2ban
! B' k+ j2 c3 _/ [
echo_success
/ u2 _. D6 U# l9 O
/sbin/service iptables restart # reloads previously banned ip's
; V6 h! q( L" O0 P$ w8 Q
else
' R+ Q- `9 X2 c
echo_failure
9 t# H1 S1 @+ X+ T) Q8 X$ ^, P
fi
+ y: k" \3 {: S# K
# M- _- i9 Z- R7 P& |
echo
, p4 _$ o: K, Q0 |" v3 y; o, p' h* Q$ d
return $RETVAL
}3 _ H! g4 a& U) {
}
複製代碼
再找到stop()區塊,加入以下
有#註解
的設定:
8 l# g% U6 k" o5 r+ ]5 T( P3 N
stop() {
( ?7 _5 ~! O P( H: @
echo -n [ DISCUZ_CODE_4 ]quot;Stopping fail2ban: "
3 m8 X7 i/ G* K! u* S2 ?
getpid
. A; N8 K! ]& x% w" Q- j; E+ w5 r9 m
RETVAL=$?
7 ~: m" E1 }9 ]6 z+ s( @& m
if [ -n "$pid" ]; then
+ H. Y% W, H5 t5 d% L4 d: E' t
/sbin/service iptables save # saves banned ip's
6 s: ^( p; h- w8 A' J3 p6 o$ W
$FAIL2BAN stop > /dev/null
9 Y$ P. U" z8 M# \/ |
sleep 1
% H' N% W8 a5 G
getpid
C& p" Q" ?2 J% R* m
if [ -z "$pid" ]; then
9 R" q7 N5 d6 Y3 V- K+ ^1 x) Y q
rm -f /var/lock/subsys/fail2ban
: M3 c4 J6 f+ O D$ p
echo_success
% O6 P0 y0 i2 v. z
else
9 f0 S9 H* ?- }) Y8 O% u; i$ W4 `3 \
echo_failure
" z- ?) |- x8 r6 d4 G
fi
3 F% y7 q+ I7 P* Q5 h+ i! f y
else
. B+ s5 ]1 `$ a; ^: E: P
echo_failure
+ r( F5 X' p/ x# R' U# f4 m
fi
) F, ?' v6 D* X0 s
echo
! E9 i _* w U
return $RETVAL
複製代碼
3. 設定fail2ban開機順序
' X( X, m, q8 m) ?" P% h
. |# }* Z1 [. e) D& K x
chkconfig --add fail2ban
5 ? J+ ?- @# a$ Z/ R, [
# t! t7 K' r, k0 T, I' H5 k6 u
* G9 L1 E; m, f. Q
p.s
/ l4 N! V: ?* ~+ {) D" Q1 ?, K
以上參考 :
2 _9 f* a+ C c+ y9 h
http://blog.pulipuli.info/2011/07/centosfail2ban.html
( f% }1 ?( r4 |
http://www.vixual.net/blog/archives/252
a& C) r9 j# f0 b7 [& |3 o, Y
歡迎光臨 52AV手機A片王|52AV.ONE (https://www.52av.one/)
Powered by Discuz! X3.2