Linuxサーバ構築でセキュリティレベルを上げる設定一覧

Linuxの環境構築してますか?わたしはしてます。あまりしたくないですけど・・・。

構築するにあたって、セキュリティレベルを担保することがひとつの課題になると思います。で、【なにをどう設定すればよいのか?】

そんな方のために(筆者本人ことです)「これは設定しておきたいですね」という設定を一覧化してみましたので興味ある方はご覧ください。

注意ディストリビューションによっては利用できないコマンドなどもありますのでご了承ください。

常に最新の状態に

セキュリティパッチ、カーネルパッチは常に最新のモノを適用しましょう。

といってもこれすごく難しいですけどね。テスト環境や個人レベルのお遊び環境だったら自動アップデートを設定してしまえばよいのかもしれません。しかし、会社の本番サーバで自動アップデートは推奨できません。なぜなら、アップデートで動作しないサービスやアプリケーションが出てくる可能性があるからです。テスト環境などでまず適用してみて、問題なければ本番環境へ適用するという感じでしょうか。運用負荷が高くなるのが悩みどころです。

一人情シスにはきつい。

以下コマンドが役にたちます。

# yum updates
# yum check-update

物理システムセキュリティレベルの担保

真にセキュアなサーバ構築には、サーバの物理アクセスを保護する必要があります。

BIOSからCD/DVD、外部デバイス、フロッピーデバイスからの起動を無効にします。そして、BIOSパスワードを設定し、パスワードでGRUBを保護してシステムの物理アクセスを制限します。

FTP、Telnet、RSH、Rloginの使用はやめましょう

これらの代わりにSCP、SFTP、SSHなどのセキュアなサービスを利用しましょう。なぜなら使用をやめたほうがよいサービス群は、通信が丸見えで暗号化されていないため、多種多様な攻撃を受けるリスクがあるためです。Wiresharkなどのパケットキャプチャソフトウェアで通信を覗いてみてください。「使用は控えよう」と考えるようになるかと思います。

古いシステムを利用していると単純にサービスを止めることができないっていうこともあると思いますが、できるだけセキュアなサービスを利用するようにしたいものです。

以下コマンドが役にたちます。

# yum erase xinetd ypserv tftp-server telnet-server rsh-server

不要なパッケージは削除しましょう。ソフトウェアは最小限に

サーバに存在しているだけで脆弱性となりえます。不要なものは消してしまうのがセキュリティレベルを上げる近道です。

以下コマンドが役にたちます。

# yum list installed
# yum list packageName
# yum remove packageName

利用しないサービスは無効化する

不要なサービスとデーモンはすべて無効化します。そうすることで余計な攻撃を受けません。

以下コマンドが役にたちます。

# chkconfig –list | grep ’3:on’
# service serviceName stop
# chkconfig serviceName off

開いている不要なポートは閉じましょう

「netstat」コマンドで開いているすべてのポートと関連プログラムを表示し、「chkconfig」コマンドで不要なネットワークサービスをすべて無効にします。

以下コマンドとあわせ、前項のコマンドが役にたちます。

# netstat -tulpn

SELinuxを有効にしましょう

SELinuxを無効にするこは、Linuxからセキュリティメカニズムを削除することを意味します。有効にするべきなのです。

とはいうものの、SELinuxを有効にすることで各種サービスの設定などが難しくなるのも事実です。少し敷居は上がりますが、がんばって勉強してSELinuxを有効にしたいものです。

以下コマンドが役にたちます。

# sestatus
# setenforce enforcing

または、以下ファイルから有効/無効の設定を変えることもできます。

/etc/selinux/config

IPv6を無効にしましょう

使わないなら無効にしたほうがよいです。「不要なサービスは停止しましょう」と同じことです。LAN環境でのみ利用するサーバなのであれば、IPv6は不要なのではないでしょうか。

以下コマンドが役にたちます。

# vi /etc/sysconfig/network
NETWORKING_IPV6=no
IPV6INIT=no

Iptablesを有効にしましょう

必須です。必要な特定ポート以外はすべてブロックするような設定が望ましいです。

以下コマンドが役にたちます。

# service iptables start

/boot以下のファイルを読み取り専用にしましょう

/boot配下のカーネル関連のファイルがあり、それらは読み書き可能です。読み取り専用に変更することで不正に変更されるリスクを軽減することができます。

しかし、読み取り専用のままではカーネルアップグレードができないので、そのへんを考慮したうえで読み取り専用にするかどうかを決めたほうがよいです。

# vi /etc/fstab
Add the following line at the bottom, save and close it.
LABEL=/boot     /boot     ext2     defaults,ro     1 2

ICMPまたはブロードキャストリクエストを無視しましょう

「/etc/sysctl.conf」ファイルに次の行を追加して、pingまたはブロードキャスト要求を無視します。

Ignore ICMP request:
net.ipv4.icmp_echo_ignore_all = 1
Ignore Broadcast request:
net.ipv4.icmp_echo_ignore_broadcasts = 1

そして、以下コマンドを実行します。

# sysctl -p

Ctrl+Alt+Deleteを無効化しましょう

ディストリビューションによっては、[Ctrl+Alt+Delete]は再起動を実施するショートカットコマンドとして動作します。誤って再起動しないように少なくとも本番環境では当ショートカットを無効化することを推奨します。

以下コマンドが役に立ちます。

# Trap CTRL-ALT-DELETE
# ca::ctrlaltdel:/sbin/shutdown -t3 -r now

アカウントパスワードは強力に

可能な限り強力なパスワードを設定したいものです。

 

KDE/GNOME Desktopsは削除しましょう

X Windowを実行させる必要がなければ、セキュリティレベルとパフォーマンスを上げるためにこれらを削除または無効化します。

# yum group remove “GNOME Desktop”
# yum group remove “KDE Plasma Workspaces”
# yum group remove “Server with GUI”
# yum group remove “MATE Desktop”

スティッキービットが設定されているファイルを見つけましょう

スティッキービットは特殊なアクセス権で、ファイルの読み書きはできますが、削除は所有者しかできないというような権限です。誰でも書き込めるというのはリスクにつながりますので、以下コマンドでファイルを検索したあと、しっかり権限を設定するかファイルを削除するなどの対処を実施します。

find /dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print

所有者/グループのないファイルを検索しましょう

ユーザまたはグループが所有していないファイルは、セキュリティの問題を引き起こす可能性があります。次のコマンドでファイルを検索したあと、所有者を設定する、またはファイルを削除するなどの対処を実施します。

find /dir -xdev \( -nouser -o -nogroup \) -print

 

タイトルとURLをコピーしました