1.アカウントのセキュリティ管理
ユーザーアカウントは、コンピューターユーザーのIDまたはIDです。システムリソースにアクセスする場合は、ユーザーアカウントを使用してコンピューターにアクセスする必要があります。Linuxシステムでは、ユーザーアカウントを適切かつ安全に使用するために、さまざまなメカニズムが提供されています。
1.1システムアカウントのクリーンアップ
- ログインしていないユーザーのシェルを/ sbin / nologinまたは/ bin / falshに設定します
usermod -s /sbin/nologin 用户名
- 長期間使用されていないアカウントをロックする
usermod -L 用户名 锁定用户账户
passwd -l 用户名 锁定用户密码
passwd -S 用户名 查看用户状态
- 不要なアカウントを削除する
userdel [-r] 用户名 删除用户-r宿主目录一起删除
- アカウントファイルをロックするpasswd、shadow
chattr +i /etc/passwd /etc/shadow 锁定文件
lsattr /etc/passwd /etc/shadow 查看文件状态
chattr -i /etc/passwd /etc/shadow 解锁文件
- chattrコマンドの使用法
1。「+」:元のパラメーター設定に基づいてパラメーターを追加します。
2。「-」:元のパラメータ設定に基づいてパラメータを削除します。
3。 "=";指定されたパラメータ設定に更新します。
“A”:文件或目录的atime(access time)不可被修改(modified),可以有效预防例如手提电脑,磁盘I/O错误的发生;
“S”:硬盘I/O同步选项,功能类似sync;
“a”:即append,设定参数后,只能向文件中添加数据,而不能删除,多用来服务器日志文件安全,只有root才能设定这个属性;
“c”,即compresse,设定文件是否经压缩后再存储,读取时需要经过自动解压操作;
“d”:即no dump 设定文件不能成为dump程序的备份目标;
“i”:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对文件系统的安全设置有很大帮助;
“j”:即journal,设定此参数使得当通过mount参数:data=ordered或者data=writeback挂载的文件系统,文件在写入时会被记录(在journal中)。如果filesystem被设定参数为data=journal,则该参数自动失效;
“s”:保密性地删除文件或者目录,即硬盘空间被全部收回;
“u”:与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion。
各パラメータオプションで一般的に使用されるのは「a」と「i」です。「a」オプションの強制は追加のみが可能で、削除はできません。これは主にロギングシステムのセキュリティ設定に使用されますが、「i」はより厳格なセキュリティ設定であり、スーパーユーザー(root)またはCAP_Linux_IMMUYABLE処理機能を備えたプロセス(識別)オプション。
1.2パスワードセキュリティ管理
安全でないネットワーク環境では、パスワードの推測やブルートフォースクラッキングのリスクを軽減するために、ユーザーはパスワードを定期的に変更して、同じパスワードを長期間使用しないようにする習慣を身に付けます。管理者は、サーバー側でユーザーのパスワードの最大有効日数を制限できます。パスワードの有効期限が切れているユーザーの場合、ログイン時にパスワードをリセットするように求められます。そうしないと、ログインが拒否されます。
1.2.1パスワードの有効期間の設定
方法一:修改密码配置文件适用于新建用户
vim /etc/login.defs
……
PASS_MAX_DAYS 30
方法二:适用于已有用户
[root@localhost ~]# chage -M 30 用户
[root@localhost ~]# cat /etc/shadow | grep 用户
方法1:
[root@localhost c7-1]#vi /etc/login.defs
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail
#MAIL_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999 // 系统默认99999 ,永久
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
方法2のデモンストレーション:
1.2.2ユーザーに次回ログイン時にパスワードの変更を要求する
chage -d 0 lisi 强制在下次登陆时更改密码
cat /etc/shadow | grep 用户 shadow文件中的第三个字段被修改为0
1.2.3コマンド履歴の制限
- 記録されるコマンドの数を減らす
[root@localhost ~]# vi /etc/profile #编辑profile文件
export HISTSIZE=30 #保存30条历史记录
[root@localhost ~]# source /etc/profile #执行一次配置文件,让配置文件生效
- ログイン時にコマンド履歴を自動的にクリアする
[root@localhost ~]#vi ~/.bashrc
echo " " > ~/.bash_history
再起動後、前のコマンドがすべて空になっていることがわかります
1.2.4端末の自動ログアウト
- 600秒間操作がないと、自動的にログアウトします
vim /etc/profile #编辑profile文件
export TMOUT=600 #设定时间600秒
[root@localhost ~]# source /etc/profile #调用配置文件
2.ユーザーの切り替えと特権の昇格
ほとんどのLinuxサーバーは、ユーザーがrootユーザーとして直接ログインすることを推奨していません。誤操作による被害を大幅に軽減すると同時に、安全でないネットワークで特権パスワードが漏洩するリスクを軽減します。これらの理由から、通常のユーザーが必要に応じて管理タスクを実行できるように、ID切り替えまたは特権昇格メカニズムを提供する必要があります。
Linuxシステムはsuとsudoの2つのコマンドを提供します。suコマンドは主にユーザーを切り替えるために使用され、sudoコマンドは実行権限を高めるために使用されます。
2.1suコマンドを使用してユーザーを切り替えます
1)目的と使用法
作用:切换用户
格式:su [-] 目标用户 #带“-”表示使用目标用户的登录shell环境,不加环境变量不变。
可登录的用户一般分两种种,超级用户root、普通用户。
当root切换到任意的用户时,不需要密码。
但当普通用户切换其他用户的时候,需要输入目标用户的密码进行验证。
2)suコマンドを使用するユーザーを制限する
ステップ1:suコマンドの使用を許可されているユーザーをホイールグループに追加する
gpasswd -a 用户 wheel #添加用户到wheel组中
grep wheel /etc/group #确定wheel组成员
ステップ2:/etc/pam.d/su認証構成を変更して、pam_wheel認証を有効にします
vim /etc/pam.d/su #编辑/etc/pam.d/su文件
auth sufficient pam_rootok.so
#pam_rootok.so模块的主要作用是使uid为0的用户root能够直接通过认证而不用输入密码
... #省略部分
auth required pam_wheel.so use_uid
#pam_wheel.so作用是让wheel组内的用户使用su命令,其他人(包括root)无法使用su命令
每种状态的解释:
两行都注释:所有用户都能使用su命令,切换时root和普通用户都需要密码验证
开启第二行,注释第六行:(默认状态)允许所有用户间使用su命令进行切换的,切换时,root不需要密码,其他用户需要密码。
注释第二行,开启第六行:只有wheel组内的用户才能使用su命令,root用户也无法切换。
两行都开启:只有root用户和wheel组内的用户才可以使用su命令。
例:ドキュメントを変更して、コマンドの前のコメント「#」を削除し、「wq」で保存し
ます。3)su操作の記録を表示します。/var/log/secureはsu
のセキュリティログであり、切り替え操作です。 suコマンドを使用しているユーザーが記録されるので、このファイルをチェックして記録を確認できます。
例:cat /var/log/secure
/ var / log / secureファイルを表示する
2.2PAMセキュリティ認証
- Linux-PAMは、Linuxのプラグ可能な認証モジュールであり、カスタマイズ可能で動的にロード可能な共有ライブラリのセットであるため、ローカルシステム管理者はプログラムの認証方法を自由に選択できます。
デフォルトでは、すべてのユーザーがsuコマンドの使用を許可されており、他のユーザー(rootなど)のログインパスワードを繰り返し試す機会があります。これにより、セキュリティリスクが発生します。 - suコマンドの使用の制御を強化するために、PAM認証モジュールを使用して、ごく少数のユーザーのみがsuコマンドを使用して切り替えることができるようにすることができます。
1)PAMとその役割
PAMは、Linuxのプラグ可能な認証モジュールであり、カスタマイズ可能で動的にロード可能な共有ライブラリのセットです。システム管理者は、PAM構成ファイルを介してプログラムの認証方法を自由に選択できます。
PAM構成ファイルは/etc/pam.dディレクトリーにあり、CentOS7のローカル認証モジュールは/ lib64 / securityにあります。それらが何であるかを知りたい場合は、lsを使用して表示できます。
2)PAM認証の原則
- 通常、
サービス(サービス)—> PAM(構成ファイル)—> pam _ *。soの順序に従います。 - PAMは、最初にどのサービスを決定し、次に対応するPAM構成ファイルをロードし、最後にセキュリティ認証のためにPAM認証モジュールを呼び出します。
- ユーザーがサーバーにアクセスすると、サーバーの特定のサービスプログラムが、認証のためにユーザーの要求をPAMモジュールに送信します。
- 同じアプリケーションに対応するPAMモジュールも異なります
如果想查看某个程序是否支持 PAM 认证,可以用 ls 命令进行查看/etc/pam.d/。
示例:查看su是否支持PAM模块认证
ls /etc/pam.d | grep su
3)PAM認証の構成
- 各行は独立した認証とプロセスであり、PAMモジュールによって上から下に順番に呼び出されます
- 各行には、認証タイプ、制御タイプ、PAMモジュール、PAMモジュールパラメーターの3つのパーティションがあります。
ログイン構成ファイルを表示するには、最初にcd /etc/pam.d/、lsで使用可能なパーティションを確認し、catが1つを選択します。
各パーティションの説明
最初の列:PAMには、4つの異なるタスクを表す次の4つのモジュールタイプがあります。
認証モジュールタイプ | 効果 |
---|---|
auth | ユーザーのIDを特定し、パスワードの入力を求められたら、それがrootかどうかを判断します。 |
アカウント | システムへのログインが許可されているかどうか、アカウントの有効期限が切れているかどうか、ユーザーの最大数に達しているかどうかなど、アカウントのさまざまな属性を確認してください。 |
パスワード | ユーザー情報を使用して、ユーザーパスワードの変更など、データを更新します。 |
セッション | ログイン接続情報、ユーザーデータの開閉、ファイルシステムのマウントなど、ログイン前とログアウト後に実行するセッション運用管理を定義します。 |
2番目の列:PAMは、制御タイプを使用して、各モジュールの戻り値を処理および判断します。
コントロールタイプ | 効果 |
---|---|
必須 | 成功値を返す必要があります。失敗した場合、失敗の結果はすぐには返されませんが、同じタイプの次の検証が続行されます。このタイプのすべてのモジュールが実行された後、失敗が返されます。回線と関連するモジュールの成功は、ユーザーが認証に合格するための必要条件です。 |
必要条件 | requiredと同様ですが、このモジュールが失敗を返すと、すぐに戻り、このタイプが失敗したことを示します。 |
十分 | このモジュールが成功を返す場合、後続の検証に関係なく、プログラムに直接成功を返し、検証に合格したことを示します。戻りが失敗した場合は、オプションと見なすことができます。(注意して使用してください) |
オプション | 成功したかどうかは返されません。通常、検証には使用されませんが、情報のみが表示されます(通常はセッションタイプに使用されます)。成功か失敗かに関係なく、次のモジュールの検証を続けてください。このモジュールのサービスも利用できます。 |
含める | 検証プロセス中に他のPAM構成ファイルが呼び出されることを示します。たとえば、多くのアプリケーションは、構成項目を1つずつ書き直すことなく、/ etc / pam.d / system-auth(主にユーザーのログインシステムの認証を担当)を完全に呼び出すことによって認証を実装します。 |
3番目の列はPAMモジュールを表します。
-
デフォルトは/ lib64 / security /ディレクトリにあります。デフォルトのパスにない場合は、絶対パスを入力してください
-
同じモジュールが異なるモジュールタイプで表示される可能性があり、異なるタイプで異なる操作を実行します。これは、各モジュールが異なるモジュールタイプに対して異なる実行関数を持っているためです
。4番目の列はPAMモジュールを表します。パラメータ: -
使用するモジュールに応じて追加します
-
モジュールに渡されるパラメーター。スペースで区切って複数のパラメーターを指定できます。
4)コントロールマークの補足説明
- 必須:回線と関連するモジュールの成功が、ユーザーが認証に合格するための[必要条件]であることを示します。つまり、アプリケーションプログラムに対応する必要なモジュールがすべて成功した場合にのみ、プログラムは認証に合格できます。同時に、必要なマークが付いたモジュールにエラーがある場合、PAMはエラーメッセージをアプリケーションプログラムにすぐに返しませんが、このタイプのすべてのモジュールが呼び出された後、それを呼び出したプログラムにエラーメッセージを返します。
とにかく率直に言って、このタイプのすべてのモジュールは一度実行する必要があります。モジュールのいずれかが検証に失敗した場合、検証は続行され、実行の完了後にエラーメッセージが返されます。これの目的は、ユーザーが拒否されたモジュールを知らないようにし、システムサービスを隠された方法で保護することです。ファイアウォールルールを設定する場合と同様に、拒否ルールはドロップするように設定されているため、ユーザーは、ネットワークへのアクセスに失敗したときに、拒否されたのか、ターゲットネットワークに到達できないのかを正確に判断できません。 - 必要条件:必須と同様に、このマークが付いたモジュールが正常に戻った後でのみ、ユーザーは認証に合格できます。違いは、失敗すると、ヒープ内で背後にある他のモジュールを実行しなくなり、認証プロセスがここで終了し、エラーメッセージがすぐに返されることです。上記の要件と比較して、よりオープンで公平なようです。
- 十分:回線と関連するモジュールの検証が成功したことは、ユーザーが認証に合格するための[十分条件]であることを示します。つまり、十分とマークされたモジュールが正常に検証されている限り、PAMは他のモジュールを試すことなく、すぐに正常な結果をアプリケーションに返します。後続のカスケードモジュールで必須または必須の制御フラグが使用されている場合でも、同じです。十分とマークされたモジュールに障害が発生した場合、十分なモジュールはオプションとして扱われます。したがって、検証が正しく実行されない場合、十分なフラグビットを持つ構成アイテムは不公平になり、検証全体が失敗しますが、検証が成功すると、ドアが開かれます。したがって、この制御ビットの使用には注意が必要です。
- オプション:行に含まれるモジュールの検証が失敗した場合でも、ユーザーは認証に合格できることを意味します。PAMシステムでは、このマークが付いたモジュールは、障害が発生した後も次のモジュールの処理を続行します。つまり、銀行が指定したモジュールの検証に失敗しても、ユーザーはアプリケーションが提供するサービスを楽しむことができます。このフラグを使用すると、PAMフレームワークは、このモジュールによって生成された検証エラーを無視し、次のカスケードされたモジュールを順番に実行し続けます。
5)PAMセキュリティ認証プロセス
1.必要な検証が失敗した場合は続行されますが、失敗が返されます
。2 。必要な検証が失敗した場合は、検証プロセス全体がすぐに終了します。失敗
が返されます。3。十分な検証が成功した場合は、すぐに戻り、続行しません。それ以外の場合は、結果を無視して続行します
。4。オプションは検証には使用されません。、情報の表示のみ(通常はセッションタイプに使用されます)
3.スイッチマシンの安全性
3.1BIOSブート設定を調整する
(1)最初の起動デバイスを現在のシステムが配置されているハードディスクに設定します。
(2)他の機器(CD-ROM、U-disk、ネットワーク)からシステムを起動し、対応する項目を「無効」に設定することは禁止されています。
(3)セキュリティレベルを設定して設定し、管理者パスワードを設定します。
3.2GRUBの制限
grub2-mkpasswd-pbkdf2 #使用grub2-mkpasswd-pbkdf2生成密钥
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
cp /etc/grub.d/00_header /etc/grub.d/00_header.bak
vim /etc/grub.d/00_header #修改/etc/grub.d/00_header文件,添加密码记录
cat << EOF
set superusers="root" #设置用户名为root
password_pbkdf2 root grub.pbkdf2…… #设置密码,省略部分内容为经过加密生成的密码字符串
EOF
grub2-mkconfig -o /boot/grub2/grub.cfg #生成新的 grub.cfg 文件
1
2
3
4
5
6
7
8
9
10
11
12
在linux系统重启时,看最下面有一行,按“e”可以进入grub菜单。
grubメニューに入った後、誰でもgrubブートパラメータを変更できます。これは大きな隠れた危険であるため、制限を追加するにはgrupが必要です。GRUBメニューにはパスワードを設定でき、正しいパスワードのみがブートパラメータの変更を許可されます。
(1)grub2-mkpasswd-pbkdf2を使用してキーを生成します
grub2-mkpasswd-pbkdf2
パスワードを2回入力し、入力したパスワードに基づいてキーを生成する必要があります
。2)/etc/grub.d/00_headerファイルを変更し、パスワードレコードを追加します。
問題を防ぎ、復元するために、ファイルを変更する前にファイルをバックアップします。それ。ここでは、3番目のステップのgrup.cfgが一緒にバックアップされます。
3)新しいgrub.cfg構成ファイルを生成します
。4)システムのinit 6を再起動し、対応するインターフェースで「e」を押すと、次のインターフェースがポップアップします。grubメニューに入るプロンプトに従って、ユーザー名とパスワードを入力します。
4.ターミナルログインセキュリティ制御
1.rootを制限して安全な端末にのみログインする
- 安全な端末構成:/ etc / securetty
[root@localhost ~]# vim /etc/securetty
#tty5 #禁止root用户从终端tty5,tty6登录
#tty6
2.一般ユーザーのログインを禁止する
/ etc / nologinファイルを作成する
か、nologinファイルを削除するか、再起動すると、通常の状態に戻ります。
touch /etc/nologin #禁止普通用户登录
rm -rf /etc/nologin #取消登录限制