52AV手機A片王|52AV.ONE
標題:
防火牆強化套件fail2ban之安裝與設定
[打印本頁]
作者:
IT_man
時間:
2016-4-9 12:53
標題:
防火牆強化套件fail2ban之安裝與設定
本帖最後由 IT_man 於 2016-4-9 22:36 編輯
$ f/ W0 K: A5 Y0 j' B7 A# L
7 ]. {9 }+ k$ e- A$ m5 ?
我的環境:
- u/ D2 B0 P2 S
CentOS 6.7 這是RedHat系列的發行版本,與Fedora同系。(發行版本的資料會記錄在 /etc/redhat-release)
, y) S6 ^- A# `& g
1.用yum安裝fail2ban
( L1 j; M$ | [( b+ [
yum -y install fail2ban (yum安裝的歷程會記錄在 /var/log/yum 中。如有需要確認已安裝的套件,可以回頭查詢這個記錄檔。)
8 G2 `6 \$ Q( c: F
+ \, i& R2 u! Q3 n# e2 Y
如果上述步驟不能安裝fail2ban,那麼yum會顯示找不到該套件的時候,你需要進入這個步驟。
% M1 t# ], V* j: b, ^/ o$ j o' \
% {+ _( ~1 l: W! m) J
yum會掃描套件庫來決定要如何安裝套件。然而由於fail2ban並不在預設的套件庫中,所以我們必須手動加入含有fail2ban的套件庫atrpms。
7 R2 p6 D. U% [" |0 d- E
6 G8 f# ^* m4 ~( P2 T
請編輯 /etc/yum.repos.d/CentOS-Base.repo :
, S% j& a9 M% U( y8 F, P2 q
! q/ N5 V6 P# ~6 {: s: ^
vi /etc/yum.repos.d/CentOS-Base.repo
2 h( J1 U# r+ P( V
在最後加入以下設定:
/ p# I" R4 a1 R$ b: X
! S1 I( k" Q: t+ i" C9 L O/ W5 \
[atrpms]
# ^& Q, x3 K9 O9 e: Y# s5 l
name=Red Hat Enterprise Linux $releasever - $basearch - ATrpms
; |! r- T4 N) H- f9 a9 x
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
% w, Y0 ~9 S% s+ h% _; ]! ~
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
" v6 x- _( c! |7 S9 C
gpgcheck=1
7 i4 {3 @0 ^! O1 }
enabled=1
& i2 D" a$ d Q' }4 t! x, t! G: p# k& w# y
! q; Z# e3 z+ A2 X' B8 C$ D' x5 V9 F3 h
2. 設定fail2ban
# a& _- f1 Q& Z& B# k
主要有兩個設定檔:/etc/fail2ban/fail2ban.conf 跟
/etc/fail2ban/
jail.conf
0 N; I/ O$ T o+ ~7 s" r
vi
/etc/fail2ban/fail2ban.conf
( y2 {- s( M( n. h/ `
修改 logtarget 的參數:
! S7 u$ i7 }& x9 Y4 G n/ M
#預設的參數
$ }. v8 S2 t+ o( y& ]
#logtarget = SYSLOG
4 |! \; Y# Y5 T$ n% E$ t5 v6 V
#調整後的參數
/ h# {) P4 e- b5 W
logtarget = /var/log/fail2ban.log
複製代碼
vi
/etc/fail2ban/jail.conf (fail2ban主要的設定檔)
2 e m. x [# h* `
#預設的參數
0 @7 C* O7 @' X* l9 H( J
#backend = auto
" P) M" t: w5 S2 j3 ?
#調整後的參數
( F) ?. d) l( v7 Q, s
backend = gamin
複製代碼
gamin是Linux的套件之一。如果缺少你可以用yum來安裝它
6 [, j# v5 T- ~% I1 V
[ssh-iptables]
; \6 T5 w% s" P6 ]" n; S
#是否啟用
7 V6 c' ?3 S) P! t8 q( H
enabled = true
. c0 V! q) Z, ^8 L. e* |( M
#過濾名稱,使用預設的即可
4 D( t+ o1 D3 o7 Y1 e
filter = sshd
! [, h/ B( v" w
#iptables設定
* e& j1 E" c4 W8 D
action = iptables[name=SSH, port=22022, protocol=tcp]
7 B" A/ H; H; | F
#發生阻擋時的寄信設定
0 Z' H `2 x5 d9 o7 d2 D# `9 q
sendmail-whois[name=SSH, dest=xxxx@gmail.com, sender=root@xxxx.com]
3 h5 t) m8 g8 C% x
: k: l2 N# F# S
#需要掃描的記錄檔
$ e3 m; w; \9 q/ g: _0 s
logpath = /var/log/secure
, T# g$ N. j- L
#最高嘗試錯誤次數
5 [% n/ n- a- o0 X# s9 j
maxretry = 2
/ }/ V; M7 q U4 H& z. n
#阻擋的時間,-1表示永久阻擋
3 n- n5 n1 t0 I+ i1 A9 B
bantime = -1
複製代碼
讓fail2ban重新啟動時不會重設阻擋IP規則
; v9 ?! ^/ j! C2 Y5 L4 u- A5 Q' ^
在預設的設定中,fail2ban每次重新啟動時都會遺忘被阻擋的IP設定。舉例來說,如果我的電腦因為登入失敗被fail2ban擋掉,那麼只要fail2ban重新啟動,那麼我的電腦又可以繼續嘗試登入server。
. |: }5 Z1 u& V% Y. M6 H
如果要讓fail2ban重新啟動時,不會重設阻擋的IP規則,則修改 /etc/init.d/fail2ban 的內容。
2 Y3 j) s9 e) Z: E: o" t
vi /etc/init.d/fail2ban
. V8 u% }4 @9 I' A; _
找到start()的區塊,加入以下有#註解的設定:
' z o& N4 `! S
start() {
: }7 `& w( Z* T7 |2 |3 g
echo -n [ DISCUZ_CODE_3 ]quot;Starting fail2ban: "
1 H: t' j2 t1 z4 T/ K( V
getpid
' Z0 P0 ^" p L3 c3 q) R, \
if [ -z "$pid" ]; then
* U* C! T4 m6 r' Y% p) ~
rm -rf /var/run/fail2ban/fail2ban.sock # unclean in case of restart fal2ban
. C% _$ l- o3 H+ G- c: m- p' J
$FAIL2BAN -x start > /dev/null
- l+ a9 V: _/ O9 M( ]/ U8 D0 z; p
RETVAL=$?
1 T. I2 \2 i! p6 r" h: @ f
fi
) x1 o n3 H2 h/ B2 h6 b, Y4 t
if [ $RETVAL -eq 0 ]; then
; J6 F3 y" s: _9 P
touch /var/lock/subsys/fail2ban
- p; t; C7 ^4 j9 |% _% V
echo_success
' y1 r/ L; U" J2 ]0 j
/sbin/service iptables restart # reloads previously banned ip's
8 Q1 m: K$ A7 b6 h
else
7 H# m* K4 S3 O- d# P/ \
echo_failure
0 Q1 T3 E3 `* g
fi
/ ?2 g# M; e4 G" z3 R
" k! q) h; W4 s" M' }' ]
echo
/ {8 U }: X% [6 l$ G) A- N
return $RETVAL
, T7 j, Y0 X1 a9 \" Y& Y
}
複製代碼
再找到stop()區塊,加入以下
有#註解
的設定:
: G1 q, y4 Q. l1 \9 j2 n7 I
stop() {
7 m. o* T6 _$ Y1 X- x% A* _3 c4 ^: \
echo -n [ DISCUZ_CODE_4 ]quot;Stopping fail2ban: "
: S* w1 Y7 X y8 d# B& N" G
getpid
0 G3 a1 R, E" i$ s
RETVAL=$?
3 y: P. G& D: {, }, O
if [ -n "$pid" ]; then
& G) G' \# k: s3 \) u! ^9 [" n& B
/sbin/service iptables save # saves banned ip's
* F. N7 ]6 m: h2 B3 t9 \
$FAIL2BAN stop > /dev/null
' I5 x( ]6 I8 L' |3 Y9 q+ y* v1 k7 x
sleep 1
8 t+ |$ k0 {6 ?% Q% T
getpid
, ^* t, Z. S* c' J3 L7 R( x M& B
if [ -z "$pid" ]; then
: Z8 {/ u4 n) j- T$ X3 i
rm -f /var/lock/subsys/fail2ban
% f# v/ H! _* L
echo_success
- j9 q+ p) `( R5 M Y" H
else
1 S7 U/ j; g# z7 ~2 |
echo_failure
: B: e# _( ] P( A
fi
& c, y% `7 g) l4 }( o
else
$ R: ]% H! N) }3 ^
echo_failure
3 |; S5 C% `2 I% R" X, M; [5 Z- [
fi
' v7 C" y2 y. m# t8 Y
echo
4 P) [9 e( I( J" ?) y: W0 O
return $RETVAL
複製代碼
3. 設定fail2ban開機順序
6 I7 M: s2 x, F8 Q& Z; C
7 _6 E9 b& x# S1 S; L3 g
chkconfig --add fail2ban
- }1 B. m+ }6 ~
" Q# p: k6 s: ]
- S8 M& J5 X- c' a! Q7 D: w
p.s
! S9 _! V7 p X l9 b* [
以上參考 :
+ f6 ?. L# E- f: f# v0 W q8 o
http://blog.pulipuli.info/2011/07/centosfail2ban.html
0 D+ A: r1 Y- a0 b5 ?% w
http://www.vixual.net/blog/archives/252
" n" `# h; k" d/ m0 t1 {
歡迎光臨 52AV手機A片王|52AV.ONE (https://www.52av.one/)
Powered by Discuz! X3.2