なじみのないUNIXまたはLinuxシステムに(rootとして)ログインします。自分の方向を定め、どのようなシステムを使用しているかを把握するために、どのコマンドを実行しますか?使用されているハードウェアの種類、実行されているオペレーティングシステムの種類、およびアクセス許可とセキュリティに関して現在の状況をどのように把握しますか?
入力する最初と2番目のコマンドは何ですか?
デュアルユースの質問!ソフトウェア考古学者または邪悪なハッカーのいずれかがこの質問への回答を使用できます!さて、私はどちらですか?
私はいつもps -ef
とps -augxww
を使って自分が何をしていたかを調べていました。 LinuxおよびSystemVボックスは、「-ef」および「-augxww」のエラーを好む傾向があり、BSDおよび古いSunOSマシンではその逆でした。 ps
の出力は、多くのことを知らせることもできます。
Rootとしてログインでき、それがLinuxマシンの場合は、lsusb
とlspci
を実行する必要があります。これにより、ハードウェアの状況を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
を実行してください。
cat /etc/*release*
は、どのディストリビューションが実行されているかの概要を取得するための素晴らしいコマンドです。
http://bhami.com/rosetta.html はレビューに便利かもしれませんが、そうでない場合は通常、/etc
(アカウント、initもの、OSフレーバーのヒントなど)とcrontab -l
とps
リストを調べて、学ぶべきことを探します。
また、「ルートとして」は非常に怖いです。そのような調査を行うLinux管理者がすべてのSolarisホスト名を-f
に設定するシステムを修正する必要があったからです。
また、df
は危険なコマンドであり、I/Oのブロックにハングアップしたフープに最適な方法です。したがって、少なくともマウントを調査するか、何らかの方法で別のセッションを開くことができることがわかるまでは、決して実行しないでください。
ホストが何であるかがわかるまで、非常に単純なコマンド(uname
、cd /etc; ls
、cat
、$PAGER
)を使用します。ホストに慣れていない場合は、次を確認してください。いくつかのコマンドまたはコマンドへのフラグがより一般的なシステムで実行することを実行すると想定する前に、ロゼッタまたは常にマニュアルページを読んでください。
dmidecode
とlspci
は通常、システムで実行されているハードウェアが何であるかについての良いアイデアを提供します。これがサーバーの場合、通常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
で有効になっているかどうかも確認します
他のいくつかのアイデア:
/proc
ファイルシステムの有無は、 Mac 、 FreeBSD 、またはLinuxのいずれを使用しているかを示す場合があります。ls /usr/bin | grep 'apt\|yum\|pacman'
netstat -tulpan
を表示すると、特定のポートに特定のサービスが存在します。はsshd
、webserver、ftp
のようになります。