t4traw's blog

CentOS7にPostfix & Dovecot & Let's Enclypt環境をitamaeで構築する[1]

ひとまずFirewallの設定から。CentOS7からはファイアウォールがiptablesではなくfirewalldに変わったらしい。

CentOS7のfirewallのレシピ

サクっとfirewalldを停止してiptablesをインストール……といいたい所だけど、こういうのはデフォルトで採用されている物を使うべきという経験からfirewalldを使う事にした。

itamae-plugin-resource-firewalldというプラグインがあったが、はじめてだしそのままコマンドを直書きして設定する事にした。

service 'firewalld' do
  action [:start, :enable]
end

# 自分用のsshポートを開ける
execute "Add new ssh port" do
  user "root"
  command "firewall-cmd --permanent --add-port=#{node[:ssh][:port]}/tcp --zone=public"
end

# デフォルトのsshポートを閉じる
execute "Close default ssh port" do
  user "root"
  command "firewall-cmd --permanent --remove-service=ssh"
end

# webサーバー系のポートを開ける
execute "add web server ports" do
  user "root"
  cmd = [
    'firewall-cmd --add-port=80/tcp --permanent --zone=public',
    'firewall-cmd --add-port=443/tcp --permanent --zone=public'
  ]
  command cmd.join('&&')
end

# メールサーバー用のポートを開ける
execute "add mail server ports" do
  user "root"
  cmd = [
    'firewall-cmd --add-port=25/tcp --permanent --zone=public',
    'firewall-cmd --add-port=465/tcp --permanent --zone=public',
    'firewall-cmd --add-port=993/tcp --permanent --zone=public',
    'firewall-cmd --add-port=995/tcp --permanent --zone=public'
  ]
  command cmd.join('&&')
end

execute 'firewall-cmd --reload'

service 'firewalld' do
  action [:restart]
end

うん、とってもシェルスクリプトでいい感を醸し出してるけど、まあいいやw

iptablesでサクっとファイル転送も良かったけど、実際サーバーを建ててからsshでなにかする時は、firewalldの方が簡単で操作しやすく分かりやすいなと思いました。

次はPostfixとDovecotのレシピ書きます。

それでは。

※全体的なレシピもGitHubにpushしてあります。

t4traw/mailserver-itamae-recipe

カテゴリー

キーワード