Linux / CentOSサーバーセキュリティ構成一般ガイド

Linuxはオープンシステムです。インターネット上には多くの既製のプログラムやツールがあります。Linuxシステムに忍び込んだりLinuxを盗んだりするプログラムやツールを簡単に見つけることができるため、ユーザーだけでなくハッカーにとっても便利です。システムに関する重要な情報。ただし、Linuxのさまざまなシステム機能を注意深く設定し、必要なセキュリティ対策を追加しない限り、ハッカーはそれを利用できません。

一般的に、Linuxシステムのセキュリティ設定には、不要なサービスのキャンセル、リモートアクセスの制限、重要な情報の非表示、セキュリティの脆弱性へのパッチ適用、セキュリティツールの使用、および定期的なセキュリティチェックが含まれます。

この記事は、参照できる実用的な操作です。IPスプーフィングなどの原則は含まれておらず、数行のコマンドでセキュリティの問題を防ぐことはできません。

これはLinuxシステムの基本的なセキュリティ強化方法であり、新しいコンテンツは後で追加されます。

注:次のような変更を行う前に、すべてのファイルをバックアップする必要があります。

cp /etc/passwd{,.dist}

1. Linuxは未使用のユーザーを無効にします

注:直接削除することはお勧めしません。ユーザーが必要な場合は、自分で追加するのが面倒です。 usermod-Lまたは passwd -luserでロックすることもできます。

変更前のcp / etc / passwd {、。bak}バックアップ

vi / etc / passwdユーザーを編集し、この行のコメントの前に#を追加します

注釈付きユーザー名:

# cat /etc/passwd|grep ^#
# adm:x:3:4:adm:/var/adm:/sbin/nologin
# lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
# shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
# halt:x:7:0:halt:/sbin:/sbin/halt
# uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
# operator:x:11:0:operator:/root:/sbin/nologin
# games:x:12:100:games:/usr/games:/sbin/nologin
# gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
# ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
# nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
# postfix:x:89:89::/var/spool/postfix:/sbin/nologin

Linuxコメントグループ:

# cat /etc/group|grep ^#
# adm:x:4:adm,daemon
# lp:x:7:daemon
# uucp:x:14:
# games:x:20:
# gopher:x:30:
# video:x:39:
# dip:x:40:
# ftp:x:50:
# audio:x:63:
# floppy:x:19:
# postfix:x:89:

2. Linuxは未使用のサービスをシャットダウンします

# chkconfig --list |grep '3:on'

会社のメールサーバーを使用したメールサービス:

service postfix stop
chkconfig postfix --level 2345 off

サーバーには役に立たない一般的なunix印刷サービス:

service cups stop
chkconfig cups --level 2345 off

ラップトップで一般的に使用される、電力を節約するためにcpu速度を調整します。

service cpuspeed stop
chkconfig cpuspeed --level 2345 off

Bluetoothワイヤレス通信はサーバーには役に立ちません。

service bluetooth stop
chkconfig bluetooth --level 2345 off

システムのインストール後、システムを初めて起動した後の初期設定は役に立ちません。

service firstboot stop
chkconfig firstboot --level 2345 off

Linuxはnfsサービスとクライアントを閉じます。

service netfs stop
chkconfig netfs --level 2345 off
service nfslock stop
chkconfig nfslock --level 2345 off

特定のサービスを復元する場合は、次の操作を実行できます。

service acpid start && chkconfig acpid on

セットアップツールを使用して設定することもできます

3. LinuxはIPV6を無効にします

IPv6は、IPv4アドレスの枯渇の問題を解決するためのものですが、サーバーでは通常使用しません。逆に、IPv6を無効にすると、ネットワークが高速化されるだけでなく、管理オーバーヘッドが削減され、セキュリティレベルが向上します。次の手順では、CentOSでipv6を完全に無効にします。

Linuxは、IPv6モジュールのロードを禁止しています。

システムがipv6関連モジュールをロードしないようにするには、これには modprobe関連の構成ファイルを変更する必要があります。管理の便宜のために、次の内容の新しい構成ファイル / etc / modprobe.d / ipv6off.confを作成します。

alias net-pf-10 off
options ipv6 disable=1

Linuxは、IPv6ベースのネットワークを無効にして、開始がトリガーされないようにします。

# vi /etc/sysconfig/network
NETWORKING_IPV6=no

Linuxは、ネットワークカードのIPv6設定を無効にして、IPv4モードでのみ実行されるようにします。

# vi /etc/sysconfig/network-scripts/ifcfg-eth0
IPV6INIT=no
IPV6_AUTOCONF=no

Linux close ip6tables:

# chkconfig ip6tables off

システムを再起動し、有効になることを確認します。

# lsmod | grep ipv6
# ifconfig | grep -i inet6

出力がない場合、IPv6モジュールは無効になっています。それ以外の場合は、有効になっています。

4. Linuxiptablesルール

Linuxファイアウォールを有効にして、不正なプログラムアクセスを禁止します。 iptableルールを使用して、インバウンド、アウトバウンド、および転送されたパケットをフィルタリングします。送信元アドレスと宛先アドレスの特定のudp / tcpポートへのアクセスを許可および拒否できます。

ファイアウォール設定ルールについては、ブログ投稿iptables設定例を参照してください。

5. LinuxSSHセキュリティ

可能であれば、最初にsshのデフォルトポート22を変更します。20002などのより大きなポートに変更すると、安全係数が大幅に向上し、sshがログインをクラックする可能性が低くなります。

crmやシステム管理ユーザーsysmgrなどの認識可能なアプリケーションユーザーを作成します

# useradd crm -d /apps/crm
# passwd crm

# useradd sysmgr
# passwd sysmgr

5.1 Linuxでは、wheelユーザーグループのユーザーsuのみが切り替えることができます

# usermod -G wheel sysmgr

# vi /etc/pam.d/su
# Uncomment the following line to require a user to be in the "wheel" group.
auth      required    pam_wheel.so use_uid

他のユーザーがrootに切り替えると、正しいパスワードを入力してもsu:不正なパスワードが表示されます。

5.2 Linuxログインタイムアウト

ユーザーが何も操作せずに5分間オンラインになっている場合、接続は時間外になり、切断されます。/etc/profileに追加します。

export TMOUT=300
readonly TMOUT

5.3 Linuxはルート直接リモートログインを禁止しています

# vi /etc/ssh/sshd_config
PermitRootLogin no

5.4 Linuxは、失敗したログインとロックの数を制限します

/ etc / pam.d / loginの後に追加します

auth required pam_tally2.so deny=6 unlock_time=180 even_deny_root root_unlock_time=180

ログインに5回失敗し、180秒間ロックされました。必要に応じてrootを含めるかどうかを設定します。

5.5 LinuxログインIPの制限

(固定IPまたはIPセグメントにバインドされているため、まだ設定されていません)

より厳密な制限は、sshd_configでsshを許可するユーザーとソースIPを定義することです。

## allowed ssh users sysmgr
AllowUsers [email protected].*
またはtcpwrapperを使用します:

vi /etc/hosts.deny
sshd:all
vi /etc/hosts.allow
sshd:172.29.73.23
sshd:172.29.73.

6. Linux構成は、キーファイルでのみログインできます

通常の単純なパスワード認証の代わりにキーファイルを使用すると、セキュリティも大幅に向上します。

[ dir@username ~]$ ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key(/root/.ssh/id_rsa)://デフォルトのパス、Enterキーを押します
Enter passphrase(empty for no passphrase)://ログイン時に使用するキーフレーズを入力してください
Enter same passphrase again: 
Your identification has been saved in/root/.ssh/id_rsa.
Your public key has been saved in/root/.ssh/id_rsa.pub.
The key fingerprint is:
3 e:fd:fc:e5:d3:22:86:8e:2c:4b:a7:3d:92:18:9f:64 [email protected]
The key's randomart image is:+--[ RSA 2048]----+||
…
| o++o..oo..o|+-----------------+

公開キーの名前をauthorized_keyに変更します。

$ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
$ chmod 600~/.ssh/authorized_keys

秘密鍵ファイルid_rsaをローカルにダウンロードし(識別を容易にするために、名前をhostname_username_id_rsaに変更できます)、安全な場所に保存します。今後、ユーザー名ユーザーはこの秘密鍵を使用して、パスフレーズを使用してこのホストにログインする必要があります(ユーザー名ユーザー自身のパスワードは使用されなくなります)

/ etc / ssh / sshd_configファイルも変更します

コメントを開く

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile   .ssh/authorized_keys

sshキーファイルを使用してログインするには、ユーザー名user(他のユーザー、特にrootに切り替えることができます)が必要ですが、他の通常のユーザーはパスワードを使用して直接ログインできます。したがって、sshd_configファイルの最後に次を追加する必要があります。

Match User itsection
 PasswordAuthentication no

sshdサービスを再起動します

# service sshd restart

別の注意点として、この公開鍵と秘密鍵のペアは別のマシンに別々に保存する必要があります。サーバーで公開鍵を紛失したり、接続側で秘密鍵(またはキーフレーズ)を紛失したりすると、サーバーにログインしてルート権限を取得できなくなる可能性があります。

7. Linuxは履歴コマンドレコードを削減します

実行された履歴コマンドの記録が多いほど、メンテナンスにある程度の利便性がもたらされますが、セキュリティの問題も伴います。

vi /etc/profile

HISTSIZE = 1000を見つけて、 HISTSIZE = 50に変更します。

または、終了するたびに history、history-cをクリーンアップします

8. Linuxで強化された特別なファイルのアクセス許可

次のファイルに変更できない属性を追加して、権限のないユーザーが権限を取得するのを防ぎます

chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow
chattr +i /etc/services #システムサービスポートリストファイルをロックして、サービスの不正な削除または追加を防止します
chattr +i /etc/pam.d/su
chattr +i /etc/ssh/sshd_config

ファイル属性を表示する

lsattr /etc/passwd /etc/shadow /etc/services /etc/ssh/sshd_config

注:上記のchattr権限の変更を実行した後は、ユーザーを追加または削除することはできません。

ユーザーを追加または削除する場合は、最初に上記の設定をキャンセルしてから、ユーザーの追加と削除後に上記の操作(読み取り専用権限 chattr -i / etc / passwdのキャンセルなど)を実行する必要があります。 (読み取り専用をリセットすることを忘れないでください)

9. Linuxは一般的なネットワーク攻撃を防ぎます

数行の設定ではネットワーク攻撃を回避することはできません。以下は、攻撃の可能性を最小限に抑え、攻撃の難易度を上げるための簡単な方法ですが、完全に防ぐことはできません。

9.1 Linuxはpingを禁止しています

pingの防止誰もシステムにpingを送信できない場合、セキュリティが自然に向上し、pingの洪水を効果的に防止できます。このために、次の行を/etc/rc.d/rc.localファイルに追加できます。

# echo 1>/proc/sys/net/ipv4/icmp_echo_ignore_all

または、iptableを使用してpingを禁止します。

iptables -A INPUT -p icmp --icmp-type 0-s 0/0-j DROP

他のホストへのpingは許可されていません:

iptables -A OUTPUT -p icmp --icmp-type 8-j DROP

9.2. LinuxはIPスプーフィングを防止します

/etc/host.confファイルを編集し、次の行を追加して、IPスプーフィング攻撃を防ぎます。

order hosts,bind  #名前の解釈順序
multi on      #ホストが複数のIPアドレスを持つことを許可する
nospoof on     #IPアドレスのなりすましを禁止する

9.3 LinuxはDoS攻撃を防ぎます

システムのすべてのユーザーにリソース制限を設定すると、プロセスの最大数やメモリ使用量などのDoS攻撃を防ぐことができます。
/etc/security/limits.confに次の行を追加できます。

* soft  core  0*  soft  nproc  2048*  hard  nproc  16384*  soft  nofile 1024*  hard  nofile 65536

コア0は、コアファイルの作成が禁止されていることを意味します。 nproc128は、プロセスの最大数を20に制限します。nofile64は、ユーザーが同時に開くファイルの最大数が64に制限されていることを意味します。*は、システムにログインするすべてのユーザーを意味します。ルート

次に、/ etc / pam.d / loginファイルを編集して、次の行が存在するかどうかを確認する必要があります。

session required pam_limits.so

Limits.confパラメーターの値は、特定の状況に応じて調整する必要があります。

10. Linuxは既知のセキュリティの脆弱性を修正します

Linuxでは、 udev、 heartbleed、 shellshock、 ghostなどの破壊的な脆弱性が公開されることがあります。サーバーが外部ネットワークに公開されている場合は、時間内に修正する必要があります。

11. Linuxは定期的にログセキュリティチェックを実行します

ログを専用のログサーバーに移動します。これにより、侵入者がローカルログを簡単に変更するのを防ぐことができます。以下は、一般的なlinuxのデフォルトログファイルとその使用法です。

/var/log/メッセージ-システムログまたは現在のアクティビティログを記録します。
/var/log/auth.log-ID認証ログ。
/var/log/cron-Crondログ(cronタスク)./var/log/maillog-メールサーバーログ。
/var/log/安全な認証ログ。
/var/log/wtmp履歴ログイン、ログアウト、起動、シャットダウンログ、およびlastbコマンドは、ログインに失敗したユーザーを表示できます
/var/run/utmpは現在ログインしているユーザー情報ログ、wおよびwhoコマンドの情報のソース
/var/log/yum.ログYumログ。

ログを介した侵入を確認するには、詳細な分析CentOSを参照してください。

11.1 Linuxインストールログウォッチ

Logwatchは、Perlを使用して開発されたログ分析ツールです。 Linuxログファイルを分析し、関連する処理担当者にメールを自動的に送信し、要件をカスタマイズできます。

Logwatchのメール機能は、ホストシステムに付属のメールサーバーを使用してメールを送信するため、システムは、sendmail、postfix、Qmailなどのメールサーバーをインストールする必要があります。

インストールと構成の方法については、ブログ投稿linux log Monitoringlogwatchを参照してください。

12. LinuxWebサーバーのセキュリティ

apacheやtomcatなどのサーバープログラムを構成するときにセキュリティ上の問題がある場合は、セキュリティ強化のためにドキュメントを参照できます。将来的には新しい記事を追加する時間があります。

Recommended Posts

Linux / CentOSサーバーセキュリティ構成一般ガイド