この記事では、次のアクションを実行してサーバーへのSSHアクセスを保護する方法について説明します。
- 許可構成で特定のIPアドレスへのログイン試行を防止する
- 制限付き構成で特定のIPアドレスへのアクセスを許可する
許容構成では、拒否されたIPアドレスを除くすべてのユーザーにアクセスできます。次の方法で、特定のIPアドレスへのアクセスを拒否できます。
TCPラッパー
この構成は、ファイル /etc/hosts.denyで行います。 次のルールを追加することにより:
# vi /etc/host.deny
次のいずれかの方法で拒否ルールを設定します。
sshd: Bad_IP_address
sshd: 192.168.0.8
sshd: Bad_Segment/CIDR
sshd: 192.168.0.0/24
sshd: Bad_IP_address, Bad_IP_address
sshd: 192.168.0.3, 192.168.0.4
この構成は、OSファイアウォールルールの構成に含まれています。
# iptables -A INPUT -s "BAD_IP" -p tcp --dport SSH_Port -j DROP
IPアドレスをブロックする :
# iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j DROP
セグメントをブロックする :
# iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j DROP
この構成では、特定のIPアドレスにのみアクセスでき、他の着信トラフィックはドロップされます。
TCPラッパー
まず、 /etc/hosts.denyでSSHに着信するすべてのトラフィックを拒否します ファイル:
# vi /etc/hosts.deny
sshd: ALL
次に、信頼できるIPアドレスへのアクセスを許可します。
# vi /etc/hosts.allow
sshd: Trusted_IP_address
sshd: 192.168.0.8
sshd: Trusted_Segment/CIDR
sshd: 192.168.0.0/24
sshd: Trusted_IP_address, Trusted_IP_address
sshd: 192.168.0.3, 192.168.0.4
IPテーブルの場合、ルールを配置する順序は非常に重要です。そのため、最初に許可ルールを構成し、次に拒否ルールを構成する必要があります。
# iptables -A INPUT --source Trusted_IP -p tcp --dport SSH_PORT -j ACCEPT
IPからのトラフィックの受け入れ:
# iptables -A INPUT --source 192.168.0.8 -p tcp --dport 22 -j ACCEPT
セグメントからのトラフィックの受け入れ:
# iptables -A INPUT --source 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT
ブロックルールの設定:
iptables -A INPUT -p tcp --dport 22 -j DROP
制限的または許容的な構成に応じて、次のコマンドを実行することにより、変更を確認できます。
# cat /etc/hosts.deny
# cat /etc/hosts.allow
# iptables -L
注: 一部のディストリビューションには、デフォルトのファイアウォールソフトウェア(Define®およびUbuntu®オペレーティングシステム用のUFWおよび派生型、RedHat®EnterpriseLinux®7用のFirewalledなど)が含まれています。
特定のIP、ポート番号、プロトコルを拒否するようにufwを設定します
TCPポート22へのIPアドレスをブロックする場合:
# ufw deny proto tcp from 192.168.0.8 to any port 22
サブネットをブロックする場合:
# ufw deny proto tcp from 192.168.0.0/24 to any port 22
構成されたルールを一覧表示するには:
# ufw status numbered
特定のIPアドレス、ポート番号、プロトコルを拒否するようにfirewalldを設定します
Firewalldでは、IPアドレスまたはセグメントを禁止できますが、いかなる種類の接続も許可されません:
IPアドレスをブロックする:
# firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.0.8' reject"
セグメントをブロックする:
# firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.0.0/24' reject"
そのため、SSHポートに接続するために信頼できるIPアドレスをホワイトリストに登録することを選択する場合があります。
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.20" port protocol="tcp" port="22" accept'
Firewalld構成をリロードする必要があります:
# firewall-cmd --reload
ファイアウォールで構成されているルールを一覧表示します:
# firewall-cmd --list-all