うろ覚えが多いのでメモ、きちんとやると書き切れないのですが、ざっくりと、、、
ユーザ作成、SSH設定
ユーザ作成 パスワード指定
add user [user name]
passwd [uer name]
sudoの登録
visudo
# user host=(権限) command
[user] ALL=(ALL) ALL
# パスワードなしで実行できるようにするときは下記の記述
[user] ALL=NOPASSWD: ALL
ユーザが所属しているグループにsudoなどがあるとパスワードが求められるので確認をする
goups [user]
sshの設定
vim /etc/ssh/sshd_config
# rootログインの拒否をしてユーザでのパスワードログインであれば下記の設定
PermitRootLogin no
# もしくは
PermitRootLogin without-password
# 秘密鍵での認証を設定する場合下記の設定を行う
# RSA認証の許可(デフォルトでされてるはず)
RSAAuthentication yes
# パスワード認証の拒否
PasswordAuthentication no
# チャレンジレスポンス認証の拒否
ChallengeResponseAuthentication no
# 公開鍵の保存場所の指定(コメントアウトがされてれば外す)
AuthorizedKeysFile %h/.ssh/authorized_keys
ssh公開鍵、秘密鍵の作成配置
公開鍵と秘密鍵の作成
ssh-keygen -t rsa
接続先のマシンに作成された公開鍵[ファイル名].pub
を安全な方法で/home/(ログインするユーザ)/.ssh
ディレクトリへ入れる
下記コマンドでファイル名を変更し、権限などの設定を行う
# ファイル名の変更
mv [ファイル名].pub authorized_keys
# 所有者をユーザへ変更
chown [user] authorized_keys
# グループをユーザグループへ変更
chgrp [user] authorized_keys
# 権限を変更
chmod 600 authorized_keys
# ディレクトリの権限変更
chmod 700 .ssh
接続元のマシンの設定(Linux)
# 作成された秘密鍵を`id_rsa`(任意の名前で可)へリネームし`/home/[user]/.ssh/`ディレクトリへ移動
mv [ファイル名] /home/[user]/.ssh/id_rsa
# /.ssh/configを編集
vim /.ssh/config
# 秘密鍵を追加
IdentityFile ~/.ssh/id_rsa
sshdの再起動
# centOS系
/etc/init.d/sshd restart
# もしくは
systemctl restart sshd
service ssh restart
# ubuntu debian系
/etc/init.d/sshd restart
# もしくは
service ssh restart
サービス自動起動設定ツール
chkconfig
コマンド | 説明 |
---|---|
chkconfig --list [service] | サービスの自動起動状態 |
chkconfig --list | 全サービスの自動起動状態 |
chkconfig [--level levels(2345 2 etc...)] [service] on | サービスの自動起動を有効にする |
chkconfig [service] off | サービスの状態起動を無効にする |
chkconfig --add [service] | サービスを登録する |
chkconfig --del [service] | サービスの登録を削除 |
sysv-rc-conf
コマンド | 説明 |
---|---|
sysv-rc-conf [service] on | 自動起動の設定 |
sysv-rc-conf [service] off | 自動起動の設定解除 |
sysv-rc-conf | TUIを使用して自動起動の設定 |
sysv-rc-conf --list [service] | サービスの自動起動状態 |
SElinux
getenforce
で確認
/etc/selinux/config
を編集
SELINUX=disabled
として無効化、サーバ再起動が必要
centos
パッケージ管理
コマンド | 説明 |
---|---|
yum check-update | アップデート可能なパッケージ一覧 |
yum update | 全パッケージのアップデート |
yum upgrade | update --obsoletesと同等 |
yum install [package] | パッケージのインストール |
yum remove [package] | パッケージの削除 |
yum seach keyword | キーワードでパッケージを検索 |
yum list installed | インストール済みパッケージ一覧 |
update時にカーネルを除外
[main]
exclude=kernel* #この行がなければ追加
サービス関連
~centos6
コマンド | 説明 |
---|---|
service [service] status | サービスの状態 |
service --status-all | 全サービスの状態 |
service [service] [start stop restart] | サービスの起動、停止、再起動 |
/etc/init.d/[service] [start stop restart] | サービスの起動、停止、再起動 |
自動起動ファイルの作成(System V Init系)
下記のようなファイルを作成し実行権限を付与して/etc/init.d配下に置く
# !/bin/bash
#
# chkconfigで使用するランレベルの登録
# 2345はランレベルの指定
# 85は`ls /etc/rc.d/rc3.d/`で見た時のS**の番号を表し、起動する番号
# 15、停止する番号
# chkconfig: 2345 75 35
#
# chkconfigで使用する名前
# description: example
#
# プロセス名
# processname: example
case "$1" in
start)
/usr/bin/example
echo "Start"
;;
stop)
killall example
echo "Stop"
;;
*)
echo $"Usage:start|stop|restart"
esac
exit 0
iptable関連
下記コマンドにて設定ファイルの編集
# vi /etc/sysconfig/iptables
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
# pingの許可する
-A INPUT -p icmp -j ACCEPT
# 接続済みの通信許可
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# ループバックアドレスへの通信許可
-A INPUT -i lo -j ACCEPT
# 外への通信はすべて許可する
-A OUTPUT -p tcp --dport -j ACCEPT
# 外からの通信でtcp特定ポート宛ての通信許可
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
# 特定のIPからの通信のみ許可する場合
-A INPUT -m state --state NEW -p tcp -s 192.168.12.0/24 --dport 20:21 -j ACCEPT
# ログの取得"iptables:"はログ出力時の識別子
-A INPUT -j LOG --log-prefix "iptables:" --log-level=error
COMMIT
サービスの再起動
/etc/init.d/iptables start
centos7~
コマンド | 説明 |
---|---|
systemctl list-unit-files -t service | サービス一覧 |
systemctl status [service].service | サービスのステータス確認 |
systemctl enable [service].service | サービスの自動起動 |
systemctl disable [service].service | サービスの自動起動解除 |
systemctl start | stop |
自動起動ファイルの作成(systemd系)
/etc/systemd/system/[service].service
[Unit]
# サービス名
Description = [service]
[Service]
# 起動コマンド
ExecStart = [command]
# 停止コマンド
ExecStop = [command]
# リロードコマンド
ExecReload = [command]
# ExecStartPre 実行前に実行
# ExecStartPost 実行後に実行
# 繰り返し起動の設定
Restart = always
# フォアグラウウンドで実行
Type = simple
# フォークならType=forking
[Install]
# 通常起動
WantedBy = multi-user.target
# GUIならWantedBy = graphical.targetと記述
firewalld(INPUT制御に特化している)
コマンド | 説明 |
---|---|
firewall-cmd --get-services | 定義されているサービス一覧 |
firewall-cmd --get-services | 許可サービス |
firewall-cmd --list-all | 設定確認 |
firewall-cmd --reload | リロード |
firewall-cmd --list-services --zone=public | public(INPUT制御)の設定確認 |
firewall-cmd --permanent --add-service=[service] --zone=public | サービスをpublicへ追加(--permanentがないと再起動後にリセットされるがその場合はrestartもしくはreloadが必要) |
firewall-cmd --permanent --remove-service=[service] --zone=public | サービスをpublicから削除(--permanentがないと再起動後にリセットされるがその場合はrestartもしくはreloadが必要) |
firewall-cmd --permanent --add-port=[port]/[protocol] | サービス名ではなくポート、プロトコル指定で設定 |
firewall-cmd --query-service=[service] --zone=public | サービスがpublicで許可されているか確認 |
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>submission</short>
<description> [service]
</description>
<port protocol="[prptocol]" port="port"/>
</service>
ubuntu debian
パッケージ管理
コマンド | 説明 |
---|---|
yum check-update | アップデート可能なパッケージ一覧 |
apt-get update | パッケージリストの更新 |
apt-get upgrade | パッケージの更新 |
apt-get dist-upgrade | パッケージの構成変更を行う、更新を行う(カーネルも含む) |
dpkg -l [package] | パッケージ一覧 |
apt-get install [package] | パッケージのインストール |
apt-cache search [package] | パッケージを検索 |
apt-get remove [package] | パッケージの削除 |
apt-get purge [package] | 設定ファイルも含めて削除 |
apt-get autoremove | 不要パッケージの削除 |
apt-get --purge --force-yes remove [package] | パッケージの強制削除 |
サービス関連
init
デーモンの調べ方
dpkg -S /sbin/init
upstart: /sbin/init
# もしくは
systemd-sysv: /sbin/init
upstart系サービスコマンド
コマンド | 説明 |
---|---|
initctl start stop restart [job] | ジョブの起動、停止、再起動 |
initctl status | ジョブの状態確認 |
initctl reload | リロード |
initctl list | ジョブのリスト表示 |
initctl reload-configuration | 設定の読み込み |
upstart系サービス登録
/etc/init/[job].conf
を編集
# 説明
description "job"
# 著者
author "ototo"
# スタートランレベルの設定
start on runlevel [2345]
# 停止ランレベルの設定
stop on runlevel [016]
# 作業ディレクトリの設定
chdir [dir]
# 起動させるコマンド
exec [command]
# 繰り返し起動の指定
respawn
# ジョブ前後の処理(書かなくてもOK)
# pre-start ジョブ開始前
# post-start ジョブ開始後
# pre-stop ジョブ停止前
# post-stop ジョブ停止後
pre-start script
[command or check]
end script
編集後設定の再読みこみ実施
initctl reload-configuration
systemd-sysv系サービスコマンド
コマンド | 説明 |
---|---|
systemctl list-unit-files -t service | サービス一覧 |
systemctl status [service].service | サービスのステータス確認 |
systemctl enable [service].service | サービスの自動起動 |
systemctl disable [service].service | サービスの自動起動解除 |
systemctl start stop restart [service].service | サービスの起動、停止、再起動 |
自動起動ファイルの作成(systemd系)
/etc/systemd/system/[service].service
[Unit]
# サービス名
Description = [service]
[Service]
# 起動コマンド
ExecStart = [command]
# 停止コマンド
ExecStop = [command]
# リロードコマンド
ExecReload = [command]
# ExecStartPre 実行前に実行
# ExecStartPost 実行後に実行
# 繰り返し起動の設定
Restart = always
# フォアグラウウンドで実行
Type = simple
# フォークならType=forking
[Install]
# 通常起動
WantedBy = multi-user.target
# GUIならWantedBy = graphical.targetと記述
update-rc.d関連
コマンド | 説明 |
---|---|
update-rc.d [servise] defaults | 自動起動の登録 |
update-rc.d -f [service] remove | 自動起動の登録解除 |
sudo update-rc.d [service] enable 2 3 4 5 | 自動起動設定(ランレベルの指定は無くても可) |
sudo update-rc.d [service] disable 2 3 4 5 | 自動起動設定解除(ランレベルの指定は無くても可) |
ls -l /etc/rc*.d/*[service] | サービスの設定状態確認 |
insserv関連(debian6~ Ubuntu 12~ 推奨)
コマンド | 説明 |
---|---|
insserv -d [service] | 自動起動の登録 |
insserv -r [service] | 自動起動の登録解除 |
insserv [service],start=2,3,4,5 | 自動起動設定(ランレベルの指定は無くても可) |
insserv [service],stop=2,3,4,5 | 自動起動設定解除(ランレベルの指定は無くても可) |
ls -l /etc/rc*.d/*[service] | サービスの設定状態確認 |
autostart(ウィンドウマネージャでデスクトップアプリを自動起動したい時など)
~/.config/lxsession/LXDE/autostart
ファイルの編集する方法
(ラズパイはLXDEではなくLXDE-pi)
下記のように追記
@[command]
~/.config/autostart
に下記のような.desktop
ファイルを設置する方法
[Desktop Entry]
Type=Application
# アプリケーション名
Name=[name]
# コマンド名
Exec=[command]
Terminal=false
iptable関連
iptables-persistent
のインストール
apt-get install iptables-persistent
設定ファイルの編集
vim /etc/iptables/rules.v4
vim /etc/iptables/rules.v6
下記編集例
*filter
# ループバックアドレスへの通信許可それ以外は破棄
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
# pingの許可する
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# 接続済みの通信許可
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 外への通信はすべて許可する
-A OUTPUT -j ACCEPT
# 外からの通信でtcp特定ポート宛ての通信許可
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
# 特定のIPからの通信のみ許可する場合
-A INPUT -m state --state NEW -p tcp -s 192.168.12.0/24 --dport 20:21 -j ACCEPT
# ログの取得"iptables:"はログ出力時の識別子
-A INPUT -j LOG --log-prefix "iptables:" --log-level=error
# 条件に一致する物以外のパケットは破棄
-A INPUT -j REJECT
-A FORWARD -j REJECT
COMMIT
設定の反映サービスの再起動
/etc/init.d/iptables-persistent save | restart
#もしくは
/etc/init.d/netfilter-persistent save | restart