Puppet 4ベースのLinuxシステムの展開オプション。パートII:アクセスと標準環境(cfauth + cfsystem)
要するに:
- cfauth -SSHサービス、管理者アカウント、
sudo
、スーパーユーザーパスワードを設定します- cfsystem-設定:APT、タイムゾーン、システムレターの送信、時間同期、標準パッケージの拡張リスト
- すべてのモジュールはcfnetworkネットワークフィルターモジュールと統合されており、追加の設定は不要です。
テーマサイクル:
- パートI:ネットワークおよびネットワークフィルター(cfnetwork + cffirehol)
- パートII:アクセスと標準環境(cfauth + cfsystem)
- パートIII:Puppet Server(cfpuppetserver)のインストール
- パートIV:集中管理(cftotalcontrol)
- パートV:データベース(cfdb)
- パートVI:現在のブラックリストと保護されたノッキング
このモジュールのペアは、展開されたほぼすべてのシステムで実行する必要がある標準アクションを自動化するために使用されます。
cfauth
モジュール
目標
- OpenSSH構成をクリーンアップし、最も必要なものだけを残します
- 公開鍵アクセスのみ
- クライアントDNSホストの受信を無効にする-イグニッション、および追加のブレーキ(常にではない)
- OpenSSHおよびDebianバナーを無効にする
- 積極的なSSHキープアライブの有効化
-
ssh_access
特殊グループのユーザーのみにSSHアクセスを許可します - 暗号化形式でのスーパーユーザーのパスワードの設定
- SSHアクセス用に別のユーザーを作成する
- パーミッション
sudo
コマンド - デフォルトでは、パスワードなし(多数のシステムの管理を簡素化):
-
/opt/puppetlabs/puppet/bin/puppet agent --test
-
/usr/bin/apt-get update
-
/usr/bin/apt-get dist-upgrade
-
/usr/bin/apt-get autoremove *
-
- デフォルトの許可されている環境設定は次のとおりです。
-
DEBIAN_FRONTEND
-
- すべてのチームで
sudo
パスワードを無効にすることは許容されますsudo
多数のマシンにとって便利で比較的安全です
- パーミッション
構成
-
cfauth::admin_auth_keys
- ssh_authorized_key形式の公開SSHキーの必須リスト
-
user
パラメータは既に設定されています -
type = 'ssh-rsa'
デフォルト
-
-
admin_user = 'adminaccess'
管理者のアカウントの名前。 変更して標準を使用しないことをお勧めします。 -
admin_password = undef
指定されている場合、root
および$admin_user
ハッシュ化されたパスワードを設定し$admin_user
mkpasswd -m sha-512
を使用してパスワードを生成することをお勧めします -
admin_hosts = undef
ネットワークフィルターcfnetwork::service_port
src
として渡されcfnetwork::service_port
。 強くお勧めします。 -
sudo_no_password_all = false
-true
場合、ユーザー$admin_user
はパスワードなしでsudo
を介してすべてのコマンドを実行できます -
sudo_no_password_commands = undef
$admin_user
がパスワードなしで実行できるsudo
コマンドの追加リスト。 すべてのコマンドを許可することが実用的でない場合。 -
sudo_env_keep = []
ことができる追加の環境変数 -
sshd_ports = 22
デフォルトのSSHポートのリスト。cfnetwork::describe_services
cfssh
を介してcfssh
サービスを自動的に作成します -
sshd_config_template = 'cfauth/sshd_config.epp'
-OpenSSH構成ファイルを生成するための標準テンプレートをオーバーライドする機能
cfsystem
モジュール
このモジュールは、隔離されたシステムだけでなく、許容される発信接続を制限し、倫理的なネットワーク標準を維持するために、DMZ内で標準サービスを提供する機能にも焦点を当てています-数十のシステムのチームを外部サービスに分割しないでください。
目標
-
certname
応じたhostname
設定-防止のため - 特定のDebianまたはUbuntuリリースのAPT設定を設定する
- デフォルトでは 、メインパッケージのAPTピニングは 1001に設定され、古いバージョンへのロールバックが必要な場合でも現在のパッケージのインストールを強制します(テストパッケージまたは不安定なパッケージが誤ってインストールされた場合に重要)
- 必要に応じて、キャッシュプロキシサーバーを構成する
- 1つの場所に複数のシステムを展開する場合にのみお勧めします
- apt-cacher-ngで使用
- 外部への発信接続を許可せずに、インフラストラクチャに他の更新をダウンロードするための単純なHTTP / HTTPSプロキシとして使用できます。 明らかな理由により、HTTPSはキャッシュされません。
- タイムゾーンを設定します。
推奨事項:好みと色ですが、UTCはデフォルトで多くの問題を解決します-私は管理者と開発者の両方として話しています。 - 連続時間同期を設定します
- 必要に応じて、他のマシンがこのシステムを時間基準として使用できるようにします。
-
SMTP
設定を設定する
- 必要に応じて、ログインとパスワードでスマートホストを指定します
- 必要に応じて、他のローカルマシンがシステムメッセージを集中的に転送できるようにします
注:これは、ネットワークセキュリティ、スマートホストへのアクセスまたは正しいDNS設定などの点で便利です。
-
cfnetwork
APIを使用して必要なすべてのネットワークフィルタールールをcfnetwork
する - etckeeper、curl、htop、tree、ethtool、iftop、netcat、netstat-nat、conntrack、telnet、screen、apticron、chkrootkit、rkhunterなど、ユーティリティの標準リストに含まれていないさまざまな管理ツールをインストールします。 、デブサムなど (完全ではなく、拡張されます、構成オプションが追加される場合があります)
-
cf_location
設定で使用するのに便利なcf_location
およびcf_location_pool
特別なファクトを設定および取得します。 - デフォルトのシステムパラメータの設定
- SSDおよび仮想ディスクのnoop I / Oスケジューラーの強制インストール(ゲストシステム上)
- /etc/rc.localにカスタムコマンドを追加する機能
- すべての可能なロケールのインストールと1つの標準の選択(デフォルトではen_US.UTF-8)
- カーネルのバージョンがインストールされている最新のものと一致しない場合、再起動の毎日のチェック
- puppet.confクライアントの強制更新
- / opt / codingfuture / binの下にインストールされ、シェルおよびCshパスに追加されるヘルパースクリプトのセット:
- cf_clear_email_queue-送信のためにシステムキューからすべてのレターを削除する
- cf_clear_frozen_emails-送信キューから凍結メッセージのみを削除
- cf_send_test_email-管理者アドレスにテストレターを送信します
- cf_kernel_version_check-実行中のカーネルのバージョンとインストールされている最新のバージョンの不一致を確認します
クラスcfsystem
ネストされたクラスはすべて自動的に追加されます。
-
allow_nfs = false
許可されていない場合、デフォルトのRPCとNFSを切り取ります -
admin_email = undef
システム通知用のメールアドレス -
repo_proxy = undef
システムパッケージをダウンロードするためのHTTP / HTTPSプロキシサーバーをインストールする
-
host
-IPまたは名前 -
port
-TCPポート
-
-
add_repo_cacher = false
$service_face
クライアントを受け入れるプロキシサーバーを設定します -
service_face = 'any'
cfnetwork::iface
-cfnetwork::iface
サービスが有効な場合にクライアントをリッスンするcfnetwork::iface
インターフェイス -
ntp_servers = [ 'pool.ntp.org' ]
-同期用のNTPサーバーのリスト -
add_ntp_server = false
$service_face
クライアントを受け入れるNTPサーバーを設定します -
timezone = 'Etc/UTC'
ゾーン -
apt_purge
-apt::purge
渡され、リポジトリとパッケージ設定の管理されていない設定をすべて削除します -
apt_update
-apt::update
渡されます。 デフォルトでは、毎日300秒のタイムアウトが設定されています。 -
apt_pin = 1001
標準パッケージの優先度。 追加のリポジトリが$ apt_pin + 1として追加されます(1001> =強制ダウングレード) -
apt_backports_pin = 600
設定しない場合= = $ apt_pin> 1000の場合、パッケージは自動的に古いバージョンにロールバックされます( セキュリティアップデートのサポートが制限されているため 、これがデフォルトです) -
real_hdd_scheduler = 'deadline'
実際のハードドライブのデフォルトのI / Oスケジューラー。 SSDとvirtualkaの場合、常に何もしません。 -
rc_local = undef
オプションのコマンドリスト -
puppet_host = "puppet.${::trusted['domain']}"
-Puppet Serverアドレス -
puppet_cahost = $puppet_host
-Puppet CAアドレス -
puppet_env = $::environment
-現在の環境(通常はproduction
環境) -
puppet_use_dns_srv = false
- DNS SRVレコードを使用して$puppet_host
および$puppet_cahost
を検出するかどうか -
locale = 'en_US.UTF-8'
デフォルトのロケール
クラスcfsystem::hierapool
hiera.yamlで階層を設定するのに便利なファクトのインストールとサポート。
-
cf_location
は、本質的に物理データセンターの連想名です。 これに基づいて、APTパッケージリポジトリなどのアドレスを設定すると便利です。 -
cf_location_pool
サーバーの特定のグループは、特定の場所にある別のDMZグループを意味します。
例:
--- :backends: - yaml :hierarchy: - "%{::trusted.domain}/%{::trusted.hostname}" - "%{::trusted.domain}" - "%{::cf_location}/%{::cf_location_pool}" - "%{::cf_location}" - common :merge_behavior: deeper :yaml: :datadir:
パラメータ:
-
location = undef
/etc/cflocation
場合、/etc/cflocation
保存しlocation = undef
-
pool = undef
/etc/cflocationpool
指定されている場合、/etc/cflocationpool
保存します
クラスcfsystem::email
システム通知の送信を構成します。
-
smarthost = undef
-SMTPのスマートホストを設定します -
smarthost_login = undef
undef-必要に応じてスマートホストのログイン -
smarthost_password = undef
undef-必要に応じてスマートホストのパスワード -
relay_nets = <private subnets>
-このシステムを介して文字を転送することを許可されているネットワークのリスト(単独では含まれません) -
listen_ifaces = undef
-listen_ifaces = undef
の名前のcfnetwork::iface
文字を送信するためにクライアントをリッスンするcfnetwork::iface
インターフェイス -
disable_ipv6 = true
-IPv6を無効にします-Exim4構成に直接進みます。
注:SMTPにIPv6を使用することは、まだ悪い考えです。
クラスcfsystem::sysctl
-
vm_swappiness = 1
(%)、デフォルトでスワップの使用を最小限に減らします。
この機能はまだ完全ではなく、拡張される可能性があります。
クラスcfsystem::debian
Debian固有:
-
apt_url = 'http://httpredir.debian.org/debian'
ベースアドレス
注意:apt-cacher-ngの問題に気づきました-インフラストラクチャに使用する場合は、fixedを指定することをお勧めします -
security_apt_url = 'http://security.debian.org/'
Security APTのベースアドレス -
release
= 'jessie'-リリース名
クラスcfsystem::ubuntu
Ubuntuに固有:
-
apt_url = 'mirror://mirrors.ubuntu.com/mirrors.txt'
ベースアドレス -
release = 'wily'
リリース名
タイプcfsystem::debian::debconf
標準package
タイプのラッパーですが、Debian Configのイデオロギー的に正しい構成をサポートしています。
-
package = $title
の名前 -
ensure = present
-package
-
config = []
debconf-set-selections
構成オプション
生きている例
Vagrantでのインフラストラクチャの完全な展開については、 こちらをご覧ください 。
ヒエラ設定
--- classes: - cfsystem # `cf_location` `cf_location_pool` # , cfsystem::hierapool::location: 'somelocation' cfsystem::hierapool::pool: 'somepool' cfauth::admin_user: vagrant # mkpasswd -m sha-512: 'vagrant' cfauth::admin_password: '$6$W32Psa5h$l7iIrVFdG.6SRta86n1GlDcMBapDP3fpzLD4F2Vkz2xTfd2GFg34h5CEBH3JifiVRszumAteGDLXZEbp2bx3Z0' cfauth::sudo_no_password_all: true cfauth::admin_auth_keys: data_test: key: 'AAAAB3NzaC1yc2EAAAADAQABAAAAgQDiruOsKA2xTeITRnmLlWph1xNdyoX7cufWU48737E8KQSltRZEeyyLKKPR0L+XTwrvpIhwymikP+7K77KMF8yEg9f98FaYtxGdEvPqGVO7Dezdg3eQmQzYce0/wlgLXn0GJa2TcrG7lvSnHkCjbOV5lRWP5vY92skYQHhuwtMgtQ==' options: - 'from="10.0.0.0/8,192.168.0.0/16,172.16.0.0/12"' # IP cfauth::admin_hosts: - '10.0.0.0/8' - '192.168.0.0/16' - '172.16.0.0/12' # APT , NTP SMTP Smarthost cfsystem::repo_proxy: host: maint.example.com port: 3142 cfsystem::ntp_servers: 'maint.example.com' cfsystem::email::smarthost: 'maint.example.com' # 'maint.example.com' #=================================================== cfsystem::add_repo_cacher: true cfsystem::add_ntp_server: true cfsystem::ntp_servers: - 0.debian.pool.ntp.org - 1.debian.pool.ntp.org - 2.debian.pool.ntp.org - 3.debian.pool.ntp.org cfsystem::email::smarthost: cfsystem::email::listen_ifaces: 'main'
/ wlgLXn0GJa2TcrG7lvSnHkCjbOV5lRWP5vY92skYQHhuwtMgtQ ==' --- classes: - cfsystem # `cf_location` `cf_location_pool` # , cfsystem::hierapool::location: 'somelocation' cfsystem::hierapool::pool: 'somepool' cfauth::admin_user: vagrant # mkpasswd -m sha-512: 'vagrant' cfauth::admin_password: '$6$W32Psa5h$l7iIrVFdG.6SRta86n1GlDcMBapDP3fpzLD4F2Vkz2xTfd2GFg34h5CEBH3JifiVRszumAteGDLXZEbp2bx3Z0' cfauth::sudo_no_password_all: true cfauth::admin_auth_keys: data_test: key: 'AAAAB3NzaC1yc2EAAAADAQABAAAAgQDiruOsKA2xTeITRnmLlWph1xNdyoX7cufWU48737E8KQSltRZEeyyLKKPR0L+XTwrvpIhwymikP+7K77KMF8yEg9f98FaYtxGdEvPqGVO7Dezdg3eQmQzYce0/wlgLXn0GJa2TcrG7lvSnHkCjbOV5lRWP5vY92skYQHhuwtMgtQ==' options: - 'from="10.0.0.0/8,192.168.0.0/16,172.16.0.0/12"' # IP cfauth::admin_hosts: - '10.0.0.0/8' - '192.168.0.0/16' - '172.16.0.0/12' # APT , NTP SMTP Smarthost cfsystem::repo_proxy: host: maint.example.com port: 3142 cfsystem::ntp_servers: 'maint.example.com' cfsystem::email::smarthost: 'maint.example.com' # 'maint.example.com' #=================================================== cfsystem::add_repo_cacher: true cfsystem::add_ntp_server: true cfsystem::ntp_servers: - 0.debian.pool.ntp.org - 1.debian.pool.ntp.org - 2.debian.pool.ntp.org - 3.debian.pool.ntp.org cfsystem::email::smarthost: cfsystem::email::listen_ifaces: 'main'
UPD 2016-02-18:
- ディスクI / Oスケジューラーの自動構成の説明を追加
- /etc/rc.localでの任意のコマンドのサポート
UPD 2016-03-12:
- APTピニング管理
- ロケール管理
- カーネルのバージョンがインストールされている最新のものと一致しない場合の再起動の確認
- 以前に文書化されていないEximのヘルパースクリプトのセット
- Puppet Agent構成オプション
- タイプcfsystem :: debian :: debconf
-
sudo
環境変数のサポートが追加されました