知的システム構築工房 Linux設定セミナーシリーズ 第2回 ネットワーク設定 2011年3月10日(木) 株式会社 アセンディア 1
目的 当セミナーを通して、 各種ネットワークサービスの設定方法を理解し、 ネットワークが動作する仕組みを体得する
目標 当セミナーを受講することにより 1.設定ファイルが、ネットワークとどのような関連性 があるかを理解できるようになること 1.設定ファイルが、ネットワークとどのような関連性 があるかを理解できるようになること 2.ネットワークサービスを設定できるようになること 3.ネットワークのセキュリティを設定できるようになること
セミナー内容 1.ネットワーク環境の設定 2.ネットワークサービスの設定 3.ネットワークセキュリティの設定 ネットワーク設定値の確認 1.ネットワーク環境の設定 ネットワーク設定値の確認 host設定 TCP Wrapper 2.ネットワークサービスの設定 Telnet SSH FTP SCP NFS リモートデスクトップ 3.ネットワークセキュリティの設定 パケットフィルタリング ファイアウォール ログファイル
1.ネットワーク環境の設定
ネットワーク設定値の確認 ・ホスト名 hostname コマンド /etc/sysconfig/networkファイル ツールを利用 システム→管理→ネットワーク設定を選択
ifconfigコマンド IPアドレスを取得 routeコマンド デフォルトゲートウェイを取得 /etc/sysconfig/network-scripts/ifcfg-eth#ファイル ツールを利用 システム→管理→ネットワーク設定を選択 DEVICE=eth0 HWADDR=00:00:00:99:99:99 ONBOOT=yes BOOTPROTO=static GATEWAY=192.168.220.2 IPADDR=192.168.220.131 NETMASK=255.255.255.0 NETWORK=192.168.220.0 pingコマンド 目的のコンピュータと通信を行えるかを確認
hosts設定 hostsファイルとは、IPアドレスとホスト名を関連付けを行うテキストファイル 主に【名前解決】用途として設定される。 /etc/hosts ① ② ③ IPアドレスを人でもわかる名称に変換する 名前解決はhostsかDNSで行う。 正引き(せいひき):ドメイン名からIPアドレスに変換する 逆引き:IPアドレスからドメイン名に変換する ①自身のサーバIPアドレスに自分のホスト名を設定する ②192.168.220.132のIPアドレスにwebtest-sv1というホスト名を設定する ③192.168.220.133のIPアドレスにwebtest-sv2というホスト名を設定する
名前解決の設定 /etc/resolv.confファイルの設定 ① ② ③ 名前解決をDNSサーバー使用する方法 ①自分が所属しているドメイン名を設定する ②検索リストを設定する ③ネームサーバのIPアドレスを設定する 名前解決の順序は/etc/nsswitch.confファイルに設定する ↑この場合、hostsファイル→dnsの順序 逆にしたい場合は、dns files と記述する ※ホスト名確認コマンド hostname
hosts.allow 設定例 ALL : 192.168.0.0/255.255.255.0 : allow ALL : .ppp.XXXX-net.jp : allow sshd : *.example.com ALL : ALL : deny キーワード ALL : すべてに一致 EXCEPT : 例外 リスト デーモン名で記述 ftpd ネットワークアドレスで記述 192.168.0.0/255.255.255.0 ホスト名で記述 *.oita-u.ac.jp EXCEPTで例外 ALL EXCEPT sshd 192.168.1.100
hosts.deny 設定例 「ALL:ALL」と記載するのが一般的。 hosts.denyで全てのアクセスを禁止して、hosts.allowでアクセスを許す設定を行います。
TCP Wrapper これまでのネットワーク設定は、TCP Wrapperを通して適用されます。 TCP Wrapper はtcpdというプログラム TCP Wrapperによるアクセス制御 ・hosts.allow アクセスを許可するホストを設定 ・hosts.deny アクセスを禁じるホストを設定 システム起動 initd起動スクリプト 起動 TCP Wrapper 読込 設定ファイル hosts.allow hosts.deny ネットワークサービスの 挙動を決定
2.ネットワークサービス設定
Telnet (Telecommunication network ) ための端末間およびプロセス間の通信プロトコル。 ・特徴 1.TCPポート 23番を利用 2.認証も含めて全ての通信を平文のまま行う。 ⇒セキュリティ上大いに危険 3.複数ユーザで同時アクセス可能
Telnet インストール 今回はツールを利用してインストール telnetと検索項目に入力する
1. /etc/xinit.d/telnet 設定ファイル Telnet-Serverの有効化 1. /etc/xinit.d/telnet 設定ファイル disable = no と設定する 2.hosts.allow設定 in.telnetd: 192.168.X.0/255.255.255.0 : ALLOW サーバの環境によって、再起動あるいはSELinux Managementの設定を行う ※SELinux (Security-Enhanced Linux) Linuxカーネルレベルでのセキュリティ機能拡張 サーバーへの不正侵入されても影響を受けにくいシステムを実装可能
演習1 1.自ホストへ対して、Telnet接続を行ってください。 Telnetを終了するときは、exitコマンドを発行します。
SSH (Secure Shell ) コンピュータ間の通信を暗号化する仕組みを持ったプロトコル。 ・特徴 1.TCPポート 22番 2.認証も含めて、全ての通信を暗号化される ⇒第3者による盗聴を防ぐ 3.暗号化通信には、「共通鍵暗号方式」と「公開暗号方式」がある
暗号方式 ・共通鍵暗号方式 暗号鍵と複合鍵が同一 暗号方式としては単純。 シンプルな構成なので、データの暗号化、複合化が高速に行われる。 暗号鍵:暗号文を作り出す鍵 複合鍵:暗号文を解読する鍵 ・共通鍵暗号方式 複合鍵 暗号鍵 暗号鍵と複合鍵が同一 暗号方式としては単純。 シンプルな構成なので、データの暗号化、複合化が高速に行われる。 1対1の場合以外では、そのつど鍵を作成する必要がある。 ⇒通信相手の数だけ鍵を持つ必要がある
・公開鍵暗号方式 ①暗号鍵を受け渡す 暗号鍵(公開鍵) 暗号鍵(公開鍵) ②受け取った暗号鍵 で暗号化して送信 複合鍵(秘密鍵) ③複合鍵で解読 暗号鍵と複合鍵が異なる。 暗号鍵でデータを暗号化し、複合鍵でデータを複合する。 データを複合できるのは、複合鍵を持っている通信相手のみ 実際の通信では、最初に公開鍵暗号方式で公開鍵を送受信し、それ以降は共通鍵暗号方式 となる
OpenSSH OpenSSHとは、SSHプロトコルを利用するためのソフトウェア インストールにはopensslパッケージが必要 ※SSHとSSL どちらもネットワークの通信を暗号化するプロトコル 違いは、OSIレイヤー層が異なる SSH:主にコマンドライン、管理コンソールに用いられる SSL:インターネットブラウザの認証に用いられる インストール確認 rpm –qa | grep openssl TCP Wrapperの設定 hosts.allowファイル sshd:ALL sshdデーモンの起動 /etc/init.d/sshd start
SSHを使用した接続 ssh ホスト名 コマンドの発行 ※初めの接続ではクライアントで鍵の生成が行われていない為、 1度だけ聞かれます パスワードを入力します。 表示されませんが、入力できています。 ※初めの接続ではクライアントで鍵の生成が行われていない為、 接続先の公開鍵を取得します。 リモートアクセスする場合は、 ssh ユーザー名@ホスト名
FTP (File Transfer Protocol ) コンピュータ間のファイル転送を行うプロトコル ・特徴 1.TCPポート 21番 2.ユーザID,パスワードで接続認証を行う。 3.認証を含んだ通信間は平文で行われている。 4.サーバ上のファイルを削除することが可能な為、運用では注意が必要。
FTP インストール 今回はツールを利用してインストール vsftpdと検索項目に入力する インストール終了後、起動します。 /etc/init.d/vsftpd start
FTP ユーザの設定 FTP接続が可能なユーザを設定する ・アクセス制限ファイルの設定 /etc/vsftpd/ftpusers ・アクセス制限ファイルの設定 /etc/vsftpd/ftpusers このファイルに記載されたユーザはFTP接続できない
FTPファイル送信の確認 GUIでのファイル送信ツールのインストール インストール後 gftpと検索項目に入力する
演習2 コマンドを用いてファイル転送を行ってください。
演習3 FTPのユーザを追加し、アクセス確認を行ってください。 新規ユーザ1 taro パスワード oita 新規ユーザ2 hanako パスワード beppu anonymous FTP(アノニマスFTP)を使わない設定 ASCIIモードを有効にしてください。 ログ出力を有効にしてください。 作成方法 1./etc/vsftpd/vsftpd.con設定 2.chroot_lisetファイルの作成(touchコマンドで殻ファイル) chroot_listとは、FTP接続時、上位階層へ移動を許可するユーザを記載するファイルです。 3.ユーザを追加します useradd コマンド useradd -s /sbin/nologin -d /home/ユーザ名 ユーザ名 cd /home chmod 700 ユーザ名 4.vsftpd再起動
SCP (Secure Copy) ・特徴 1.TCPポート 22番 2.認証も含めて、全ての通信が暗号化される コンピュータ間のファイル転送をssh機能を用いて暗号化を行った通信を行うコマンド ・特徴 1.TCPポート 22番 2.認証も含めて、全ての通信が暗号化される 3.SCPコマンドラインでファイルの送受信を行う
scp 転送するファイル名 転送先ユーザID@転送先ホスト名:転送先のパス 1.ファイル転送 scp 転送するファイル名 転送先ユーザID@転送先ホスト名:転送先のパス 入力例:scp test.txt user01@oita-u.testsv.ac.jp:/home/user01/fileDir 2.自身へのファイル転送 scp 転送先ユーザID@転送先ホスト名:転送先ファイル名のパス 保存パス 入力例: scp user01@oita-u.testsv.ac.jp:/home/user01/fileDir/test.txt ./file.txt 3.ディレクトリの転送 -r オプションをつけることで、ディレクトリの転送を行うことができます。 ls -F ディレクトリの確認 scp -r user01@oita-u.testsv.ac.jp:testDir cpDir
演習4 1.sshコマンドを用いて、自ホストへ接続してください。 2.ホームディレクトリに、sshtest.txtを作成してください。 3.sshtest.txtを開き、helloと入力し、保存してください。 4.もう一画面端末を開き、rootユーザへ変わってください。 5./home/ユーザ名/sshtest.txtをscpコマンドで取得してください。 6.取得したsshtest.txtが正しく受け取られたかを確認してください。 helloを記述していればOKです。 7.sshtest.txtをsshtest2.txtとリネームしてください。 8.sshtest2.txtをscpコマンドで /home/ユーザ名/配下へ転送してください。
NFS(Network File System) NFSとは、ネットワーク上に存在するNFSサーバのファイルシステムを、あたかも自分のコンピュータのファイルシステムのように利用することができる仕組み システム領域 システム領域 ネットワーク NFS領域 NFSサーバの NFS領域をマウント NFSサーバ NFSクライアント ※NFSはUDP,TCP 2049番ポートを使用します
NFS設定 NFSサーバ機能 1.NFSインストール yum install nfs-util 2.NFSディレクトリの作成 mkdir /opt/nfsDir 3.nfsユーザ権限の設定 chown -R nfsnobody:nfsnobody /opt/nfsDir/ 4.nfs 共有設定 vi /etc/exports /opt/nfsDir *(rw) directory cliant option 5.nfsサービスの起動 /etc/rc.d/init.d/nfs start option: rw 書込可能 ro 読込のみ可
演習 NFSクライアント機能 1.NFSマウント設定 /mnt ディレクトリ配下にマウントフォルダを作成 mkdir /mnt/nfstest 2.マウントコマンド発行 mount -t nfs nfsサーバアドレス:nfsサーバディレクトリ マウント先(/mnt/nfstest/) 入力例: mount -t nfs 192.168.1.171:/opt/nfsDir/ /mnt/nfsDir/ 3.確認 ls -l コマンド df コマンド 4.マウントの解除 umount /mnt/nfstest umount -f 強制 device is busyの場合は、umount -l を行った後、mount /mnt/nfstest 演習 講師のNFSサーバへ接続し、NFSクライアント設定を行ってください。
リモートデスクトップ リモートデスクトップとは、リモートコンピュータが、ホストコンピュータに対して、ネットワークを介してGUI接続を行い、遠隔操作を行うアクセス手段です。 リモートコンピュータ : 接続元コンピュータ ホストコンピュータ : 接続先コンピュータ 主なソフトウェア
リモートデスクトップ設定方法 システム⇒設定⇒リモート・デスクトップ
演習5 リモートデスクトップ機能を用いて、他のPCへアクセスしてください。
3.ネットワークセキュリティの設定
ネットワークモニタリング ネットワークに関するコマンドとその使い方 ネットワークの状態を監視する netstatコマンド ネットワークの状態を監視する netstatコマンド netstat -s ネットワーク統計情報を取得 IPやプロトコル情報を確認 netstat -alnA inet ネットワーク接続一覧 [0.0.0.0]ホストと接続されるあらゆるIPアドレスとバインド netstat -r ルーティングの統計情報を確認 ホストへのパケット送信 pingコマンド ネットワーク設定情報の確認 ifconfig netstatコマンドはネットワーク上のパケット入出力の状態などをモニタするときに 使います。非常にたくさんのオプションがあります。 http://www.atmarkit.co.jp/fnetwork/netcom/netstat/netstat.html
ネットワークコマンド LinuxとWindowsの違い ネットワーク設定確認 ipconfig ifconfig ネットワーク疎通確認 ping ネットワーク経路確認 tracert traceroute DNSサーバに名前解決 nslookup ※Linuxの場合は、初期状態ではrootユーザしか実行できない
パケットフィルタリング(ファイアウォール) ネットワークを流れるデータ(パケット)に対して、IPアドレスやポート番号で 通信を許可するべきか、拒否するべきかを判定する仕組み 99番PORT 21,22番PORT ネットワーク 80番PORT パケットフィルタ 21~22番PORT OK 80番 PORT OK 99番 PORT NG
IPアドレス ネットワークアドレスとホストアドレス TCP/IPを利用するネットワークで、接続されているホストを識別する為に用いる。 実際は、8ビット X 4で32ビットを表します。 各数値は、8ビット数値を10進数に直しています。 8ビットではれば、[00000000]~[11111111]の範囲で、10進数では[0]~[255] になります。 IPアドレスは、理論上[0.0.0.0]~[255.255.255.255]の範囲になります。 ネットワークアドレスとホストアドレス 192.168.0.1 IPアドレスはネットワークアドレスとホストアドレスに分かれます。 IPアドレスは構造によりクラス分けされます。 ネットワークアドレス ホストアドレス
グローバルアドレスとプライベートアドレス グローバルアドレス:インターネット上で識別されるアドレス(全世界で一意) プライベートアドレス:ローカル環境で使用されるアドレス ・グローバルアドレス 通常、サーバをローカル環境以外で運用する場合、グローバルアドレスを 取得する必要があります。 個人がインターネット接続を行う場合、インターネットサービスプロバイダが 動的にグローバルアドレスを割り振り、ネットワークアクセスが可能となります。 ・プライベートアドレス ローカル環境内で、自由にIPアドレスを設定することができます。 一般的にクラスCで運用し、[192.168.0.0]~[192.168.255.0]の範囲で設定します。
・目的 セキュリティの確保! 通常、セキュリティの設定はサーバー機器以外にルーターやファイアウォール で行いますが、サーバー自身にもパケットフィルタリングを設定することは、 セキュリティの確保につながります。 ・設定 設定確認 iptablesコマンド
iptablesコマンドは、この「チェーン」にさまざまな「ルール」を設定する作業 用語説明 ・チェイン パケットを処理するルールのかたまり iptablesコマンドは、この「チェーン」にさまざまな「ルール」を設定する作業 FORWARD YES POSTROUTING PREROUTING ルーティングの決定 NO INPUT OUTPUT 「チェイン」という言葉に戸惑うかもしれません。これは、「フィルタルールを集めてモジュール化したもの」と理解しておけばいいでしょう。チェインを用いることで、頻繁に使用される細かいルールをいちいち定義する必要がなくなります。 ローカルプロセス ローカルプロセス PREROUTINGチェイン:NAT機能で使用 INPUTチェイン:自ホストが最終的なパケットの受け取り先である場合の定義 サーバーでの設定はここでセットする OUTPUTチェイン:自ホストから発せられたパケットを処理する FORWARDチェイン:転送するパケットを処理する ルーター、ファイアウォールとして機能する場合に設定 POSTROUTINGチェイン:NAT機能で使用される
全ての通信を遮断し、必要な通信のみ接続を許可する 設定の基本! 全ての通信を遮断し、必要な通信のみ接続を許可する 設定例 /etc/sysconfig/iptablesファイル ① ② ③ ④ ⑤ ⑥ icmpパケット:(Internet Control Message Protocol)IPのエラーメッセージや制御メッセージを転送するプロトコル。 TCP/IPで接続されたコンピュータやネットワーク機器間で、互いの状態を確認するために用いられる lo:自ホストを表すための IP 127.0.0.1 ①INPUT,FORWARD,OUTPUT各チェーンを有効にします ⑤22番、23番ポートからの入力を許可する ②既存の接続、新しい接続パケットの入力を許可する ⑥それ以外の入力は許可しない ③全てのicmpパケットの入力を許可する ④lo(ループバック)インタフェースからの入力を許可する
コマンド説明 stateオプション iptablesコマンド
ターゲットオプション ルールの定義
ポート一覧
設定例 全てのTCPパケットを拒否(自サーバーから他の通信は許可) 設定例 全てのTCPパケットを拒否(自サーバーから他の通信は許可) ① /etc/sysconfig/iptablesファイル ①
設定例:telnet,ssh,ftpのみ許可 コマンド入力 /etc/sysconfig/iptablesファイル
パケットフィルタリング演習 Webサーバを外部に公開する設定 wwwサーバのiptablesを設定してみましょう 外部インターネット 1.内部から、外部からの双方パケットは指定する サービス以外は遮断 2.ループバックアドレスに関してはすべて許可 3.ルータ、wwwサーバ間 wwwサーバ⇒ルータへのhttp,httpsを許可する 4.wwwサーバ、監視サーバ 監視サーバ⇒wwwサーバへのhttp,https,sshを許可 wwwサーバ⇒監視サーバへはパケットを許可しない 192.168.10.1 ①http,https許可 監視サーバ WWWサーバ ②http,https,ssh許可 ③全て許可しない 192.168.100.10 192.168.10.2
設定例 /etc/sysconfig/iptablesファイル
GUIツールを用いたフィルタリング設定 GUIツールを用いたフィルタリング設定を行うことができます。
システムログの利用 Linuxシステムは、様々なシステム情報をログファイルに出力しています。 システムログ Linuxシステム カーネル 各種App システム起動時のログ デバイス情報のログ セキュリティ情報のログ アプリケーションからのログ : /var/log/ messages secure maillog
主なログファイル一覧