Linuxネットワークの高度なリモートアクセスとLinuxでの制御(SSHおよびTCPラッパー)

1つ、SSH

1.SSHリモート管理

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

2.SSHの利点

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

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

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

2、OpenSSH

1.コンセプト

  • 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はサーバーの構成ファイルです。

ここに画像の説明を挿入

2.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 反向解析,以提高服务器的响应速度

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

3、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

opensshサーバーへのログインを許可するアカウントを設定します
ここに画像の説明を挿入

ここに画像の説明を挿入
クライアントでテストする
ここに画像の説明を挿入

拒否の効果は同じですが、拒否リストのすべてのエントリがログインを許可されている点が異なります。これは、allowコマンドと競合するため、一緒に使用しないでください。

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

(1)パスワードの確認

サーバーのローカルシステムユーザーのログイン名とパスワードを確認します。単純ですが、ブルートフォース攻撃される可能性があります(上記の許可テストと同じ)

(2)キーペアの検証

検証に合格するには、一致するキー情報が必要です。通常、鍵ファイルのペア(公開鍵、秘密鍵)が最初にクライアントで作成され、次に公開鍵ファイルがサーバー上の指定された場所に配置されます。リモートでログインする場合、システムは公開鍵と秘密鍵を使用して暗号化/復号化の関連付けを確認します。セキュリティを強化し、インタラクティブログインを回避できます。

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

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

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

(3)パスワード検証を構成する

SSHクライアントプログラムでの操作
1)SSHリモートログイン

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

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

ここに画像の説明を挿入

2)scpリモートレプリケーション

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

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

ここに画像の説明を挿入

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

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

ここに画像の説明を挿入

(4)秘密鍵ペアリング検証を構成する(実際の操作)

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

通过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 服务器

ここに画像の説明を挿入

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

方法一:此方法可直接在服务器的/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文件

ここで直接方法1を使用します。前の操作では、zhangsanユーザーがサーバー上に確立されているため、ここでサーバーを変更しません。
ここに画像の説明を挿入
ここに画像の説明を挿入

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

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

ここに画像の説明を挿入

4)パスワードなしのログインを実現するために、クライアントで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.163.11

ここに画像の説明を挿入

3、TCPWrappersのアクセス制御

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

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

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

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

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

ldd $(which ssh vsftpd)

ここに画像の説明を挿入

2.TCPラッパーのアクセス戦略

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

(1)サービスプログラムリスト

  • ALL:すべてのサービスを表します。
  • 単一のサービスプログラム:「vsftpd」など。
  • 複数のサービスプログラムのリスト:「vsftpd、sshd」など。

(2)クライアントアドレスリスト

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

3.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.163.0/24ネットワークセグメント上のホストからのみsshdサービスにアクセスする場合、他のアドレスは拒否されます。

vi /etc/hosts.allow
sshd:12.0.0.1,192.168.163.*

vi /etc/hosts.deny
sshd:ALL

おすすめ

転載: blog.csdn.net/weixin_51326240/article/details/110959337