GNU/Linux >> Linux の 問題 >  >> Debian

DebianJessieのFail2BanとTinyhoneypotでIPv4セキュリティを強化する

IPv4アドレス指定マシンのセキュリティを強化するための5分間の演習です。このチュートリアルで説明するセットアップの目的は、ポートスキャナーと悪意のあるポートオープナーを一定期間ロックアウトすることです。この演習は、DebianJessieでのみ試されて適用されます。演習中、各コマンドはルートとしてコミットされます。ルートアクセスを取得する方法はあなたの取引です。

su-、sudo、コンソールログインなどのいずれか...

怠惰な初心者向けの説明:bashプロンプトを表すときは、テキストの太字部分をコピーして自分のテキストに貼り付けてください。

材料
  • fail2banソフトウェアは、ファイアウォールルールを動的に処理して、悪意のあるユーザーを締め出すことができます。
  • tinyhoneypotは、TCP / IPポートでリッスンし、オープナーの詳細をログに記録することができます。
  • xinetdサービスはtinyhoneypotを起動し、リスニングポートを管理します。

材料をインストールする: (テキストの太字部分をコピーして貼り付けるだけです)

[email protected]:~# apt-get install tinyhoneypot fail2ban xinetd

設定

SSHを別のポートでリッスンさせるには、ssh構成ファイルを代替のsshポートに置き換えます。

[email protected]:~# sed -i.orig 's/Port 22/Port 2201/m' /etc/ssh/sshd_config

元の/etc/ ssh/sshd_config構成は/etc/ssh/sshd_config.orig

として保存されます

SSHサービスを再起動すると、2201ポート(22ではない)でリッスンします。

[email protected]:~# service ssh restart
[email protected]:~# netstat -lptn | grep ssh
tcp 0 0 0.0.0.0:2201 0.0.0.0:* LISTEN 4313/sshd
tcp6 0 0 :::2201 :::* LISTEN 4313/sshd

これまでのところ良い..

tinyhoneypotを起動し、TCPのポート22でリッスンするようにXinetdを構成します。

[email protected]:~# cp -v /usr/share/doc/tinyhoneypot/examples/xinetd.d/thp-pasv /etc/xinetd.d/

/etc/xinetd.d/thp-pasvを次のように編集します:

[email protected]:~# cat /etc/xinetd.d/thp-pasv
# default: on
# description: thp-ftpd calls the generic thpsvcs with param "ftp",
#       resulting in an ftpd emulation.

service thp-pasv
{
        type                    = UNLISTED
        socket_type             = stream
        protocol                = tcp
        port                    = 22
        wait                    = no
        user                    = thpot
        server                  = /usr/sbin/thpot
        server_args             = nullresp
        nice                    = 10
        disable                 = no
        instances               = 1
        per_source              = 1

}

(RE)新しい設定でxinetdを起動し、ポート22でリッスンしていることを確認します。

[email protected]:~# service xinetd restart
[email protected]:~# netstat -lptn | grep xinetd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 4567/xinetd

機能していることを確認してください

別のマシンからssh接続を開きます。

[email protected]:~$ ssh 192.168.88.212

しばらくすると何も起こらないので、[Ctrl + C]

で中断します。

テストマシンのログエントリを確認します:

[email protected]:~# cat /var/log/thpot/captures
Feb 29 13:02:10 SID=56D4334221165.nullresp PID=4837 SRC=192.168.88.242 SPT=47187 ET=00:00:11 BYTES=39

すべてがうまくいった場合は、キャプチャログにエントリがあるはずです。

TinyHoneyPotと連携するようにFail2Banを調整しましょう

[email protected]:~# cd /etc/fail2ban/
[email protected]:/etc/fail2ban# cp -v jail.conf jail.local

jail.confを編集しないでください!!それをjail.localとしてコピーし、.localファイルにのみ変更を加えてください!

jail.localで[ssh]セクションを見つけ、/ etc / ssh / sshd_config

の[Port2201]に応じて変更します。
[ssh]

enabled  = true
port     = 2201
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6

jail.localのJAILセクションに作成して入力します:

これにより、Fail2Banはtinyhoneypotのログファイルを読み取り、そこからIPv4アドレスを取得して拒否します。 [ssh]セクションの後に配置することをお勧めします。約137列目です。

[thp-ssh]

enabled  = true
port     = all
filter   = thpot
logpath  = /var/log/thpot/captures
banaction = iptables-allports
maxretry = 1
findtime = 1800
bantime = 99999

Fail2banには、何を拒否するかを知るためのフィルターが必要です。三 は、IPv4アドレスを置き換えるマクロです。そのためのフィルターを作成します:

[email protected]:~# cat /etc/fail2ban/filter.d/thpot.local
[Definition]

failregex = SRC=<HOST>
ignoreregex =

完了しました!

簡単なテスト....

[email protected]:~# service fail2ban restart

/var/log/fail2ban.log

の最後に似たようなものが表示されるはずです。
2016-02-29 13:54:06,915 fail2ban.jail   [6102]: INFO    Creating new jail 'thp-ssh'
2016-02-29 13:54:06,915 fail2ban.jail   [6102]: INFO    Jail 'thp-ssh' uses pyinotify
2016-02-29 13:54:06,920 fail2ban.jail   [6102]: INFO    Initiated 'pyinotify' backend
2016-02-29 13:54:06,922 fail2ban.filter [6102]: INFO    Added logfile = /var/log/thpot/captures
2016-02-29 13:54:06,923 fail2ban.filter [6102]: INFO    Set maxRetry = 1
2016-02-29 13:54:06,925 fail2ban.filter [6102]: INFO    Set findtime = 1800
2016-02-29 13:54:06,926 fail2ban.actions[6102]: INFO    Set banTime = 99999
2016-02-29 13:54:06,934 fail2ban.jail   [6102]: INFO    Jail 'ssh' started
2016-02-29 13:54:06,940 fail2ban.jail   [6102]: INFO    Jail 'thp-ssh' started

jail.localからカスタム値を確認し、必要に応じて微調整できます。

findtime = 1800
bantime = 99999

現在のiptablesルールをご覧ください:

[email protected]:~# iptables-save
# Generated by iptables-save v1.4.21 on Mon Feb 29 14:05:17 2016
*filter
:INPUT ACCEPT [2:64]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:fail2ban-ssh - [0:0]
:fail2ban-thp-ssh - [0:0]
-A INPUT -p tcp -j fail2ban-thp-ssh
-A INPUT -p tcp -m multiport --dports 2201 -j fail2ban-ssh
-A fail2ban-ssh -j RETURN
-A fail2ban-thp-ssh -j RETURN
COMMIT
# Completed on Mon Feb 29 14:05:17 2016

別のマシンからの拒否ルールを確認しましょう:

[email protected]:~# ssh 192.168.88.212
^C
[email protected]:~# ssh 192.168.88.212
ssh: connect to host 192.168.88.212 port 22: Connection refused

最初のアクションは何もしません。攻撃者はおそらくしばらくするとそれを中断します。2番目のアクションは拒否されます。

iptablesのルールは今では次のようになっているはずです:

[email protected]:~# iptables-save
# Generated by iptables-save v1.4.21 on Mon Feb 29 14:10:53 2016
*filter
:INPUT ACCEPT [4:542]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1:88]
:fail2ban-ssh - [0:0]
:fail2ban-thp-ssh - [0:0]
-A INPUT -p tcp -j fail2ban-thp-ssh
-A INPUT -p tcp -m multiport --dports 2201 -j fail2ban-ssh
-A fail2ban-ssh -j RETURN
-A fail2ban-thp-ssh -s 192.168.88.242/32 -j REJECT --reject-with icmp-port-unreachable
-A fail2ban-thp-ssh -j RETURN
COMMIT
# Completed on Mon Feb 29 14:10:53 2016

結果は次のとおりです。攻撃者のPCは各ポートで拒否されます。

追記

このHowToを書いている時点では、Fail2BanもtinyhoneypotもIPv6を処理できませんでした。このHowtoが役立つと思われる場合は、共有してください。友達に知らせましょう。


Debian
  1. Debian 8(Jessie)にLighttpdを使用してWebDAVをインストールする方法

  2. Linuxのセキュリティ:fail2banでシステムを保護する

  3. DenyHostsとLogwatchを使用してDebianVPSのセキュリティを向上させる方法

  1. Debian8でmod_pagespeedとMemcachedを使用してApacheを高速化する

  2. badIPs.comでサーバーを保護し、DebianでFail2banを使用してIPを報告する方法

  3. Debian 8でMySQLを使用してマスターマスターレプリケーションを設定する(Jessie)

  1. Debian10にFail2banをインストールして設定する

  2. Debian 8(Jessie)でのPSADのインストールと設定

  3. Debian10でのMuninとMonitによるサーバー監視