web-dev-qa-db-ja.com

なじみのないシステムについて学ぶためのコマンド

なじみのないUNIXまたはLinuxシステムに(rootとして)ログインします。自分の方向を定め、どのようなシステムを使用しているかを把握するために、どのコマンドを実行しますか?使用されているハードウェアの種類、実行されているオペレーティングシステムの種類、およびアクセス許可とセキュリティに関して現在の状況をどのように把握しますか?

入力する最初と2番目のコマンドは何ですか?

19
Alexander

デュアルユースの質問!ソフトウェア考古学者または邪悪なハッカーのいずれかがこの質問への回答を使用できます!さて、私はどちらですか?

私はいつもps -efps -augxwwを使って自分が何をしていたかを調べていました。 LinuxおよびSystemVボックスは、「-ef」および「-augxww」のエラーを好む傾向があり、BSDおよび古いSunOSマシンではその逆でした。 psの出力は、多くのことを知らせることもできます。

Rootとしてログインでき、それがLinuxマシンの場合は、lsusblspciを実行する必要があります。これにより、ハードウェアの状況を80%知ることができます。 dmesg | moreは、現在の問題のほとんどすべてを理解するのに役立ちます。

段階的に廃止され始めていますが、ifconfig -aを実行すると、通常、ネットワークインターフェイスとネットワークについて多くのことがわかります。ケーブルイーサネットのように見えるethtool出力に表示されるインターフェイスでmii-toolおよび/またはifconfigを実行すると、情報も得られます。

Runnin ip routeまたはnetstat -rは、インターネットプロトコルルーティングについての情報であり、使用中のネットワークインターフェイスについての情報である可能性があります。

mountを呼び出すと、ディスクとそのマウント方法がわかります。

uptimeを実行してから、last | moreを実行すると、現在のメンテナンスの状態について何かを知ることができます。比喩的に言えば、100日以上の稼働時間は、おそらく「オイルと液体を交換する時がきた」ことを意味します。 whoの実行も

/etc/resolv.conf/etc/hostsを見ると、そのマシンのDNS設定について知ることができます。たぶん、nslookup google.comまたはDig bing.comを実行して、DNSがほとんど機能しているかどうかを確認します。

どのエラー(「コマンドが見つかりません」)およびコマンドのバリアント(「ps -ef」対「ps augxww」)が機能して、Unix、Linux、またはBSDのどのバリアントがついに終わったかを確認することは常に価値があります。

Cコンパイラの有無、およびそれが存在する場所は重要です。それらを見つけるには、which cc以上、which -a ccを実行してください。

22
Bruce Ediger

cat /etc/*release*は、どのディストリビューションが実行されているかの概要を取得するための素晴らしいコマンドです。

10
Alexander

http://bhami.com/rosetta.html はレビューに便利かもしれませんが、そうでない場合は通常、/etc(アカウント、initもの、OSフレーバーのヒントなど)とcrontab -lpsリストを調べて、学ぶべきことを探します。

また、「ルートとして」は非常に怖いです。そのような調査を行うLinux管理者がすべてのSolarisホスト名を-fに設定するシステムを修正する必要があったからです。

また、dfは危険なコマンドであり、I/Oのブロックにハングアップしたフープに最適な方法です。したがって、少なくともマウントを調査するか、何らかの方法で別のセッションを開くことができることがわかるまでは、決して実行しないでください。

ホストが何であるかがわかるまで、非常に単純なコマンド(unamecd /etc; lscat$PAGER)を使用します。ホストに慣れていない場合は、次を確認してください。いくつかのコマンドまたはコマンドへのフラグがより一般的なシステムで実行することを実行すると想定する前に、ロゼッタまたは常にマニュアルページを読んでください。

9
thrig

dmidecodelspciは通常、システムで実行されているハードウェアが何であるかについての良いアイデアを提供します。これがサーバーの場合、通常netstat -tlpnを実行すると、サーバーの目的が失われます。 df -hPは、システム上の現在のストレージを確認するための優れたコマンドです。 lsb_release -aは、現在どのディストリビューションにいるかを通知します。

[root@vle02 ~]# lsb_release -a
LSB Version:    :base-4.0-AMD64:base-4.0-noarch:core-4.0-AMD64:core-4.0-noarch:graphics-4.0-AMD64:graphics-4.0-noarch:printing-4.0-AMD64:printing-4.0-noarch
Distributor ID: RedHatEnterpriseServer
Description:    Red Hat Enterprise Linux Server release 6.7 (Santiago)
Release:        6.7
Codename:       Santiago

lastを実行すると、誰がシステムを使用しているかがわかります。このサーバーに正当にアクセスしたと仮定すると、多くの場合、サーバーにログインしているユーザーの1人に詳細を尋ねることができます。

ベンダーに依存しないセキュリティチェックの場合:多くの場合、ファイアウォールには固有の構成データがあるため、iptables -nvLを実行すると便利です。また、ディストリビューションのpam構成ファイルをチェックして、ローカルユーザーのみを使用しているかどうか、またはldap/kerberos/winbind/sssd/whateverを使用するように構成されているかどうかを確認する必要があります。

netstat -tlpnで表示されるサービスの構成を検査することもできます。たとえば、Apacheが表示されている場合は、/etc/http/conf/httpd.conf(RHELでは/etc/Apache2)を調べて、実行されているWebサイトを確認できます。または、apachectl -Sを実行して、構成されているすべての仮想ホストのリストを取得することもできます。それはそこからファンのようなものなので、私が実際にできることは、例としてApacheを提供し、それが何か他のものである場合はデーモンの構成を確認することだけです。

RHELでは、rpm -qa --last | headをチェックして、最後にシステムが更新されたのはいつかを確認します。 SELinuxがgetenforceで有効になっているかどうかも確認します

5
Bratchley

他のいくつかのアイデア:

  • /procファイルシステムの有無は、 MacFreeBSD 、またはLinuxのいずれを使用しているかを示す場合があります。
  • パッケージ管理は、Linuxディストリビューションごとに異なります。 Deepin、Ubuntu、MintなどのDebianベースのものにはaptがあります。 Red HatとFedoraはある時点までyumを持っていましたが、今ではFedoraは [〜#〜] dnf [〜#〜] ; Archはパックマンを使用しています。したがって、次のようなことができます:ls /usr/bin | grep 'apt\|yum\|pacman'
  • netstat -tulpanを表示すると、特定のポートに特定のサービスが存在します。はsshd、webserver、ftpのようになります。
0