なお、Amazon AWS の EC2 を使っている場合は セキュリティグループ を使用しましょう
Centos7 からは firewalld を使用します。
( /etc/hosts.deny , /etc/hosts.allow は使用しません )
firewall-cmd --list-all
(例)
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: http https imap imaps pop3 pop3s smtp smtps
ports: 22000/tcp 587/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
例: sshポート(22番)を削除します。
firewall-cmd --permanent --remove-service=ssh
例: 22000番を削除します。
firewall-cmd --remove-port=22000/tcp --permanent
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="接続を許可するIPアドレス" port protocol="tcp" port="22" accept"
設定例
IP : 123.123.123.123
ポート : 22000
を許可します。
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="123.123.123.123" port protocol="tcp" port="22000" accept"
ポート22000を開放します
firewall-cmd --add-port=22000/tcp --zone=public --permanent
firewall-cmd --reload
firewall-cmd --list-all
firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="123.123.123.123" port protocol="tcp" port="22000" accept"'
sudo firewall-cmd --get-log-denied
firewall-cmd でログを有効にするには、以下のコマンドを実行します。
sudo firewall-cmd --set-log-denied=オプション
オプションの種類
sudo firewall-cmd --set-log-denied=off
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" port port="3306" protocol="tcp" log prefix="MYSQL_ACCESS" level="info"' --permanent
sudo firewall-cmd --reload
記録されたログの確認
sudo journalctl -f | grep 'IN='
以下のように表示されます
5月 08 08:18:28 サーバ名 kernel: MYSQL_ACCESSIN=eth0 OUT= MAC=02:02:76:1b:05:64:00:2a:10:77:b3:c0:08:00 SRC=接続元IP DST=118.27.5.100 LEN=60 TOS=0x00 PREC=0x00 TTL=56 ID=44610 DF PROTO=TCP SPT=40346 DPT=3306 WINDOW=32120 RES=0x00 SYN URGP=0