- 更新日: 2013年6月4日
- CentOS & Linux
iptables (ファイアーウォール)の設定 〜 CentOS6
SSH のポート番号変更の時にちょっとだけいじった iptables ですが、ここで本格的に設定を行います。基本的に弱気の設定方針で、使わないポートは閉じ、必要最小限のポートだけ開けます。基本のポリシーは以下の通り。
・入ってくるパケットを基本的にブロック(INPUTポリシー : DROP)
・パケット転送を基本的にブロック(FORWARDポリシー: DROP)
・出て行くパケットを基本的に許可(OUTPUTポリシー : ACCEPT)
・HTTP, SSH など必要なポートを開ける
このエントリーは、CentOS 6.4 インストール~設定手順の目次 の一部です。
iptables の設定ファイルを編集
iptables の編集は、iptables コマンドを打ってでもできますが面倒くさいので、設定ファイルを直接編集します。コメントも付けられますしね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# vi /etc/sysconfig/iptables *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] # ループバックを許可 -A INPUT -i lo -j ACCEPT # pingやtcp, udpの通信結果に使われるプロトコルicmpのパケット受信を許可 -A INPUT -p icmp --icmp-type any -j ACCEPT # IPSec関連(パケット改ざんを防ぐプロトコル)のパケットを許可(使う場合はコメントアウト削除) # -A INPUT -p 50 -j ACCEPT # -A INPUT -p 51 -j ACCEPT # マルチキャストDNSのパケットを許可(使う場合はコメントアウト削除) # -A INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT # 自サーバが送信したコネクション開設要求に関連するパケット受信と、接続完了後のパケット受信を許可 -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 新規セッションなのにSYNフラグの立っていないパケットは拒否 -A INPUT -p tcp -m state --state NEW ! --syn -j DROP # SSH, HTTP, FTP1, FTP2, MySQL(開けるなら3306の行をコメントアウト削除) -A INPUT -m state --state NEW -m tcp -p tcp --dport 60022 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT # -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT COMMIT |
上のように設定しました。基本的なポリシーは、 INPUT, FORWRD は DROP、OUTPUT は ACCEPT。詳細は上の各々コメント部分を参照。
iptables を再起動して設定を確認
1 2 3 4 5 6 7 |
# service iptables restart iptables: ファイアウォールルールを消去中: [ OK ] iptables: チェインをポリシー ACCEPT へ設定中filter [ OK ] iptables: モジュールを取り外し中: [ OK ] iptables: ファイアウォールルールを適用中: [ OK ] |
iptablesを確認。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# iptables -vnL Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 255 0 0 ACCEPT esp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT ah -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT udp -- * * 0.0.0.0/0 224.0.0.251 udp dpt:5353 26 1768 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp flags:!0x17/0x02 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:60022 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:20 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:21 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3306 Chain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 17 packets, 1708 bytes) pkts bytes target prot opt in out source destination |
INPUTチェインの設定が、icmp、コネクション開設に関するパケット、SSH、HTTP など必要なパケットのみ ACCEPT となっています。この後、現在の SSH 接続を閉じる前に、新たにターミナルを立ち上げてSSH接続できるか確認。無事に接続できたら元の接続を閉じて大丈夫です。
- CentOS & Linux の関連記事
- Job for nginx.service failedのNginxエラー
- upstream sent too big header while reading response header from upstream(Nginx/Rails)
- Can’t get information about user clamav(clamdエラー)
- STDERR: Exception in thread “main” java.lang.InternalErrorエラー
- Linuxサーバー容量を確認するコマンドdf,duをマスターする!
- rmでファイル削除後にdf -hで容量が減らない時の対処(Linux)
- Apacheをローカルネットワークのみに公開にする
- logwatchからのメールが来ないと思ったら…
- Linuxサーバの負荷や使用率を調査するコマンドと手順
- Bashの脆弱性もう一件CVE-2014-7169に対するパッチ適用
Leave Your Message!