LinuxでIPによるポートへのアクセスを制限する方法を教えてください。
Linuxでは、ファイアウォールを使用してポートへのIPアクセスを制限できます。一般的な方法を以下に示します。
- iptablesコマンドを利用する。iptableはLinuxでおなじみのファイアウォールツールで、それを使ってIPがポートにアクセスすることを制限できる。たとえば、192.168.0.1というIPアドレスのホストがポート22(SSH)にアクセスすることを制限するには、以下のコマンドを使用できる。
iptables -A INPUT -p tcp -s 192.168.0.1 --dport 22 -j DROP
このコマンドを使用すると、IPアドレスが192.168.0.1のホストはSSHポートにアクセスできなくなります。
- ufw コマンドを使う:ufw は Uncomplicated Firewall の略で、Ubuntu のファイアウォールツールです。192.168.0.1 の IP アドレスによるポート 22(SSH)へのアクセスを制限するには、次のコマンドを使用します:
sudo ufw deny from 192.168.0.1 to any port 22
このコマンドでは、ホストのIPアドレスが192.168.0.1である場合に、SSHポートへのアクセスを防ぎます。
- firewalldコマンドを使用します。firewalldはCentOSおよびFedora用のファイアウォールツールです。次のコマンドを使用して、IPアドレス192.168.0.1のホストによるポート22(SSH)へのアクセスを制限できます。
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.1" port protocol="tcp" port="22" reject'
sudo firewall-cmd --reload
このコマンドは、論理IPアドレスが 192.168.0.1 のマシンからのSSHポートアクセスの拒否を許可します。
なお、上の手法はあくまで例ですので、実際に運用する場合は、利用する要件やファイアウォールツール等に応じて、適宜設定を行ってください。