CentOS 7 방화벽 서버 구축( iptables )
2016.12.08 20:13
------------------------------------------------------------------------------------------------------------------------
iptables 이용해서 방화벽 서버 구축하기
------------------------------------------------------------------------------------------------------------------------
☞ 방화벽의 경우 두개의 랜카드가 필요 합니다.
한개는 외부망과 연결된 랜카드 이고 ip 는 공인 ip 로 설정이 되며, 두번째는 랜카드는 내부망과 연결되고 ip 는 사설 ip 로 설정을 합니다.
☞ 서버 설치 조건
- 외부망 이더넷 eno1 → IP : 192.168.0.1 ( 사설 IP 이지만 공인 IP 라고 가정 하고 강좌를 진행합니다. )
- 내부망 이더넷 enp3s4 → IP : 172.16.0.1
- WEB SERVER IP : 172.16.0.2
- 내부 네트워크는 C 클래스 한개의 규모입니다.
- 원칙은 외부망 IP 를 공인 IP 로 사용해야 하지만 여기 강좌에서는 192.168.0.1 를 공인 IP 라고 가정하고 강의를 진행합니다.
① 관련 패키지 설치
# yum -y install iptables-services nano
② 기본 포워딩 설정
2개의 포워딩 관련 설정 파일을 수정 해야 됩니다.
/etc/sysctl.conf 설정 파일을 편집기로 열어서 제일 하단에 net.ipv4.ip_forward = 1 문장을 추가 하면 되는데
간단하게 명령어로 파일을 열지 않고 수정이 가능합니다.
# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
☞ 파일이 수정 됬는지 확인합니다.
# cat /etc/sysctl.conf
☞ cat 으로 확인해서 " net.ipv4.ip_forward = 1 " 출력 되면 정상입니다.
☞ 두번째 파일은 /proc/sys/net/ipv4/ip_forward 입니다.
☞ 이것도 간단히 명령어로 파일을 수정하겠습니다.
# echo 1 > /proc/sys/net/ipv4/ip_forward
# cat /proc/sys/net/ipv4/ip_forward
☞ 1 이라고 나오면 정상 수정된것 입니다.
③ 랜 카드 설정
☞ 현재의 ip 설정 상태 확인
# ip a
☞ 랜카드가 두개가 있고, 외부망과 연결된 이더넷은 eno1 이고 ip 는 192.168.0.1 입니다.
내부망과 연결된 이더넷은 이름은 enp3s4 이고 이더넷 enp3s4 아직 ip 설정이 안되어 있는 상태입니다.
☞ 내부망 이더넷 랜카드의 ip 를 설정을 하겠습니다.
# nano /etc/sysconfig/network-scripts/ifcfg-enp3s4
→ dhcp 를 none 로 변경
→ DEFROUTE = yes 줄을 삭제합니다. 시스템의 설정된 라우팅을 사용한다는 의미인데 내부망 랜카드 에서는 사용하지 않습니다.
☞ 페이지 제일 하단에 IP 와 서브넷을 추가 입력을 합니다.
→ IPADDR = 172.16.0.1
→ NETMASK = 255.255.255.0
☞ 설정 파일 저장후 네트워크 서비스 재시작
# systemctl restart network
☞ ip 상태 확인
# ip a
☞ 내부망의 랜카드가 활성화가 되었고 IP 가 할당이 되어 있습니다.
④ 방화벽 설정 하기
☞ 방화벽을 설정하는 방법은 모든 접근을 차단한 다음에 필요한 접근만 허용하게 됩니다.
☞ 방화벽 설정 초기화
# iptables -F
# iptables -P FORWARD DROP
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
☞ 원격으로 작업을 했으면 연결이 끊어 질수 있습니다.
☞ MASQUERADE 설정
# iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE
외부망과 연결된 이더넷 eno1 에서 MASQUERADE 사용가능하게 설정합니다.
☞ 포워딩 설정
- 내부망( enp2s0 )에서 외부망( eno1 )으로 나가는 경우 제한이 없고 외부망에서 내부망으로 들어오는경우
새로운 접근은 차단되고, 기존 접속 기록이 있거나 관련된 연결만 허용합니다.
# iptables -A FORWARD -i enp2s0 -o eno1 -j ACCEPT
# iptables -A FORWARD -i eno1 -o enp2s0 -m state --state RELATED,ESTABLISHED -j ACCEPT
☞ 위 설정 까지만 해도 내부 네트워크가 외부 인터넷 사용이 가능합니다.
만약 내부망에 웹서버가 없다든지 방화벽 서버를 단순 공유기 퍼럼 NAT 라우터 기능으로만 사용하려면 여기 까지만 해도 잘 됩니다.
☞ 방화벽 원격 접속 설정하기
- 방화벽의 원격 접속은 보안상 내부망에서만 접속을 허용하는것이 좋습니다.
☞ 내부망 ( 172.16.0.0/24 ) 과 외부망 ( 192.168.0.0/24 ) 원격 접속 허용 설정방법입니다.
- 내부망 172.16.0.0/24 네트워크 에서 방화벽 접근 허용
# iptables -A INPUT --in-interface enp2s0 --source 172.16.0.0/24 -j ACCEPT
# iptables -A OUTPUT --out-interface enp2s0 --destination 172.16.0.0/24 -j ACCEPT
- 외부망 192.168.0.0/24 대역의 네트워크에서 방화벽 접근 허용. 자신의 원하는 네트워크 범위를 추가 할수 있습니다.
# iptables -A INPUT --in-interface eno1 --source 192.168.0.0/24 -j ACCEPT
# iptables -A OUTPUT --out-interface eno1 --destination 192.168.0.0/24 -j ACCEPT
☞ 내부망에 웹서버(IP:172.16.0.2)가 있을경우 포워딩 설정
- 기본적으로 방화벽으로 인해서 외부망 사용자는 내부망으로 접근 할수 없습니다.
내부망안에 웹서버를 외부망 사용자가 접근을 하려면 방화벽에서 정책을 설정을 해야 됩니다.
외부망 사용자는 192.168.0.1 까지만 접근이 가능하고 192.168.0.1 로 접속을 하면은 바로 웹서버가 보이기 때문에
웹서버 IP가 192.168.0.1 라고 생각하지만 실제적으로는 192.168.0.1 는 방화벽 IP 이고 웹서버에 접근하려는 사용자에게는
내부망에 있는 진짜 웹서버 (172.16.0.2) 로 포워딩을 하게 됩니다.
# iptables -t nat -A PREROUTING -p tcp -i eno1 --dport 80 -j DNAT --to-destination 172.16.0.2
- 방화벽에 80 포트 요청이 있으면 172.16.0.2 ip 의 서버로 포워딩 한다는 의미입니다.
☞ 외부에서 80 포트 접근 관련 보안설정을 변경해야 합니다.
# iptables -A FORWARD -i eno1 -o enp2s0 -m state --state NEW,RELATED,ESTABLISHED -p tcp --dport 80 -j ACCEPT
80 번 포트에 한해서 방화벽에서 오픈을 한다는 의미입니다.
☞ 이제 외부에서 내부망의 웹서버 접속이 가능합니다.
이렇게 해서 방화벽 설정은 끝났습니다.
⑤ 설정값을 저장
☞ 설정값 저장하기
# service iptables save
☞ 서비스 상시 가동 설정하기
# systemctl enable iptables
☞ 서비스 재가동
# systemctl restart iptables
댓글 [0]
번호 | 제목 | 글쓴이 | 조회 |
---|---|---|---|
[공지] | 연재 강좌를 진행합니다. | gooddew | - |
125 | CentOS 7| OpenSSL 업데이트 | gooddew | 7550 |
124 | CentOS 7| top 활용하기 | gooddew | 5499 |
123 | CentOS 7| 시스템 하드 복사하기 ( DISK TO DISK ) | gooddew | 13155 |
122 | CentOS 7| 백업 및 복구 | gooddew | 11702 |
121 | CentOS 7| 윈도우 클라이언트에서 PUTTY 자동 로그인 | gooddew | 5288 |
120 | CentOS 7| Centos 7 에서 NTFS 인식하기 | gooddew | 7634 |
119 | CentOS 7| root 패스워드 초기화 [1] | gooddew | 9080 |
118 | CentOS 7| SSH 보안 정책 | gooddew | 6413 |
117 | CentOS 7| 패스워드 보안 정책 | gooddew | 6348 |
116 | CentOS 7| MC를 이용한 FTP 활용 [2] | gooddew | 6786 |
115 | CentOS 7| 리눅스 명령어 정리 | gooddew | 10003 |
114 | CentOS 7| 유용한 프로그램 설치하기 | gooddew | 10061 |
113 | CentOS 7| 네트워크 수동 설정하기 | gooddew | 29697 |
112 | CentOS 7| AWStats를 설치하기 | gooddew | 18565 |
111 | CentOS 7| 방화벽 서버 구축 ( firewalld ) [1] | gooddew | 5516 |
» | CentOS 7| 방화벽 서버 구축( iptables ) | gooddew | 5481 |
109 | CentOS 7| PROXY 서버 구축 | gooddew | 5232 |
108 | CentOS 7| DHCP 서버 구축 | gooddew | 5900 |
107 | CentOS 7| NFS 서버 구축 | gooddew | 5698 |
106 | CentOS 7| 메일( sendmail / dovecot ) 서버 구축 | gooddew | 5718 |