Linux

速習Linux – Linuxの全体像を素早く理解する

近年、クラウドやコンテナでの開発が普及し、それらでの開発や運用が当たり前になりました。その分、生のLinuxを触る機会が減り、Linuxの技術を持った技術者が減ってきています。
ただ、どんな時代になってもLinuxの技術が淘汰されることはありません。現にLinuxへの深い知識を持った技術者は、とても重宝されています。
皆さんも、この記事を通して、Linuxの技術を身につけてください。

「Linux の勉強をやろうと思ったけど、どこから勉強すればいいの?」という方のために、Linuxの全体を俯瞰できる形で書いていきたいと思います。

Linux(リナックス)とは、WindowsやMacと同じOSの一種です。

おもにサーバーやシステム開発の構築に利用されています。無料で使える、カスタマイズができるなどのメリットがあり、個人・企業問わず人気です。

本記事では、一般的にLinuxを扱う上で最低限必要な知識などを、速習形式でわかり易く解説します。

Linuxはとても大きなシステムなので、どうしても簡易的な解説になってしまいますので、今後、一つ一つのトピックを詳細な解説付きで記事にしていきます。

目次

ファイルシステムとデバイス

ファイルシステムの階層構造やデバイスの管理について詳しく解説します。

ファイルシステムの階層構造と基本的なコンポーネント

Linuxのファイルシステムは、階層構造を持つツリー状の構造をしています。基本的な階層構造は以下の通りです:

  1. /(ルートディレクトリ): すべてのディレクトリとファイルの起点。
  2. /bin: 基本的なコマンドやプログラムが格納される場所。
  3. /etc: システムの設定ファイルが格納される場所。
  4. /home: ユーザーのホームディレクトリが格納される場所。
  5. /var: 変動するデータやログファイルが格納される場所。
$ ls /bin
$ ls /etc
$ ls /home
$ ls /var

ディスクパーティションとファイルシステムの作成と管理

ディスクパーティションを作成することで、物理ディスクを論理的に分割することができます。そして、各パーティションにファイルシステムを作成し、データを保存します。

一般的なパーティション作成コマンド

$ fdisk /dev/sda  # ディスクの選択
$ n  # 新しいパーティションを作成
$ p  # プライマリパーティションを選択
$ <start sector>  # 開始セクタを指定
$ <end sector>  # 終了セクタを指定
$ w  # 変更を保存して終了

ファイルシステムの作成と管理コマンド

$ mkfs.ext4 /dev/sda1  # ext4ファイルシステムの作成
$ mount /dev/sda1 /mnt  # パーティションをマウント
$ df -h  # ディスク使用状況を表示
利用例
$ fdisk /dev/sda
$ n
$ p
$ 1
$ <start sector>
$ <end sector>
$ w
$ mkfs.ext4 /dev/sda1
$ mount /dev/sda1 /mnt
$ df -h

ファイルシステムのバックアップと復元

データのバックアップは非常に重要です。Linuxでは、tarコマンドやrsyncコマンドを使用して、ファイルやディレクトリのバックアップを作成できます。また、バックアップからデータを復元する方法も理解しておく必要があります。

ファイルやディレクトリのバックアップコマンド

$ tar cvf backup.tar /path/to/directory  # ディレクトリをtarアーカイブにバックアップ
$ rsync -avz /path/to/source /path/to/destination  # ディレクトリの同期バックアップ

バックアップからのデータの復元コマンド

$ tar xvf backup.tar -C /path/to/restore  # tarアーカイブからデータを復元
$ rsync -avz /path/to/backup /path/to/restore  # バックアップからデータを復元
利用例
$ tar cvf backup.tar /home/user/Documents
$ rsync -avz /data /backup
$ tar xvf backup.tar -C /home/user/Restore
$ rsync -avz /backup /data_restore

デバイスとハードウェアの管理

Linuxでは、デバイスやハードウェアの管理も重要です。デバイスの認識やドライバの管理、ハードウェア情報の取得などが含まれます。

デバイス管理コマンド

$ lspci  # 接続されているPCIデバイスの一覧を表示
$ lsusb  # 接続されているUSBデバイスの一覧を表示
$ lsblk  # ブロックデバイスの一覧を表示
$ ifconfig  # ネットワークインターフェースの情報を表示

ハードウェア情報の取得コマンド

$ lshw  # システムのハードウェア情報を表示
$ dmidecode  # マザーボードやBIOSの情報を表示
$ hdparm -i /dev/sda  # ハードディスクの情報を表示
利用例
$ lspci
$ lsusb
$ lsblk
$ ifconfig
$ lshw
$ dmidecode
$ hdparm -i /dev/sda

まとめ

ファイルシステムの階層構造や作成、データのバックアップと復元、デバイスとハードウェアの管理について詳細に解説しました。これらの基礎知識とコマンドの使用方法を習得することは、Linuxを扱う上でとても大切ですしLinuxを運用する上で必須知識といえます。

システムアーキテクチャ

Linuxシステムのアーキテクチャについて詳しく解説します。カーネル、プロセス管理、メモリ管理、システムブートプロセスなどについて学びましょう。

カーネルの概要とカーネルモジュールの管理

Linuxカーネルは、オペレーティングシステムの中核であり、ハードウェアとソフトウェアの間のインターフェースを提供します。カーネルのバージョンやモジュールの管理方法を理解することが重要です。

カーネル管理コマンド

$ uname -r  # カーネルのバージョンを表示
$ lsmod  # ロードされているカーネルモジュールの一覧を表示
$ modprobe <module_name>  # カーネルモジュールをロード
$ rmmod <module_name>  # カーネルモジュールをアンロード
利用例
$ uname -r
$ lsmod
$ modprobe usb-storage
$ rmmod usb-storage

プロセス管理とスケジューリング

Linuxでは、複数のプロセスが同時に実行され、リソースの管理やスケジューリングが行われます。プロセスの管理やスケジューリングの方法について学びましょう。

プロセス管理コマンド

$ ps -ef  # 実行中のプロセスの一覧を表示
$ top  # プロセスのリアルタイムな状態を表示
$ kill <PID>  # プロセスを終了
$ nice <command>  # 実行優先度を設定してコマンドを実行
利用例
$ ps -ef
$ top
$ kill 1234
$ nice -n 10 ./my_script.sh

メモリ管理と仮想メモリ

Linuxでは、メモリの管理と仮想メモリの使用が重要です。メモリの使用状況の監視や仮想メモリの設定について理解しましょう。

メモリ管理コマンド

$ free -h  # メモリの使用状況を表示
$ top  # メモリの使用状況とプロセスの情報を表示
$ vmstat  # 仮想メモリの使用状況を表示
$ sysctl vm.swappiness=10  # スワップの優先度を設定
利用例
$ free -h
$ top
$ vmstat
$ sysctl vm.swappiness=10

システムブートプロセスとランレベル

Linuxシステムの起動プロセスやランレベルの管理について学びましょう。システムの起動手順やランレベルの切り替え方法について理解することが重要です。

システムブートプロセスとランレベルの管理コマンド

$ systemctl <command> <service_name> # サービスの起動、停止、再起動
$ systemctl list-units # システムのユニット一覧を表示
$ runlevel # 現在のランレベルを表示
$ init <runlevel> # ランレベルの切り替え
利用例
$ systemctl start nginx
$ systemctl stop apache2
$ systemctl restart mysql
$ systemctl list-units
$ runlevel
$ init 3

Linuxシステムのアーキテクチャについて詳細に解説しました。カーネルの管理、プロセス管理、メモリ管理、システムブートプロセスなど、概念を押さえておく必要があることばかりです。次は、ネットワーキングについて解説します。

ネットワーキング

Linuxシステムにおけるネットワーキングの概念と関連する設定について解説します。IPアドレスの設定、ネットワークインターフェースの管理、ファイアウォールの設定などが含まれます。

IPアドレスの設定とネットワークインターフェースの管理

Linuxシステムでは、ネットワークインターフェースとIPアドレスの設定が重要です。ネットワークインターフェースの設定やIPアドレスの変更方法について学びましょう。

ネットワークインターフェース管理コマンド

$ ifconfig <interface> up/down  # ネットワークインターフェースの有効化/無効化
$ ifconfig <interface> <ip_address> netmask <subnet_mask>  # IPアドレスの設定
$ route add default gw <gateway_ip>  # デフォルトゲートウェイの設定
$ ifconfig -a  # 利用可能なネットワークインターフェースの一覧を表示
利用例
$ ifconfig eth0 up
$ ifconfig eth0 192.168.0.10 netmask 255.255.255.0
$ route add default gw 192.168.0.1
$ ifconfig -a

DNSの設定とホスト名の管理

Linuxシステムでは、DNS(Domain Name System)の設定やホスト名の管理が必要です。正しいDNSの設定とホスト名の管理方法を理解しましょう。

DNS設定とホスト名管理コマンド

$ vi /etc/resolv.conf  # DNSサーバーの設定
$ hostname  # 現在のホスト名の表示
$ hostnamectl set-hostname <new_hostname>  # ホスト名の変更
$ vi /etc/hosts  # ホスト名とIPアドレスの対応を設定
利用例
$ vi /etc/resolv.conf
$ hostname
$ hostnamectl set-hostname myserver
$ vi /etc/hosts
/etc/resolv.confの例

「/etc/resolv.conf」ファイルは、名前解決(ホスト名からIPアドレスを調べること)の設定を行うファイルです。以下簡単な例です。

nameserver     192.168.0.1
nameserver     192.168.0.2
domain         localdomain
search         dm1.example.org   dm2.example.org
/etc/hostsの例

「/etc/hosts」ファイルは、ホスト名とIPアドレスを対応させるためのファイルです。以下簡単な例です。

127.0.0.1   localhost localhost.localdomain 
192.168.0.10  station10  station10.example.net
192.168.0.11  station11  station11.example.net

ファイアウォールとセキュリティ

Linuxシステムでは、ファイアウォールの設定やセキュリティ対策が重要です。ファイアウォールの設定やルールの管理方法について学びましょう。

ファイアウォールとセキュリティ管理コマンド

$ systemctl start firewalld  # ファイアウォールの起動
$ systemctl stop firewalld  # ファイアウォールの停止
$ firewall-cmd --list-all # ファイアウォールの設定とルールの表示
$ firewall-cmd --zone=public --add-service=http --permanent # ファイアウォールのルールの追加
$ firewall-cmd --reload # ファイアウォールの再読み込み
利用例
$ systemctl start firewalld
$ firewall-cmd --list-all
$ firewall-cmd --zone=public --add-service=http --permanent
$ firewall-cmd --reload

ネットワーキングトラブルシューティング

ネットワーキングにおけるトラブルシューティングは、Linuxシステム管理者にとって重要なスキルです。ネットワークの接続問題のトラブルシューティング手法について学びましょう。

ネットワーキングトラブルシューティングコマンド

$ ping <host> # ホストへの疎通テスト
$ traceroute <host> # パケットの経路追跡
$ netstat -tuln # ネットワークポートの状態を表示
$ tcpdump # ネットワークトラフィックのキャプチャ
利用例
$ ping google.com
$ traceroute google.com
$ netstat -tuln
$ tcpdump -i eth0

Linuxシステムにおけるネットワーキングに関連する設定とトラブルシューティングについて解説しました。ネットワークインターフェースの管理やIPアドレスの設定、DNSの設定、ファイアウォールとセキュリティ、ネットワーキングトラブルシューティングなどサーバー管理をすると必須になってくる知識なので、しっかり身につけてください。

システム監視とチューニング

Linuxシステムの監視とチューニングについて解説します。システムのパフォーマンス監視やリソースの最適化などが含まれます。

パフォーマンスモニタリング

Linuxシステムのパフォーマンスを監視することは重要です。システムのリソース使用状況を把握し、ボトルネックや問題を特定するためのツールを学びましょう。

パフォーマンスモニタリングツール

  1. top: システムのリソース使用状況をリアルタイムに表示します。
  2. vmstat: システムの仮想メモリ、ディスク、CPUの使用状況を表示します。
  3. sar: システムのパフォーマンスデータを収集し、レポートとして表示します。
  4. iostat: ディスクI/Oの統計情報を表示します。
パフォーマンスモニタリングツールの具体例
$ top  # リソース使用状況のリアルタイム表示
$ vmstat 1  # 1秒ごとの仮想メモリ、ディスク、CPUの使用状況表示
$ sar -u 1 10  # 1秒ごとにCPUの使用状況を10回表示
$ iostat -d 1 10  # 1秒ごとにディスクI/Oの統計情報を10回表示
利用例
$ top
$ vmstat 1
$ sar -u 1 10
$ iostat -d 1 10

リソース管理とチューニング

Linuxシステムでは、リソースの最適な管理が求められます。メモリ、ディスク、CPUなどのリソースを効果的に管理する方法を学びましょう。

リソース管理とチューニングの手法

  1. スワップの設定: スワップ領域のサイズや優先度を設定してメモリ管理を最適化します。
  2. ディスクパーティショニングとファイルシステム: ディスクのパーティショニングとファイルシステムの選択によってI/Oパフォーマンスを向上させます。
  3. プロセスの優先度と制限: プロセスの優先度やリソース制限を設定してシステムのパフォーマンスを制御します。
スワップの設定
$ swapon --show  # スワップの状態を表示
$ sudo fallocate -l 2G /swapfile  # 2GBのスワップファイルを作成
$ sudo chmod 600 /swapfile  # スワップファイルのパーミッションを設定
$ sudo mkswap /swapfile  # スワップファイルを初期化
$ sudo swapon /swapfile  # スワップを有効化
ディスクパーティショニングとファイルシステム
$ lsblk  # ブロックデバイスの一覧を表示
$ sudo fdisk /dev/sdb  # ディスクパーティションを作成
$ sudo mkfs.ext4 /dev/sdb1  # ファイルシステムを作成
$ sudo mount /dev/sdb1 /mnt/data  # パーティションをマウント
プロセスの優先度と制限
$ nice -n 10 command  # プロセスに優先度を設定して実行
$ ulimit -u 1000  # ユーザーのプロセス数制限を設定

カーネルのパラメータ調整

Linuxシステムでは、カーネルのパラメータを調整することでパフォーマンスやセキュリティを改善することができます。適切なカーネルパラメータの設定方法について学びましょう。

カーネルパラメータの設定方法:

  1. sysctlコマンド: sysctlコマンドを使用してカーネルパラメータを設定・調整します。
  2. /etc/sysctl.confファイル: パラメータの永続的な設定を行うための設定を行います。
sysctlコマンド
$ sysctl -w net.ipv4.ip_forward=1  # IPフォワーディングを有効化
$ sysctl -p  # /etc/sysctl.confの設定を読み込み
/etc/sysctl.confファイル

このファイルは、前回取り上げた「/proc/sys/」ディレクトリに存在するファイルの初期値を記述するファイルです。「/proc/sys/」ディレクトリには、カーネルの挙動を決める値が格納されたファイルが存在します。これらのファイルの値を参照するには「catコマンド」、書き込むには「echoコマンド」を利用します。

# cat /proc/sys/net/ipv4/ip_forward ←/proc/sys/net/ipv4/ip_forward
の値を参照
0 ←/proc/sys/net/ipv4/ip_forwardの値が表示される
# echo "1" > /proc/sys/net/ipv4/ip_forward ←/proc/sys/net/ipv4/
ip_forwardに値「1」を設定
利用例
$ sysctl -w net.ipv4.ip_forward=1
$ sysctl -w kernel.sysrq=0
$ sysctl -w kernel.core_uses_pid=1
$ sysctl -p

上記の例では、net.ipv4.ip_forwardパラメータを1に設定してIPフォワーディングを有効化し、kernel.sysrqパラメータを0に設定してSysRqキーの使用を無効化し、kernel.core_uses_pidパラメータを1に設定してコアダンプファイルにプロセスIDを含めるようにします。

Linuxシステムの監視とチューニングについて詳しく説明しました。パフォーマンスモニタリングツールの使用方法、リソース管理とチューニングの具体的な手法、そしてカーネルパラメータの調整方法を学びました。次は、Linuxシステムのセキュリティについて解説します。

Linuxシステムのセキュリティ

この章では、Linuxシステムのセキュリティについて解説します。セキュリティは重要な要素であり、システムの安全性を確保するために必要な手順やツールを学びましょう。

ユーザーとグループ管理

Linuxシステムでは、適切なユーザーとグループの管理が重要です。アカウントの作成、削除、パスワードの設定などを行い、アクセス制御を強化しましょう。

ユーザーとグループ管理コマンドの具体例

  1. useradd: 新しいユーザーアカウントを作成します。
  2. usermod: ユーザーアカウントの属性やグループを変更します。
  3. passwd: ユーザーアカウントのパスワードを設定または変更します。
  4. groupadd: 新しいグループを作成します。
  5. groupmod: グループの属性やメンバーシップを変更します。
$ sudo useradd -m john  # ユーザーアカウント"john"を作成
$ sudo usermod -aG sudo john  # "john"をsudoグループに追加
$ sudo passwd john  # "john"のパスワードを設定
$ sudo groupadd developers  # "developers"グループを作成
$ sudo usermod -aG developers john  # "john"を"developers"グループに追加

ファイルシステムのセキュリティ

Linuxシステムのファイルシステムのセキュリティを強化することは重要です。適切なアクセス権限の設定、ファイルの暗号化、セキュリティポリシーの設定などを行いましょう。

  1. chmod: ファイルやディレクトリのアクセス権限を設定します。
  2. ls: ディレクトリやファイルの情報を表示します。
$ ls -l myfile.txt  # ファイルのアクセス権限を表示
$ chmod 600 myfile.txt  # ファイルのアクセス権限を設定
利用例
$ sudo useradd -m john
$ sudo usermod -aG sudo john
$ sudo passwd john
$ sudo groupadd developers
$ sudo usermod -aG developers john

$ ls -l myfile.txt
$ chmod 600 myfile.txt

上記の例では、useraddコマンドを使用して新しいユーザーアカウント”john”を作成し、usermodコマンドを使用して”john”をsudoグループに追加します。次に、passwdコマンドを使用して”john”のパスワードを設定し、groupaddコマンドとusermodコマンドを使用して新しいグループ”developers”を作成し、”john”を”developers”グループに追加します。

また、ファイルシステムのセキュリティでは、ls -lコマンドを使用してファイルのアクセス権限を表示し、chmodコマンドを使用してファイルのアクセス権限を設定します。

この章では、ユーザーとグループの管理、ファイルシステムのセキュリティについて詳しく説明しました。適切なユーザーアカウントの作成と管理、ファイルのアクセス権限の設定などにより、システムのセキュリティを強化することができます。次は、Linuxシステムのデータのバックアップと復元について解説します。

データのバックアップと復元

Linuxシステムでは、定期的なデータのバックアップが重要です。データの損失やシステムの障害に備えて、適切なバックアップと復元手法を使用しましょう。

バックアップと復元の具体例

ファイルのバックアップ
$ cp myfile.txt /backup/myfile_backup.txt  # ファイルを別の場所にコピーすることでバックアップを作成
tarを使用したアーカイブと圧縮
$ tar -czvf backup.tar.gz /data  # /dataディレクトリ全体をアーカイブしてgzip形式で圧縮
rsyncを使用したディレクトリの同期
$ rsync -avz /source_directory /destination_directory  # 2つのディレクトリの内容を同期
mysqldumpを使用したデータベースのバックアップ
$ mysqldump -u username -p dbname > backup.sql  # データベースをダンプしてバックアップファイルを作成
利用例
$ cp myfile.txt /backup/myfile_backup.txt

$ tar -czvf backup.tar.gz /data

$ rsync -avz /source_directory /destination_directory

$ mysqldump -u username -p dbname > backup.sql

上記の例では、cpコマンドを使用してmyfile.txt/backup/myfile_backup.txtにコピーしてファイルのバックアップを作成します。

また、tarコマンドを使用して/dataディレクトリ全体をアーカイブしてbackup.tar.gzという名前の圧縮ファイルを作成します。

rsyncコマンドは、2つのディレクトリの内容を同期させるために使用されます。

mysqldumpコマンドは、指定したデータベースをダンプしてbackup.sqlという名前のバックアップファイルを作成します。

データのバックアップと復元について詳しく説明しました。ファイルのバックアップ、アーカイブと圧縮、ディレクトリの同期、データベースのバックアップなどの手法を使用して、重要なデータの損失を防ぐことができます。次は、Linuxシステムのネットワーキングについて解説します。

Linuxシステムのネットワーキング

Linuxシステムでは、ネットワーキングの設定やトラブルシューティングが重要です。ネットワークインターフェースの設定、IPアドレスの割り当て、ネットワークの監視などについて学びましょう。

ネットワーキングの具体例

インターフェースの設定
$ sudo ifconfig eth0 up  # eth0インターフェースを有効化
$ sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0  # eth0インターフェースにIPアドレスとネットマスクを割り当てる
ネットワークルーティングの設定
$ sudo route add default gw 192.168.1.1  # デフォルトゲートウェイを設定
ネットワークの監視
$ iftop  # ネットワークトラフィックのリアルタイム表示
$ netstat -tuln  # ネットワークのリスニングポートを表示
利用例
$ sudo ifconfig eth0 up
$ sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0

$ sudo route add default gw 192.168.1.1

$ iftop

$ netstat -tuln

上記の例では、ifconfigコマンドを使用してeth0インターフェースを有効化し、eth0インターフェースにIPアドレス192.168.1.100とネットマスク255.255.255.0を割り当てます。

また、routeコマンドを使用してデフォルトゲートウェイを設定し、iftopコマンドを使用してネットワークトラフィックをリアルタイムで表示します。

netstatコマンドは、ネットワークのリスニングポートを表示するために使用されます。

この章では、Linuxシステムのネットワーキングについて詳しく説明しました。ネットワークインターフェースの設定、ルーティングの設定、ネットワークの監視などを学ぶことで、Linuxシステムのネットワーキングを効果的に管理できます。次は、Linuxシステムのサービスの管理について解説します。

Linuxシステムのサービス管理

Linuxシステムでのサービスの管理について解説します。サービスはシステムの機能やプロセスを提供し、正常に動作することが重要です。サービスの起動、停止、自動起動の設定、ログの監視などについて学びましょう。

サービスの管理

サービスの管理には、起動、停止、再起動、状態の確認などが含まれます。以下は一般的なサービス管理コマンドの例です。

サービスの起動

$ sudo service nginx start  # nginxサービスを起動

サービスの停止

$ sudo service nginx stop  # nginxサービスを停止

サービスの再起動

$ sudo service nginx restart  # nginxサービスを再起動

サービスの状態確認

$ sudo service nginx status  # nginxサービスの状態を確認

サービスの自動起動の設定

Linuxシステムでは、サービスの自動起動の設定が可能です。システム起動時に自動的にサービスが起動するように設定することができます。


$ sudo systemctl enable nginx  # nginxサービスを自動起動に設定

サービスログの監視

サービスのログを監視することはトラブルシューティングや問題解決に役立ちます。以下は一般的なログ監視コマンドの例です。

ログのリアルタイム表示

$ tail -f /var/log/nginx/access.log  # nginxアクセスログをリアルタイムで表示

特定のキーワードを含むログの表示

$ grep "error" /var/log/nginx/error.log  # nginxエラーログから"error"というキーワードを含む行を表示
利用例
$ sudo service nginx start

$ sudo service nginx stop

$ sudo service nginx restart

$ sudo service nginx status

$ sudo systemctl enable nginx

$ tail -f /var/log/nginx/access.log

$ grep "error" /var/log/nginx/error.log

上記の例では、serviceコマンドを使用してnginxサービスの起動、停止、再起動、状態確認を行います。また、systemctlコマンドを使用してnginxサービスの自動起動を設定します。

ログ監視では、tailコマンドを使用してnginxのアクセスログをリアルタイムで表示し、grepコマンドを使用してnginxのエラーログから特定のキーワードを含む行を表示します。

この章では、Linuxシステムのサービスの管理について解説しました。サービスの起動、停止、再起動、状態の確認、自動起動の設定、ログの監視などを学びました。これにより、Linuxシステムのサービスを効果的に管理し、正常に動作させることができます。
次は、Linuxセキュリティについて解説します。

Linuxセキュリティ

Linuxシステムのセキュリティについて解説します。セキュリティはシステムの安全性を確保し、機密情報やリソースへのアクセスを保護するために重要です。以下にいくつかの重要なセキュリティ関連のトピックを紹介します。

ユーザーとグループの管理

Linuxシステムでは、ユーザーとグループの管理が重要です。ユーザーの作成、削除、パスワードの設定、ユーザーの所属するグループの管理などを行います。

ユーザーの作成

$ sudo useradd username  # 新しいユーザーを作成

ユーザーの削除

$ sudo userdel username  # ユーザーを削除

パスワードの設定

$ sudo passwd username  # ユーザーのパスワードを設定

グループの管理

$ sudo groupadd groupname  # 新しいグループを作成
$ sudo usermod -aG groupname username  # ユーザーをグループに追加

ファイアウォールの設定

Linuxシステムでは、ファイアウォールを使用してネットワークへの不正アクセスを防止することができます。

ファイアウォールの有効化

$ sudo ufw enable  # ファイアウォールを有効にする

ルールの追加

$ sudo ufw allow 22/tcp  # 特定のポートへのアクセスを許可

ルールの削除

$ sudo ufw delete allow 22/tcp  # 特定のポートへのアクセスを拒否

セキュリティパッチの適用

Linuxシステムでは、セキュリティパッチの適用が重要です。定期的にシステムをアップデートし、最新のセキュリティパッチを適用しましょう。

アップデートの確認と適用

$ sudo apt update  # パッケージリストの更新
$ sudo apt upgrade  # アップデート可能なパッケージのアップグレード

以上は一部の例ですが、Linuxシステムのセキュリティに関連する重要なトピックを紹介しました。ユーザーとグループの管理、ファイアウォールの設定、セキュリティパッチの適用などのトピックを含めたセキュリティの詳細な解説を以下に提供します。

パッケージ管理とセキュリティ

Linuxシステムでは、パッケージ管理システムを使用してソフトウェアパッケージのインストール、アップデート、削除を行います。セキュリティの観点からは、以下のポイントに留意する必要があります。

パッケージのインストール

$ sudo apt install package-name  # パッケージのインストール

パッケージのアップデート

$ sudo apt update  # パッケージリストの更新
$ sudo apt upgrade  # アップデート可能なパッケージのアップグレード

パッケージの削除

$ sudo apt remove package-name  # パッケージの削除

セキュリティパッチの適用

$ sudo apt update  # パッケージリストの更新
$ sudo apt upgrade  # アップデート可能なパッケージのアップグレード(セキュリティパッチの適用)

ログの監視と監査

ログの監視と監査はセキュリティの観点から重要な活動です。システムログやアクセスログを監視し、異常なアクティビティやセキュリティ侵害の兆候を検出します。

システムログの表示

$ sudo tail -f /var/log/syslog  # システムログのリアルタイム表示

アクセスログの表示

$ sudo tail -f /var/log/auth.log  # SSHログインのログのリアルタイム表示

SELinuxの設定

SELinux(Security-Enhanced Linux)は、アクセス制御ポリシーを実装するセキュリティ機能です。SELinuxの設定やコンテキストの管理はセキュリティの向上に役立ちます。

SELinuxの状態の確認

$ sudo sestatus  # SELinuxの状態の表示

SELinuxの設定の変更

$ sudo setenforce 0  # SELinuxを一時的に無効化
$ sudo setenforce 1  # SELinuxを有効化

パスワードポリシーの設定

強力なパスワードポリシーの設定は、不正アクセスからの保護に役立ちます。パスワードの複雑さや有効期限の設定などを行います。

パスワードの複雑さの要件の設定

$ sudo vi /etc/pam.d/common-password

このファイルを開き、password requisite pam_pwquality.soの行を編集します。例えば、以下の設定を追加すると、パスワードに大文字、小文字、数字、特殊文字を含むことが要求されます。

password requisite pam_pwquality.so retry=3 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 difok=3

パスワードの有効期限の設定

$ sudo chage -M 90 username

上記の例では、ユーザーのパスワード有効期限を90日に設定します。

パスワードの履歴の設定

$ sudo vi /etc/pam.d/common-password

このファイルを開き、password required pam_pwhistory.soの行を編集します。例えば、以下の設定を追加すると、過去5回のパスワードと重複するパスワードは使用できません。

password required pam_pwhistory.so remember=5

以上がパスワードポリシーの設定の具体例です。パスワードの複雑さ、有効期限、履歴などの要件を設定することで、セキュリティを向上させることができます。

まとめ

この記事で、Linuxシステムのさまざまなトピックについて解説しました。Linuxシステム管理の基本的な側面をカバーしていますここで紹介したトピックを理解し、実践することでLinuxの基礎的な知識を習得できるでしょう。

自宅や仮想マシンでLinux環境を構築し、各種設定や管理タスクを行うことで、より深い理解を得ることができます。今後、仮想マシンの構築なども解説していきます。
それでは頑張ってください!!