iptables 관련해서 문의드립니다.

notgood123의 이미지

안녕하세요. "이것이 리눅스다"책으로 리눅스를 공부한지 한달정도 되었네요.

내부망과 외부망을 연결해주는 방화벽서버를 iptables 세팅해줘서

방화벽 서버의 포트번호를 내부web 서버에 연결해 줍니다.

그런데 처음 할때는 잘되는데 방화벽서버 재부팅 하면 안되네요..

이유를 모르겟어요 ....

혹 다시 설정해주고 해야 하나요?

그런데 내부망에서 외부망 인터넷도되고 외부망 ping도 잘되는데 이상하네요.

chocokeki의 이미지

안녕하세요
저도 초보자라 정확히 알지는 몬하는데요

그냥 명령어 치면 일시적으로 룰이 들어가는 것이고 이걸 아예 등록하고 싶으면 설정 파일에 기록해야 하는 것으로 알고 있어요
그래서 재부팅하시면 룰이 다 초기화 되서 안되시는거 같구요

notgood123의 이미지

하면 /etc/sysconfig/iptables 파일에 자동등록 되는거 아니에요?

김정균의 이미지

책에서 사용하는 배포본이 CentOS 7이 맞나요?

일단, iptables는 kernel의 netfilter에 rule을 반영시키기 윈한 도구 입니다. 즉 설정을 저장하고 이런 기능이 있지는 않습니다.

그러므로, iptables rule을 관리하기 위해서는 frontend 도구를 사용해야 합니다.

CentOS 6 가지는 iptblaes package안에 iptables-save라는 명령을 이용하여 현재의 rule을 저장하여 부팅시에 반영할 수 있고, 또는 /etc/sysconfig/iptables 에서 rule을 직접 작성하여 /etc/init.d/iptblaes restart 로 관리할 수도 있습니다.

CentOS 7 부터는 firewalld 라는 데몬을 이용하여 관리를 할 수 있습니다. 설치시에 firewalld가 기본으로 설치가 되므로, (혹시 되어 있지 않다면 yum을 이용해서 설치해 주시면 됩니다.) firewalld를 이용하는 것도 한 방법 입니다.

그 외에, oops-firewall 이라는 것도 있는데, 머 이건 너무 매니악해서 pass..

notgood123의 이미지

일단 제가 한 작업을 적어볼게요.

일단 vmware를 사용하였습니다.


window(외부서버)

------------------------------------------------------------------------------------------
vmware
server1(외부서버)
네트워크장치:eno1,eno2
eno1 - ip : 10.1.1.1/24
gateway:10.1.1.1
eno2(외부공인ip)

server2(내부서버)
네트워크장치:eno1
eno1 - ip: 10.1.1.20/24
gateway:10.1.1.1
dns server:168.126.63.1


server3(내부서버)
네트워크장치:eno1
eno1 - ip: 10.1.1.10/24
gateway:10.1.1.1
dns server:168.126.63.1

sever1은 네트워크장치를 2개 설치하여 외부와 내부를 연결해 주는 방화벽 서버입니다.
server2는 내부서버로 apache웹서버이고 ftp 서버입니다.
server3은 일단 제외 시키겠습니다.


server1에 한 작업
- /etc/sysctl.conf 파일 맽밑에 "net.ipv3.ip_forward = 1" 추가 (무슨 작업인지 모르겟음.)
- iptables -P FORWARD DROP
- iptables -P INPUT DROP
- iptables -P OUTPUT DROP
- iptables -A INPUT -i eno1 -s 10.1.1.0/24 --match state NEW,ESTABLISHED -j ACCEPT (eno1장치에서 출발지가 10.1.1.0/24 들어오는 패킷 accept)
- iptables -A OUTPUT -o eno1 -d 10.1.1.0/24 --match state NEW,ESTABLISHED -j ACCEPT (eno1장치이며 목적지가 10.1.1.0/24 패킷 accept)
- iptables -A FORWARD -i eno1 -s 10.1.1.0/24 -d 0.0.0.0/0 --match state --state NEW,ESTABLISHED -j ACCEPT
- iptables -A FORWARD -i eno2 -d 10.1.1.0/24 --match state --state ESTABLISHED -j ACCEPT

마스커레이드 허가
- iptables -t nat -A POSTROUTING -o eno2 -j ACCEPT
- firwall-config 방화벽 설정 -> 영구적 -> 마스커레이딩 영역체크

- server2 httpd 설치후구동
- firewall-cmd --permanent --add-service=httpd
- firewall-cmd --permanent --add-port=80/tcp
- friewall-cmd --reload
- systemctl restart httpd

- server1에서
- iptables -t nat -A PREROUTING -proto tcp -i eno2 --dport 80 -j DNAT --to-destination 10.1.1.20
- service itables save

처음에는 외부에서 내부 웹서버 연결이 잘됩니다. 하지만 재부팅후에는 안되네요 .. 혹시 작못한 작업이있나요.


김정균의 이미지

server 1에서의 작업을 보면, iptables로 직접 rule을 구성 했고, Firewalld 설정도 한 것을 보니, 아마도 firewalld를 기본으로 사용하게 되어 있는 것 같습니다. 이런 경우, service iptables save는 의미없는 작업입니다.

firewalld 문서를 보시고 firewalld를 이용하여 ruleset을 구성하도록 하세요. 그래야 부팅시에 작업한 rule이 반영이 됩니다.

즉, firewalld를 사용할 것인지, 아니면 iptables init script를 사용할 것인지를 결정해야 한다는 의미입니다. centos 7의 경우에는 기본으로 firewalld를 사용하도록 되어 있습니다.

예를 들어 firewalld에서 nat 설정을 할 경우에는 아래와 같이 합니다.

[root@host ~]$ firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o eth0 -j MASQUERADE -s 10.0.0.0/24
[root@host ~]$ firewall-cmd --reload

firewalld 를 이용한 port forwarding은 https://docs.fedoraproject.org/en-US/Fedora/19/html/Security_Guide/sec-Configure_Port_Forwarding-CLI.html 문서를 참고 하세요.

notgood123의 이미지

간절했는데 답해주셔서 감사합니다

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.