SELinux使用時にWordPressでFTP、メール送信する方法

Linux,Mail

WordPressからFTPサーバーへ接続できない

管理しているブログの記事が増えてきたのでWordPressのバックアップをある程度自動化しようと思い BackWPupプラグインを試した。WPサーバーと同じ物理サイトにFTPサーバーがあるので、そこに保存しようとしたがエラーとなりバックアップジョブが失敗した。

[11-Jan-2020 18:32:50] 1. バックアップするフォルダーのリストを作成します…
[11-Jan-2020 18:32:50] "wp-config.php" をリストに追加しました。
[11-Jan-2020 18:32:50] 153 個のフォルダーをバックアップ。
[11-Jan-2020 18:32:50] 1. マニフェストファイルを生成します…
[11-Jan-2020 18:32:50] manifest.json ファイル (1.39 KB) をバックアップファイルリストへ追加しました。
[11-Jan-2020 18:32:50] 1. バックアップアーカイブを作成します…
[11-Jan-2020 18:32:50] ファイルを ZipArchive に圧縮します。時間がかかる場合がありますので、しばらくお待ちください。
[11-Jan-2020 18:32:55] バックアップアーカイブを作成しました。
[11-Jan-2020 18:32:55] アーカイブのサイズは 10.93 MB です。
[11-Jan-2020 18:32:55] アーカイブ内に 41.80 MB、1708個のファイルがあります。
[11-Jan-2020 18:32:57] 1. FTP サーバーへバックアップファイルを送信します…
[11-Jan-2020 18:32:57] エラー: FTP サーバーに接続できません: 192.168.xxx.yyy:21
[11-Jan-2020 18:32:57] 2. FTP サーバーへバックアップファイルを送信します…
[11-Jan-2020 18:32:57] エラー: FTP サーバーに接続できません: 192.168.xxx.yyy:21
[11-Jan-2020 18:32:57] 3. FTP サーバーへバックアップファイルを送信します…
[11-Jan-2020 18:32:57] エラー: FTP サーバーに接続できません: 192.168.xxx.yyy:21
[11-Jan-2020 18:32:57] エラー: ステップを中止: 回数が多すぎます!
[11-Jan-2020 18:32:57] エラー: ジョブは7秒でエラー終了しました。エラーを解決する必要があります。

WPサーバーのコンソール(bash)からFTPコマンドではログインやput/getできるのでネットワークやFTPサーバー側の問題ではない。また、DropBoxへのバックアップを試すとこれはあっけなく成功した。

Concrete5からメール送信できない

一方 Concrete5で構築したサイトを半年ぶりにメンテナンスしようしたがパスワードを忘れログインできないためリマインダーでリセットすることにした。ところがリマインドのメールが送られてこないのでリセットもできない事態に陥った。これはなんとか解決しなければならない。

ちなみにConcrete5はログイン失敗回数が多いとアクセス元IPアドレスをブロックしてしまうが、これはSQLの「LoginControlIpRanges」テーブルから当該レコードを削除することで対処できる。

audit.log

相次いで発生したトラブル、たぶんSELinuxのせいだろうとaudit.logを見ると、確かにFTP接続やメール送信のタイミングでログが上がっている。
httpdの挙動をブロックしているようだ。

■FTP失敗
type=AVC msg=audit(1578889320.101:74245): avc:  denied  { name_connect } for  pid=964 comm="httpd" dest=21 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:ftp_port_t:s0 tclass=tcp_socket permissive=0
type=SYSCALL msg=audit(1578889320.101:74245): arch=c000003e syscall=42 success=no exit=-13 a0=10 a1=7f43e006e890 a2=10 a3=5e1bf068 items=0 ppid=5826 pid=964 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd" subj=system_u:system_r:httpd_t:s0 key=(null)
type=PROCTITLE msg=audit(1578889320.101:74245): proctitle=2F7573722F7362696E2F6874747064002D44464F524547524F554E44

■メール送信失敗(PHP)
type=AVC msg=audit(1578889852.015:74291): avc:  denied  { read } for  pid=4347 comm="sendmail" name="main.cf" dev="dm-0" ino=102354819 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:postfix_etc_t:s0 tclass=file permissive=0
type=SYSCALL msg=audit(1578889852.015:74291): arch=c000003e syscall=2 success=no exit=-13 a0=564863ee79b0 a1=0 a2=0 a3=3 items=0 ppid=26418 pid=4347 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="sendmail" exe="/usr/sbin/sendmail.postfix" subj=system_u:system_r:httpd_t:s0 key=(null)
type=PROCTITLE msg=audit(1578889852.015:74291): proctitle=2F7573722F7362696E2F73656E646D61696C002D74002D69

■メール送信失敗(postfix)
type=AVC msg=audit(1578889992.011:74292): avc:  denied  { name_connect } for  pid=1112 comm="httpd" dest=25 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:smtp_port_t:s0 tclass=tcp_socket permissive=0
type=SYSCALL msg=audit(1578889992.011:74292): arch=c000003e syscall=42 success=no exit=-13 a0=10 a1=7f43d8c248e0 a2=1c a3=5e1bf308 items=0 ppid=5826 pid=1112 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd" subj=system_u:system_r:httpd_t:s0 key=(null)
type=PROCTITLE msg=audit(1578889992.011:74292): proctitle=2F7573722F7362696E2F6874747064002D44464F524547524F554E44

試しにSELinuxを無効化すると、FTPもメール送信も成功する。やはりSELinuxが原因だ。

[root@sv11 ~]# getenforce
Enforcing
[root@sv11 ~]# setenforce 0
[root@sv11 ~]# getenforce
Permissive

seboolを設定変更

seboolを眺めてみると、関係しそうなものがあったので有効化してみたら無事 FTPもメール送信も成功した 。

[root@sv11 ~]# getsebool -a
中略
httpd_can_connect_ftp --> off
中略
httpd_can_sendmail --> off
後略
[root@sv11 ~]# setenforce 1
[root@sv11 ~]# getenforce
Enforcing
[root@sv11 ~]# setsebool -P httpd_can_connect_ftp 1
[root@sv11 ~]# getsebool httpd_can_connect_ftp
httpd_can_connect_ftp --> on
[root@sv11 ~]# setsebool -P httpd_can_sendmail 1
[root@sv11 ~]# getsebool httpd_can_sendmail
httpd_can_sendmail --> on

まとめ

SELinuxが原因かな?と思ったら、SELinuxを一時無効化してみる。
# setenforce 0
SELinuxが原因と分かったら、seboolで許可したい動作を有効化する。
# setenforce 1
# setsebool 項目名 1

seboolの項目は一度一通り眺めておくと良いかも。

abrt_anon_write --> off
abrt_handle_event --> off
abrt_upload_watch_anon_write --> on
antivirus_can_scan_system --> off
antivirus_use_jit --> off
auditadm_exec_content --> on
authlogin_nsswitch_use_ldap --> off
authlogin_radius --> off
authlogin_yubikey --> off
awstats_purge_apache_log_files --> off
boinc_execmem --> on
cdrecord_read_content --> off
cluster_can_network_connect --> off
cluster_manage_all_files --> off
cluster_use_execmem --> off
cobbler_anon_write --> off
cobbler_can_network_connect --> off
cobbler_use_cifs --> off
cobbler_use_nfs --> off
collectd_tcp_network_connect --> off
condor_tcp_network_connect --> off
conman_can_network --> off
conman_use_nfs --> off
container_connect_any --> off
cron_can_relabel --> off
cron_system_cronjob_use_shares --> off
cron_userdomain_transition --> on
cups_execmem --> off
cvs_read_shadow --> off
daemons_dump_core --> off
daemons_enable_cluster_mode --> off
daemons_use_tcp_wrapper --> off
daemons_use_tty --> off
dbadm_exec_content --> on
dbadm_manage_user_files --> off
dbadm_read_user_files --> off
deny_execmem --> off
deny_ptrace --> off
dhcpc_exec_iptables --> off
dhcpd_use_ldap --> off
domain_can_mmap_files --> on
domain_can_write_kmsg --> off
domain_fd_use --> on
domain_kernel_load_modules --> off
entropyd_use_audio --> on
exim_can_connect_db --> off
exim_manage_user_files --> off
exim_read_user_files --> off
fcron_crond --> off
fenced_can_network_connect --> off
fenced_can_ssh --> off
fips_mode --> on
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
ganesha_use_fusefs --> off
git_cgi_enable_homedirs --> off
git_cgi_use_cifs --> off
git_cgi_use_nfs --> off
git_session_bind_all_unreserved_ports --> off
git_session_users --> off
git_system_enable_homedirs --> off
git_system_use_cifs --> off
git_system_use_nfs --> off
gitosis_can_sendmail --> off
glance_api_can_network --> off
glance_use_execmem --> off
glance_use_fusefs --> off
global_ssp --> off
gluster_anon_write --> off
gluster_export_all_ro --> off
gluster_export_all_rw --> on
gluster_use_execmem --> off
gpg_web_anon_write --> off
gssd_read_tmp --> on
guest_exec_content --> on
haproxy_connect_any --> off
httpd_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd_can_connect_ftp --> on
httpd_can_connect_ldap --> off
httpd_can_connect_mythtv --> off
httpd_can_connect_zabbix --> off
httpd_can_network_connect --> off
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> on
httpd_can_network_memcache --> off
httpd_can_network_relay --> off
httpd_can_sendmail --> on
httpd_dbus_avahi --> off
httpd_dbus_sssd --> off
httpd_dontaudit_search_dirs --> off
httpd_enable_cgi --> on
httpd_enable_ftp_server --> off
httpd_enable_homedirs --> off
httpd_execmem --> off
httpd_graceful_shutdown --> on
httpd_manage_ipa --> off
httpd_mod_auth_ntlm_winbind --> off
httpd_mod_auth_pam --> off
httpd_read_user_content --> off
httpd_run_ipa --> off
httpd_run_preupgrade --> off
httpd_run_stickshift --> off
httpd_serve_cobbler_files --> off
httpd_setrlimit --> off
httpd_ssi_exec --> off
httpd_sys_script_anon_write --> off
httpd_tmp_exec --> off
httpd_tty_comm --> off
httpd_unified --> on
httpd_use_cifs --> off
httpd_use_fusefs --> off
httpd_use_gpg --> off
httpd_use_nfs --> off
httpd_use_openstack --> off
httpd_use_sasl --> off
httpd_verify_dns --> off
icecast_use_any_tcp_ports --> off
irc_use_any_tcp_ports --> off
irssi_use_full_network --> off
kdumpgui_run_bootloader --> off
keepalived_connect_any --> off
kerberos_enabled --> on
ksmtuned_use_cifs --> off
ksmtuned_use_nfs --> off
logadm_exec_content --> on
logging_syslogd_can_sendmail --> off
logging_syslogd_run_nagios_plugins --> off
logging_syslogd_use_tty --> on
login_console_enabled --> on
logrotate_read_inside_containers --> off
logrotate_use_nfs --> off
logwatch_can_network_connect_mail --> off
lsmd_plugin_connect_any --> off
mailman_use_fusefs --> off
mcelog_client --> off
mcelog_exec_scripts --> on
mcelog_foreground --> off
mcelog_server --> off
minidlna_read_generic_user_content --> off
mmap_low_allowed --> off
mock_enable_homedirs --> off
mount_anyfile --> on
mozilla_plugin_bind_unreserved_ports --> off
mozilla_plugin_can_network_connect --> off
mozilla_plugin_use_bluejeans --> off
mozilla_plugin_use_gps --> off
mozilla_plugin_use_spice --> off
mozilla_read_content --> off
mpd_enable_homedirs --> off
mpd_use_cifs --> off
mpd_use_nfs --> off
mplayer_execstack --> off
mysql_connect_any --> off
nagios_run_pnp4nagios --> off
nagios_run_sudo --> off
nagios_use_nfs --> off
named_tcp_bind_http_port --> off
named_write_master_zones --> on
neutron_can_network --> off
nfs_export_all_ro --> on
nfs_export_all_rw --> on
nfsd_anon_write --> off
nis_enabled --> off
nscd_use_shm --> on
openshift_use_nfs --> off
openvpn_can_network_connect --> on
openvpn_enable_homedirs --> on
openvpn_run_unconfined --> off
pcp_bind_all_unreserved_ports --> off
pcp_read_generic_logs --> off
piranha_lvs_can_network_connect --> off
polipo_connect_all_unreserved --> off
polipo_session_bind_all_unreserved_ports --> off
polipo_session_users --> off
polipo_use_cifs --> off
polipo_use_nfs --> off
polyinstantiation_enabled --> off
postfix_local_write_mail_spool --> on
postgresql_can_rsync --> off
postgresql_selinux_transmit_client_label --> off
postgresql_selinux_unconfined_dbadm --> on
postgresql_selinux_users_ddl --> on
pppd_can_insmod --> off
pppd_for_user --> off
privoxy_connect_any --> on
prosody_bind_http_port --> off
puppetagent_manage_all_files --> off
puppetmaster_use_db --> off
racoon_read_shadow --> off
radius_use_jit --> off
redis_enable_notify --> off
rpcd_use_fusefs --> off
rsync_anon_write --> off
rsync_client --> off
rsync_export_all_ro --> off
rsync_full_access --> off
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_load_libgfapi --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_enable_home_dirs --> off
sanlock_use_fusefs --> off
sanlock_use_nfs --> off
sanlock_use_samba --> off
saslauthd_read_shadow --> off
secadm_exec_content --> on
secure_mode --> off
secure_mode_insmod --> off
secure_mode_policyload --> off
selinuxuser_direct_dri_enabled --> on
selinuxuser_execheap --> off
selinuxuser_execmod --> on
selinuxuser_execstack --> on
selinuxuser_mysql_connect_enabled --> off
selinuxuser_ping --> on
selinuxuser_postgresql_connect_enabled --> off
selinuxuser_rw_noexattrfile --> on
selinuxuser_share_music --> off
selinuxuser_tcp_server --> off
selinuxuser_udp_server --> off
selinuxuser_use_ssh_chroot --> off
sge_domain_can_network_connect --> off
sge_use_nfs --> off
smartmon_3ware --> off
smbd_anon_write --> off
spamassassin_can_network --> off
spamd_enable_home_dirs --> on
spamd_update_can_network --> off
squid_connect_any --> on
squid_use_tproxy --> off
ssh_chroot_rw_homedirs --> off
ssh_keysign --> off
ssh_sysadm_login --> off
staff_exec_content --> on
staff_use_svirt --> off
swift_can_network --> off
sysadm_exec_content --> on
telepathy_connect_all_ports --> off
telepathy_tcp_connect_generic_network_ports --> on
tftp_anon_write --> off
tftp_home_dir --> off
tmpreaper_use_cifs --> off
tmpreaper_use_nfs --> off
tmpreaper_use_samba --> off
tomcat_can_network_connect_db --> off
tomcat_read_rpm_db --> off
tomcat_use_execmem --> off
tor_bind_all_unreserved_ports --> off
tor_can_network_relay --> off
unconfined_chrome_sandbox_transition --> on
unconfined_login --> on
unconfined_mozilla_plugin_transition --> on
unprivuser_use_svirt --> off
use_ecryptfs_home_dirs --> off
use_fusefs_home_dirs --> off
use_lpd_server --> off
use_nfs_home_dirs --> off
use_samba_home_dirs --> off
user_exec_content --> on
varnishd_connect_any --> off
virt_read_qemu_ga_data --> off
virt_rw_qemu_ga_data --> off
virt_sandbox_use_all_caps --> on
virt_sandbox_use_audit --> on
virt_sandbox_use_fusefs --> off
virt_sandbox_use_mknod --> off
virt_sandbox_use_netlink --> off
virt_sandbox_use_sys_admin --> off
virt_transition_userdomain --> off
virt_use_comm --> off
virt_use_execmem --> off
virt_use_fusefs --> off
virt_use_glusterd --> off
virt_use_nfs --> off
virt_use_rawip --> off
virt_use_samba --> off
virt_use_sanlock --> off
virt_use_usb --> on
virt_use_xserver --> off
webadm_manage_user_files --> off
webadm_read_user_files --> off
wine_mmap_zero_ignore --> off
xdm_bind_vnc_tcp_port --> off
xdm_exec_bootloader --> off
xdm_sysadm_login --> off
xdm_write_home --> off
xen_use_nfs --> off
xend_run_blktap --> on
xend_run_qemu --> on
xguest_connect_network --> on
xguest_exec_content --> on
xguest_mount_media --> on
xguest_use_bluetooth --> on
xserver_clients_write_xshm --> off
xserver_execmem --> off
xserver_object_manager --> off
zabbix_can_network --> off
zabbix_run_sudo --> off
zarafa_setrlimit --> off
zebra_write_config --> off
zoneminder_anon_write --> off
zoneminder_run_sudo --> off

2020年5月13日Linux,MailConcrete5,FTP,SELinux,WordPress,メール送信

Posted by senchan