ウェブサイト検索

Linux で特定の IP およびネットワーク範囲への SSH および FTP アクセスをブロックする方法


通常、リモート サーバーや仮想プライベート サーバーにアクセスするために、SSH サービスや FTP サービスをよく使用します。 Linux 管理者は、セキュリティをさらに強化するために、Linux の特定の IP またはネットワーク範囲への SSH および FTP アクセスをブロックする方法について知っておく必要があります。

  1. Linux サーバーのセキュリティを強化する 25 のヒント
  2. SSH サーバーを安全に保護するための 5 つの役立つヒント

このチュートリアルでは、CentOS 6 および 7 サーバーで特定の IP アドレスやネットワーク範囲への SSH および FTP アクセスをブロックする方法を説明します。このガイドはCentOS 6.x および 7.x バージョンでテストされましたが、おそらく Debian、Ubuntu、SUSE/openSUSE などの他の Linux ディストリビューションでも動作するでしょう。

2 つの方法で実行します。 1 つ目の方法はIPTables/firewallD を使用する方法で、2 つ目の方法はhosts.allow を利用してTCP ラッパーを使用する方法です。 > およびhosts.deny ファイル。

IPTables と Firewalld の詳細については、次のガイドを参照してください。

  1. IPTables (Linux ファイアウォール) の基本ガイド ヒント/コマンド
  2. Linux でサービスへのリモート アクセスを可能にする iptables ファイアウォールをセットアップする方法
  3. RHEL/CentOS 7 および Fedora 21 で「FirewallD」を構成する方法
  4. Linux でファイアウォールを構成および管理するための便利な「FirewallD」ルール

これで、IPTablesFirewallD とは何か、そしてその基本について理解できました。

方法 1: IPTables/FirewallD を使用して SSH および FTP アクセスをブロックする

次に、特定の IP (192.168.1.100 など) やネットワーク範囲 (192.168.1.0/24 など) への SSH および FTP アクセスをブロックする方法を見てみましょう。 RHEL/CentOS/Scientific Linux 6.x バージョンではIPtablesを使用し、CentOS 7.x ではFirewallDを使用します。

SSH アクセスをブロックまたは無効にする

--------------------- On IPtables Firewall ---------------------
iptables -I INPUT -s 192.168.1.100 -p tcp --dport ssh -j REJECT
iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport ssh -j REJECT
--------------------- On FirewallD ---------------------
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 22 -j REJECT
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 22 -j REJECT

新しいルールを有効にするには、次のコマンドを使用する必要があります。

service iptables save         [On IPtables Firewall]
firewall-cmd --reload         [On FirewallD]

次に、ブロックされたホストからサーバーにSSH 接続してみます。ここでは192.168.1.150 がブロックされたホストであることに注意してください。

ssh 192.168.1.150

次のメッセージが表示されるはずです。

ssh: connect to host 192.168.1.150 port 22: Connection refused

SSH アクセスのブロックを解除または有効にする

SSH アクセスのブロックを解除または有効にするには、リモート サーバーに移動して次のコマンドを実行します。

--------------------- On IPtables Firewall ---------------------
iptables -I INPUT -s 192.168.1.100 -p tcp --dport ssh -j ACCEPT
iptables -I INPUT -s 192.168.1.100/24 -p tcp --dport ssh -j ACCEPT
--------------------- On FirewallD ---------------------
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 22 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 22 -j ACCEPT

以下を使用して変更を保存し、SSH 経由でサーバーにアクセスします。

service iptables save         [On IPtables Firewall]
firewall-cmd --reload         [On FirewallD]

FTP アクセスをブロックまたは無効にする

通常、FTP のデフォルト ポートは 2021 です。したがって、IPTables を使用してすべての FTP トラフィックをブロックするには、次のコマンドを実行します。

--------------------- On IPtables Firewall ---------------------
iptables -I INPUT -s 192.168.1.100 -p tcp --dport 20,21 -j REJECT
iptables -I INPUT -s 192.168.1.100/24 -p tcp --dport 20,21 -j REJECT
--------------------- On FirewallD ---------------------
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 20,21 -j REJECT
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 20,21 -j REJECT

新しいルールを有効にするには、次のコマンドを使用する必要があります。

service iptables save         [On IPtables Firewall]
firewall-cmd --reload         [On FirewallD]

次に、次のコマンドを使用して、ブロックされたホスト (192.168.1.100) からサーバーへのアクセスを試みます。

ftp 192.168.1.150

以下のようなエラーメッセージが表示されます。

ftp: connect: Connection refused

FTP アクセスのブロックを解除または有効にする

ブロックを解除して FTP アクセスを有効にするには、次のコマンドを実行します。

--------------------- On IPtables Firewall ---------------------
iptables -I INPUT -s 192.168.1.100 -p tcp --dport 20,21 -j ACCEPT
iptables -I INPUT -s 192.168.1.100/24 -p tcp --dport 20,21 -j ACCEPT
--------------------- On FirewallD ---------------------
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 20,21 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 20,21 -j ACCEPT

次のコマンドで変更を保存します。

service iptables save         [On IPtables Firewall]
firewall-cmd --reload         [On FirewallD]

次に、FTP 経由でサーバーにアクセスしてみます。

ftp 192.168.1.150

FTP ユーザー名とパスワードを入力します。

Connected to 192.168.1.150.
220 Welcome to TecMint FTP service.
Name (192.168.1.150:sk): tecmint
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

方法 2: TCP ラッパーを使用して SSH および FTP アクセスをブロックする

IPTablesFirewallD を使いたくない場合は、TCP ラッパーを使用して、特定のネットワークへの SSH および FTP アクセスをブロックする方が良い方法です。 IP および/またはネットワークの範囲。

OpenSSH と FTP は、TCP ラッパー サポートを使用してコンパイルされています。つまり、次の 2 つの重要なファイルで、ファイアウォールに触れることなく接続を許可するホストを指定できます。

  1. /etc/hosts.allow
  2. /etc/hosts.deny

名前が示すように、最初のファイルには許可されたホストのエントリが含まれ、2 番目のファイルにはブロックされたホストのアドレスが含まれます。

たとえば、IP アドレス 192.168.1.100 とネットワーク範囲 192.168.1.0 を持つホストへの SSH および FTP アクセスをブロックしてみましょう。この方法はCentOS 6.x系、7.x系でも同様です。そしてもちろん、Debian、Ubuntu、SUSE、openSUSE などの他のディストリビューションでも動作します。

/etc/hosts.deny ファイルを開き、以下に示すように、ブロックする IP アドレスまたはネットワーク範囲を追加します。

##### To block SSH Access #####
sshd: 192.168.1.100
sshd: 192.168.1.0/255.255.255.0

##### To block FTP Access #####
vsftpd: 192.168.1.100
vsftpd: 192.168.1.0/255.255.255.0

ファイルを保存して終了します。

ここで、sshd および vsftpd サービスを再起動して、新しい変更を有効にします。

--------------- For SSH Service ---------------
service sshd restart        [On SysVinit]
systemctl restart sshd      [On SystemD]
--------------- For FTP Service ---------------
service vsftpd restart        [On SysVinit]
systemctl restart vsftpd      [On SystemD]

次に、サーバーまたはブロックされたホストから SSH 接続を試みます。

ssh 192.168.1.150

次の出力が表示されます。

ssh_exchange_identification: read: Connection reset by peer

次に、サーバーまたはブロックされたホストから FTP を実行してみます。


ftp 192.168.1.150

次の出力が表示されます。

Connected to 192.168.1.150.
421 Service not available.

SSH および FTP サービスのブロックを解除または再度有効にするには、hosts.deny ファイルを編集してすべての行をコメント アウトし、最後に vsftpd および sshd サービスを再起動します。

結論

それは今のところすべてです。要約すると、今日は、IPTables、FirewallD、TCP ラッパーを使用して特定の IP アドレスとネットワーク範囲をブロックする方法を学びました。これらの方法は非常に簡単で簡単です。

初心者の Linux 管理者でも、これは数分で実行できます。 SSH および FTP アクセスをブロックする他の方法をご存知の場合は、コメント セクションでお気軽に共有してください。私たちの記事をすべてのソーシャル ネットワークで共有することを忘れないでください。