52AV手機A片王|52AV.ONE
標題:
防火牆強化套件fail2ban之安裝與設定
[打印本頁]
作者:
IT_man
時間:
2016-4-9 12:53
標題:
防火牆強化套件fail2ban之安裝與設定
本帖最後由 IT_man 於 2016-4-9 22:36 編輯
: z O9 [* N" _) w6 C
, p. ] O! E! G# |
我的環境:
1 U" H" S) d/ e. p
CentOS 6.7 這是RedHat系列的發行版本,與Fedora同系。(發行版本的資料會記錄在 /etc/redhat-release)
7 L2 c3 u& a+ C* Q
1.用yum安裝fail2ban
. Y x% u; N" {! L. v& ~8 {0 o* ~/ V1 R
yum -y install fail2ban (yum安裝的歷程會記錄在 /var/log/yum 中。如有需要確認已安裝的套件,可以回頭查詢這個記錄檔。)
s( t: S( b5 l$ v/ n; G
' q" H: e: f; K* C
如果上述步驟不能安裝fail2ban,那麼yum會顯示找不到該套件的時候,你需要進入這個步驟。
7 D, V8 N' U0 z
/ j) h3 D& {- P* w- H
yum會掃描套件庫來決定要如何安裝套件。然而由於fail2ban並不在預設的套件庫中,所以我們必須手動加入含有fail2ban的套件庫atrpms。
& {) a! |: x. ?! i
# [4 N r$ A' \: X! j7 P
請編輯 /etc/yum.repos.d/CentOS-Base.repo :
- ?6 C; J( g1 N7 ]9 w
7 M: J1 p- t! ~: J& W
vi /etc/yum.repos.d/CentOS-Base.repo
) J/ t+ n1 R+ n, U; _ t
在最後加入以下設定:
1 J6 `# _) {* k% v" {0 v
& q: B$ E1 s+ }0 ]- ?7 t
[atrpms]
6 d1 Q& Y( T9 e* b
name=Red Hat Enterprise Linux $releasever - $basearch - ATrpms
2 g2 y4 `9 y# _8 Y, A$ W, j
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
* |$ p5 }/ w* ]6 i% p6 W* Y" B
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
0 Q9 s# W" }% q$ k
gpgcheck=1
o+ G& E: p) {' B$ L0 Z
enabled=1
% l- d w. q- U1 C- N
$ J: U8 a' S: S6 m0 |. @
2. 設定fail2ban
! Y$ E0 ?7 S6 G
主要有兩個設定檔:/etc/fail2ban/fail2ban.conf 跟
/etc/fail2ban/
jail.conf
" S0 U+ i4 P& ]( r1 c# ]
vi
/etc/fail2ban/fail2ban.conf
: i6 M6 |2 e3 o8 @2 `* X
修改 logtarget 的參數:
" a) [# d- v$ X# p, Q1 O
#預設的參數
( L0 }+ E4 y: N. v
#logtarget = SYSLOG
) N+ g/ i2 S6 {0 I2 F. e- v8 R! M
#調整後的參數
2 z9 n8 {3 ]- L9 a7 P
logtarget = /var/log/fail2ban.log
複製代碼
vi
/etc/fail2ban/jail.conf (fail2ban主要的設定檔)
4 N, l% j+ K7 n
#預設的參數
& [* j5 x! M, i5 Z
#backend = auto
6 j. F! g/ A, r; q9 Q
#調整後的參數
' u1 M, z4 y; D w& g6 {0 ~% B
backend = gamin
複製代碼
gamin是Linux的套件之一。如果缺少你可以用yum來安裝它
4 `8 H& t6 W: y7 V0 \* d+ a) E A
[ssh-iptables]
1 u2 ^) M; P0 f
#是否啟用
& H d! [7 x4 F
enabled = true
% h% ~6 [/ K! l( a5 ~- I, z! q
#過濾名稱,使用預設的即可
+ U' x2 z/ F9 }- p% q1 j
filter = sshd
0 {3 F* d6 }9 A) T( p
#iptables設定
; e- f& D, w& B6 s5 \9 u7 Y
action = iptables[name=SSH, port=22022, protocol=tcp]
. s& _% G% f* ?' B( k3 w0 d
#發生阻擋時的寄信設定
5 d" S8 g [ {& K" U
sendmail-whois[name=SSH, dest=xxxx@gmail.com, sender=root@xxxx.com]
# X/ [1 |, @0 h! E: P
% P/ w# R2 k$ G" y' L {. H* E
#需要掃描的記錄檔
2 B$ \$ k+ s5 i m, o
logpath = /var/log/secure
$ j3 ~! t0 B1 e( X' G* i! Q* f, ~
#最高嘗試錯誤次數
5 [: E: x6 r8 H' s5 w: x) `' E
maxretry = 2
+ o: c+ L5 R! k5 @( S; `; J
#阻擋的時間,-1表示永久阻擋
' Y( W+ y: g9 T& A) a& f
bantime = -1
複製代碼
讓fail2ban重新啟動時不會重設阻擋IP規則
0 W3 n6 u6 F" f2 Z
在預設的設定中,fail2ban每次重新啟動時都會遺忘被阻擋的IP設定。舉例來說,如果我的電腦因為登入失敗被fail2ban擋掉,那麼只要fail2ban重新啟動,那麼我的電腦又可以繼續嘗試登入server。
' X. r6 K2 v4 Y6 f% A
如果要讓fail2ban重新啟動時,不會重設阻擋的IP規則,則修改 /etc/init.d/fail2ban 的內容。
5 P" c, l* S7 l; y9 H
vi /etc/init.d/fail2ban
3 n' l, w$ k( L( e
找到start()的區塊,加入以下有#註解的設定:
6 X7 v) ^/ R3 S1 s6 ~# H( ?
start() {
! r! C. H6 q& J& Q# J- A
echo -n [ DISCUZ_CODE_3 ]quot;Starting fail2ban: "
/ Q% G @" q& D
getpid
+ F/ B! v8 N* v2 N& Z+ D' p
if [ -z "$pid" ]; then
8 b" X9 P" k( Z
rm -rf /var/run/fail2ban/fail2ban.sock # unclean in case of restart fal2ban
3 c$ f$ B9 f: X7 l. @
$FAIL2BAN -x start > /dev/null
7 d. t; j# d! ^2 \ A
RETVAL=$?
( \( R; `$ E, [
fi
5 _+ M. \. [7 f9 V8 ^
if [ $RETVAL -eq 0 ]; then
6 J/ x' j4 \5 O- g* `9 t- G3 \6 Z
touch /var/lock/subsys/fail2ban
# n$ T- c8 S' v/ a% }' G; t% c7 T. [
echo_success
4 Q# ^3 R5 T/ F9 b. W( W4 c5 X3 Z
/sbin/service iptables restart # reloads previously banned ip's
" K2 F" W; \4 x+ E" N9 l3 o/ v7 q2 Y0 u
else
2 e: b! N' `8 X* O( D2 j+ e! v
echo_failure
' ~# m% L) ~1 ^! g! x
fi
* K1 x, j( q4 @
! e: Y! ]" ?* ~. u
echo
5 ~- _! N- N# x8 n5 o ~. @
return $RETVAL
9 n5 g0 E2 q' K. s8 o3 d* t$ |
}
複製代碼
再找到stop()區塊,加入以下
有#註解
的設定:
V* @, _7 M# f+ C, {1 t
stop() {
, }+ x2 Y; O; X) g: j6 W
echo -n [ DISCUZ_CODE_4 ]quot;Stopping fail2ban: "
0 X S! T& M& | \' N0 n
getpid
$ F) N/ j* Z' w5 c% r# P* F% t3 P+ ~
RETVAL=$?
0 Z! p2 m4 c9 j
if [ -n "$pid" ]; then
5 U R) m3 E( y: t
/sbin/service iptables save # saves banned ip's
% ~5 T0 @" M- w
$FAIL2BAN stop > /dev/null
( A/ T* n ~( @1 Z
sleep 1
* d& n; w% \5 o/ U" P+ p
getpid
8 b* C1 L, F5 M
if [ -z "$pid" ]; then
$ {' q9 u8 w2 K& S
rm -f /var/lock/subsys/fail2ban
" X3 s8 C0 o9 O
echo_success
7 R( I: E8 m: J: F* h+ m
else
. P* x( |% ]$ P- f f; H: N# M
echo_failure
7 B. {9 a; P# {1 T
fi
! V: k4 w2 v7 z6 L; u: P5 h3 G
else
9 E: q1 U. c1 S- g0 i
echo_failure
/ C" p; L, Q: N& [6 I) r
fi
L) |$ h# B, k, a
echo
' r+ E. X3 q0 `7 v+ W8 f6 n
return $RETVAL
複製代碼
3. 設定fail2ban開機順序
, c2 d3 a% s% z5 F* J& J( t6 Z8 N
3 L4 l2 k, U0 h9 ]8 r
chkconfig --add fail2ban
0 C, G1 d* G0 G
; H E9 r3 b5 t
& j* |! Z# L. S4 p c' E
p.s
8 }2 w: L3 P# G
以上參考 :
& u8 P. ~ W8 p' M$ g, _# p" o
http://blog.pulipuli.info/2011/07/centosfail2ban.html
. ]+ D- b* k5 X+ \" L4 F( e. e
http://www.vixual.net/blog/archives/252
7 x2 l* L. |$ D1 m
歡迎光臨 52AV手機A片王|52AV.ONE (https://www.52av.one/)
Powered by Discuz! X3.2