52AV手機A片王|52AV.ONE
標題:
防火牆強化套件fail2ban之安裝與設定
[打印本頁]
作者:
IT_man
時間:
2016-4-9 12:53
標題:
防火牆強化套件fail2ban之安裝與設定
本帖最後由 IT_man 於 2016-4-9 22:36 編輯
. T6 V' \8 o) K$ m6 g8 |2 n( x
0 Z! o" Z0 @1 A" K8 h7 C$ N! v
我的環境:
3 L! V& C& Z+ G8 A$ `+ m
CentOS 6.7 這是RedHat系列的發行版本,與Fedora同系。(發行版本的資料會記錄在 /etc/redhat-release)
: \( ^& u8 F" a8 J. Q6 P
1.用yum安裝fail2ban
|4 e8 f/ Z9 |8 g% K' V9 r( D
yum -y install fail2ban (yum安裝的歷程會記錄在 /var/log/yum 中。如有需要確認已安裝的套件,可以回頭查詢這個記錄檔。)
7 f$ Q1 }) S& r; c4 S2 ]2 Y
$ |; d$ c* C5 j3 S
如果上述步驟不能安裝fail2ban,那麼yum會顯示找不到該套件的時候,你需要進入這個步驟。
, O8 Y4 F( X8 O
+ e, f9 i% ]% d) a0 l/ A: J
yum會掃描套件庫來決定要如何安裝套件。然而由於fail2ban並不在預設的套件庫中,所以我們必須手動加入含有fail2ban的套件庫atrpms。
8 |6 c5 \6 P0 F7 s. w8 y
1 S) x c8 R1 L! H6 Z- N
請編輯 /etc/yum.repos.d/CentOS-Base.repo :
" y( @: N/ L N) A
( T0 [6 z; e( y5 ?: S9 w! e6 }
vi /etc/yum.repos.d/CentOS-Base.repo
F1 x8 z f" M$ y. P0 _
在最後加入以下設定:
5 v# W" x8 X7 d+ c1 c# R1 B
( n; v& p% `) f0 G6 e
[atrpms]
/ L7 o' j) x; ~( u5 e* c
name=Red Hat Enterprise Linux $releasever - $basearch - ATrpms
( V9 U8 @7 a0 D# G, q6 U
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
0 j; F l; o; ]* Q
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
8 P! s R8 u+ h1 x% k
gpgcheck=1
3 C3 [' W; W: {3 `! x# q; b( h0 u
enabled=1
0 k0 K3 v- x' R7 S! o
" m; I9 _* I/ a, J; Y% p
2. 設定fail2ban
v- k8 C& v& | o" Y3 U# s2 c
主要有兩個設定檔:/etc/fail2ban/fail2ban.conf 跟
/etc/fail2ban/
jail.conf
4 c2 s6 Z# i7 ?; q6 y7 Q0 r
vi
/etc/fail2ban/fail2ban.conf
" m# t0 W2 c, @' M) `& Z
修改 logtarget 的參數:
2 ~, w% `7 q4 p3 p. L
#預設的參數
+ W8 g* [) G A. ^% I2 y# ]
#logtarget = SYSLOG
1 }9 ^5 \ K7 L) V; G
#調整後的參數
9 \5 h2 e& Z& u0 I, N+ w
logtarget = /var/log/fail2ban.log
複製代碼
vi
/etc/fail2ban/jail.conf (fail2ban主要的設定檔)
$ U2 Y. q2 D- \% U8 \# V
#預設的參數
3 z; R p8 @: |1 ?
#backend = auto
4 n. b3 a8 w8 G0 b1 B9 a& G- f( N
#調整後的參數
" {8 U$ {& Z& Z; U9 D1 {- x; O9 I* ]
backend = gamin
複製代碼
gamin是Linux的套件之一。如果缺少你可以用yum來安裝它
- }6 u! @5 V( J; o
[ssh-iptables]
& Y, m1 X* C% p( l9 \
#是否啟用
0 q# O) ^2 d7 ^ l' T
enabled = true
3 T* _, {; u. g. L/ L
#過濾名稱,使用預設的即可
0 V; D( a1 `# ]5 p2 }( f
filter = sshd
& I' X$ k( K- [2 {9 v, Z. A
#iptables設定
; H# E9 a i \. x: i' j
action = iptables[name=SSH, port=22022, protocol=tcp]
$ }; c- ?8 Z5 f6 m" Q, b
#發生阻擋時的寄信設定
0 I+ d$ L2 c1 j& [/ j- ^, H( b
sendmail-whois[name=SSH, dest=xxxx@gmail.com, sender=root@xxxx.com]
8 J; \; x) Q' U/ R& Y
- c" g9 A# ~0 O$ h' m
#需要掃描的記錄檔
f/ [) l) I% C3 t z
logpath = /var/log/secure
) v# b* B- S3 B
#最高嘗試錯誤次數
" u' J7 o$ M2 I5 B, [4 r6 P; w% d
maxretry = 2
7 f4 p+ d0 f6 x
#阻擋的時間,-1表示永久阻擋
; [9 n: k( m- H/ Q
bantime = -1
複製代碼
讓fail2ban重新啟動時不會重設阻擋IP規則
" a) n4 I. e$ O9 a
在預設的設定中,fail2ban每次重新啟動時都會遺忘被阻擋的IP設定。舉例來說,如果我的電腦因為登入失敗被fail2ban擋掉,那麼只要fail2ban重新啟動,那麼我的電腦又可以繼續嘗試登入server。
: H( c7 h) K& Y7 I7 }
如果要讓fail2ban重新啟動時,不會重設阻擋的IP規則,則修改 /etc/init.d/fail2ban 的內容。
6 @, r3 V& I- L# b% M: w- N2 ?
vi /etc/init.d/fail2ban
# B+ P* d" h5 v4 T+ ^
找到start()的區塊,加入以下有#註解的設定:
6 W" i+ [7 W3 [2 p# |
start() {
# B. v0 G. c: ~
echo -n [ DISCUZ_CODE_3 ]quot;Starting fail2ban: "
& P C ], Q" m7 l2 N2 d1 Y0 Z- ~" Y
getpid
, {3 D* Z1 c+ H* v% N/ ]) q& H; Y& q/ h
if [ -z "$pid" ]; then
7 A* ^& [: a3 g \, J3 E6 |
rm -rf /var/run/fail2ban/fail2ban.sock # unclean in case of restart fal2ban
6 _' v- H" P( A* B: O; C
$FAIL2BAN -x start > /dev/null
- T, }3 W* l# i# Y' ]
RETVAL=$?
3 C- S; l8 c6 B: o" S$ c+ n# ]. R0 {
fi
" E+ L ?% P, K9 r
if [ $RETVAL -eq 0 ]; then
! B' h* ?8 l2 m7 F/ w3 ]6 y9 Z
touch /var/lock/subsys/fail2ban
- S9 T& r- n+ ~% r/ h
echo_success
2 y. y. x. k: ]: V \
/sbin/service iptables restart # reloads previously banned ip's
! b/ ]7 y H% B" f
else
. v: W9 p) ?% s; W
echo_failure
# m1 U+ m& \; x: s2 {3 L" p; D
fi
3 ]0 {* u9 g, D3 `
7 r3 }9 Q* Y/ Z
echo
6 E8 \: V9 d' g5 y
return $RETVAL
5 ?5 `$ o2 q) w# m' g
}
複製代碼
再找到stop()區塊,加入以下
有#註解
的設定:
- z' ?: S- k% z6 [6 _
stop() {
6 _& E, l/ T7 T' E3 L; K
echo -n [ DISCUZ_CODE_4 ]quot;Stopping fail2ban: "
7 _# f$ K2 ^5 S3 s. S
getpid
% b$ x+ S) c1 I+ }8 U
RETVAL=$?
* {" h8 s- n w$ h% y) {5 e
if [ -n "$pid" ]; then
% D( ]3 ]) z A9 b
/sbin/service iptables save # saves banned ip's
8 \2 ~& `3 u8 C
$FAIL2BAN stop > /dev/null
- G! G0 p4 Y) Q5 t
sleep 1
4 _7 J* A5 V i" ]& o( O
getpid
3 B0 `4 ]+ P: \% n
if [ -z "$pid" ]; then
j; _, o7 |# V; w
rm -f /var/lock/subsys/fail2ban
6 |/ w# g$ T/ z V: Q, e+ E, K
echo_success
( E2 ?7 C3 y9 `+ G) B8 t
else
& K2 E8 t: W7 [7 i1 r O2 O( b
echo_failure
) H+ c+ q1 I W! L# y: H' H* N# t
fi
! w3 n$ x3 U/ X0 E7 c3 C( c
else
. T& @8 Z/ T: i: W
echo_failure
8 t$ V- H( U; X9 ]$ J( I/ j+ _
fi
3 s) s. T# r) @2 ^( R: N: q, Q; A2 p
echo
) t5 [% `( T8 d# c# e O" n0 a
return $RETVAL
複製代碼
3. 設定fail2ban開機順序
5 ?* G: u( _- q' q! J+ p& i
% F! s% G% t( ?: Z
chkconfig --add fail2ban
6 I! \( U, s4 l, X C
# q" L$ u( z6 l+ I1 X
1 W5 _+ d% l. i [$ E7 {
p.s
3 u2 m* l6 ~$ e- O/ F' [% f( Y
以上參考 :
8 X) n2 a* r8 v4 W* G
http://blog.pulipuli.info/2011/07/centosfail2ban.html
/ e0 i% `5 f- x1 ?) R
http://www.vixual.net/blog/archives/252
; y, I! t: s: e6 \
歡迎光臨 52AV手機A片王|52AV.ONE (https://www.52av.one/)
Powered by Discuz! X3.2