ホーム DoRuby xinetd(ザイネットディー) 〜sshのIP制限とアクセスログの記録〜

xinetd(ザイネットディー) 〜sshのIP制限とアクセスログの記録〜

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

rick No32です。
今回は、xinetdといわれるサービスを管理し、必用なときに起動させるデーモンです。
このxinetdでsshのIP制限とアクセスログの記録を行います。

インストール

yum -y install xinetd
> xinetd.x86_64 2:2.3.14-20.el5_10
ls /etc
> xinetd.confとxinetd.dフォルダが作成される

SSH設定

// 自動起動
chkconfig xinetd on
service sshd stop
chkconfig sshd off
cd /etc/xinetd.d/
vim ssh
————————
// 設定するサービス名を指定(/etc/servicesファイルに定義されたサービス名を指定)
service ssh
{
// サービスの停止指定
// no=サービスを起動する
disable =no
// サービスが使用するソケットタイプ
// stream=TCP
// dgram=UDP
// raw=IPダイレクトアクセス
// seqpacket=sequenced packet
socket_type =stream
// マルチスレッド
// yes=1つしかsshを受け付けない
// no=リミットまで受け付ける
wait =no
// サービスを実行するユーザ名
user =root
// 起動するサービスを絶対パスで指定
server =/usr/sbin/sshd
// サービスに渡す引数
server_args =-i
// 接続に成功した場合に記録するログの種類を指定(下記をスペース区切りで繋げられる)
// PID=サービスのプロセスID
// HOST=リモートホストのIPアドレス
// USERID=リモートホストの認証ユーザ名(マルチスレッド+TCPでのみ有効)
// EXIT=サービス終了シグナルを受けたのかを記録
// DURATION=セッション周期(秒)
log_on_success += DURATION HOST USERID
// 接続に失敗した場合に記録するログの種類を指定
// HOST=リモートホストのIPアドレス
// USERID=リモートホストの認証ユーザ名(マルチスレッド+TCPでのみ有効)
// ATTEMPT=起動に失敗した場合の記録
// RECORD=サービスが起動しなかった場合の諸事情を記録
//  設定するとエラー Bad log_on_failure flag: RECORD [file=/etc/xinetd.d/ssh] [line=10]
log_on_failure += HOST USERID
}
———————–
/etc/init.d/xinetd start

共通設定

vim /etc/xinetd.conf
defaults
{
// ログ出力方法を定義
log_type = SYSLOG daemon info
log_on_failure = HOST
log_on_success = PID HOST DURATION EXIT
// 毎秒ごとの可能な接続数上限の設定
// 第1引数=1秒間で処理可能な数
// 第2引数=上限を超えた後サービスが停止し再開するまでの時間
cps = 50 10
// 起動できるデーモンの数
instances = 50
// 同じクライアントからの接続数制限
per_source = 10
v6only = no
groups = yes
umask = 002
}

ログ出力

基本は
/var/log/messages
に出力される
別ファイルに出したい場合は
log_type = FILE ファイル名
を指定するとファイルにログが吐出される(log_typeは型も含めて2つで問題ない)

IP制限

個別指定に
lonly_from = 192.168.7.{23,91}
のようにすると23と91だけ許可になる

注意点

selinuxは停止しておかないと接続できない可能性があります。

記事を共有

最近人気な記事