Linux はオープン システムです。インターネット上には、既成のプログラムやツールが多数存在します。これは、Linux システムに侵入したり、Linux システム上の重要な情報を盗んだりするためのプログラムやツールを簡単に見つけることができるため、ユーザーにとってもハッカーにとっても便利です。ただし、Linux のさまざまなシステム機能を慎重に設定し、必要なセキュリティ対策を講じていれば、ハッカーが悪用する機会はなくなります。 一般的に、Linux システムのセキュリティ設定には、不要なサービスのキャンセル、リモート アクセスの制限、重要なデータの非表示、セキュリティ ホールの修正、セキュリティ ツールの使用、定期的なセキュリティ チェックなどが含まれます。 この記事は参考までに実践的な操作です。IPスプーフィングなどの原理は関係ありませんし、数行のコマンドでセキュリティ上の問題を防ぐことはできません。 ここでは Linux システムにおける基本的なセキュリティ強化方法のみを紹介しており、新しいコンテンツは後で追加される予定です。 注意: 変更する前にすべてのファイルをバックアップする必要があります。 cp /etc/passwd{,.dist} 1. Linuxで未使用のユーザーを無効にする 注意: 直接削除することは推奨されません。ユーザーが必要になったときに、自分で再度追加するのは面倒です。
コメントのユーザー名: # cat /etc/passwd|grep ^# #adm:x:3:4:adm:/var/adm:/sbin/ログインなし #lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin #シャットダウン:x:6:0:シャットダウン:/sbin:/sbin/シャットダウン #停止:x:7:0:停止:/sbin:/sbin/停止 #uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin #オペレータ:x:11:0:オペレータ:/root:/sbin/nologin #games:x:12:100:games:/usr/games:/sbin/nologin #ゴーファー:x:13:30:ゴーファー:/var/ゴーファー:/sbin/nologin #ftp:x:14:50:FTP ユーザー:/var/ftp:/sbin/nologin #nfsnobody:x:65534:65534:匿名 NFS ユーザー:/var/lib/nfs:/sbin/nologin #postfix:x:89:89::/var/spool/postfix:/sbin/nologin Linux 注釈付きグループ: # cat /etc/group|grep ^# #adm:x:4:adm、デーモン #lp:x:7:デーモン #uucp:x:14: #ゲーム:x:20: #ゴーファー:x:30: #ビデオ:x:39: #ディップ:x:40: #ftp:x:50: #オーディオ:x:63: #フロッピー:x:19: #postfix:x:89: 2. Linuxは使われていないサービスをシャットダウンする # chkconfig --list |grep '3:on' 会社のメールサーバーを使用したメールサービス: サービス postfix 停止 chkconfig postfix --level 2345 オフ 汎用 Unix 印刷サービス。サーバーには役立ちません。 サービスカップが止まる chkconfig cups --level 2345 オフ 電力を節約するために CPU 速度を調整します。一般的にラップトップで使用されます。 サービスCPUスピード停止 chkconfig cpuspeed --level 2345 オフ Bluetooth ワイヤレス通信。サーバーには役立ちません。 サービス Bluetooth 停止 chkconfig bluetooth --level 2345 オフ システムのインストール後の初期設定。システムの初回起動後は役に立ちません。 サービスfirstboot停止 chkconfig firstboot --level 2345 オフ Linux は NFS サービスとクライアントをシャットダウンします: サービスnetfs停止 chkconfig netfs --level 2345 オフ サービスnfslock停止 chkconfig nfslock --level 2345 オフ サービスを復元する場合は、次の操作を実行できます。 サービス acpid 開始 && chkconfig acpid オン セットアップツールを使用して設定することもできます 3. LinuxでIPV6を無効にする IPv6 は IPv4 アドレス枯渇の問題を解決するために設計されていますが、当社のサーバーでは通常 IPv6 は使用されません。逆に、IPv6 を無効にすると、ネットワークが高速化されるだけでなく、管理オーバーヘッドが削減され、セキュリティ レベルが向上します。以下の手順では、CentOS で ipv6 を完全に無効にします。 Linux は IPv6 モジュールの読み込みを禁止しています: システムが ipv6 関連モジュールをロードしないようにするには、 エイリアス net-pf-10 オフ オプション ipv6 無効=1 Linux は IPv6 ベースのネットワークを無効にして、起動しないようにします。 # vi /etc/sysconfig/ネットワーク NETWORKING_IPV6=いいえ Linux はネットワーク カードの IPv6 設定を無効にして、IPv4 モードでのみ実行されるようにします。 # vi /etc/sysconfig/ネットワークスクリプト/ifcfg-eth0 IPV6INIT=いいえ IPV6_AUTOCONF=いいえ Linux は ip6tables をオフにします: # chkconfig ip6tables をオフにする システムを再起動して、変更が有効になっているかどうかを確認します。 # lsmod | grep ipv6 # ifconfig | grep -i inet6 出力がない場合は IPv6 モジュールが無効になっており、出力がある場合は有効になっています。 4. Linux iptablesルール 不正なプログラムによるアクセスを防ぐために Linux ファイアウォールを有効にします。 iptable ルールを使用して、受信パケット、送信パケット、転送パケットをフィルタリングします。送信元アドレスと宛先アドレスに基づいて、特定の UDP/TCP ポートへのアクセスを許可または拒否できます。 ファイアウォール設定の詳細については、ブログ投稿の iptables 設定の例を参照してください。 5. Linux SSHセキュリティ 可能であれば、まず最初に、ssh のデフォルト ポート 22 を変更します。20002 などの大きなポートに変更すると、セキュリティ要素が大幅に向上し、ssh クラッキング ログインの可能性が減少します。 crmやシステム管理ユーザーsysmgrなどの識別可能なアプリケーションユーザーを作成します。 # ユーザー追加 crm -d /apps/crm # パスワードcrm # ユーザー追加システムマネージャ # パスワード システムマネージャ 5.1 Linuxでは、wheelグループのユーザーのみがsuに切り替えることができます。 # usermod -G ホイールsysmgr # vi /etc/pam.d/su # ユーザーが「wheel」グループに所属することを要求するには、次の行のコメントを解除します。 認証が必要です pam_wheel.so use_uid 他のユーザーが root に切り替えると、正しいパスワードを入力しても、su: 不正なパスワードというプロンプトが表示されます。 5.2 Linux ログインタイムアウト ユーザーが 5 分間何も操作せずにオンラインになると、接続が切断されます。/etc/profile に以下を追加します。 エクスポート TMOUT=300 読み取り専用 TMOUT 5.3 Linuxはrootによるリモートログインを禁止している # vi /etc/ssh/sshd_config PermitRootLogin いいえ 5.4 Linuxは失敗したログインとロックの回数を制限する
ログインに5回失敗すると、システムは180秒間ロックされます。必要に応じてrootを含めるかどうかを設定できます。 5.5 Linux ログイン IP 制限 (固定IPまたはIPセグメントにバインドする必要があるため、まだ設定されていません) より厳しい制限は、sshd_config で ssh に許可されるユーザーと送信元 IP アドレスを定義することです。 ## 許可された ssh ユーザー sysmgr AllowUsers [email protected].* または、tcpwrapper を使用します。 vi /etc/hosts.deny sshd:すべて vi /etc/hosts.allow sshd:172.29.73.23 sshd:172.29.73。 6. Linuxの設定ではログインにキーファイルのみ使用可能 単純なパスワード認証の代わりにキー ファイルを使用すると、セキュリティも大幅に向上します。 [dir@ユーザー名 ~]$ ssh-keygen -t rsa -b 2048 公開/秘密 RSA キー ペアを生成しています。 キーを保存するファイル (/root/.ssh/id_rsa) を入力してください: // デフォルト パス、Enter キーを押しますパスフレーズを入力してください (パスフレーズがない場合は空白): // キー フレーズを入力します。ログイン時に使用します同じパスフレーズをもう一度入力します: あなたの識別情報は /root/.ssh/id_rsa に保存されました。 公開鍵は /root/.ssh/id_rsa.pub に保存されました。 キーのフィンガープリントは次のとおりです。 3e:fd:fc:e5:d3:22:86:8e:2c:4b:a7:3d:92:18:9f:64 ルート@ibpak.tp-link.net キーのランダムアート画像は次のとおりです。 +--[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ファイルを変更する必要があります。 注釈を開く RSA認証はい 公開鍵認証はい 承認済みキーファイル .ssh/authorized_keys ユーザー名ユーザー (他のユーザー、特に root に切り替えることができるユーザー) は ssh キー ファイルを使用してログインする必要がありますが、他の通常のユーザーはパスワードを使用して直接ログインできます。したがって、sshd_config ファイルの末尾に次のコードを追加する必要があります。 マッチユーザーitsection パスワード認証なし sshdサービスを再起動する
さらに、この公開鍵と秘密鍵のペアは、別のマシンに別々に保存する必要があることに注意してください。サーバー上の公開鍵や接続側の秘密鍵 (またはキーフレーズ) を紛失すると、サーバーにログインできなくなり、ルート権限を取得できなくなる可能性があります。 7. Linuxの履歴コマンドレコードを減らす 実行されたコマンド履歴が多ければ多いほど、ある程度はメンテナンスが容易になりますが、セキュリティ上の問題も伴います。 または 8. Linuxは特別なファイル権限を強化します 権限のないユーザーが権限を取得できないように、次のファイルに変更不可の属性を追加します。 チャット +i /etc/passwd チャット +i /etc/shadow チャット +i /etc/group チャット +i /etc/gshadow chattr +i /etc/services #システムのサービスポートリストファイルをロックして、サービスの不正な削除や追加を防止します chattr +i /etc/pam.d/su チャット +i /etc/ssh/sshd_config ファイルのプロパティを表示する lsattr /etc/passwd /etc/shadow /etc/services /etc/ssh/sshd_config 注意: 上記の chattr 権限変更を実行すると、ユーザーを追加または削除できなくなります。 再度ユーザーを追加または削除したい場合は、まず上記の設定を解除する必要があります。ユーザーの追加と削除が完了したら、読み取り専用権限の 9. Linuxは一般的なネットワーク攻撃を防ぐ サイバー攻撃は、数行の設定だけでは回避できません。以下は、攻撃の可能性を最小限に抑え、攻撃の難易度を上げるための簡単な対策ですが、完全に防ぐことはできません。 9.1 Linux の ping 禁止 ping をブロックする 誰もシステムに ping を実行できない場合、セキュリティは自然に向上し、ping フラッドを効果的に防止できます。これを行うには、/etc/rc.d/rc.local ファイルに次の行を追加します。 # エコー 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all または、iptables を使用して ping を無効にします。 iptables -A 入力 -p icmp --icmp-type 0 -s 0/0 -j ドロップ 他のホストへの ping を許可しない: iptables -A 出力 -p icmp --icmp-type 8 -j DROP 9.2. LinuxはIPスプーフィングを防止する IP スプーフィング攻撃を防ぐには、/etc/host.conf ファイルを編集して次の行を追加します。 order hosts,bind #名前の解釈 ordermulti on #ホストが複数のIPアドレスを持つことを許可するnospoof on #IPアドレスのスプーフィングを禁止する 9.3 LinuxはDoS攻撃を防ぐ DoS タイプの攻撃は、システムのすべてのユーザーに対して、プロセスの最大数やメモリ使用量などのリソース制限を設定することで防止できます。 * ソフトコア 0 * ソフト nproc 2048 * ハード nproc 16384 * ソフトノーファイル 1024 * ハードnofile 65536 core 0 はコアファイルの作成が禁止されていることを意味します。nproc 次に、/etc/pam.d/login ファイルを編集して、次の行が存在するかどうかを確認する必要があります。 10. Linuxは既知のセキュリティ脆弱性を修正 Linux では、 11. Linuxログセキュリティチェックを定期的に行う 侵入者がローカル ログを簡単に変更できないように、ログを専用のログ サーバーに移動します。以下は、一般的な Linux のデフォルトのログ ファイルとその用途です。 /var/log/message – システムログまたは現在のアクティビティログを記録します。 /var/log/auth.log – 認証ログ。 /var/log/cron – Crond ログ (cron ジョブ)。 /var/log/maillog – メール サーバーのログ。 /var/log/secure – 認証ログ。 /var/log/wtmp ログイン、ログアウト、起動、シャットダウンの履歴ログ。lastb コマンドを使用すると、ログインに失敗したユーザーを表示できます。 /var/run/utmp 現在ログインしているユーザーの情報ログ。w コマンドと who コマンドの情報はここから取得されます。 /var/log/yum.log Yum ログ。 ログを通じて侵入を阻止するには、CentOS の詳細な分析を参照してください。 11.1 Linux への logwatch のインストール
Logwatch のメール機能は、ホスト システム独自のメール サーバーを使用してメールを送信するため、システムに sendmail、postfix、Qmail などのメール サーバーをインストールする必要があります。 インストールと設定方法については、ブログ投稿「Linux ログ監視 logwatch」を参照してください。 12. Linux Webサーバーのセキュリティ Apache や Tomcat などのサーバー側プログラムを設定する際に、セキュリティ上の問題がある場合は、セキュリティ強化のためのドキュメントを参照することができます。今後時間があるときに新しい記事を追加していきます。 Linuxサーバーのセキュリティ構成ソリューションの詳細については、以下の関連記事を参照してください。 以下もご興味があるかもしれません:
|
<<: JavaScriptを使用してSMS認証コード間隔を送信する機能を実装する
>>: mysql init_connect に関するいくつかの重要なポイントの要約
導入Xiao A がコードを書いていたところ、DBA Xiao B が突然、「急いでユーザー固有情報...
購入証明書Alibaba CloudのCloud Shield証明書サービスから購入できます。証明書...
この記事では、ES6 の for ... of ループについて説明します。古い方法以前は、JavaS...
1. 現在の日付 DATE_SUB(curdate(),INTERVAL 0 DAY) を選択します...
MySQL ドキュメントでは、MySQL 変数はシステム変数とユーザー変数の 2 つのカテゴリに分類...
少し前にSQLの独学を終え、MySQL 8.0.17をダウンロードしました。インストールして設定した...
1. docker imagesを使用して、このマシン上のすべてのイメージファイルを表示します。 2...
1. Tclスクリプトファイルcircle.tclコードコメント #シミュレーションに必要なプロパテ...
私はデータベースツールとして Navicat を使用しています。他のものも同様です。 1. Navi...
目次1. 機能説明2. 親コンポーネント3. サブコンポーネント NextTick.vue 4なぜ未...
Tomcatログの関係一枚の写真は千の言葉に値する! localhost.{yyyy-MM-dd}....
現象: divを一定の振幅で円、楕円などに変更する方法: CSSのborder-radiusプロパテ...
目次1. usrディレクトリにHadoopディレクトリを作成し、インストールパッケージをそのディレク...
Zabbix サーバー環境プラットフォームバージョン: ZABBIX バージョン 4.4システム:...
1. SQL インジェクションとは何ですか? SQL インジェクションは、入力パラメータに SQL ...