Linuxのリモートアクセスと制御(SSHおよびTCPラッパー)

SSH

SSHリモート管理

  • SSH(Secure Shell)は、セキュリティで保護されたチャネルプロトコルであり、主に文字インターフェイスのリモートログインおよびリモートコピー機能を実装するために使用されます。
  • SSHプロトコルは、ユーザーがログインするときに入力されたユーザーパスワードを含め、通信当事者間のデータ送信を暗号化します。したがって、SSHプロトコルのセキュリティは非常に優れています。

SSHの利点

  • データ送信は情報漏えいを防ぐために暗号化されています(セキュリティ)
  • データ転送が圧縮されるため、転送速度が向上します(高速)

SSHクライアントとサーバー

  • SSHクライアント:Putty、Xshell、CRT
  • SSHサーバー:OpenSSH

OpenSSH

概念

  • OpenSSHは、SSHプロトコルを実装するオープンソースソフトウェアプロジェクトであり、さまざまなUNIXおよびLinuxオペレーティングシステムに適しています。
  • CentOS 7システムはデフォルトでopenssh関連のソフトウェアパッケージをインストールしており、sshdサービスは起動後のセルフスタートアップとして追加されています。(opensshのサービス名はsshdです)
  • 「systemctlstartsshd」コマンドを実行して、sshdサービスを開始します
  • sshdサービスはデフォルトでTCPポート22を使用します
  • sshdサービスのデフォルトの設定ファイルは/ etc / ssh / sshd_configです。
  • ssh_configとsshd_configはどちらもsshサーバーの構成ファイルです
    • ssh_configは、クライアントの構成ファイルです。
    • sshd_configは、サーバーの構成ファイルです。

ここに画像の説明を挿入します

OpenSSHサーバー構成を表示する

sshd_config配置文件的常用选项设置
vim /etc/ssh/sshd_config
Port 22 								#监听端口为 22
ListenAddress 0.0.0.0 					#监听地址为任意网段,也可以指定OpenSSH服务器的具体IP

LoginGraceTime 2m 						#登录验证时间为 2 分钟
PermitRootLogin no 						#禁止 root 用户登录
MaxAuthTries 6 							#最大重试次数为 6

PermitEmptyPasswords no 				#禁止空密码用户登录
UseDNS no 								#禁用 DNS 反向解析,以提高服务器的响应速度

ここに画像の説明を挿入します

ここに画像の説明を挿入します

ここに画像の説明を挿入します

ここに画像の説明を挿入します

AllowUsers和DenyUsers

AllowUsers 用户1 用户2 用户3        #仅允许登录的用户,多个用户以空格分隔
DenyUsers 用户1                    # 禁止用户登录
#只允许zhangsan、lisi、wangwu用户登录,且其中wangwu用户仅能够从IP地址为10.0.0.2 的主机远程登录
AllowUsers zhangsan lisi [email protected]			
#禁止某些用户登录,用法于AllowUsers 类似(注意不要同时使用)
DenyUsers li

サーバ:
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

クライアント:

ここに画像の説明を挿入します

sshdサービスの2つの認証方法

パスワードの検証
  • サーバーのローカルシステムユーザーのログイン名とパスワードを確認します。単純ですが、ブルートフォース攻撃を受ける可能性があります(上記の許容テストと同じ)
キーペアの検証
  • 検証に合格するには、一致するキー情報が必要です。通常、鍵ファイルのペア(公開鍵、秘密鍵)が最初にクライアントで作成され、次に公開鍵ファイルがサーバー上の指定された場所に配置されます。リモートでログインする場合、システムは公開鍵と秘密鍵を使用して暗号化/復号化の関連付けを確認します。セキュリティを強化し、インタラクティブログインを回避できます。

パスワード検証とキーペア検証の両方が有効になっている場合、サーバーはキーペア検証を優先的に使用します。検証方法は、実際の状況に応じて設定できます。

vim /etc/ssh/sshd_config
PasswordAuthentication yes 						#启用密码验证
PubkeyAuthentication yes 						#启用密钥对验证
AuthorizedKeysFile .ssh/authorized_keys 		#指定公钥库文件

ここに画像の説明を挿入します

ここに画像の説明を挿入します

パスワード認証を構成する

SSHクライアントプログラムで
sshリモートログインを操作する

ssh [选项] [email protected]
当用户第一次登录SSH服务器时,必须接受服务器发来的ECDSA密钥(根据提示输入“yes”)后才能继续验证。接收的密钥信息将保存到~/.ssh/known_hosts 文件中。密码验证成功以后,即可登录目标服务器的命令行环境中了。

-p:指定非默认的端口号,缺省时默认使用 22端口
ssh -p 20 [email protected]  #使用指定的20口访问192.168.249.30

ここに画像の説明を挿入します
scpリモートレプリケーション

#从服务器上下载
scp [email protected]:/etc/passwd /root/passwd1.txt		#将远程主机中的/etc/passwd文件复制到本机

#向服务器传输资料
scp -r /root/123/ [email protected]:/opt					#将本机的/root/123 目录复制到远程主机

クライアント:
ここに画像の説明を挿入します
サーバー:

ここに画像の説明を挿入します

sftpセキュアFTP
は暗号化/復号化技術を使用しているため、伝送効率は通常のFTPよりも低くなりますが、セキュリティは高くなります。動作構文sftpはftpとほとんど同じです。

sftp [email protected]
[email protected]'s password:   #输入密码
Connected to 192.168.249.10.
sftp> pwd
sftp> ls
sftp> get 文件名		#下载文件到登录前账号的家目录,文件要加-r
sftp> put 文件名		#上传文件到登录者的家目录,文件加-r
sftp> quit			#退出

サーバ:

ここに画像の説明を挿入します

クライアント:

ここに画像の説明を挿入します
サーバ:

ここに画像の説明を挿入します

キーペア検証を構成する

クライアントでキーペアを作成します

通过ssh-keygen工具为当前用户创建密钥对文件。可用的加密算法为RSA、ECDSA或DSA等(ssh-keygen命令的“-t”选项用于指定算法类型)。
useradd li1
echo "123456" |passwd --stdin li1
su - li1

ssh-keygen -t ecdsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/admin/.ssh/id_ecdsa): 	#指定私钥位置,直接回车使用默认位置
Created directory '/home/admin/.ssh'.			#生成的私钥、公钥文件默认存放在宿主目录中的隐藏目录.ssh/下
Enter passphrase (empty for no passphrase): 				#设置私钥的密码
Enter same passphrase again: 								#确认输入

ls -l .ssh/id_ecdsa
#id_ecdsa是私钥文件,权限默认为600;id_ecdsa.pub是公钥文件,用来提供给 SSH 服务器

ここに画像の説明を挿入します

公開鍵ファイルをサーバーにアップロードします

方法一:此方法可直接在服务器的/home/zhangsan/.ssh/目录中导入公钥文本
cd ~/.ssh/
ssh-copy-id -i id_ecdsa.pub [email protected]

方法二:
客户端:先将公钥文件复制都服务端
scp ~/.ssh/id_ecdsa.pub [email protected]:/opt
服务端:
mkdir /home/zhangsan/.ssh/  #在zhangsan的家目录下创建.ssh文件,没有这个文件的需要创建
cat /tmp/id_ecdsa.pub >> /home/zhangsan/.ssh/authorized_keys   
#将复制来的公钥文件导入到authorized_keys中(没有authorized_keys会自动创建)

cat /home/zhangsan/.ssh/authorized_keys   #查看authorized_keys文件

ここに画像の説明を挿入します

サーバ:
ここに画像の説明を挿入します

クライアントでキーペア認証を使用する

ssh [email protected]
Enter passphrase for key '/home/li1/.ssh/id_ecdsa':        #输入私钥的密码
Last login: Sun Dec 13 13:31:58 2020

ここに画像の説明を挿入します

パスワードなしのログインを実現するために、クライアントでsshプロキシ機能を設定します

ssh-agent bash
ssh-add 
Enter passphrase for /home/li1/.ssh/id_ecdsa:   #输入私钥的密码
Identity added: /home/li1/.ssh/id_ecdsa (/home/li1/.ssh/id_ecdsa)

ssh [email protected]
Last login: Sun Dec 13 13:32:47 2020 from 192.168.249.30

ここに画像の説明を挿入します

TCPラッパーのアクセス制御

  • TCPラッパーは、保護カバーと同様に、TCPサービスプログラムを保護します。TCPサービスプログラムのポートを監視し、セキュリティ検出プロセスを追加します。外部接続要求は、最初にこのセキュリティ検出層を通過する必要があり、次にアクセスできます。実際のサービスプログラム。
  • ほとんどのLinuxディストリビューションでは、TCPWrappersはデフォルトで提供される機能です。
  • 「rpm-qtcp_wrappers」を使用してインストールします

TCPラッパー保護メカニズムの2つの実装方法

  • tcpdプログラムを直接使用して他のサービスプログラムを保護するには、tcpdプログラムを実行する必要があります。

  • libwrap.so。*リンクライブラリは、tcpdプログラムを実行せずに、他のネットワークサービスプログラムによって呼び出されます。この方法は、より広く使用され、より効率的です。

  • lddコマンドを使用して、プログラムのlibwrap.so。*リンクライブラリを表示します。

    ldd $(which ssh vsftpd)
    

TCPラッパーのアクセスポリシー

  • TCP Wrappersメカニズムの保護オブジェクトはさまざまなネットワークサービスプログラムであり、アクセス制御はアクセスサービスのクライアントアドレスで実行されます。
  • 対応する2つのポリシーファイルは/etc/hosts.allowと/etc/hosts.denyで、それぞれ許可ポリシーと拒否ポリシーを設定するために使用されます。

形式:
<サービスプログラムリスト>:<クライアントアドレスリスト>

サービスプログラムリスト
  • ALL:すべてのサービスを表します。
  • 単一のサービスプログラム:「vsftpd」など。
  • 複数のサービスプログラムのリスト:「vsftpd、sshd」など。
クライアントアドレスリスト
  • ALL:任意のクライアントアドレスを表します。
  • LOCAL:ローカルアドレスを表します。
  • 複数のアドレスはコンマで区切ります
  • ワイルドカード文字「?」および「
    」は、任意の長さの文字表すことできます。
    「?」は、1文字のみを表します
  • 192.168.249。や192.168.249.0/255.255.255.0などのネットワークセグメントアドレス
  • 「.benet.com」などの地域アドレスは、bdqn.comドメイン内のすべてのホストと一致します。

TCPラッパーメカニズムの基本原則

;最初に一致するポリシーが発見された場合、アクセスが許可されている、/etc/hosts.allowのファイルをチェックし
、そうでない場合は、一致するポリシーが発見された場合は、アクセスが拒否され、/etc/hosts.denyをファイルをチェックしていき、
あなたの場合上記の2つのファイルの両方を確認してください。一致するポリシーが見つからない場合、アクセスが許可されます。

「すべて許可、個人を拒否」
は、対応する拒否ポリシーを/etc/hosts.denyファイルに追加するだけです。

「個別に許可、すべて拒否」
/etc/hosts.allowに許可ポリシーを追加することに加えて、/ etc / hosts.denyファイルに「ALL:ALL」拒否ポリシーを設定する必要もあります。

IPアドレスが12.0.0.1のホストまたは192.168.249.0/24ネットワークセグメント上のホストからのみsshdサービスにアクセスする場合、他のアドレスは拒否されます。

vi /etc/hosts.allow
sshd:192.168.249.20.

vi /etc/hosts.deny
sshd:ALL

ここに画像の説明を挿入しますここに画像の説明を挿入します
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/shengmodizu/article/details/114035169