Linuxシステムのセキュリティとアプリケーション(アカウント制御、su、sudo、スイッチマシンのセキュリティ制御、端末ログインのセキュリティ制御など)

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      解锁文件

デモ:
ここに画像の説明を挿入

2.パスワードセキュリティ管理

2.1パスワードの有効期間を設定する

方法一:修改密码配置文件适用于新建用户
vim /etc/login.defs     
……
PASS_MAX_DAYS 30
方法二:适用于已有用户
[root@localhost ~]# chage -M 30 用户
[root@localhost ~]# cat /etc/shadow | grep 用户

方法1のデモンストレーション:
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
方法2のデモンストレーション:
ここに画像の説明を挿入

2.2ユーザーが次にログインするときにパスワードを変更するようにユーザーに要求する

chage -d 0 lisi                    强制在下次登陆时更改密码               
cat /etc/shadow | grep 用户        shadow文件中的第三个字段被修改为0

デモ:
ここに画像の説明を挿入
ここに画像の説明を挿入

3.コマンド履歴の制限

  • 記録されるコマンドの数を減らす
[root@localhost ~]# vim /etc/profile           #编辑profile文件    
 export HISTSIZE=20                            #保存20条历史记录
[root@localhost ~]# source /etc/profile        #执行一次配置文件,让配置文件生效

デモ:
ここに画像の説明を挿入
ここに画像の説明を挿入

  • ログイン時にコマンド履歴を自動的にクリアする
[root@localhost ~]#vi ~/.bashrc
 echo " " > ~/.bash_history    

デモ:
ここに画像の説明を挿入
再起動後、前のコマンドがすべてクリアされていることがわかります
ここに画像の説明を挿入

4.端末は自動的にログアウトされます

  • 600秒間操作がないと、自動的にログアウトします
vim /etc/profile                #编辑profile文件
export TMOUT=600                #设定时间600[root@localhost ~]# source /etc/profile    #调用配置文件

ここに画像の説明を挿入

二、su命令

1.suコマンドを使用してユーザーを切り替えます

■目的と使用法

  • 目的:ユーザーの代替、ユーザーの切り替え
  • su-targetユーザーをフォーマットします

■パスワード確認

  • root→任意のユーザー、パスワード検証なし
  • 通常のユーザー→他のユーザー、対象ユーザーのパスワードを確認してください
[root@localhost ~]$ su - root     带-选项表示将使用目标用户的登陆Shell环境
口令:
[root@localhost ~]# whoami
 root

2.ユーザーがsuコマンドを使用することを禁止します

ステップ1:suコマンドの使用を許可されたユーザーをホイールグループに追加します

gpasswd -a 用户 wheel    #添加用户到wheel组中
grep wheel /etc/group    #确定wheel组成员

ここに画像の説明を挿入
手順2:pam_wheel認証モジュールを有効にします。/etc/pam.d/su
ファイルに設定して、ユーザーがsuコマンドを使用できないようにします

在/etc/pam.d/su文件里设置禁止用户使用su命令
vim /etc/pam.d/su                            编辑/etc/pam.d/su文件
2  // auth sufficient pam_rootok.so  

...      
6  // #auth required pam_wheel.so use_uid          #去掉此行开头的注释
...

【1】以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的。

【2】两行都注释也是允许所有用户都能使用su命令,但root下使用su切换到其他普通用户需要输入密码;
如果第一行不注释,则root使用su切换普通用户就不需要输入密码
(pam_rootok.so模块的主要作用是使uid为0的用户,即 root用户能够直接通过认证而不用输入密码)

【3】如果开启第二行,表示只有root用户和wheel组内的用户才可以使用su命令。

【4】如果注释第一行,开启第二行,表示只有wheel组内的用户才能使用su命令,root用户也被禁用su命令。

デモ:
ここに画像の説明を挿入
ここに画像の説明を挿入

3.su操作レコードを表示します

  • セキュリティログファイル:/ var / log / secure
 cat /var/log/secure      查看su命令操作记录

ここに画像の説明を挿入

3、LinuxでのPAMセキュリティ認証

  • Linux-PAMは、Linuxのプラグ可能な認証モジュールであり、カスタマイズ可能で動的にロード可能な共有ライブラリのセットであるため、ローカルシステム管理者はプログラムの認証方法を自由に選択できます。
  • PAMは、/ etc / pam.d /の下にある構成ファイルを使用して、プログラムの認証方法を管理します。アプリケーションプログラムは、対応するPAM構成ファイルを呼び出してローカル認証モジュールを呼び出します。モジュールは/ lib64 / securityの下に配置され、動的ライブラリをロードする形式で認証を実行します。たとえば、suコマンドを使用すると、システムはrootユーザーのパスワードの入力を求めるプロンプトを表示します。これは、PAMモジュールを呼び出すことによってsuコマンドによって実行されます。

1.PAM認証の原則

  • 通常、
    サービス(サービス)—> PAM(構成ファイル)—> pam _ *。soの順序に従います。
  • PAMは、最初にどのサービスを決定し、次に対応するPAM構成ファイルをロードし、最後にセキュリティ認証のためにPAM認証モジュールを呼び出します。
  • ユーザーがサーバーにアクセスすると、サーバーの特定のサービスプログラムが、認証のためにユーザーの要求をPAMモジュールに送信します。
  • 同じアプリケーションに対応するPAMモジュールも異なります
如果想查看某个程序是否支持 PAM 认证,可以用 ls 命令进行查看/etc/pam.d/。
示例:查看su是否支持PAM模块认证
ls /etc/pam.d | grep su

ここに画像の説明を挿入

2.PAM認証の構成

  • 各ラインは独立した認証プロセスです
  • 各行は、認証タイプ、制御タイプ、PAMモジュール、PAMモジュールパラメーター、
    ここに画像の説明を挿入
    最初の段落リストPAM認証モジュールタイプの3つのフィールドに分割できます。
認証モジュールタイプ 効果
auth ユーザーのIDを特定し、パスワードの入力を求められたら、それがrootかどうかを判断します。
アカウント システムへのログインが許可されているかどうか、アカウントの有効期限が切れているかどうか、ユーザーの最大数に達しているかどうかなど、アカウントの属性を確認してください。
パスワード ユーザー情報を使用して、ユーザーパスワードの変更など、データを更新します。
セッション ログイン接続情報、ユーザーデータの開閉、ファイルシステムのマウントなど、ログイン前とログアウト後に実行するセッション運用管理を定義します。

2番目の列はPAM制御フラグを表します

コントロールタイプ 効果
必須 成功値を返す必要があることを示します。戻りに失敗した場合、失敗の結果はすぐには返されませんが、同じタイプの次の検証が続行されます。このタイプのすべてのモジュールが実行された後、失敗が返されます。
必要条件 requiredと同様ですが、このモジュールが失敗を返すと、すぐに戻り、このタイプが失敗したことを示します。
十分 このモジュールが成功を返す場合、プログラムに直接成功を返し、そのような成功を示します。失敗した場合、このタイプの戻り値は影響を受けません。
オプション 成功したかどうかは返されません。通常、検証には使用されませんが、情報のみが表示されます(通常はセッションタイプに使用されます)。
含める 検証プロセス中に他のPAM構成ファイルが呼び出されることを示します。たとえば、多くのアプリケーションは、構成項目を1つずつ書き直すことなく、/ etc / pam.d / system-auth(主にユーザーのログインシステムの認証を担当)を完全に呼び出すことによって認証を実装します。

3番目の列はPAMモジュールを表します。

  • デフォルトは/ lib64 / security /ディレクトリにあります。デフォルトのパスにない場合は、絶対パスを入力してください
  • 同じモジュールが異なるモジュールタイプで表示される可能性があり、異なるタイプで異なる操作を実行します。これは、各モジュールが異なるモジュールタイプに対して異なる実行関数を持っているためです。

4番目の列は、PAMモジュールのパラメーターを表します。

  • 使用するモジュールに応じて追加します
  • モジュールに渡されるパラメーター。スペースで区切って複数のパラメーターを指定できます。

3.コントロールマークの補足説明

  • 必須:回線と関連するモジュールの成功が、ユーザーが認証に合格するための[必要条件]であることを示します。つまり、アプリケーションプログラムに対応する必要なモジュールがすべて成功した場合にのみ、プログラムは認証に合格できます。同時に、必要なマークが付いたモジュールにエラーがある場合、PAMはエラーメッセージをアプリケーションプログラムにすぐに返しませんが、このタイプのすべてのモジュールが呼び出された後、それを呼び出したプログラムにエラーメッセージを返します。
    とにかく率直に言って、このタイプのすべてのモジュールは一度実行する必要があります。モジュールのいずれかが検証に失敗した場合、検証は続行され、実行の完了後にエラーメッセージが返されます。これの目的は、ユーザーが拒否されたモジュールを知らないようにし、システムサービスを隠された方法で保護することです。ファイアウォールルールを設定する場合と同様に、拒否ルールはドロップするように設定されているため、ユーザーは、ネットワークへのアクセスに失敗したときに、拒否されたのか、ターゲットネットワークに到達できないのかを正確に判断できません。
  • 必要条件:必須と同様に、このマークが付いたモジュールが正常に戻った後でのみ、ユーザーは認証に合格できます。違いは、失敗すると、ヒープ内で背後にある他のモジュールを実行しなくなり、認証プロセスがここで終了し、エラーメッセージがすぐに返されることです。上記の要件と比較して、よりオープンで公平なようです。
  • 十分:回線と関連するモジュールの検証が成功したことは、ユーザーが認証に合格するための[十分条件]であることを示します。つまり、十分とマークされたモジュールが正常に検証されている限り、PAMは他のモジュールを試すことなく、すぐに正常な結果をアプリケーションに返します。後続のカスケードモジュールで必須または必須の制御フラグが使用されている場合でも、同じです。十分とマークされたモジュールに障害が発生した場合、十分なモジュールはオプションとして扱われます。したがって、検証が正しく実行されない場合、十分なフラグビットを持つ構成アイテムは不公平になり、検証全体が失敗しますが、検証が成功すると、ドアが開かれます。したがって、この制御ビットの使用には注意が必要です。
  • オプション:行に含まれるモジュールの検証が失敗した場合でも、ユーザーは認証に合格できることを意味します。PAMシステムでは、このマークが付いたモジュールは、障害が発生した後も次のモジュールの処理を続行します。つまり、銀行が指定したモジュールの検証に失敗しても、ユーザーはアプリケーションが提供するサービスを楽しむことができます。このフラグを使用すると、PAMフレームワークは、このモジュールによって生成された検証エラーを無視し、次のカスケードされたモジュールを順番に実行し続けます。

4.PAMセキュリティ認証プロセス

ここに画像の説明を挿入
1.必要な検証が失敗した場合、続行されますが、Failが返されます
。2 必要な検証が失敗した場合、検証プロセス全体が直ちに終了します。失敗
が返されます。3。十分な検証が成功した場合、すぐに戻り、続行しません。それ以外の場合は、結果を無視して続行します
。4。オプションは検証には使用されません。、情報の表示のみ(通常はセッションタイプに使用されます)

第4に、sudoメカニズムを使用して権限を増やします(sudo)

  • 目的:許可されたコマンドを他のユーザー(rootなど)として実行します
  • 使用法:sudo認証コマンド

1.sudo認証を構成します

visudo
或者
vim /etc/sudoers
注意:保存退出时必须执行:wq!才能保存

2.認証フォーマット

構文形式:

用户 主机名=命令程序列表
用户 主机名=(用户) 命令程序列表
  • ユーザー:指定されたユーザー名を直接承認するか、「%グループ名」の形式を使用します(グループ内のすべてのユーザーを承認します)。

  • ホスト名:このルールを使用するホスト名。ローカルホストは、ホスト名が構成されていない場合に使用でき、実際のホスト名は、ホスト名が構成されている場合に使用され、ALLはすべてのホストを意味します

  • (ユーザー):ユーザーがコマンドを実行できるID。この項目は省略できます。デフォルトでは、コマンドはrootユーザーとして実行されます。

  • コマンドプログラムリスト:許可されたユーザーがsudoモードで実行できる特権コマンド。コマンドプログラムのフルパスを入力する必要があり、複数のコマンドはコンマ「、」で区切ります。ALLは、システム内のすべてのコマンドを意味します。
    ここに画像の説明を挿入ここに画像の説明を挿入
    ここでは、lisiに昇格された特権を与えます。

[root@localhost ~]# vim /etc/sudoers

ここに画像の説明を挿入
ここに画像の説明を挿入

3.sudo操作レコードを表示します

  • デフォルトのログファイル構成を有効にする必要があります
  • デフォルトのログファイル:/ var / log / sudo

sudo操作ログを有効にする

visudo                             
Defaults logfile = /var/log/sudo

ここに画像の説明を挿入
ここで/ var / logディレクトリに移動すると、sudoコマンドが実行されておらず、ログファイルが生成されていないため、sudoログファイルがないことがわかります。
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

4.エイリアスの作成

用户别名 User_Alias
主机别名 Host_Alias
命令别名 Cmnd_Alias

Jerry localhost=/sbin/*,!/sbin/reboot,!/sbin/poweroff
通配符“*”表示所有,取反符号“!”表示排除

%whell ALL=NOPASSWD:ALL
表示wheel组成员无需验证密码即可使用sudo执行任何命令

使用关键字 User_Alias    Host_Alias     Cmnd_Alias 来进行设置别名(别名必须为大写)
User_Alias USERS=Tom,Jerry,Mike             用户的别名users包括:Tom,Jerry,Mike
Host_Alias HOSTS=localhost,bogon   主机别名hosts包括:localhost,bogon
Cmnd_Alias CMNDS=/sbin/ifconfig,/usr/sbin/useradd,/usr/sbin/userdel
USERS HOSTS=CMNDS                   用户组   主机组  =  命令程序列表

ここに画像の説明を挿入
ここに画像の説明を挿入

5、スイッチマシンの安全制御

1.BIOSブート設定を調整します

  • 最初の起動デバイスを、現在のシステムが配置されているハードディスクに設定します
  • 他のデバイス(CD、Uディスク、ネットワーク)からのシステムの起動を禁止する
  • 設定するセキュリティレベルを設定し、管理者パスワードを設定します

2.GRUBの制限

  • grub2-mkpasswd-pbkdf2を使用してキーを生成します
  • /etc/grub.d/00_headerファイルを変更し、パスワードレコードを追加します
  • 新しいgrub.cfg構成ファイルを生成します

2.1GRUBブートパラメータを変更するための制限

通常の状況では、システムがGRUBメニューで起動されたら、eキーを押してGRUB起動パラメーターを表示および変更します。これは、サーバーにとって大きな脅威です。GRUBメニューにはパスワードを設定でき、正しいパスワードのみがブートパラメータの変更を許可されます。

grub2-mkpasswd-pbkdf2 			        #根据提示设置GRUB 菜单的密码
PBKDF2 hash of your password is grub.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
cat << EOF
set superusers="root"					#设置用户名为root
password_pbkdf2 root grub.pbkdf2……		#设置密码,省略部分内容为经过加密生成的密码字符串
EOF
grub2-mkconfig -o /boot/grub2/grub.cfg	#生成新的 grub.cfg 文件

ここでパスワードを設定せずにGRUBメニューに入ることができます。これは、システムに脅威をもたらします。
ここに画像の説明を挿入
ここに画像の説明を挿入
1.プロンプトに従ってパスワードを設定します
ここに画像の説明を挿入
。2。
ここに画像の説明を挿入
/ etc / grub.d / 00_headerファイルを変更し、パスワードレコードを追加します。3
ここに画像の説明を挿入
新しいgrub.cfgファイルを生成します。4。GRUBメニューを再起動して、パスワードが必要であることを確認します。
ここに画像の説明を挿入

6、ターミナルログインセキュリティ制御

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			#取消登录限制

おすすめ

転載: blog.csdn.net/IHBOS/article/details/113575199