Memo/Linux/iptables

https://dexlab.net:443/pukiwiki/index.php?Memo/Linux/iptables
 

iptables


一時的な追加

  • 以下のような状態(sshのみ許可してある)で、一時的にHTTP/80も許可したい。順番が需要。5番目のREJECTより上に追加する必要がある
    sudo service iptables status                                                                        
    Table: filter
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination         
    1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
    2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
    3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
    4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
    5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
  • 「-I INPUT 5」(Insert)で挿入
    sudo iptables -I INPUT 5 -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
    
    sudo service iptables status
    ...
    4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
    5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:80 
    6    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
  • 「-A」(Append)は最後に追加される。REJECTより後ろに追加しても効果は無い
  • 「-F」で全て削除
  • 「-D」(Delete)削除
    # 完全一致したルールを削除
    sudo iptables -D INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
    
    # 5番目を削除
    sudo iptables -D INPUT 5
  • 「-R」(Replace)で置換
    # ポートだけ443に変更
    sudo iptables -R INPUT 5 -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
  • save前であれば再起動で元に戻る。reloadでは変わらない
    sudo service iptables restart
  • 保存したい場合はsave。「/etc/sysconfig/iptables」に保存される。1世代前の設定は「/etc/sysconfig/iptables.save」になる。
    sudo service iptables save

メンテナンス中に一時的に通信を止める

  • iptalbesで外から内のトラフィック(例:http)をブロックする場合
    # 制限
    iptables -A INPUT -p tcp -m tcp --dport 80 -j DROP
    
    # 作業
    
    # 解除
    iptables -D INPUT -p tcp -m tcp --dport 80 -j DROP
    
    # iptablesが実行されているので、必要なら止める
    service iptables stop
  • iptalbesで内から外のトラフィック(例:http)をブロックする場合
    iptables -A OUTPUT -p tcp -m tcp --dport 80 -j DROP

日本/特定国のアクセスを遮断する


iptables unable to initializetable 'filter'

古いkernelを削除したところ、iptablesの再起動ができなくなった。 /var/log/messageを見るとエラーが出ているので、kernelを入れ直して終了

  • エラー
    service iptables restart
    iptables ファイアウォールルールを適用中: iptables-restore v1.3.5: iptables-restore: unable to initializetable 'filter'
    
    Error occurred at line: 3
    Try `iptables-restore -h' or 'iptables-restore --help' for more information.
  • 原因
    tail -f /var/log/messages
    Jan 31 01:36:44 localhost modprobe: FATAL: Could not load /lib/modules/2.6.18-194.el5/modules.dep: No such file or directory
  • 該当カーネルのインストール
    yum install kernel-2.6.18-194.el5

iptablesでのファイヤーウォール設定

  • IPアドレス範囲を指定して許可
    # swat
    -A RH-Firewall-1-INPUT -s 192.168.1.0/255.255.255.0 -p tcp -m state --state NEW -m tcp --dport 901 -j ACCEPT
  • eth0(global), eth1(internal)がある場合、eth1は全許可
    -A INPUT -i eth1 -j ACCEPT
  • 現在の設定確認
    iptables -L
  • 現在空いているポートを調べるには
    nmap -sT -p 1-65535 localhost
    nmap localhost
  • 設定ファイルを直接編集する場合
    vi /etc/sysconfig/iptables
    ----
    ...編集
    ----
    service iptables reload
  • 例:LANからの接続を許可
    iptables -A INPUT -i eth0 -s 192.168.0.0/24 -j ACCEPT
    # httpを許可
    iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT  # HTTP
    service iptables save

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-09-15 (土) 07:31:38 (34d)