「エアコンの安全な修理・適切なフロン回収」はこちら「業務用エアコンエラーコード」はこちら

初期設定Ⅱ SSHサービス・ファイアウォール設定

スポンサーリンク
スポンサーリンク

Debian10インストール後の初期設定その2として次のことを設定します。

・SSHサービスのセキュリティ設定
・ファイアウォールとしてUFWの設定

スポンサーリンク

1. SSHサービスのセキュリティ設定

SSHサービスはデフォルトでrootユーザーのログインを許可しています。rootユーザーはユーザー名が既に判明しているためパスワードが判明すると、管理者権限でサーバーへログイン出来るため、これを拒否する設定を行います

1.1 一般ユーザーの作成

Debianのインストール時に一般ユーザーを作成している場合は、本手順は不要です。
サー バーに作成されているユーザーがrootのみの場合、SSHによるリモートログインが出来なくなりますので、OSのインストール時にユーザーを作成していない場合、事前にユーザーを作成する必要があります。OSのインストール時にユーザーを作成している場合は、本手順は不要です。
ユーザーの作成は”useradd”コマンドで行います。”-m”オプションでホームディレクトリの作成、”-p”オプションでパスワードを指定します。
例えばユーザーアカウント名として「debianuser」、パスワードとして「123456」を設定する場合は、以下のように実行します。

# useradd -m -p 123456 debianuser

1.2 SSHサービスの設定ファイル変更

SSHサービスの設定を変更するために設定ファイルを変更します。SSHサービスの設定ファイル は”/etc/ssh/sshd_config”になります。

# vi /etc/ssh/sshd_config

設定ファイルの46行目付近に記載がある”PermitRootLogin prohibit-password”パラメータを変更します。パラメータ”prohibit-password”はrootについてはパスワード認証を無効にするという意味合いになります。
[ファイル内容] # Authentication:
#LoginGraceTime 2m
#PermitRootLogin prohibit-password
↓ コメントアウト#を削除
PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

1.3 SSHサービスの再起動

# systemctl restart sshd

エラーが出力しなければ、再起動は完了しています。SSHクライアントで、サーバーへリモート接続を行い、接続が拒否されることを確認する。

サーバー側の認証に関するログ”/var/log/auth.log”にも以下のように接続を拒否した内容が出力されています。

# vi /var/log/auth.log
Oct 31 17:32:51 debian-10 sshd[1422]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.241.10 user=root
Oct 31 17:32:54 debian-10 sshd[1422]: Failed password for root from 192.168.241.10 port 50730 ssh2

2. ファイヤーウォールの設定

Debianでは「ufw」というソフトウェアを使ってファイアウォールを設定することが多いので、ufwを利用したファイアウォール設定を行います。
ufwはOSの導入時にはインストールされていませんので、設定を行う前にufwパッケージのインストールを行います。インストール後には最低限のフィルタ設定を行う手順を紹介します。
ufwで設定するフィルタルール
• サーバーに転送されるパケットは全て拒否
• サーバーから外部へ送信されるパケットは全て許可
• 最初に許可するポートはSSH用のポート
• サーバーに入ってくるパケットを制限

2.1 ufwパッケージのインストール

# apt install -y ufw

2.2 ufwパッケージのインストール後の確認

インストールされたパッケージを、パッケージを表示するための”dpkg”コマンドで確認

# dpkg -l | grep ufw
ii ufw 0.36-1 all program for managing a Netfilter firewall

インストールした「ufwパッケージ」が表示されました
ufwの動作状況を確認するために”systemctl status”コマンドを実行

# systemctl status ufw
● ufw.service – Uncomplicated firewall
Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:ufw(8)

ufwサービスが停止していることが「Active: inactive (dead)」と表示されていることから確認できます。

2.3 基本的なファイアウォールルールの設定

ufwを有効にするとデフォルトのファイアウォールルールが適用されます。このまま有効にするとサーバーと通信ができなくなる可能性がありますので、ufwを有効にする前に基本的なルールを設定しておきます。

2.3.1 受信パケット デフォルトルールの設定

まず受信パケットに対するルールを設定します。受信パケットは特定の通信以外、全てを拒否する形が一般的なルールになります。全ての受信パケットを基本的に拒否するように”ufw default deny incoming”を実行します。

# ufw default deny incoming
Default incoming policy changed to ‘deny’
(be sure to update your rules accordingly)

2.3.2 送信パケット デフォルトルールの設定

送信パケットは全てを許可する形が一般的なルールになります。送信パケットを基本的に許可するように”ufw default allow outgoing”を実行します。

# ufw default allow outgoing
Default outgoing policy changed to ‘allow’
(be sure to update your rules accordingly)

2.4 ufwの有効化

ufwの自動起動を有効にします。が、SSHリモート接続できなくなる可能性がありますので、先にSSH接続の許可を設定します。デフォルトのSSHポートは22です。次のコマンドで許可設定

# ufw allow ssh
# ufw reload

独自に3000ポート(例)に設定している場合は

# ufw allow 3000/tcp
# ufw reload

“ufw enable”コマンドを実行します。

# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

コマンドの実行時にSSH接続が切断される確認が表示されます。ルールでSSHを許可していますので、切断されることはありません。ここでは「y」を入力します。

スポンサーリンク

2.5 ufwの設定確認

有効後にファイアウォールに設定したルールの確認を行います。”ufw status verbose”を実行します。

# ufw status verbose
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
— —— —-
3000/tcp ALLOW IN Anywhere
3000/tcp (v6) ALLOW IN Anywhere (v6)

2.6 サーバーに入ってくるパケットを制限許可

ufwの設定で「ポート番号◯◯に来る通信を許可」としたい場合は以下のコマンド
# ufw allow [ポート番号]
逆に「ポート番号◯◯に来る通信を許可しない」としたい場合は以下のコマンド
# ufw deny [ポート番号]

2.6.1 連続してアクセスしてくるIPアドレスの接続を許可しない

先程設定したSSHポート3000を例にして説明
ssh接続は3000番ポートに変更のため、3000番への通信を許可します。
3000番ポートに対して適当なパスワードを打ち込み、偶然一致を試みてログイン出来るように連続でアクセスを試みてきます。これをブルートフォース攻撃とも言います。
これの対策として、「連続してアクセスしてくるIPアドレスの接続を許可しない」設定をします。以下のコマンドを打ちます。

# ufw limit 3000

これで「30秒間の間に6回以上接続を試みた IP アドレスを許可しない」ルールが設定されます。
設定を確認します。以下のように表示。

# ufw status
Status: active
To Action From
— —— —-
3000 LIMIT Anywhere
3000(v6) 1 LIMIT Anywhere (v6)

2.6.2 特定のネットワークからのssh接続のみ許可

上記の設定を施したとしても外部のインターネットにsshのポートを解放しているので、接続の回数に制限を設けたとしても、何らかの方法でパスワードを推測されて接続をされてしまったり、脆弱性を付いた攻撃などから接続をされてしまうことも考えられます。
そのため、sshの接続を許可するのは内部からのネットワークのみにして、外部からのssh接続は全て許可しない設定にしてしまいましょう。
例としてローカルエリアネットワーク内には「192.168.11.10」のIPアドレスが振られたホストがあります。このホストからのみssh接続を許可する。又はこのネットワーク(192.168.11.0/24)からのみssh接続を許可するように設定するには以下のようなコマンドを打ちます。

192.168.11.0/24からのssh接続を許可
# ufw allow from 192.168.11.0/24 to any port 3000

 

192.168.11.10からのssh接続を許可
# ufw allow from 192.168.11.10 to any port 3000

設定を確認してみると

192.168.11.0/24からのssh接続を許可した場合の結果
# ufw status
Status: active
To Action From
— —— —-
3000 LIMIT Anywhere
3000 ALLOW 192.168.11.0/24
3000 (v6) LIMIT Anywhere (v6)

LIMITをつけているルールを削除します。ルール番号を表示して設定を確認します。

192.168.11.0/24からのssh接続を許可した場合の結果
# ufw status numbered
Status: active
To Action From
— —— —-
[ 1] 3000 LIMIT IN Anywhere
[ 2] 3000 ALLOW IN 192.168.11.0/24
[ 3] 3000 (v6) LIMIT IN Anywhere (v6)

1と3のルールを番号を指定して削除。

192.168.11.0/24からのssh接続を許可した場合の結果
# ufw delete 1
Deleting:
limit 3000
Proceed with operation (y|n)? y
Rule deleted

2.6.3 web等その他サービスの許可

ポート番号を指定して接続を許可する方法と、アプリケーションを指定しての設定も行えます。
以下のコマンドでアプリケーションの一覧が見れます。

# vi /etc/services

たとえばWEBサービスのhttpとhttpsを有効にするには

# ufw allow http
Rule added
Rule added (v6)
# ufw allow https
Rule added
Rule added (v6)

2.6.4 ipv6のufwを無効

# vi /etc/default/ufw
IPV6=yes → IPV6=no 書き換える

すべての作業の後ファイアウオールを再起動

# systemctl restart ufw
error:Content is protected !!
タイトルとURLをコピーしました